@progressive-development/pd-spa-helper 0.1.172 → 0.1.173

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 (36) hide show
  1. package/dist/src/PdSpaHelper.d.ts +8 -6
  2. package/dist/src/PdSpaHelper.js +30 -1
  3. package/dist/src/PdSpaHelper.js.map +1 -1
  4. package/dist/src/model/spa-model.d.ts +7 -0
  5. package/dist/src/model/spa-model.js +2 -0
  6. package/dist/src/model/spa-model.js.map +1 -0
  7. package/dist/src/store/indexDB.d.ts +1 -1
  8. package/dist/src/store/indexDB.js +4 -2
  9. package/dist/src/store/indexDB.js.map +1 -1
  10. package/dist/src/store/mini-rx.store.js +11 -2
  11. package/dist/src/store/mini-rx.store.js.map +1 -1
  12. package/dist/src/store/spa-app-actions.d.ts +32 -0
  13. package/dist/src/store/spa-app-actions.js +7 -0
  14. package/dist/src/store/spa-app-actions.js.map +1 -0
  15. package/dist/src/store/spa-app-effects.d.ts +6 -0
  16. package/dist/src/store/spa-app-effects.js +23 -0
  17. package/dist/src/store/spa-app-effects.js.map +1 -0
  18. package/dist/src/store/spa-app-reducer.d.ts +9 -0
  19. package/dist/src/store/spa-app-reducer.js +28 -0
  20. package/dist/src/store/spa-app-reducer.js.map +1 -0
  21. package/dist/src/store/spa-app-selector.d.ts +6 -0
  22. package/dist/src/store/spa-app-selector.js +9 -0
  23. package/dist/src/store/spa-app-selector.js.map +1 -0
  24. package/dist/src/tmpown/pd-loading-state.d.ts +2 -6
  25. package/dist/src/tmpown/pd-loading-state.js.map +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +1 -1
  28. package/src/PdSpaHelper.ts +43 -9
  29. package/src/model/spa-model.ts +8 -0
  30. package/src/store/indexDB.ts +5 -4
  31. package/src/store/mini-rx.store.ts +13 -2
  32. package/src/store/spa-app-actions.ts +11 -0
  33. package/src/store/spa-app-effects.ts +33 -0
  34. package/src/store/spa-app-reducer.ts +64 -0
  35. package/src/store/spa-app-selector.ts +23 -0
  36. package/src/tmpown/pd-loading-state.ts +3 -6
@@ -1,8 +1,10 @@
1
1
  import { LitElement, CSSResultGroup, TemplateResult } from 'lit';
2
+ import { Subscription } from 'rxjs';
2
3
  import '@progressive-development/pd-page/pd-menu.js';
3
4
  import '@progressive-development/pd-page/pd-footer.js';
4
5
  import { ServiceCallController } from './service-call-controller2.js';
5
6
  import { AppConfiguration, Footer, FunctionResult, NavigationPage } from './service-provider/service-provider-model.js';
7
+ import { LoadingState } from './model/spa-model.js';
6
8
  import './router/AppMain.js';
7
9
  import './defaultpage/default-login.js';
8
10
  import './tmpown/pd-panel-viewer.js';
@@ -24,18 +26,14 @@ declare const PdSpaHelper_base: import("lit-element-router").Constructor<import(
24
26
  */
25
27
  export declare abstract class PdSpaHelper extends PdSpaHelper_base {
26
28
  protected functionsController: ServiceCallController;
29
+ protected abstract _appConfiguration: any;
27
30
  title: string;
28
31
  /**
29
32
  * Properties needed for login/profile data.
30
33
  */
31
34
  _user: unknown | undefined;
32
35
  _profile: any | undefined;
33
- _loadingState?: {
34
- isLoading: boolean;
35
- smallBackground?: boolean;
36
- modal?: boolean;
37
- loadingTxt?: string;
38
- };
36
+ _loadingState?: LoadingState;
39
37
  /**
40
38
  * Properties needed for the router.
41
39
  */
@@ -49,8 +47,12 @@ export declare abstract class PdSpaHelper extends PdSpaHelper_base {
49
47
  abstract _selectedLocale: string;
50
48
  abstract _availableLocales: string[];
51
49
  protected _singleLocaleMenu: boolean;
50
+ _subscription?: Subscription;
52
51
  static styles: CSSResultGroup;
53
52
  constructor();
53
+ connectedCallback(): void;
54
+ disconnectedCallback(): void;
55
+ _setConfInDetail(event: Event): void;
54
56
  /**
55
57
  * Non reactive private property for the index db class.
56
58
  */
@@ -5,8 +5,12 @@ import { property } from 'lit/decorators.js';
5
5
  import '@progressive-development/pd-page/pd-menu.js';
6
6
  import '@progressive-development/pd-page/pd-footer.js';
7
7
  import { ServiceCallController } from './service-call-controller2.js';
8
- import { initializeStore } from './store/mini-rx.store.js';
8
+ import { initializeStore, pdStore } from './store/mini-rx.store.js';
9
9
  import { authStateChangedImpl, initAppImpl, isAuthenticatedImpl, setServiceProvider } from './service-provider/service-provider-impl.js';
10
+ import { getLoadingSelector } from './store/spa-app-selector.js';
11
+ import { setRouteElement } from './store/spa-app-effects.js';
12
+ import { APP_CONF_EVENT } from './model/spa-model.js';
13
+ import { loginSucess } from './store/spa-app-actions.js';
10
14
  import './router/AppMain.js';
11
15
  import './defaultpage/default-login.js';
12
16
  import './tmpown/pd-panel-viewer.js';
@@ -116,6 +120,7 @@ export class PdSpaHelper extends router(navigator(LitElement)) {
116
120
  */
117
121
  this._teaserClosed = false;
118
122
  this._singleLocaleMenu = false;
123
+ setRouteElement(this);
119
124
  const doSomething = (scrollPos) => {
120
125
  if (scrollPos <= 50) {
121
126
  this._teaserClosed = false;
@@ -147,6 +152,29 @@ export class PdSpaHelper extends router(navigator(LitElement)) {
147
152
  this.addEventListener("toast-event", this._createTemporaryToast);
148
153
  this.addEventListener("route-event", this._handleMenuRouteEvent);
149
154
  }
155
+ connectedCallback() {
156
+ super.connectedCallback();
157
+ this.addEventListener(APP_CONF_EVENT, this._setConfInDetail);
158
+ this._subscription = pdStore().select(getLoadingSelector)
159
+ .subscribe((loadingState) => {
160
+ console.log("Loading State: ", loadingState);
161
+ this._loadingState = loadingState;
162
+ });
163
+ }
164
+ disconnectedCallback() {
165
+ var _a;
166
+ this.removeEventListener(APP_CONF_EVENT, this._setConfInDetail);
167
+ (_a = this._subscription) === null || _a === void 0 ? void 0 : _a.unsubscribe();
168
+ super.disconnectedCallback();
169
+ }
170
+ _setConfInDetail(event) {
171
+ const { detail } = event;
172
+ if (detail) {
173
+ detail.appConf = {
174
+ ...this._appConfiguration
175
+ };
176
+ }
177
+ }
150
178
  /**
151
179
  * Non reactive private property for the index db class.
152
180
  */
@@ -177,6 +205,7 @@ export class PdSpaHelper extends router(navigator(LitElement)) {
177
205
  console.log("My callback user:", user);
178
206
  this._user = user;
179
207
  if (this._user) {
208
+ pdStore().dispatch(loginSucess());
180
209
  this._loginSuccess(new CustomEvent("login-success"));
181
210
  }
182
211
  };
@@ -1 +1 @@
1
- {"version":3,"file":"PdSpaHelper.js","sourceRoot":"","sources":["../../src/PdSpaHelper.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAkC,SAAS,EAAE,MAAM,KAAK,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI7C,OAAO,6CAA6C,CAAC;AACrD,OAAO,+CAA+C,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAGzI,OAAO,qBAAqB,CAAC;AAC7B,OAAO,gCAAgC,CAAC;AACxC,OAAO,6BAA6B,CAAC;AACrC,OAAO,sBAAsB,CAAC;AAC9B,gDAAgD;AAChD,OAAO,sBAAsB,CAAC;AAC9B,OAAO,8BAA8B,CAAC;AAEtC,0CAA0C;AAC1C,gDAAgD;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,cAAc;AACd,MAAM,OAAO,GAAG;IACd,GAAG,EAAE,oCAAoC;IACzC,KAAK,EAAE,kCAAkC;CAAC,CAAC;AAE7C,sCAAsC;AACtC,MAAM,cAAc,GAAG,IAAI,CAAC;AAG5B;;GAEG;AACH,IAAI,GAA2B,CAAC;AAChC,IAAI,iBAA4B,CAAC;AACjC,IAAI,gBAAiC,CAAC;AAEtC;;GAEG;AACH,MAAM,eAAe,GAAG,GAAG,EAAE;IAE3B,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAC/C,QAAQ,CAAC,CAAC;QACV;YACE,eAAe,EAAE;gBACf,IAAI,EAAE,OAAO;aACd;YACD,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAClD,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACjC,CAAC,CAAC;SACH,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,eAAe,GAAc,EAAE,CAAC;IACpC,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC,CACtD;YACE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,eAAe;YACxB,cAAc,EAAE,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC;SAClD,CACF,CAAC,CAAC;QACH,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,eAAe,CAAC,IAAI,CAAC;QACnB,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,GAAG;KACb,CAAC,CAAC;IAEH,OAAO,eAAe,CAAC;AACzB,CAAC,CAAA;AAGD;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,MAAwB,EAAE,EAAE;IAEpD,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IAE/C,uBAAuB;IACvB,kBAAkB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAE3C,qBAAqB;IACrB,IAAI,MAAM,CAAC,gBAAgB,EAAE;QAC3B,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;KAC1C;IAED,WAAW;IACX,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,mCAAmC;IACnC,IAAI,MAAM,CAAC,qBAAqB,CAAC,YAAY,EAAE;QAC7C,MAAM,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC;YACtC,IAAI,EAAE,OAAO;YACb,IAAI,EAAE;gBACJ,EAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC;aAC9B;YACD,OAAO,EAAE,CAAC,OAAO,CAAC;YAClB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;KACJ;IAED,yCAAyC;IACzC,gBAAgB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IAChD,iBAAiB,GAAG,eAAe,EAAE,CAAC;IAEtC,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;AAE1C,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,EAAE,CAAC;AAE3B;;GAEG;AACH,MAAM,OAAgB,WAAY,SAAQ,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAkIrE;QAEE,KAAK,EAAE,CAAC;QAlIA,wBAAmB,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAEhE,yBAAyB;QAEzB,UAAK,GAAG,WAAW,CAAC;QAmBpB;;WAEG;QAEH,UAAK,GAAG,EAAE,CAAC;QAGX,WAAM,GAAG,EAAE,CAAC;QAGZ,UAAK,GAAG,EAAE,CAAC;QAEX;;WAEG;QAEH,kBAAa,GAAG,KAAK,CAAC;QAQZ,sBAAiB,GAAY,KAAK,CAAC;QAqF3C,MAAM,WAAW,GAAG,CAAC,SAAgB,EAAE,EAAE;YACvC,IAAI,SAAS,IAAI,EAAE,EAAE;gBACnB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC5B;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC3B;QACH,CAAC,CAAC;QAEF,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACvC,MAAM,uBAAuB,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/C,IAAI,CAAC,OAAO,EAAE;gBACZ,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE;oBAChC,WAAW,CAAC,uBAAuB,CAAC,CAAC;oBACrC,OAAO,GAAG,KAAK,CAAC;gBAClB,CAAC,CAAC,CAAC;gBACH,OAAO,GAAG,IAAI,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;QAEH,uDAAuD;QACvD,qFAAqF;QACrF,QAAQ,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC/C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,gBAAgB,CAAC,YAAY,EAAE;YACjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;QAED,uFAAuF;QACvF,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACjE,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,mDAAmD;IAEnD;;;OAGG;IACH,MAAM,KAAK,MAAM;QACf,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,KAAY,EAAE,MAAa,EAAE,KAAY;QAC9C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAGD;;;OAGG;IACH,oBAAoB;QAClB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAE,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;aACtD;QACH,CAAC,CAAC;QACF,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,MAAM;QACJ,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAA,CAAC;QAC/D,OAAO,IAAI,CAAA;;UAEL,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC;UACtE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;UACtC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,QAAQ,EAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,CAAC;;;qBAGrD,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC;;UAEnD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAA,oCAAoC,IAAI,CAAC,aAAa,uBAAuB,CAAC,CAAC,CAAC,EAAE;;iCAEpF,IAAI,CAAC,KAAK;mCACR,IAAI,CAAC,iBAAiB;8BAC3B,IAAI,CAAC,aAAa;YACpC,IAAI,CAAC,iBAAiB,EAAE;YACxB,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAA;sCACV,IAAI,CAAC,KAAK,KAAK,OAAO,kCAAkC,CAAC,CAAC,CAAC,EAAE;;;;QAI3F,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;YAChC,QAAQ,EAAE,CAAC,MAAsB,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;YAC3E,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE;YACjB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACxC,KAAK,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;SAC5C,CAAC;;QAEA,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAC,CAAC,CAAC,IAAI,CAAA;;UAEzB,IAAI,CAAC,aAAa,EAAE;gBACd,CAAC,CAAC,CAAC,EAAE;KAChB,CAAC;IACJ,CAAC;IAED,kDAAkD;IAC1C,aAAa,CAAC,UAAmB,EAAE,QAAwB;QACjE,IAAI,UAAU,EAAE;YACd,IAAI,CAAC,QAAQ,EAAE;gBACb,OAAO,cAAc,CAAC;aACvB;YACD,6CAA6C;YAC7C,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;SAClH;QACD,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED,WAAW,CAAC,UAAyB,EAAE,UAAkB;QACvD,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA;;;iBAGZ,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,yBAAyB;0BAC9C,IAAI,CAAC,aAAa;0BAClB,IAAI,CAAC,eAAe;mBAC3B,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;qBAClD,WAAW;wBACR,EAAE;uBACH,IAAI,CAAC,KAAK;sBACX,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,GAAG,eAAe;;UAE7D,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;;KAEzC,CAAC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,cAAc,CAAC,UAAyB,EAAE,UAAkB;QAC1D,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,OAAO,cAAc,CAAC,CAAC,CAAC,IAAI,CAAA;;;;0BAIN,IAAI,CAAC,aAAa;iBAC3B,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,6BAA6B;mBAC7D,IAAI,CAAC,iBAAiB;0BACf,IAAI,CAAC,eAAe;wBACtB,cAAc;uBACf,IAAI,CAAC,KAAK;;;KAG5B,CAAC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,kDAAkD;IAClD,aAAa;QACX,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC/C,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/C,OAAO,EAAE,CAAC;SACX;QACD,OAAO,IAAI,CAAA;;UAEL,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAA;;cAE7B,OAAO;;SAEZ,CAAC;;OAEH,CAAC;IACN,CAAC;IAED,aAAa;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;;;0BAGW,MAAM,CAAC,KAAK;qBACjB,MAAM,CAAC,OAAO;;qBAEd,OAAO;0BACF,IAAI,CAAC,uBAAuB;;KAEjD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,qFAAqF;IACrF,wBAAwB,CAAC,MAAsB;;QAC7C,OAAO,IAAI,CAAA;oCACqB,cAAc;QAC1C,MAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,0CAAE,IAAI,CAAC,UAAU;gBACjD,CAAC;IACf,CAAC;IAED;;OAEG;IACH,kBAAkB;;QAChB,OAAO,CAAA,MAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,0CAAE,IAAI,CAAC,UAAU,EAAC,CAAC,CAAC,IAAI,CAAA;6BAC9C,MAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,0CAAE,IAAI,CAAC,IAAI,SAAS;YACnF,CAAC,CAAC,IAAI,CAAA;;UAEF,MAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,0CAAE,IAAI,CAAC,UAAU;kBACjD,CAAC;IACjB,CAAC;IAED;;OAEG;IACF,kDAAkD;IAClD,gBAAgB,CAAC,KAAS;QACzB,OAAO,IAAI,CAAA;;QAEP,KAAK;gBACG,CAAC;IACf,CAAC;IAgBD,aAAa,CAAC,CAAc;QAC1B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QACzB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,CAAC;IAED,kDAAkD;IAClD,qBAAqB,CAAC,CAAK;QACzB,iGAAiG;QACjG,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;YACf,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACpC;aAAM;YACL,WAAW,CAAC,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAC/B;IACH,CAAC;IAED,kDAAkD;IAClD,uBAAuB,CAAC,CAAc;QACpC,MAAM,EAAC,OAAO,EAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QAC3B,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,WAAW,CAAC,YAAY,EAAE,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC7B;QACD,IAAI,OAAO,CAAC,MAAM,EAAG;YACnB,OAAO,CAAC,MAAM,EAAE,CAAC;SAClB;IACH,CAAC;IAED,kDAAkD;IAClD,iBAAiB,CAAC,CAAK;;QACrB,mCAAmC;QACnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,IAAI,GAAG,MAAA,UAAU,CAAC,IAAI,0CAAE,GAAG,CAAC,CAAC,WAAuB,EAAE,KAAY,EAAE,EAAE,CAAC,CAAC;gBACjF,GAAG,WAAW;gBACd,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;aAC9B,CAAC,CAAC,CAAC;SACL;IACH,CAAC;IAED,qBAAqB,CAAC,CAAM;;QAE1B,4FAA4F;QAC5F,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAE,CAAC;QAC/B,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1D,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;QAEjC,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACvC,QAAQ,CAAC,QAAQ,GAAG,cAAc,CAAC;QAEnC,iDAAiD;QACjD,UAAU,CAAC,GAAG,EAAE;;YACd,MAAA,IAAI,CAAC,UAAU,0CAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,CAAC,YAAY;QACjB,MAAM,CAAC,QAAQ,CAAC;YACd,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAC;IACL,CAAC;IAED,qDAAqD;IACrD,kDAAkD;IAClD,gBAAgB,CAAC,EAAc;QAC7B,IAAI,EAAE,EAAE;YACN,MAAM,IAAI,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YAClE,MAAM,CAAC,QAAQ,CAAC;gBACd,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC/C,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,QAAQ;aACnB,CAAC,CAAC;SACJ;IACH,CAAC;;AAjZM,kBAAM;AACX,sEAAsE;AACtE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BAiDmB,SAAS,CAAC,eAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;GAyB/B,CAAC;AA1HpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CACP;AAMpB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;0CACb;AAG3B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;6CACd;AAG1B;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;kDAMtC;AAMF;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;0CAC/B;AAGX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CACf;AAGZ;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAChB;AAMX;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;kDACN;AAItB;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;oDACP","sourcesContent":["import { html, LitElement, css, CSSResultGroup, TemplateResult, unsafeCSS } from 'lit';\nimport { router, navigator } from 'lit-element-router';\nimport { property } from 'lit/decorators.js';\n\nimport { FirebaseApp } from 'firebase/app';\n\nimport '@progressive-development/pd-page/pd-menu.js';\nimport '@progressive-development/pd-page/pd-footer.js';\n\nimport { ServiceCallController } from './service-call-controller2.js';\nimport { initializeStore } from './store/mini-rx.store.js';\n\nimport { authStateChangedImpl, initAppImpl, isAuthenticatedImpl, setServiceProvider } from './service-provider/service-provider-impl.js';\nimport { AppConfiguration, Footer, FunctionResult, MenuElement, NavigationConfig, NavigationPage } from './service-provider/service-provider-model.js';\n\nimport './router/AppMain.js';\nimport './defaultpage/default-login.js';\nimport './tmpown/pd-panel-viewer.js';\nimport './tmpown/pd-panel.js';\n// eslint-disable-next-line import/no-duplicates\nimport './tmpown/pd-toast.js';\nimport './tmpown/pd-loading-state.js';\n\n// TODO: How to solve this import problem?\n// eslint-disable-next-line import/no-duplicates\nimport { PdToast } from './tmpown/pd-toast.js';\n\n\n// Footer Text\nconst MADE_BY = {\n txt: \"made by PD Progressive Development\",\n email: \"info@progressive-development.com\"};\n\n// Visible time for time-limited toast\nconst TOAST_DURATION = 6000;\n\n\n/**\n * Transformed routes, generated during startInit.\n */\nlet app:FirebaseApp | undefined;\nlet transformedRoutes:Array<any>;\nlet navigationConfig:NavigationConfig;\n\n/**\n * Internal helper functions to generate route elemets for lit-router. \n */\nconst transformRoutes = () => {\n\n const transformAuthConfig = (withAuth:boolean) => \n withAuth ? \n {\n unauthenticated: {\n name: 'login',\n },\n authenticate: () => new Promise((resolve, reject) => {\n resolve(isAuthenticatedImpl());\n }),\n } : undefined;\n\n let generatedRoutes:Array<any> = [];\n navigationConfig.pages.forEach(cfEntry => {\n const addAraay = cfEntry.pattern.map(routeMapPattern => (\n {\n name: cfEntry.name,\n pattern: routeMapPattern,\n authentication: transformAuthConfig(cfEntry.auth),\n }\n )); \n generatedRoutes = generatedRoutes.concat(addAraay);\n });\n \n // add not-found route\n generatedRoutes.push({\n name: 'not-found',\n pattern: '*',\n });\n\n return generatedRoutes;\n}\n\n\n/**\n * Init the firebase app and application services like\n * functions and firestore. Generate routes from navigationConfig.\n * \n * @param navigationConfig\n * @param firebaseConfig\n * @param functionsConfig\n */\nexport const startInit = (config: AppConfiguration) => {\n\n console.log(\"Start init for config: \", config);\n\n // set service provider\n setServiceProvider(config.serviceProvider);\n \n // init mini-rx store\n if (config.storeConfigParam) {\n initializeStore(config.storeConfigParam);\n }\n\n // init app\n initAppImpl(config);\n\n // add login route if set in config\n if (config.navigationConfigParam.includeLogin) {\n config.navigationConfigParam.pages.push({\n name: \"login\",\n menu: [\n {key: \"login\", name: \"Login\"}\n ],\n pattern: [\"login\"],\n auth: false\n });\n }\n\n // generate routes from navigation config\n navigationConfig = config.navigationConfigParam;\n transformedRoutes = transformRoutes(); \n\n // init ready, trigger by even (if getAuth is called before, error is thrown) \n document.dispatchEvent(new CustomEvent(\"init-app-event\"));\n console.log(\"Init done, Event created\");\n\n};\n\nconst TOP_MENU_HEIGHT = 50;\n\n/**\n * Abstract class for SPAs. Extend within the app main class.\n */\nexport abstract class PdSpaHelper extends router(navigator(LitElement)) {\n\n protected functionsController = new ServiceCallController(this);\n\n // not used at the moment\n @property({ type: String }) \n title = 'Hey there';\n\n /**\n * Properties needed for login/profile data.\n */\n @property({ type: Object, state: true }) \n _user: unknown | undefined;\n\n @property({ type: Object, state: true }) \n _profile: any | undefined;\n\n @property({ type: Object, state: true }) \n _loadingState?: {\n isLoading: boolean,\n smallBackground?: boolean,\n modal?: boolean,\n loadingTxt?: string\n };\n \n /**\n * Properties needed for the router.\n */\n @property({ type: String, reflect: true }) \n route = \"\";\n\n @property({ type: Object }) \n params = {};\n\n @property({ type: Object }) \n query = {};\n\n /**\n * Indicates if the teaser should closed (depends on scroll position).\n */\n @property({ type: Boolean })\n _teaserClosed = false; \n\n\n @property({ type: String, state: true })\n abstract _selectedLocale: string;\n\n abstract _availableLocales: string[];\n\n protected _singleLocaleMenu: boolean = false;\n \n\n static styles = \n // Ref: Additional use classmap to add custom classes in concrete impl\n css`\n\n :host {\n display: flex;\n flex-flow: column;\n height: 100%;\n }\n\n header {\n flex-grow: 0;\n }\n\n main {\n flex-grow: 1;\n flex-basis: max-content;\n }\n\n footer {\n flex-grow: 0;\n }\n\n .default-header {\n width: 100%;\n position: fixed;\n top: 0;\n display: block;\n z-index: 99;\n }\n\n .default-teaser {\n --pd-panel-overflow: hidden;\n --pd-panel-height: var(--pd-teaser-height, 380px);\n --pd-panel-width: 100%; \n --pd-panel-border-radius: 0;\n --pd-panel-bg: var(--pd-default-col);\n --pd-panel-viewer-bg-col: var(--pd-default-col);\n }\n\n .default-menu { \n transition: background-color 2s;\n }\n\n .default-menu-withteaser { \n --pd-menu-bg-col: var(--pd-spa-menu-change-col, #AFC1D2);\n --pd-menu-font-col: var(--pd-spa-menu-change-font-col, #0A3A48);\n transition: background-color 2s;\n }\n\n .default-top-menu, .default-top-menu-withteaser { \n --pd-menu-height: ${unsafeCSS(TOP_MENU_HEIGHT)}px;\n --pd-menu-font-size: 0.8em; \n --pd-menu-shadow: 0;\n }\n\n .default-top-menu-withteaser { \n --pd-menu-bg-col: var(--pd-teaser-bg-col);\n }\n\n /* needed for pd-spa-padding-top, only for pages with teaser, check if refactor possible... */\n .default-main-padding {\n padding-top: calc(var(--pd-menu-height) + var(--pd-spa-padding-top, 120px)) ;\n transition: padding-top 2s;\n }\n\n .default-main {\n padding-top: calc(var(--pd-menu-height));\n transition: padding-top 2s;\n } \n\n .default-main-withteaser {\n padding-top: calc(var(--pd-menu-height) + var(--pd-teaser-height, 380px));\n transition: padding-top 2s;\n }\n\n ` as CSSResultGroup; \n\n constructor() {\n\n super(); \n\n const doSomething = (scrollPos:number) => {\n if (scrollPos <= 50) {\n this._teaserClosed = false;\n } else {\n this._teaserClosed = true;\n }\n };\n\n let ticking = false;\n document.addEventListener('scroll', () => {\n const lastKnownScrollPosition = window.scrollY;\n if (!ticking) {\n window.requestAnimationFrame(() => {\n doSomething(lastKnownScrollPosition);\n ticking = false;\n });\n ticking = true;\n }\n });\n\n // add login handler after init => else error is thrown\n // document.addEventListener(\"init-app-event\", this.activateLoginHandler.bind(this));\n document.addEventListener(\"init-app-event\", () => {\n console.log(\"Init event catched\");\n });\n if (navigationConfig.includeLogin) {\n this.activateLoginHandler();\n }\n\n // For common toast messages (not for callfunction toasts => handelt by own controller)\n this.addEventListener(\"toast-event\", this._createTemporaryToast);\n this.addEventListener(\"route-event\", this._handleMenuRouteEvent); \n }\n\n /**\n * Non reactive private property for the index db class.\n */\n // private _indexDBClient?: YoIndexDBClient|null; \n\n /**\n * Needed for the router.\n * Return all configured routes.\n */\n static get routes() {\n return transformedRoutes; \n }\n\n /**\n * Needed for the router.\n * Set route params to internal members.\n */\n router(route:string, params:Object, query:Object) {\n this.route = route;\n this.params = params;\n this.query = query;\n } \n\n\n /**\n * Call to activate onAuthState change with profile request callbacks.\n * Only implemented for firebase provider.\n */\n activateLoginHandler() {\n console.log(\"Activate Login Handler\"); \n const callback = (user: unknown) => {\n console.log(\"My callback user:\", user);\n this._user = user;\n if (this._user) {\n this._loginSuccess(new CustomEvent(\"login-success\"));\n }\n };\n authStateChangedImpl(callback);\n }\n\n render() { \n const pageConf = navigationConfig.pages.filter(p => p.name === this.route)[0];\n const hideTeaser = this._teaserClosed || !pageConf?.withTeaser;\n return html`\n <header id=\"headerElementId\" class=\"default-header\">\n ${pageConf?.hideTopMenu ? '' : this._renderTopMenu(pageConf, hideTeaser)}\n ${hideTeaser ? '' : this._renderTeaser()}\n ${pageConf?.hideMenu ? '' : this._renderMenu(pageConf, hideTeaser)}\n </header> \n\n <main class=\"${this._getMainClass(hideTeaser, pageConf)}\">\n\n ${this._loadingState ? html`<pd-loading-state .loadingState=\"${this._loadingState}\"></pd-loading-state>` : ''}\n\n <app-main active-route=${this.route}\n @init-menu-sections=\"${this._initMenuSections}\"\n @login-success=\"${this._loginSuccess}\">\n ${this._renderRoutePages()}\n ${navigationConfig.includeLogin ? html`\n <default-login ?active=\"${this.route === \"login\"}\" route=\"login\"></default-login>` : ''}\n </app-main>\n </main>\n\n ${this.functionsController.render({\n complete: (result: FunctionResult) => this._renderSuccessResultInfo(result),\n initial: () => '',\n pending: () => this._renderPendingInfo(),\n error: (e: any) => this._renderErrorInfo(e),\n })}\n\n ${pageConf?.withFooter ? html`\n <footer class=\"default-footer\">\n ${this._renderFooter()}\n </footer>` : ''}\n `;\n } \n\n // eslint-disable-next-line class-methods-use-this\n private _getMainClass(hideTeaser: boolean, pageConf: NavigationPage): string {\n if (hideTeaser) { \n if (!pageConf) {\n return \"default-main\";\n }\n // eslint-disable-next-line no-nested-ternary\n return pageConf.mainClass ? pageConf.mainClass : (pageConf.withTeaser ? \"default-main-padding\" : \"default-main\");\n }\n return \"default-main-withteaser\";\n }\n\n _renderMenu(pageConfig:NavigationPage, hideTeaser:boolean) {\n const menuForPage = pageConfig ? (pageConfig.menu || []) : [];\n return menuForPage ? html`\n <pd-menu\n id=\"pdHelperMenuId\"\n class=\"${hideTeaser ? \"default-menu\" : \"default-menu-withteaser\"}\"\n @locale-change=\"${this._localeChange}\"\n selectedLocale=\"${this._selectedLocale}\"\n .locales=${this._singleLocaleMenu ? this._availableLocales : []}\n .menuItems=${menuForPage}\n .topMenuItems=${[]}\n activeRoute=\"${this.route}\"\n headerSize=\"${this._getHeaderSize(hideTeaser) + TOP_MENU_HEIGHT}\"\n >\n ${hideTeaser ? this._getAppLogo() : ''}\n </pd-menu>\n ` : '';\n } \n\n _renderTopMenu(pageConfig:NavigationPage, hideTeaser:boolean) {\n const topMenuForPage = pageConfig ? pageConfig.topMenuItems : undefined;\n return topMenuForPage ? html`\n <pd-menu \n id=\"pdHelperTopMenuId\"\n noBurgerMenu\n @locale-change=\"${this._localeChange}\"\n class=\"${hideTeaser ? \"default-top-menu\" : \"default-top-menu-withteaser\"}\" \n .locales=${this._availableLocales}\n selectedLocale=\"${this._selectedLocale}\"\n .topMenuItems=${topMenuForPage}\n activeRoute=\"${this.route}\"\n >\n </pd-menu>\n ` : '';\n }\n\n // eslint-disable-next-line class-methods-use-this\n _renderTeaser(): TemplateResult | string {\n const teaserContent = this._getTeaserContent();\n if (!teaserContent || teaserContent.length <= 0) {\n return '';\n }\n return html`\n <pd-panel-viewer class=\"default-teaser\" id=\"teaserPanelViewerId\" deltaCalc=\"4\">\n ${teaserContent.map(content => html`\n <pd-panel>\n ${content}\n </pd-panel>\n `)}\n </pd-panel-viewer>\n `;\n }\n\n _renderFooter() {\n const footer = this._getFooter();\n return html`\n <pd-footer \n class=\"default-footer\"\n .footerLinks=\"${footer.links}\"\n version=\"${footer.version}\" \n copyright=\"PD Progressive Developent UG\" \n .madeBy=\"${MADE_BY}\" \n @footer-link=\"${this._handleFooterRouteEvent}\">\n </pd-footer>\n `;\n }\n\n /**\n * Called when (any) cloud function call was finished. \n */\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n _renderSuccessResultInfo(result: FunctionResult) {\n return html`\n <pd-toast isSuccess duration=\"${TOAST_DURATION}\">\n ${this.functionsController.callDataPromise?.func.successTxt}\n </pd-toast>`;\n }\n\n /**\n * Called when (any) cloud function is currently running. \n */\n _renderPendingInfo() {\n return this.functionsController.callDataPromise?.func.fadeWindow ? html`\n <p>Überblende und lade ${this.functionsController.callDataPromise?.func.name}...</p>` \n : html`\n <pd-toast duration=\"-1\">\n ${this.functionsController.callDataPromise?.func.pendingTxt}\n </pd-toast>`; \n }\n\n /**\n * Called when (any) cloud function stopped with errors.\n */\n // eslint-disable-next-line class-methods-use-this\n _renderErrorInfo(error:any) {\n return html`\n <pd-toast isError duration=\"-1\">\n ${error}\n </pd-toast>`;\n }\n\n protected abstract _getTeaserContent(): Array<TemplateResult>;\n\n protected abstract _getFooter(): Footer;\n\n protected abstract _getAppLogo(): TemplateResult;\n\n protected abstract _renderRoutePages(): any; \n\n protected abstract _loginSuccess(e: CustomEvent): void;\n\n protected abstract _setLocale(locale:string): void;\n\n protected abstract _getHeaderSize(hideTeaser: boolean): number;\n\n _localeChange(e: CustomEvent): void {\n this._setLocale(e.detail)\n this._selectedLocale = e.detail; \n } \n \n // eslint-disable-next-line class-methods-use-this\n _handleMenuRouteEvent(e:any) {\n // test with el, to handel jumps also here, not used at the moment, same postion link problems...\n if (e.detail.el) {\n this._scrollToContent(e.detail.el);\n } else {\n PdSpaHelper._scrollToTop();\n this.navigate(e.detail.route);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n _handleFooterRouteEvent(e: CustomEvent) { \n const {linkObj} = e.detail; \n if (linkObj.link) {\n PdSpaHelper._scrollToTop();\n this.navigate(linkObj.link); \n }\n if (linkObj.action ) { \n linkObj.action();\n }\n }\n \n // eslint-disable-next-line class-methods-use-this\n _initMenuSections(e:any) {\n // add link to configuration object\n const menRefConf = navigationConfig.pages.filter(p => p.name === e.detail.name)[0];\n if (menRefConf) { \n menRefConf.menu = menRefConf.menu?.map((menuElement:MenuElement, index:number) => ({\n ...menuElement,\n ref: e.detail.menuRefs[index]\n }));\n }\n }\n\n _createTemporaryToast(e: any) {\n \n // hide existing call function toast (old one still is visible for directly incoming errors)\n this.functionsController.clear();\n \n const tmpToast = new PdToast(); \n tmpToast.isError = e.detail.isError;\n tmpToast.isSuccess = e.detail.isSuccess;\n const slotContent = document.createTextNode(e.detail.txt);\n tmpToast.appendChild(slotContent) \n\n this.shadowRoot?.appendChild(tmpToast);\n tmpToast.duration = TOAST_DURATION;\n\n // set timeout to remove toast (one second later)\n setTimeout(() => {\n this.shadowRoot?.removeChild(tmpToast);\n }, TOAST_DURATION + 1000);\n }\n\n static _scrollToTop() {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n }\n\n // Test, not used at the moment, jump/menu problem...\n // eslint-disable-next-line class-methods-use-this\n _scrollToContent(el:HTMLElement) {\n if (el) {\n const rect = el.getBoundingClientRect();\n console.log(\"Rect: \", rect);\n console.log(\"Offset Top/Height: \", el.offsetTop, el.offsetHeight);\n window.scrollBy({\n top: rect.top - (this._teaserClosed ? 80 : 450),\n left: 0,\n behavior: 'smooth',\n });\n }\n }\n\n}"]}
1
+ {"version":3,"file":"PdSpaHelper.js","sourceRoot":"","sources":["../../src/PdSpaHelper.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, css, CSSResultGroup, TemplateResult, unsafeCSS } from 'lit';\nimport { router, navigator } from 'lit-element-router';\nimport { property } from 'lit/decorators.js';\n\nimport { Subscription } from 'rxjs';\n\nimport { FirebaseApp } from 'firebase/app';\n\nimport '@progressive-development/pd-page/pd-menu.js';\nimport '@progressive-development/pd-page/pd-footer.js';\n\nimport { ServiceCallController } from './service-call-controller2.js';\nimport { initializeStore, pdStore } from './store/mini-rx.store.js';\n\nimport { authStateChangedImpl, initAppImpl, isAuthenticatedImpl, setServiceProvider } from './service-provider/service-provider-impl.js';\nimport { AppConfiguration, Footer, FunctionResult, MenuElement, NavigationConfig, NavigationPage } from './service-provider/service-provider-model.js';\n\nimport { getLoadingSelector } from './store/spa-app-selector.js';\nimport { setRouteElement } from './store/spa-app-effects.js';\nimport { APP_CONF_EVENT, LoadingState } from './model/spa-model.js';\nimport { loginSucess } from './store/spa-app-actions.js';\n\nimport './router/AppMain.js';\nimport './defaultpage/default-login.js';\nimport './tmpown/pd-panel-viewer.js';\nimport './tmpown/pd-panel.js';\n// eslint-disable-next-line import/no-duplicates\nimport './tmpown/pd-toast.js';\nimport './tmpown/pd-loading-state.js';\n\n// TODO: How to solve this import problem?\n// eslint-disable-next-line import/no-duplicates\nimport { PdToast } from './tmpown/pd-toast.js';\n\n\n// Footer Text\nconst MADE_BY = {\n txt: \"made by PD Progressive Development\",\n email: \"info@progressive-development.com\"};\n\n// Visible time for time-limited toast\nconst TOAST_DURATION = 6000;\n\n\n/**\n * Transformed routes, generated during startInit.\n */\nlet app:FirebaseApp | undefined;\nlet transformedRoutes:Array<any>;\nlet navigationConfig:NavigationConfig;\n\n/**\n * Internal helper functions to generate route elemets for lit-router. \n */\nconst transformRoutes = () => {\n\n const transformAuthConfig = (withAuth:boolean) => \n withAuth ? \n {\n unauthenticated: {\n name: 'login',\n },\n authenticate: () => new Promise((resolve, reject) => {\n resolve(isAuthenticatedImpl());\n }),\n } : undefined;\n\n let generatedRoutes:Array<any> = [];\n navigationConfig.pages.forEach(cfEntry => {\n const addAraay = cfEntry.pattern.map(routeMapPattern => (\n {\n name: cfEntry.name,\n pattern: routeMapPattern,\n authentication: transformAuthConfig(cfEntry.auth),\n }\n )); \n generatedRoutes = generatedRoutes.concat(addAraay);\n });\n \n // add not-found route\n generatedRoutes.push({\n name: 'not-found',\n pattern: '*',\n });\n\n return generatedRoutes;\n}\n\n\n/**\n * Init the firebase app and application services like\n * functions and firestore. Generate routes from navigationConfig.\n * \n * @param navigationConfig\n * @param firebaseConfig\n * @param functionsConfig\n */\nexport const startInit = (config: AppConfiguration) => {\n\n console.log(\"Start init for config: \", config);\n\n // set service provider\n setServiceProvider(config.serviceProvider);\n \n // init mini-rx store\n if (config.storeConfigParam) {\n initializeStore(config.storeConfigParam);\n }\n\n // init app\n initAppImpl(config);\n\n // add login route if set in config\n if (config.navigationConfigParam.includeLogin) {\n config.navigationConfigParam.pages.push({\n name: \"login\",\n menu: [\n {key: \"login\", name: \"Login\"}\n ],\n pattern: [\"login\"],\n auth: false\n });\n }\n\n // generate routes from navigation config\n navigationConfig = config.navigationConfigParam;\n transformedRoutes = transformRoutes(); \n\n // init ready, trigger by even (if getAuth is called before, error is thrown) \n document.dispatchEvent(new CustomEvent(\"init-app-event\"));\n console.log(\"Init done, Event created\");\n\n};\n\nconst TOP_MENU_HEIGHT = 50;\n\n/**\n * Abstract class for SPAs. Extend within the app main class.\n */\nexport abstract class PdSpaHelper extends router(navigator(LitElement)) {\n\n protected functionsController = new ServiceCallController(this);\n\n protected abstract _appConfiguration: any;\n\n // not used at the moment\n @property({ type: String }) \n title = 'Hey there';\n\n /**\n * Properties needed for login/profile data.\n */\n @property({ type: Object, state: true }) \n _user: unknown | undefined;\n\n @property({ type: Object, state: true }) \n _profile: any | undefined;\n\n @property({ type: Object, state: true }) \n _loadingState?: LoadingState;\n \n /**\n * Properties needed for the router.\n */\n @property({ type: String, reflect: true }) \n route = \"\";\n\n @property({ type: Object }) \n params = {};\n\n @property({ type: Object }) \n query = {};\n\n /**\n * Indicates if the teaser should closed (depends on scroll position).\n */\n @property({ type: Boolean })\n _teaserClosed = false; \n\n\n @property({ type: String, state: true })\n abstract _selectedLocale: string;\n\n abstract _availableLocales: string[];\n\n protected _singleLocaleMenu: boolean = false;\n\n // subscription for loading-state selector\n _subscription?: Subscription; \n\n static styles = \n // Ref: Additional use classmap to add custom classes in concrete impl\n css`\n\n :host {\n display: flex;\n flex-flow: column;\n height: 100%;\n }\n\n header {\n flex-grow: 0;\n }\n\n main {\n flex-grow: 1;\n flex-basis: max-content;\n }\n\n footer {\n flex-grow: 0;\n }\n\n .default-header {\n width: 100%;\n position: fixed;\n top: 0;\n display: block;\n z-index: 99;\n }\n\n .default-teaser {\n --pd-panel-overflow: hidden;\n --pd-panel-height: var(--pd-teaser-height, 380px);\n --pd-panel-width: 100%; \n --pd-panel-border-radius: 0;\n --pd-panel-bg: var(--pd-default-col);\n --pd-panel-viewer-bg-col: var(--pd-default-col);\n }\n\n .default-menu { \n transition: background-color 2s;\n }\n\n .default-menu-withteaser { \n --pd-menu-bg-col: var(--pd-spa-menu-change-col, #AFC1D2);\n --pd-menu-font-col: var(--pd-spa-menu-change-font-col, #0A3A48);\n transition: background-color 2s;\n }\n\n .default-top-menu, .default-top-menu-withteaser { \n --pd-menu-height: ${unsafeCSS(TOP_MENU_HEIGHT)}px;\n --pd-menu-font-size: 0.8em; \n --pd-menu-shadow: 0;\n }\n\n .default-top-menu-withteaser { \n --pd-menu-bg-col: var(--pd-teaser-bg-col);\n }\n\n /* needed for pd-spa-padding-top, only for pages with teaser, check if refactor possible... */\n .default-main-padding {\n padding-top: calc(var(--pd-menu-height) + var(--pd-spa-padding-top, 120px)) ;\n transition: padding-top 2s;\n }\n\n .default-main {\n padding-top: calc(var(--pd-menu-height));\n transition: padding-top 2s;\n } \n\n .default-main-withteaser {\n padding-top: calc(var(--pd-menu-height) + var(--pd-teaser-height, 380px));\n transition: padding-top 2s;\n }\n\n ` as CSSResultGroup; \n\n constructor() {\n\n super(); \n\n setRouteElement(this);\n\n const doSomething = (scrollPos:number) => {\n if (scrollPos <= 50) {\n this._teaserClosed = false;\n } else {\n this._teaserClosed = true;\n }\n };\n\n let ticking = false;\n document.addEventListener('scroll', () => {\n const lastKnownScrollPosition = window.scrollY;\n if (!ticking) {\n window.requestAnimationFrame(() => {\n doSomething(lastKnownScrollPosition);\n ticking = false;\n });\n ticking = true;\n }\n });\n\n // add login handler after init => else error is thrown\n // document.addEventListener(\"init-app-event\", this.activateLoginHandler.bind(this));\n document.addEventListener(\"init-app-event\", () => {\n console.log(\"Init event catched\");\n });\n if (navigationConfig.includeLogin) {\n this.activateLoginHandler();\n }\n\n // For common toast messages (not for callfunction toasts => handelt by own controller)\n this.addEventListener(\"toast-event\", this._createTemporaryToast);\n this.addEventListener(\"route-event\", this._handleMenuRouteEvent);\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.addEventListener(APP_CONF_EVENT, this._setConfInDetail);\n this._subscription = pdStore().select(getLoadingSelector)\n .subscribe((loadingState) => {\n console.log(\"Loading State: \", loadingState);\n this._loadingState = loadingState;\n });\n }\n\n disconnectedCallback(): void {\n this.removeEventListener(APP_CONF_EVENT, this._setConfInDetail);\n this._subscription?.unsubscribe();\n super.disconnectedCallback();\n }\n\n _setConfInDetail(event: Event) {\n const {detail} = event as CustomEvent;\n if (detail) {\n detail.appConf = {\n ...this._appConfiguration\n };\n } \n }\n\n /**\n * Non reactive private property for the index db class.\n */\n // private _indexDBClient?: YoIndexDBClient|null; \n\n /**\n * Needed for the router.\n * Return all configured routes.\n */\n static get routes() {\n return transformedRoutes; \n }\n\n /**\n * Needed for the router.\n * Set route params to internal members.\n */\n router(route:string, params:Object, query:Object) {\n this.route = route;\n this.params = params;\n this.query = query;\n } \n\n\n /**\n * Call to activate onAuthState change with profile request callbacks.\n * Only implemented for firebase provider.\n */\n activateLoginHandler() {\n console.log(\"Activate Login Handler\"); \n const callback = (user: unknown) => {\n console.log(\"My callback user:\", user);\n this._user = user;\n if (this._user) {\n pdStore().dispatch(loginSucess());\n this._loginSuccess(new CustomEvent(\"login-success\"));\n }\n };\n authStateChangedImpl(callback);\n }\n\n render() { \n const pageConf = navigationConfig.pages.filter(p => p.name === this.route)[0];\n const hideTeaser = this._teaserClosed || !pageConf?.withTeaser;\n return html`\n <header id=\"headerElementId\" class=\"default-header\">\n ${pageConf?.hideTopMenu ? '' : this._renderTopMenu(pageConf, hideTeaser)}\n ${hideTeaser ? '' : this._renderTeaser()}\n ${pageConf?.hideMenu ? '' : this._renderMenu(pageConf, hideTeaser)}\n </header> \n\n <main class=\"${this._getMainClass(hideTeaser, pageConf)}\">\n\n ${this._loadingState ? html`<pd-loading-state .loadingState=\"${this._loadingState}\"></pd-loading-state>` : ''}\n\n <app-main active-route=${this.route}\n @init-menu-sections=\"${this._initMenuSections}\"\n @login-success=\"${this._loginSuccess}\">\n ${this._renderRoutePages()}\n ${navigationConfig.includeLogin ? html`\n <default-login ?active=\"${this.route === \"login\"}\" route=\"login\"></default-login>` : ''}\n </app-main>\n </main>\n\n ${this.functionsController.render({\n complete: (result: FunctionResult) => this._renderSuccessResultInfo(result),\n initial: () => '',\n pending: () => this._renderPendingInfo(),\n error: (e: any) => this._renderErrorInfo(e),\n })}\n\n ${pageConf?.withFooter ? html`\n <footer class=\"default-footer\">\n ${this._renderFooter()}\n </footer>` : ''}\n `;\n } \n\n // eslint-disable-next-line class-methods-use-this\n private _getMainClass(hideTeaser: boolean, pageConf: NavigationPage): string {\n if (hideTeaser) { \n if (!pageConf) {\n return \"default-main\";\n }\n // eslint-disable-next-line no-nested-ternary\n return pageConf.mainClass ? pageConf.mainClass : (pageConf.withTeaser ? \"default-main-padding\" : \"default-main\");\n }\n return \"default-main-withteaser\";\n }\n\n _renderMenu(pageConfig:NavigationPage, hideTeaser:boolean) {\n const menuForPage = pageConfig ? (pageConfig.menu || []) : [];\n return menuForPage ? html`\n <pd-menu\n id=\"pdHelperMenuId\"\n class=\"${hideTeaser ? \"default-menu\" : \"default-menu-withteaser\"}\"\n @locale-change=\"${this._localeChange}\"\n selectedLocale=\"${this._selectedLocale}\"\n .locales=${this._singleLocaleMenu ? this._availableLocales : []}\n .menuItems=${menuForPage}\n .topMenuItems=${[]}\n activeRoute=\"${this.route}\"\n headerSize=\"${this._getHeaderSize(hideTeaser) + TOP_MENU_HEIGHT}\"\n >\n ${hideTeaser ? this._getAppLogo() : ''}\n </pd-menu>\n ` : '';\n } \n\n _renderTopMenu(pageConfig:NavigationPage, hideTeaser:boolean) {\n const topMenuForPage = pageConfig ? pageConfig.topMenuItems : undefined;\n return topMenuForPage ? html`\n <pd-menu \n id=\"pdHelperTopMenuId\"\n noBurgerMenu\n @locale-change=\"${this._localeChange}\"\n class=\"${hideTeaser ? \"default-top-menu\" : \"default-top-menu-withteaser\"}\" \n .locales=${this._availableLocales}\n selectedLocale=\"${this._selectedLocale}\"\n .topMenuItems=${topMenuForPage}\n activeRoute=\"${this.route}\"\n >\n </pd-menu>\n ` : '';\n }\n\n // eslint-disable-next-line class-methods-use-this\n _renderTeaser(): TemplateResult | string {\n const teaserContent = this._getTeaserContent();\n if (!teaserContent || teaserContent.length <= 0) {\n return '';\n }\n return html`\n <pd-panel-viewer class=\"default-teaser\" id=\"teaserPanelViewerId\" deltaCalc=\"4\">\n ${teaserContent.map(content => html`\n <pd-panel>\n ${content}\n </pd-panel>\n `)}\n </pd-panel-viewer>\n `;\n }\n\n _renderFooter() {\n const footer = this._getFooter();\n return html`\n <pd-footer \n class=\"default-footer\"\n .footerLinks=\"${footer.links}\"\n version=\"${footer.version}\" \n copyright=\"PD Progressive Developent UG\" \n .madeBy=\"${MADE_BY}\" \n @footer-link=\"${this._handleFooterRouteEvent}\">\n </pd-footer>\n `;\n }\n\n /**\n * Called when (any) cloud function call was finished. \n */\n // eslint-disable-next-line class-methods-use-this, @typescript-eslint/no-unused-vars\n _renderSuccessResultInfo(result: FunctionResult) {\n return html`\n <pd-toast isSuccess duration=\"${TOAST_DURATION}\">\n ${this.functionsController.callDataPromise?.func.successTxt}\n </pd-toast>`;\n }\n\n /**\n * Called when (any) cloud function is currently running. \n */\n _renderPendingInfo() {\n return this.functionsController.callDataPromise?.func.fadeWindow ? html`\n <p>Überblende und lade ${this.functionsController.callDataPromise?.func.name}...</p>` \n : html`\n <pd-toast duration=\"-1\">\n ${this.functionsController.callDataPromise?.func.pendingTxt}\n </pd-toast>`; \n }\n\n /**\n * Called when (any) cloud function stopped with errors.\n */\n // eslint-disable-next-line class-methods-use-this\n _renderErrorInfo(error:any) {\n return html`\n <pd-toast isError duration=\"-1\">\n ${error}\n </pd-toast>`;\n }\n\n protected abstract _getTeaserContent(): Array<TemplateResult>;\n\n protected abstract _getFooter(): Footer;\n\n protected abstract _getAppLogo(): TemplateResult;\n\n protected abstract _renderRoutePages(): any; \n\n protected abstract _loginSuccess(e: CustomEvent): void;\n\n protected abstract _setLocale(locale:string): void;\n\n protected abstract _getHeaderSize(hideTeaser: boolean): number;\n\n _localeChange(e: CustomEvent): void {\n this._setLocale(e.detail)\n this._selectedLocale = e.detail; \n } \n \n // eslint-disable-next-line class-methods-use-this\n _handleMenuRouteEvent(e:any) {\n // test with el, to handel jumps also here, not used at the moment, same postion link problems...\n if (e.detail.el) {\n this._scrollToContent(e.detail.el);\n } else {\n PdSpaHelper._scrollToTop();\n this.navigate(e.detail.route);\n }\n }\n\n // eslint-disable-next-line class-methods-use-this\n _handleFooterRouteEvent(e: CustomEvent) { \n const {linkObj} = e.detail; \n if (linkObj.link) {\n PdSpaHelper._scrollToTop();\n this.navigate(linkObj.link); \n }\n if (linkObj.action ) { \n linkObj.action();\n }\n }\n \n // eslint-disable-next-line class-methods-use-this\n _initMenuSections(e:any) {\n // add link to configuration object\n const menRefConf = navigationConfig.pages.filter(p => p.name === e.detail.name)[0];\n if (menRefConf) { \n menRefConf.menu = menRefConf.menu?.map((menuElement:MenuElement, index:number) => ({\n ...menuElement,\n ref: e.detail.menuRefs[index]\n }));\n }\n }\n\n _createTemporaryToast(e: any) {\n \n // hide existing call function toast (old one still is visible for directly incoming errors)\n this.functionsController.clear();\n \n const tmpToast = new PdToast(); \n tmpToast.isError = e.detail.isError;\n tmpToast.isSuccess = e.detail.isSuccess;\n const slotContent = document.createTextNode(e.detail.txt);\n tmpToast.appendChild(slotContent) \n\n this.shadowRoot?.appendChild(tmpToast);\n tmpToast.duration = TOAST_DURATION;\n\n // set timeout to remove toast (one second later)\n setTimeout(() => {\n this.shadowRoot?.removeChild(tmpToast);\n }, TOAST_DURATION + 1000);\n }\n\n static _scrollToTop() {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth',\n });\n }\n\n // Test, not used at the moment, jump/menu problem...\n // eslint-disable-next-line class-methods-use-this\n _scrollToContent(el:HTMLElement) {\n if (el) {\n const rect = el.getBoundingClientRect();\n console.log(\"Rect: \", rect);\n console.log(\"Offset Top/Height: \", el.offsetTop, el.offsetHeight);\n window.scrollBy({\n top: rect.top - (this._teaserClosed ? 80 : 450),\n left: 0,\n behavior: 'smooth',\n });\n }\n }\n\n}"]}
@@ -0,0 +1,7 @@
1
+ export declare const APP_CONF_EVENT = "get-app-conf";
2
+ export interface LoadingState {
3
+ isLoading: boolean;
4
+ modal?: boolean;
5
+ smallBackground?: boolean;
6
+ loadingTxt?: string;
7
+ }
@@ -0,0 +1,2 @@
1
+ export const APP_CONF_EVENT = "get-app-conf";
2
+ //# sourceMappingURL=spa-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa-model.js","sourceRoot":"","sources":["../../../src/model/spa-model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC","sourcesContent":["export const APP_CONF_EVENT = \"get-app-conf\";\n\nexport interface LoadingState {\n isLoading: boolean,\n modal?: boolean,\n smallBackground?: boolean,\n loadingTxt?: string\n}"]}
@@ -21,4 +21,4 @@ export declare const initDB: (config: {
21
21
  keyPath?: string;
22
22
  };
23
23
  }[];
24
- }, successCallback: Function) => void;
24
+ }) => void;
@@ -1,4 +1,6 @@
1
1
  // use version import to initialize modul
2
+ import { pdStore } from "./mini-rx.store";
3
+ import { initIndexDBSucess } from "./spa-app-actions.js";
2
4
  const { indexedDB } = window;
3
5
  let db;
4
6
  /*
@@ -143,7 +145,7 @@ const removeDatabase = (dbName) => new Promise((resolve, reject) => {
143
145
  * @param config - config for index db
144
146
  * @param successCallback - callback function after db is successfully initialized
145
147
  */
146
- export const initDB = (config, successCallback) => {
148
+ export const initDB = (config) => {
147
149
  if (!indexedDB) {
148
150
  window.alert("Your browser doesn't support a stable version of IndexedDB.");
149
151
  }
@@ -156,7 +158,7 @@ export const initDB = (config, successCallback) => {
156
158
  request.onsuccess = () => {
157
159
  db = request.result;
158
160
  console.log(`db init success: ${db}`);
159
- successCallback();
161
+ pdStore().dispatch(initIndexDBSucess());
160
162
  };
161
163
  request.onupgradeneeded = (event) => {
162
164
  console.log('Upgrade needed', event);
@@ -1 +1 @@
1
- {"version":3,"file":"indexDB.js","sourceRoot":"","sources":["../../../src/store/indexDB.ts"],"names":[],"mappings":"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","sourcesContent":["// use version import to initialize modul\n\nconst {indexedDB} = window;\nlet db:any;\n\n/*\nEine kurze Verzögerung eingebaut.\n\nFehler im Chrome (einmal, sonst nicht) => Vorher logout durch USerSync (user nicht da).\nUpgrade needed IDBVersionChangeEvent {isTrusted: true, oldVersion: 0, newVersion: 2, dataLoss: \"none\", dataLossMessage: \"\",}\nindexDB2.js:190 Error during background initialize DOMException: Failed to execute 'transaction' on 'IDBDatabase': A version change transaction is running.\n at http://localhost:8000/src/js/indexDB2.js:32:24\n at new Promise (<anonymous>)\n at add (http://localhost:8000/src/js/indexDB2.js:31:46)\n at addBackground (http://localhost:8000/src/js/indexDB2.js:203:38)\n at http://localhost:8000/src/js/indexDB2.js:143:26\n\n*/\n\nexport const add = <T>(table: string, el: T, ignoreDuplicates: boolean) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .add(el);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (event: any) => {\n if (event.target.error.code === 0 && ignoreDuplicates) {\n return resolve('duplicate');\n }\n console.warn('Unable to add data!', event, el);\n return reject(event.target.error);\n };\n });\n\nexport const update = <T>(table: string, el: T) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .put(el);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (event: any) => {\n console.warn('Unable to put data!', event, el);\n return reject(event.target.error);\n };\n }); \n\nexport const updateAll = <T>(table: string, elArray: T[]) =>\n new Promise((resolve, reject) => {\n const promises: unknown[] = [];\n elArray.forEach(el => {\n promises.push(update<T>(table, el));\n });\n\n return Promise.all(promises)\n .then(resArr => resolve(resArr))\n .catch(e => reject(e));\n });\n\n\nexport const addAll = <T>(table: string, elArray: T[], ignoreDuplicates: boolean) =>\n new Promise((resolve, reject) => {\n const promises: unknown[] = [];\n elArray.forEach(el => {\n promises.push(<T>add(table, el, ignoreDuplicates));\n });\n\n return Promise.all(promises)\n .then(resArr => resolve(resArr))\n .catch(e => reject(e));\n });\n\n\nconst deleteEl = (table: string, id: string) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .delete(id);\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n }); \n\n\nexport const deleteAllEl = (table: string, elIdArray: string[]) =>\n new Promise((resolve, reject) => {\n const promises: unknown[] = [];\n elIdArray.forEach(elId => {\n promises.push(deleteEl(table, elId));\n });\n\n return Promise.all(promises)\n .then(resArr => resolve(resArr))\n .catch(e => reject(e));\n }); \n\n\nexport const get = <T>(table: string, id: string): Promise<T> =>\n new Promise((resolve, reject) => {\n const request = db.transaction([table]).objectStore(table).get(id);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n });\n\nexport const getAll = <T>(table: string, index?: string): Promise<T[]> =>\n new Promise((resolve, reject) => {\n const request = index\n ? db\n .transaction([table], 'readonly')\n .objectStore(table)\n .index(index)\n .openCursor()\n : db.transaction([table], 'readonly').objectStore(table).openCursor();\n // CHECK: getAll => https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore \n const res: T[] = [];\n request.onsuccess = function (event: any) {\n const cursor = event.target.result;\n if (cursor) {\n // cursor.value contains the current record being iterated through\n // this is where you'd do something with the result\n res.push(cursor.value);\n cursor.continue();\n } else {\n // no more results\n resolve(res);\n }\n };\n request.onerror = (e: any) => reject(e);\n });\n\nexport const getAllIds = (table: string) => \n new Promise((resolve, reject) => {\n const request = db.transaction([table], 'readonly').objectStore(table).openCursor();\n // CHECK: getAll => https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore \n const res: unknown[] = [];\n request.onsuccess = function (event: any) {\n const cursor = event.target.result;\n if (cursor) {\n // cursor.value contains the current record being iterated through\n // this is where you'd do something with the result\n res.push(cursor.value.id);\n cursor.continue();\n } else {\n // no more results\n resolve(res);\n }\n };\n request.onerror = (e: any) => reject(e);\n });\n\n\nconst deleteAll = (table: string) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .clear();\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n });\n\n\nconst removeDatabase = (dbName:string) =>\n new Promise((resolve, reject) => {\n db.close();\n const request = indexedDB.deleteDatabase(dbName);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n});\n\n\n/**\n * Init indexDB for application.\n * \n * @param config - config for index db \n * @param successCallback - callback function after db is successfully initialized \n */\nexport const initDB = (\n config: {\n dbName:string,\n dbVersion:number,\n collections: {\n name: string,\n collectionConf: { \n keyPath?: string\n }\n }[]\n }, \n successCallback: Function\n) => {\n if (!indexedDB) {\n window.alert(\"Your browser doesn't support a stable version of IndexedDB.\");\n } else {\n const {dbName, dbVersion, collections} = config;\n const request = indexedDB.open(dbName, dbVersion);\n request.onerror = event => {\n console.log('error during db init:', event);\n };\n\n request.onsuccess = () => {\n db = request.result;\n console.log(`db init success: ${db}`);\n successCallback();\n };\n\n request.onupgradeneeded = (event: any) => {\n console.log('Upgrade needed', event);\n db = event.target.result;\n switch (event.oldVersion) {\n // first call from client, init db\n case 0: \n collections.forEach(c => {\n db.createObjectStore(c.name, c.collectionConf);\n });\n break;\n // depending on our needs, add specific versions here to migrate existing db\n // case X: ....\n default:\n console.log('No update needed for db');\n }\n };\n }\n};\n"]}
1
+ {"version":3,"file":"indexDB.js","sourceRoot":"","sources":["../../../src/store/indexDB.ts"],"names":[],"mappings":"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","sourcesContent":["// use version import to initialize modul\n\nimport { pdStore } from \"./mini-rx.store\";\nimport { initIndexDBSucess } from \"./spa-app-actions.js\";\n\nconst {indexedDB} = window;\nlet db:any;\n\n/*\nEine kurze Verzögerung eingebaut.\n\nFehler im Chrome (einmal, sonst nicht) => Vorher logout durch USerSync (user nicht da).\nUpgrade needed IDBVersionChangeEvent {isTrusted: true, oldVersion: 0, newVersion: 2, dataLoss: \"none\", dataLossMessage: \"\",}\nindexDB2.js:190 Error during background initialize DOMException: Failed to execute 'transaction' on 'IDBDatabase': A version change transaction is running.\n at http://localhost:8000/src/js/indexDB2.js:32:24\n at new Promise (<anonymous>)\n at add (http://localhost:8000/src/js/indexDB2.js:31:46)\n at addBackground (http://localhost:8000/src/js/indexDB2.js:203:38)\n at http://localhost:8000/src/js/indexDB2.js:143:26\n\n*/\n\nexport const add = <T>(table: string, el: T, ignoreDuplicates: boolean) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .add(el);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (event: any) => {\n if (event.target.error.code === 0 && ignoreDuplicates) {\n return resolve('duplicate');\n }\n console.warn('Unable to add data!', event, el);\n return reject(event.target.error);\n };\n });\n\nexport const update = <T>(table: string, el: T) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .put(el);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (event: any) => {\n console.warn('Unable to put data!', event, el);\n return reject(event.target.error);\n };\n }); \n\nexport const updateAll = <T>(table: string, elArray: T[]) =>\n new Promise((resolve, reject) => {\n const promises: unknown[] = [];\n elArray.forEach(el => {\n promises.push(update<T>(table, el));\n });\n\n return Promise.all(promises)\n .then(resArr => resolve(resArr))\n .catch(e => reject(e));\n });\n\n\nexport const addAll = <T>(table: string, elArray: T[], ignoreDuplicates: boolean) =>\n new Promise((resolve, reject) => {\n const promises: unknown[] = [];\n elArray.forEach(el => {\n promises.push(<T>add(table, el, ignoreDuplicates));\n });\n\n return Promise.all(promises)\n .then(resArr => resolve(resArr))\n .catch(e => reject(e));\n });\n\n\nconst deleteEl = (table: string, id: string) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .delete(id);\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n }); \n\n\nexport const deleteAllEl = (table: string, elIdArray: string[]) =>\n new Promise((resolve, reject) => {\n const promises: unknown[] = [];\n elIdArray.forEach(elId => {\n promises.push(deleteEl(table, elId));\n });\n\n return Promise.all(promises)\n .then(resArr => resolve(resArr))\n .catch(e => reject(e));\n }); \n\n\nexport const get = <T>(table: string, id: string): Promise<T> =>\n new Promise((resolve, reject) => {\n const request = db.transaction([table]).objectStore(table).get(id);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n });\n\nexport const getAll = <T>(table: string, index?: string): Promise<T[]> =>\n new Promise((resolve, reject) => {\n const request = index\n ? db\n .transaction([table], 'readonly')\n .objectStore(table)\n .index(index)\n .openCursor()\n : db.transaction([table], 'readonly').objectStore(table).openCursor();\n // CHECK: getAll => https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore \n const res: T[] = [];\n request.onsuccess = function (event: any) {\n const cursor = event.target.result;\n if (cursor) {\n // cursor.value contains the current record being iterated through\n // this is where you'd do something with the result\n res.push(cursor.value);\n cursor.continue();\n } else {\n // no more results\n resolve(res);\n }\n };\n request.onerror = (e: any) => reject(e);\n });\n\nexport const getAllIds = (table: string) => \n new Promise((resolve, reject) => {\n const request = db.transaction([table], 'readonly').objectStore(table).openCursor();\n // CHECK: getAll => https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore \n const res: unknown[] = [];\n request.onsuccess = function (event: any) {\n const cursor = event.target.result;\n if (cursor) {\n // cursor.value contains the current record being iterated through\n // this is where you'd do something with the result\n res.push(cursor.value.id);\n cursor.continue();\n } else {\n // no more results\n resolve(res);\n }\n };\n request.onerror = (e: any) => reject(e);\n });\n\n\nconst deleteAll = (table: string) =>\n new Promise((resolve, reject) => {\n const request = db\n .transaction([table], 'readwrite')\n .objectStore(table)\n .clear();\n\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n });\n\n\nconst removeDatabase = (dbName:string) =>\n new Promise((resolve, reject) => {\n db.close();\n const request = indexedDB.deleteDatabase(dbName);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e: any) => reject(e);\n});\n\n\n/**\n * Init indexDB for application.\n * \n * @param config - config for index db \n * @param successCallback - callback function after db is successfully initialized \n */\nexport const initDB = (\n config: {\n dbName:string,\n dbVersion:number,\n collections: {\n name: string,\n collectionConf: { \n keyPath?: string\n }\n }[]\n }) => {\n if (!indexedDB) {\n window.alert(\"Your browser doesn't support a stable version of IndexedDB.\");\n } else {\n const {dbName, dbVersion, collections} = config;\n const request = indexedDB.open(dbName, dbVersion);\n request.onerror = event => {\n console.log('error during db init:', event);\n };\n\n request.onsuccess = () => {\n db = request.result;\n console.log(`db init success: ${db}`);\n pdStore().dispatch(initIndexDBSucess());\n };\n\n request.onupgradeneeded = (event: any) => {\n console.log('Upgrade needed', event);\n db = event.target.result;\n switch (event.oldVersion) {\n // first call from client, init db\n case 0: \n collections.forEach(c => {\n db.createObjectStore(c.name, c.collectionConf);\n });\n break;\n // depending on our needs, add specific versions here to migrate existing db\n // case X: ....\n default:\n console.log('No update needed for db');\n }\n };\n }\n};\n"]}
@@ -1,11 +1,18 @@
1
1
  import { configureStore, LoggerExtension, ReduxDevtoolsExtension, ImmutableStateExtension } from 'mini-rx-store';
2
+ import { spaAppReducer } from '../store/spa-app-reducer.js';
3
+ import { appRouteEffect } from '../store/spa-app-effects.js';
2
4
  let store;
3
5
  export const initializeStore = (param) => {
4
6
  console.log("Initialize Store:", param);
5
7
  // create store
6
8
  if (!store) {
7
9
  store = configureStore({
8
- reducers: param.reducer,
10
+ reducers: param.reducer ? {
11
+ spaApp: spaAppReducer,
12
+ ...param.reducer
13
+ } : {
14
+ spaApp: spaAppReducer
15
+ },
9
16
  extensions: [
10
17
  new LoggerExtension(),
11
18
  new ReduxDevtoolsExtension({
@@ -14,7 +21,9 @@ export const initializeStore = (param) => {
14
21
  new ImmutableStateExtension()
15
22
  ],
16
23
  });
17
- // register effects
24
+ // register default effects
25
+ store.effect(appRouteEffect);
26
+ // register configured effects
18
27
  param.effects.forEach(effect => store.effect(effect));
19
28
  }
20
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"mini-rx.store.js","sourceRoot":"","sources":["../../../src/store/mini-rx.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAS,eAAe,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAKxH,IAAI,KAAY,CAAC;AAEjB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAE,EAAE;IAEpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAExC,eAAe;IACf,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,cAAc,CAAC;YACrB,QAAQ,EAAE,KAAK,CAAC,OAAO;YACvB,UAAU,EAAE;gBACV,IAAI,eAAe,EAAE;gBACrB,IAAI,sBAAsB,CAAC;oBACzB,IAAI,EAAE,KAAK,CAAC,OAAO;iBACpB,CAAC;gBACF,IAAI,uBAAuB,EAAE;aAC9B;SACF,CAAC,CAAC;QAEH,mBAAmB;QACnB,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KACvD;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,KAAK,CAAC","sourcesContent":["import { configureStore, Store, LoggerExtension, ReduxDevtoolsExtension, ImmutableStateExtension } from 'mini-rx-store';\n\nimport { StoreConfig } from '../service-provider/service-provider-model.js';\n\n\nlet store: Store;\n\nexport const initializeStore = (param: StoreConfig) => {\n\n console.log(\"Initialize Store:\", param);\n\n // create store\n if (!store) {\n store = configureStore({ \n reducers: param.reducer,\n extensions: [\n new LoggerExtension(),\n new ReduxDevtoolsExtension({\n name: param.appName\n }),\n new ImmutableStateExtension()\n ],\n });\n\n // register effects\n param.effects.forEach(effect => store.effect(effect));\n }\n}\n\nexport const pdStore = ():Store => store;\n"]}
1
+ {"version":3,"file":"mini-rx.store.js","sourceRoot":"","sources":["../../../src/store/mini-rx.store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAS,eAAe,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAIxH,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,IAAI,KAAY,CAAC;AAEjB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAE,EAAE;IAEpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IAExC,eAAe;IACf,IAAI,CAAC,KAAK,EAAE;QACV,KAAK,GAAG,cAAc,CAAC;YACrB,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxB,MAAM,EAAE,aAAa;gBACrB,GAAG,KAAK,CAAC,OAAO;aACjB,CAAC,CAAC,CAAC;gBACF,MAAM,EAAE,aAAa;aACtB;YACD,UAAU,EAAE;gBACV,IAAI,eAAe,EAAE;gBACrB,IAAI,sBAAsB,CAAC;oBACzB,IAAI,EAAE,KAAK,CAAC,OAAO;iBACpB,CAAC;gBACF,IAAI,uBAAuB,EAAE;aAC9B;SACF,CAAC,CAAC;QAEH,2BAA2B;QAC3B,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KACvD;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,KAAK,CAAC","sourcesContent":["import { configureStore, Store, LoggerExtension, ReduxDevtoolsExtension, ImmutableStateExtension } from 'mini-rx-store';\n\nimport { StoreConfig } from '../service-provider/service-provider-model.js';\n\nimport { spaAppReducer } from '../store/spa-app-reducer.js';\nimport { appRouteEffect } from '../store/spa-app-effects.js';\n\n\nlet store: Store;\n\nexport const initializeStore = (param: StoreConfig) => {\n\n console.log(\"Initialize Store:\", param);\n\n // create store\n if (!store) {\n store = configureStore({ \n reducers: param.reducer ? {\n spaApp: spaAppReducer,\n ...param.reducer\n } : {\n spaApp: spaAppReducer \n },\n extensions: [\n new LoggerExtension(),\n new ReduxDevtoolsExtension({\n name: param.appName\n }),\n new ImmutableStateExtension()\n ],\n });\n\n // register default effects\n store.effect(appRouteEffect);\n\n // register configured effects\n param.effects.forEach(effect => store.effect(effect));\n }\n}\n\nexport const pdStore = ():Store => store;\n"]}
@@ -0,0 +1,32 @@
1
+ import { LoadingState } from '../model/spa-model.js';
2
+ export declare const initIndexDBSucess: (() => {
3
+ type: "SPA_INIT_INDEX_DB_SUCCESS";
4
+ }) & {
5
+ type: "SPA_INIT_INDEX_DB_SUCCESS";
6
+ };
7
+ export declare const loginSucess: (() => {
8
+ type: "SPA_LOGIN_SUCCESS";
9
+ }) & {
10
+ type: "SPA_LOGIN_SUCCESS";
11
+ };
12
+ export declare const routeAction: ((payload: string) => {
13
+ payload: string;
14
+ } & {
15
+ type: "SPA_APP_ROUTE";
16
+ }) & {
17
+ type: "SPA_APP_ROUTE";
18
+ };
19
+ export declare const updateInternetOffline: ((payload: boolean) => {
20
+ payload: boolean;
21
+ } & {
22
+ type: "SPA_APP_UPDATE_INTERNET_OFFLINE";
23
+ }) & {
24
+ type: "SPA_APP_UPDATE_INTERNET_OFFLINE";
25
+ };
26
+ export declare const loadingStateChange: ((payload: LoadingState) => {
27
+ payload: LoadingState;
28
+ } & {
29
+ type: "SPA_APP_LOADING_STATE_CHANGE";
30
+ }) & {
31
+ type: "SPA_APP_LOADING_STATE_CHANGE";
32
+ };
@@ -0,0 +1,7 @@
1
+ import { action, payload } from 'ts-action';
2
+ export const initIndexDBSucess = action('SPA_INIT_INDEX_DB_SUCCESS');
3
+ export const loginSucess = action('SPA_LOGIN_SUCCESS');
4
+ export const routeAction = action('SPA_APP_ROUTE', payload());
5
+ export const updateInternetOffline = action('SPA_APP_UPDATE_INTERNET_OFFLINE', payload());
6
+ export const loadingStateChange = action('SPA_APP_LOADING_STATE_CHANGE', payload());
7
+ //# sourceMappingURL=spa-app-actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa-app-actions.js","sourceRoot":"","sources":["../../../src/store/spa-app-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,2BAA2B,CAAC,CAAC;AACrE,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,EAAE,OAAO,EAAU,CAAC,CAAC;AAEtE,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,iCAAiC,EAAE,OAAO,EAAW,CAAC,CAAC;AAEnG,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,8BAA8B,EAAE,OAAO,EAAgB,CAAC,CAAC","sourcesContent":["import { action, payload } from 'ts-action';\nimport { LoadingState } from '../model/spa-model.js';\n\nexport const initIndexDBSucess = action('SPA_INIT_INDEX_DB_SUCCESS');\nexport const loginSucess = action('SPA_LOGIN_SUCCESS');\n\nexport const routeAction = action('SPA_APP_ROUTE', payload<string>());\n\nexport const updateInternetOffline = action('SPA_APP_UPDATE_INTERNET_OFFLINE', payload<boolean>());\n\nexport const loadingStateChange = action('SPA_APP_LOADING_STATE_CHANGE', payload<LoadingState>());"]}
@@ -0,0 +1,6 @@
1
+ export declare const setRouteElement: (param: HTMLElement) => void;
2
+ export declare const appRouteEffect: import("rxjs").Observable<{
3
+ payload: string;
4
+ } & {
5
+ type: "SPA_APP_ROUTE";
6
+ }> & import("mini-rx-store/lib/models.js").HasEffectMetadata;
@@ -0,0 +1,23 @@
1
+ import { actions$, createEffect } 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
+ let routeElement;
6
+ export const setRouteElement = (param) => {
7
+ routeElement = param;
8
+ };
9
+ export const appRouteEffect = createEffect(actions$.pipe(ofType(routeAction), tap((action) => {
10
+ if (!routeElement) {
11
+ console.error("No route element set for appRouteEffect");
12
+ }
13
+ else {
14
+ routeElement.dispatchEvent(new CustomEvent('route-event', {
15
+ detail: { route: action.payload },
16
+ bubbles: true,
17
+ composed: true
18
+ }));
19
+ }
20
+ })), {
21
+ dispatch: false
22
+ });
23
+ //# sourceMappingURL=spa-app-effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa-app-effects.js","sourceRoot":"","sources":["../../../src/store/spa-app-effects.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAErC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGnD,IAAI,YAAyB,CAAC;AAE9B,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAkB,EAAE,EAAE;IACpD,YAAY,GAAG,KAAK,CAAC;AACvB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,YAAY,CACxC,QAAQ,CAAC,IAAI,CACX,MAAM,CAAC,WAAW,CAAC,EACnB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;IACb,IAAI,CAAC,YAAY,EAAE;QACjB,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC1D;SAAM;QACL,YAAY,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,aAAa,EAAE;YACxD,MAAM,EAAE,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAC;YAC/B,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC,CAAC;KACL;AACH,CAAC,CAAC,CACH,EAAE;IACD,QAAQ,EAAE,KAAK;CAChB,CACF,CAAC","sourcesContent":["import { actions$, createEffect } from 'mini-rx-store';\n\nimport { tap } from 'rxjs/operators';\n\nimport { ofType } from 'ts-action-operators';\n\nimport { routeAction } from './spa-app-actions.js';\n\n\nlet routeElement: HTMLElement;\n\nexport const setRouteElement = (param: HTMLElement) => {\n routeElement = param;\n}\n\nexport const appRouteEffect = createEffect(\n actions$.pipe(\n ofType(routeAction),\n tap((action) => {\n if (!routeElement) {\n console.error(\"No route element set for appRouteEffect\");\n } else { \n routeElement.dispatchEvent(new CustomEvent('route-event', {\n detail: {route: action.payload},\n bubbles: true,\n composed: true\n })); \n }\n })\n ), {\n dispatch: false\n }\n);\n"]}
@@ -0,0 +1,9 @@
1
+ import { LoadingState } from '../model/spa-model.js';
2
+ export interface SpaAppState {
3
+ offline?: boolean;
4
+ loadingState?: LoadingState;
5
+ lastRoutes?: any[];
6
+ initIndexDB?: boolean;
7
+ userLogin?: boolean;
8
+ }
9
+ export declare const spaAppReducer: import("ts-action").Reducer<SpaAppState>;
@@ -0,0 +1,28 @@
1
+ import { on, reducer } from 'ts-action';
2
+ import { initIndexDBSucess, loadingStateChange, loginSucess, routeAction, updateInternetOffline } from './spa-app-actions.js';
3
+ const initialState = {};
4
+ export const spaAppReducer = reducer(initialState, on(updateInternetOffline, (state, { payload }) => ({
5
+ ...state,
6
+ offline: payload
7
+ })), on(loadingStateChange, (state, { payload }) => ({
8
+ ...state,
9
+ loadingState: payload ? {
10
+ isLoading: payload.isLoading,
11
+ smallBackground: payload.smallBackground,
12
+ modal: payload.modal,
13
+ txt: payload.loadingTxt,
14
+ } : undefined
15
+ })), on(routeAction, (state, { payload }) => ({
16
+ ...state,
17
+ lastRoutes: [
18
+ ...(state.lastRoutes || []),
19
+ payload
20
+ ]
21
+ })), on(initIndexDBSucess, (state) => ({
22
+ ...state,
23
+ initIndexDB: true,
24
+ })), on(loginSucess, (state) => ({
25
+ ...state,
26
+ userLogin: true,
27
+ })));
28
+ //# sourceMappingURL=spa-app-reducer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa-app-reducer.js","sourceRoot":"","sources":["../../../src/store/spa-app-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAExC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAW9H,MAAM,YAAY,GAAgB,EAEjC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAClC,YAAY,EAEZ,EAAE,CAAE,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAC,OAAO,EAAC,EAAE,EAAE,CAAE,CAChD;IACE,GAAG,KAAK;IACR,OAAO,EAAE,OAAO;CACjB,CACF,CAAC,EAEF,EAAE,CAAC,kBAAkB,EAAE,CAAC,KAAK,EAAE,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,CAC3C;IACE,GAAG,KAAK;IACR,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,GAAG,EAAE,OAAO,CAAC,UAAU;KACxB,CAAC,CAAC,CAAC,SAAS;CACd,CACF,CAAC,EAEF,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAC,OAAO,EAAC,EAAE,EAAE,CAAC,CACpC;IACE,GAAG,KAAK;IACR,UAAU,EAAE;QACV,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3B,OAAO;KACR;CACF,CACF,CAAC,EAEF,EAAE,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAC/B;IACE,GAAG,KAAK;IACR,WAAW,EAAE,IAAI;CAClB,CACF,CAAC,EAEF,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CACzB;IACE,GAAG,KAAK;IACR,SAAS,EAAE,IAAI;CAChB,CACF,CAAC,CAEH,CAAC","sourcesContent":["import { on, reducer } from 'ts-action';\n\nimport { initIndexDBSucess, loadingStateChange, loginSucess, routeAction, updateInternetOffline } from './spa-app-actions.js';\nimport { LoadingState } from '../model/spa-model.js';\n\nexport interface SpaAppState {\n offline?: boolean,\n loadingState?: LoadingState;\n lastRoutes?: any[];\n initIndexDB?: boolean;\n userLogin?: boolean;\n}\n\nconst initialState: SpaAppState = { \n \n};\n\nexport const spaAppReducer = reducer(\n initialState,\n\n on (updateInternetOffline, (state, {payload}) => (\n {\n ...state,\n offline: payload\n }\n )), \n \n on(loadingStateChange, (state, {payload}) => (\n {\n ...state,\n loadingState: payload ? {\n isLoading: payload.isLoading,\n smallBackground: payload.smallBackground,\n modal: payload.modal,\n txt: payload.loadingTxt,\n } : undefined\n }\n )),\n\n on(routeAction, (state, {payload}) => (\n {\n ...state,\n lastRoutes: [\n ...(state.lastRoutes || []),\n payload\n ]\n }\n )),\n\n on(initIndexDBSucess, (state) => (\n {\n ...state,\n initIndexDB: true,\n }\n )),\n\n on(loginSucess, (state) => (\n {\n ...state,\n userLogin: true,\n }\n )),\n\n);"]}
@@ -0,0 +1,6 @@
1
+ export declare const getLoadingSelector: import("mini-rx-store/lib/selector.js").Selector<object, import("../model/spa-model.js").LoadingState | undefined>;
2
+ export declare const getOfflineSelector: import("mini-rx-store/lib/selector.js").Selector<object, boolean>;
3
+ export declare const getInitStatusSelector: import("mini-rx-store/lib/selector.js").Selector<object, {
4
+ login: boolean | undefined;
5
+ indexedDB: boolean | undefined;
6
+ }>;
@@ -0,0 +1,9 @@
1
+ import { createFeatureStateSelector, createSelector } from "mini-rx-store";
2
+ const getSpaAppFeatureState = createFeatureStateSelector('spaApp');
3
+ export const getLoadingSelector = createSelector(getSpaAppFeatureState, state => state.loadingState);
4
+ export const getOfflineSelector = createSelector(getSpaAppFeatureState, state => state.offline === true);
5
+ export const getInitStatusSelector = createSelector(getSpaAppFeatureState, state => ({
6
+ login: state.userLogin,
7
+ indexedDB: state.initIndexDB
8
+ }));
9
+ //# sourceMappingURL=spa-app-selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spa-app-selector.js","sourceRoot":"","sources":["../../../src/store/spa-app-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAI3E,MAAM,qBAAqB,GAAG,0BAA0B,CAAc,QAAQ,CAAC,CAAC;AAEhF,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAC9C,qBAAqB,EACrB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAC5B,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAC9C,qBAAqB,EACrB,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,IAAI,CAChC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CACjD,qBAAqB,EACrB,KAAK,CAAC,EAAE,CAAC,CAAC;IACR,KAAK,EAAE,KAAK,CAAC,SAAS;IACtB,SAAS,EAAE,KAAK,CAAC,WAAW;CAC7B,CAAC,CACH,CAAC","sourcesContent":["import { createFeatureStateSelector, createSelector } from \"mini-rx-store\";\n\nimport { SpaAppState } from \"./spa-app-reducer.js\";\n\nconst getSpaAppFeatureState = createFeatureStateSelector<SpaAppState>('spaApp');\n\nexport const getLoadingSelector = createSelector(\n getSpaAppFeatureState,\n state => state.loadingState\n);\n\nexport const getOfflineSelector = createSelector(\n getSpaAppFeatureState,\n state => state.offline === true\n);\n\nexport const getInitStatusSelector = createSelector(\n getSpaAppFeatureState,\n state => ({\n login: state.userLogin,\n indexedDB: state.initIndexDB\n })\n);"]}
@@ -1,11 +1,7 @@
1
1
  import { LitElement, CSSResultGroup } from 'lit';
2
+ import { LoadingState } from '../model/spa-model.js';
2
3
  export declare class PdLoadingState extends LitElement {
3
- loadingState: {
4
- isLoading: boolean;
5
- modal?: boolean;
6
- smallBackground?: boolean;
7
- loadingTxt?: string;
8
- };
4
+ loadingState: LoadingState;
9
5
  static styles: CSSResultGroup;
10
6
  render(): import("lit").TemplateResult<1>;
11
7
  _renderContent(): import("lit").TemplateResult<1>;