@progressive-development/pd-spa-helper 0.8.1-h → 0.8.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.
- package/dist/PdSpaHelper.d.ts.map +1 -1
- package/dist/PdSpaHelper.js +26 -39
- package/dist/defaultpage/default-login.d.ts +2 -0
- package/dist/defaultpage/default-login.d.ts.map +1 -1
- package/dist/defaultpage/default-login.js +11 -0
- package/dist/model/spa-model.d.ts +0 -7
- package/dist/model/spa-model.d.ts.map +1 -1
- package/dist/router/PdRouterService.d.ts +1 -0
- package/dist/router/PdRouterService.d.ts.map +1 -1
- package/dist/router/PdRouterService.js +21 -47
- package/dist/router/rout-types.d.ts +1 -3
- package/dist/router/rout-types.d.ts.map +1 -1
- package/dist/service-provider/firebase/auth.js +1 -1
- package/dist/service-provider/service-provider-impl.js +9 -1
- package/dist/store/spa-app-actions.d.ts +2 -9
- package/dist/store/spa-app-actions.d.ts.map +1 -1
- package/dist/store/spa-app-actions.js +1 -3
- package/dist/store/spa-app-reducer.d.ts +3 -11
- package/dist/store/spa-app-reducer.d.ts.map +1 -1
- package/dist/store/spa-app-reducer.js +4 -15
- package/dist/store/spa-app-selector.d.ts +1 -5
- package/dist/store/spa-app-selector.d.ts.map +1 -1
- package/dist/store/spa-app-selector.js +2 -10
- package/dist/stories/routing.stories.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/defaultpage/default-not-found.d.ts +0 -6
- package/dist/defaultpage/default-not-found.d.ts.map +0 -1
- package/dist/defaultpage/default-not-found.js +0 -34
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdSpaHelper.d.ts","sourceRoot":"","sources":["../src/PdSpaHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAEV,cAAc,EACd,cAAc,EAEf,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,0CAA0C,CAAC;AAClD,OAAO,4CAA4C,CAAC;AACpD,OAAO,qDAAqD,CAAC;AAC7D,OAAO,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"PdSpaHelper.d.ts","sourceRoot":"","sources":["../src/PdSpaHelper.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAEV,cAAc,EACd,cAAc,EAEf,MAAM,KAAK,CAAC;AAGb,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,0CAA0C,CAAC;AAClD,OAAO,4CAA4C,CAAC;AACpD,OAAO,qDAAqD,CAAC;AAC7D,OAAO,8CAA8C,CAAC;AAUtD,OAAO,EACL,gBAAgB,EAChB,MAAM,EAGN,cAAc,EACf,MAAM,8CAA8C,CAAC;AAItD,OAAO,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpE,OAAO,gCAAgC,CAAC;AAExC,OAAO,sBAAsB,CAAC;AAC9B,OAAO,8BAA8B,CAAC;AAOtC,eAAO,MAAM,uBAAuB,sBAAsB,CAAC;AAgD3D;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,GAAI,QAAQ,gBAAgB,SAmCjD,CAAC;AAIF;;GAEG;AACH,8BAAsB,WAAY,SAAQ,UAAU;IAGlD,KAAK,SAAe;IAEpB;;OAEG;IAEH,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;IAG3B,QAAQ,EAAE,GAAG,GAAG,SAAS,CAAC;IAG1B,aAAa,EAAE,YAAY,EAAE,CAAM;IAEnC;;;OAGG;IAEH,SAAS,CAAC,MAAM,SAAM;IAEtB;;OAEG;IAEH,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE/C;;OAEG;IAEH,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE9C;;OAEG;IAEH,OAAO,CAAC,aAAa,CAAS;IAG9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAErC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAS;IAG7C,aAAa,CAAC,EAAE,YAAY,CAAC;IAE7B,MAAM,CAAC,MAAM,EA+EN,cAAc,CAAC;;IA0CtB,iBAAiB,IAAI,IAAI;IAmBzB,oBAAoB,IAAI,IAAI;IAM5B,gBAAgB,CAAC,KAAK,EAAE,KAAK;IAS7B;;OAEG;IAGH;;;OAGG;IACH,oBAAoB;IAepB,MAAM;IAsCN,OAAO,CAAC,aAAa;IAerB,WAAW,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO;IAqB3D,cAAc,CAAC,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO;IAsB9D,aAAa,IAAI,cAAc,GAAG,MAAM;IAkBxC,aAAa;IAcb,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,KAAK,CAAC,cAAc,CAAC;IAE7D,SAAS,CAAC,QAAQ,CAAC,UAAU,IAAI,MAAM;IAEvC,SAAS,CAAC,QAAQ,CAAC,WAAW,IAAI,cAAc;IAEhD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,GAAG;IAE3C,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAEnD,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,GAAG;IAE9C,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,GAAG,MAAM;IAE9D,SAAS,CAAC,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IAqB7C,aAAa,CAAC,CAAC,EAAE,WAAW,GAAG,IAAI;IASnC,qBAAqB,CAAC,CAAC,EAAE,GAAG;IAW5B,uBAAuB,CAAC,CAAC,EAAE,WAAW;IAYtC,iBAAiB,CAAC,CAAC,EAAE,GAAG;IAexB,qBAAqB,CAAC,CAAC,EAAE,GAAG;IAgB5B,MAAM,CAAC,YAAY;IAUnB,gBAAgB,CAAC,EAAE,EAAE,WAAW;CAYjC"}
|
package/dist/PdSpaHelper.js
CHANGED
|
@@ -6,13 +6,12 @@ import "@progressive-development/pd-page/pd-footer";
|
|
|
6
6
|
import "@progressive-development/pd-content/pd-panel-viewer";
|
|
7
7
|
import "@progressive-development/pd-content/pd-panel";
|
|
8
8
|
import { pdStore, initializeStore } from "./store/mini-rx.store.js";
|
|
9
|
-
import { authStateChangedImpl, setServiceProvider, initAppImpl } from "./service-provider/service-provider-impl.js";
|
|
9
|
+
import { authStateChangedImpl, setServiceProvider, initAppImpl, isAuthenticatedWithSessionRedirect } from "./service-provider/service-provider-impl.js";
|
|
10
10
|
import { getLoadingSelector } from "./store/spa-app-selector.js";
|
|
11
11
|
import { setRouteElement } from "./store/spa-app-effects.js";
|
|
12
12
|
import { APP_CONF_EVENT } from "./model/spa-model.js";
|
|
13
13
|
import { loginSucess, nologin } from "./store/spa-app-actions.js";
|
|
14
14
|
import "./defaultpage/default-login.js";
|
|
15
|
-
import "./defaultpage/default-not-found.js";
|
|
16
15
|
import { PdToast } from "./tmpown/pd-toast.js";
|
|
17
16
|
import "./tmpown/pd-loading-state.js";
|
|
18
17
|
import { setCurrentFormatLocale } from "./helper/locale-format.js";
|
|
@@ -26,6 +25,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
26
25
|
if (result) __defProp(target, key, result);
|
|
27
26
|
return result;
|
|
28
27
|
};
|
|
28
|
+
const POST_LOGIN_REDIRECT_KEY = "postLoginRedirect";
|
|
29
29
|
const MADE_BY = {
|
|
30
30
|
txt: "made by PD Progressive Development",
|
|
31
31
|
email: "info@progressive-development.com"
|
|
@@ -41,19 +41,14 @@ const transformRoutes = () => {
|
|
|
41
41
|
name: page.name,
|
|
42
42
|
pattern: patterns,
|
|
43
43
|
auth: page.auth,
|
|
44
|
-
authFallback: page.authFallback
|
|
44
|
+
authFallback: page.authFallback ?? "login"
|
|
45
45
|
// optional: du kannst hier später eine `action` mit Lazy Loading ergänzen
|
|
46
46
|
};
|
|
47
47
|
routeDefs.push(routeDef);
|
|
48
48
|
});
|
|
49
|
-
routeDefs.push({
|
|
50
|
-
name: "unauthorized",
|
|
51
|
-
pattern: "/unauthorized",
|
|
52
|
-
auth: false
|
|
53
|
-
});
|
|
54
49
|
routeDefs.push({
|
|
55
50
|
name: "not-found",
|
|
56
|
-
pattern: "/:
|
|
51
|
+
pattern: "/:path(.*)",
|
|
57
52
|
auth: false
|
|
58
53
|
});
|
|
59
54
|
return routeDefs;
|
|
@@ -69,12 +64,13 @@ const startInit = (config) => {
|
|
|
69
64
|
config.navigationConfigParam.pages.push({
|
|
70
65
|
name: "login",
|
|
71
66
|
menu: [{ key: "login", name: "Login" }],
|
|
72
|
-
pattern: ["
|
|
67
|
+
pattern: ["login"],
|
|
73
68
|
auth: false
|
|
74
69
|
});
|
|
75
70
|
}
|
|
76
71
|
navigationConfig = config.navigationConfigParam;
|
|
77
72
|
transformedRoutes = transformRoutes();
|
|
73
|
+
pdRouterService.isAuthenticatedWithSessionRedirect = isAuthenticatedWithSessionRedirect;
|
|
78
74
|
pdRouterService.configureRoutes(transformedRoutes);
|
|
79
75
|
document.dispatchEvent(new CustomEvent("init-app-event"));
|
|
80
76
|
console.log("Init done, Event created");
|
|
@@ -156,21 +152,12 @@ const _PdSpaHelper = (_a = class extends LitElement {
|
|
|
156
152
|
*/
|
|
157
153
|
activateLoginHandler() {
|
|
158
154
|
console.log("Activate Login Handler");
|
|
159
|
-
const callback =
|
|
160
|
-
var _a2;
|
|
155
|
+
const callback = (user) => {
|
|
161
156
|
console.log("My callback user:", user);
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
loginSucess({
|
|
167
|
-
uid: user.uid,
|
|
168
|
-
email: user.email,
|
|
169
|
-
emailVerified: user.emailVerified,
|
|
170
|
-
claims,
|
|
171
|
-
providerId: ((_a2 = user.providerData[0]) == null ? void 0 : _a2.providerId) ?? "firebase"
|
|
172
|
-
})
|
|
173
|
-
);
|
|
157
|
+
this._user = user;
|
|
158
|
+
if (this._user) {
|
|
159
|
+
pdStore().dispatch(loginSucess());
|
|
160
|
+
this._loginSuccess(new CustomEvent("login-success"));
|
|
174
161
|
} else {
|
|
175
162
|
pdStore().dispatch(nologin());
|
|
176
163
|
}
|
|
@@ -198,8 +185,9 @@ const _PdSpaHelper = (_a = class extends LitElement {
|
|
|
198
185
|
(ls) => html`<pd-loading-state .loadingState="${ls}"></pd-loading-state>`
|
|
199
186
|
)}
|
|
200
187
|
${this._renderRoutePages()}
|
|
201
|
-
${
|
|
202
|
-
|
|
188
|
+
${navigationConfig.includeLogin ? html`<default-login
|
|
189
|
+
?active="${this._route === "login"}"
|
|
190
|
+
></default-login>` : ""}
|
|
203
191
|
</main>
|
|
204
192
|
|
|
205
193
|
${(pageConf == null ? void 0 : pageConf.withFooter) ? html` <footer class="default-footer">${this._renderFooter()}</footer>` : ""}
|
|
@@ -281,19 +269,17 @@ const _PdSpaHelper = (_a = class extends LitElement {
|
|
|
281
269
|
`;
|
|
282
270
|
}
|
|
283
271
|
_loginSuccess(e) {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
296
|
-
console.debug("Login Event: ", e, window.location.href, redirectRoute);
|
|
272
|
+
console.debug("Login Event: ", e, window.location.href);
|
|
273
|
+
const redirectRoute = sessionStorage.getItem(POST_LOGIN_REDIRECT_KEY);
|
|
274
|
+
const routeToNavigate = redirectRoute && redirectRoute !== "/login" ? redirectRoute : navigationConfig.defaultPostLoginRoute || "";
|
|
275
|
+
sessionStorage.removeItem(POST_LOGIN_REDIRECT_KEY);
|
|
276
|
+
this.dispatchEvent(
|
|
277
|
+
new CustomEvent("route-event", {
|
|
278
|
+
detail: { route: routeToNavigate },
|
|
279
|
+
bubbles: true,
|
|
280
|
+
composed: true
|
|
281
|
+
})
|
|
282
|
+
);
|
|
297
283
|
}
|
|
298
284
|
_localeChange(e) {
|
|
299
285
|
const newLocale = e.detail;
|
|
@@ -475,6 +461,7 @@ __decorateClass([
|
|
|
475
461
|
], _PdSpaHelper.prototype, "_selectedLocale");
|
|
476
462
|
let PdSpaHelper = _PdSpaHelper;
|
|
477
463
|
export {
|
|
464
|
+
POST_LOGIN_REDIRECT_KEY,
|
|
478
465
|
PdSpaHelper,
|
|
479
466
|
startInit
|
|
480
467
|
};
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { PropertyValues } from 'lit';
|
|
1
2
|
import { DefaultViewPage } from './default-view-page.js';
|
|
2
3
|
export declare class DefaultLogin extends DefaultViewPage {
|
|
3
4
|
static styles: import('lit').CSSResult[];
|
|
5
|
+
protected update(changedProperties: PropertyValues): void;
|
|
4
6
|
render(): import('lit-html').TemplateResult<1>;
|
|
5
7
|
}
|
|
6
8
|
//# sourceMappingURL=default-login.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-login.d.ts","sourceRoot":"","sources":["../../src/defaultpage/default-login.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"default-login.d.ts","sourceRoot":"","sources":["../../src/defaultpage/default-login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,cAAc,EAAE,MAAM,KAAK,CAAC;AAGhD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAKzD,OAAO,uBAAuB,CAAC;AAE/B,qBACa,YAAa,SAAQ,eAAe;IAC/C,MAAM,CAAC,MAAM,4BASX;IAEF,SAAS,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,GAAG,IAAI;IASzD,MAAM;CAGP"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { css, html } from "lit";
|
|
2
2
|
import { customElement } from "lit/decorators.js";
|
|
3
3
|
import { DefaultViewPage } from "./default-view-page.js";
|
|
4
|
+
import { isAuthenticatedImpl } from "../service-provider/service-provider-impl.js";
|
|
5
|
+
import { pdStore } from "../store/mini-rx.store.js";
|
|
6
|
+
import { routeAction } from "../store/spa-app-actions.js";
|
|
4
7
|
import "../tmpown/pd-login.js";
|
|
5
8
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
9
|
var __decorateClass = (decorators, target, key, kind) => {
|
|
@@ -11,6 +14,14 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
11
14
|
return result;
|
|
12
15
|
};
|
|
13
16
|
let DefaultLogin = class extends DefaultViewPage {
|
|
17
|
+
update(changedProperties) {
|
|
18
|
+
if (changedProperties.has("active") && this.active) {
|
|
19
|
+
if (isAuthenticatedImpl()) {
|
|
20
|
+
pdStore().dispatch(routeAction(""));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
super.update(changedProperties);
|
|
24
|
+
}
|
|
14
25
|
render() {
|
|
15
26
|
return html` <pd-login></pd-login> `;
|
|
16
27
|
}
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
export declare const APP_CONF_EVENT = "get-app-conf";
|
|
2
2
|
export declare const RUNNING_WIZARD_STORAGE_ELEMENTS = "pd.spa.local.wizard.storage";
|
|
3
3
|
export declare const UNDEF = "UNDEF";
|
|
4
|
-
export interface AppUser {
|
|
5
|
-
uid: string;
|
|
6
|
-
email: string | null;
|
|
7
|
-
emailVerified: boolean;
|
|
8
|
-
providerId: string;
|
|
9
|
-
claims: Record<string, any>;
|
|
10
|
-
}
|
|
11
4
|
export interface LoadingSubTask {
|
|
12
5
|
actionKey: string;
|
|
13
6
|
completed: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spa-model.d.ts","sourceRoot":"","sources":["../../src/model/spa-model.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAE7E,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"spa-model.d.ts","sourceRoot":"","sources":["../../src/model/spa-model.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,+BAA+B,gCAAgC,CAAC;AAE7E,eAAO,MAAM,KAAK,UAAU,CAAC;AAE7B,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,EAAE,CAAC;CAC5B"}
|
|
@@ -5,6 +5,7 @@ declare class PdRouterService {
|
|
|
5
5
|
private onChangeHandlers;
|
|
6
6
|
private currentRoute;
|
|
7
7
|
constructor();
|
|
8
|
+
isAuthenticatedWithSessionRedirect: (routeName: string) => Promise<boolean>;
|
|
8
9
|
/**
|
|
9
10
|
* Setzt die Routen-Konfiguration. Muss vor Verwendung von navigate() aufgerufen werden.
|
|
10
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PdRouterService.d.ts","sourceRoot":"","sources":["../../src/router/PdRouterService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PdRouterService.d.ts","sourceRoot":"","sources":["../../src/router/PdRouterService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnE,KAAK,kBAAkB,GAAG,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;AAE1D,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAqC;IAEnD,OAAO,CAAC,gBAAgB,CAA4B;IAEpD,OAAO,CAAC,YAAY,CAAc;;IAS3B,kCAAkC,EAAE,CACzC,SAAS,EAAE,MAAM,KACd,OAAO,CAAC,OAAO,CAAC,CAAoB;IAEzC;;OAEG;IACI,eAAe,CAAC,WAAW,EAAE,eAAe,EAAE;IAuDrD;;OAEG;IACU,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,UAAQ;IAejD;;OAEG;IACI,aAAa,CAAC,OAAO,EAAE,kBAAkB;IAIhD;;OAEG;YACW,OAAO;CA2CtB;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import UniversalRouter from "universal-router";
|
|
2
|
-
import { firstValueFrom, first, filter } from "rxjs";
|
|
3
|
-
import { selectAuthUser } from "../store/spa-app-selector.js";
|
|
4
|
-
import { pdStore } from "../store/mini-rx.store.js";
|
|
5
2
|
class PdRouterService {
|
|
6
3
|
constructor() {
|
|
7
4
|
this.router = null;
|
|
8
5
|
this.onChangeHandlers = [];
|
|
9
6
|
this.currentRoute = "";
|
|
7
|
+
this.isAuthenticatedWithSessionRedirect = async () => true;
|
|
10
8
|
window.addEventListener("popstate", () => {
|
|
11
9
|
this.resolve(location.pathname + location.search);
|
|
12
10
|
});
|
|
13
11
|
}
|
|
12
|
+
// Default-Fallback, falls nicht überschrieben
|
|
14
13
|
/**
|
|
15
14
|
* Setzt die Routen-Konfiguration. Muss vor Verwendung von navigate() aufgerufen werden.
|
|
16
15
|
*/
|
|
@@ -19,29 +18,24 @@ class PdRouterService {
|
|
|
19
18
|
"############ CONFIGURE ROUTING SERVICE ##################",
|
|
20
19
|
definitions
|
|
21
20
|
);
|
|
21
|
+
definitions.forEach((def) => {
|
|
22
|
+
console.log(`[ROUTING] ${def.name}:`);
|
|
23
|
+
(Array.isArray(def.pattern) ? def.pattern : [def.pattern]).forEach(
|
|
24
|
+
(p, idx) => {
|
|
25
|
+
console.log(
|
|
26
|
+
` Pattern[${idx}]: "${p}" | Codes: ${[...p].map((c) => c.charCodeAt(0)).join(", ")}`
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
});
|
|
22
31
|
const universalRoutes = definitions.flatMap((def) => {
|
|
23
|
-
|
|
24
|
-
|
|
32
|
+
const patterns = Array.isArray(def.pattern) ? def.pattern : [def.pattern];
|
|
33
|
+
return patterns.map((pattern) => ({
|
|
34
|
+
path: pattern,
|
|
25
35
|
action: async (context) => {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
if (!((_a = context.userCheck) == null ? void 0 : _a.loginCheckFinish)) {
|
|
30
|
-
authResult = await waitForFinalAuthState();
|
|
31
|
-
context.userCheck = authResult;
|
|
32
|
-
}
|
|
33
|
-
if (!((_b = context.userCheck) == null ? void 0 : _b.user)) {
|
|
34
|
-
const fallbackRoute = def.authFallback ?? "login";
|
|
35
|
-
return { redirect: fallbackRoute };
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (def.roles && !def.roles.some(
|
|
39
|
-
(role) => {
|
|
40
|
-
var _a2;
|
|
41
|
-
return ((_a2 = context.userCheck.user.claims) == null ? void 0 : _a2[role]) === true;
|
|
42
|
-
}
|
|
43
|
-
)) {
|
|
44
|
-
return { redirect: "unauthorized" };
|
|
36
|
+
if (def.auth && !await this.isAuthenticatedWithSessionRedirect(def.name)) {
|
|
37
|
+
const fallbackRoute = def.authFallback ?? "login";
|
|
38
|
+
return { route: fallbackRoute };
|
|
45
39
|
}
|
|
46
40
|
if (def.action) {
|
|
47
41
|
const result = await def.action();
|
|
@@ -54,9 +48,8 @@ class PdRouterService {
|
|
|
54
48
|
params: context.params
|
|
55
49
|
};
|
|
56
50
|
}
|
|
57
|
-
};
|
|
51
|
+
}));
|
|
58
52
|
});
|
|
59
|
-
console.log("######### Universal routes: ", universalRoutes);
|
|
60
53
|
this.router = new UniversalRouter(universalRoutes);
|
|
61
54
|
this.resolve(location.pathname + location.search);
|
|
62
55
|
}
|
|
@@ -91,22 +84,11 @@ class PdRouterService {
|
|
|
91
84
|
const pathname = url.pathname;
|
|
92
85
|
const query = Object.fromEntries(url.searchParams.entries());
|
|
93
86
|
try {
|
|
94
|
-
console.
|
|
87
|
+
console.log(
|
|
95
88
|
"[PdRouter] bevore resolve Current location:",
|
|
96
89
|
location.pathname
|
|
97
90
|
);
|
|
98
|
-
const
|
|
99
|
-
pdStore().select(selectAuthUser).pipe(first())
|
|
100
|
-
);
|
|
101
|
-
const result = await this.router.resolve({
|
|
102
|
-
pathname,
|
|
103
|
-
userCheck
|
|
104
|
-
});
|
|
105
|
-
if (result.redirect) {
|
|
106
|
-
history.replaceState({}, "", result.redirect);
|
|
107
|
-
await this.resolve(result.redirect);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
91
|
+
const result = await this.router.resolve({ pathname });
|
|
110
92
|
if (!result || typeof result !== "object" || !result.route) {
|
|
111
93
|
console.warn("[PdRouter] Invalid route result:", result);
|
|
112
94
|
return;
|
|
@@ -124,14 +106,6 @@ class PdRouterService {
|
|
|
124
106
|
}
|
|
125
107
|
}
|
|
126
108
|
}
|
|
127
|
-
async function waitForFinalAuthState() {
|
|
128
|
-
return await firstValueFrom(
|
|
129
|
-
pdStore().select(selectAuthUser).pipe(
|
|
130
|
-
filter((res) => res.loginCheckFinish === true),
|
|
131
|
-
first()
|
|
132
|
-
)
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
109
|
const pdRouterService = new PdRouterService();
|
|
136
110
|
export {
|
|
137
111
|
pdRouterService
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import { Path } from 'universal-router/path-to-regexp';
|
|
2
1
|
export interface RouteDefinition {
|
|
3
2
|
name: string;
|
|
4
|
-
pattern:
|
|
3
|
+
pattern: string | string[];
|
|
5
4
|
auth?: boolean;
|
|
6
|
-
roles?: string[];
|
|
7
5
|
authFallback?: string;
|
|
8
6
|
action?: () => Promise<{
|
|
9
7
|
route: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rout-types.d.ts","sourceRoot":"","sources":["../../src/router/rout-types.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"rout-types.d.ts","sourceRoot":"","sources":["../../src/router/rout-types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IAGtB,MAAM,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACjD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B"}
|
|
@@ -44,7 +44,7 @@ const authStateChanged = (callback) => {
|
|
|
44
44
|
if (!auth) {
|
|
45
45
|
throw new Error("authStateChanged: Auth was not initialized");
|
|
46
46
|
}
|
|
47
|
-
onAuthStateChanged(auth, callback);
|
|
47
|
+
onAuthStateChanged(auth, (user) => callback(user));
|
|
48
48
|
};
|
|
49
49
|
const authIdTokenStateChanged = (callback) => {
|
|
50
50
|
onIdTokenChanged(auth, (user) => callback(user));
|
|
@@ -7,7 +7,7 @@ import { initMockResponse, callFunctionMock } from "./mock/function-client.js";
|
|
|
7
7
|
import { initFirestorage, uploadFirestorageFile, getFirestorageFileList, getFirestorageFile, downloadFileFirestorage, deleteFirestorageDocument, getFirestorageConf } from "./firebase/firestorage-client.js";
|
|
8
8
|
import { initStorageMock, uploadStorageFileMock, getMockFileList, downloadFileMock } from "./mock/storage-client.js";
|
|
9
9
|
import { prepareMessaging, activateTokenChangeHandler, registerDevice, getFirebaseMessaging } from "./firebase/messagingFirebaseClient.js";
|
|
10
|
-
import "../PdSpaHelper.js";
|
|
10
|
+
import { POST_LOGIN_REDIRECT_KEY } from "../PdSpaHelper.js";
|
|
11
11
|
let provider;
|
|
12
12
|
let app;
|
|
13
13
|
const throwUndefinedProviderError = () => {
|
|
@@ -82,6 +82,13 @@ const isAuthenticatedImpl = () => {
|
|
|
82
82
|
}
|
|
83
83
|
return throwUndefinedProviderError();
|
|
84
84
|
};
|
|
85
|
+
const isAuthenticatedWithSessionRedirect = (routeName) => {
|
|
86
|
+
const isAuth = isAuthenticatedImpl();
|
|
87
|
+
if (!isAuth && routeName !== "login") {
|
|
88
|
+
sessionStorage.setItem(POST_LOGIN_REDIRECT_KEY, routeName);
|
|
89
|
+
}
|
|
90
|
+
return Promise.resolve(isAuth);
|
|
91
|
+
};
|
|
85
92
|
const loginImpl = (user, sec) => {
|
|
86
93
|
if (!user) {
|
|
87
94
|
const returnError = new Error("empty user");
|
|
@@ -229,6 +236,7 @@ export {
|
|
|
229
236
|
getUserIdToken,
|
|
230
237
|
initAppImpl,
|
|
231
238
|
isAuthenticatedImpl,
|
|
239
|
+
isAuthenticatedWithSessionRedirect,
|
|
232
240
|
loginImpl,
|
|
233
241
|
logoutImpl,
|
|
234
242
|
registerAppDeviceForNotification,
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import { TemplateResult } from 'lit';
|
|
2
|
-
import {
|
|
2
|
+
import { LoadingState, LoadingSubTask } from '../model/spa-model.js';
|
|
3
3
|
export declare const initIndexDBSucess: (() => {
|
|
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: ((
|
|
9
|
-
payload: AppUser;
|
|
10
|
-
} & {
|
|
11
|
-
type: "SPA_LOGIN_SUCCESS";
|
|
12
|
-
}) & {
|
|
13
|
-
type: "SPA_LOGIN_SUCCESS";
|
|
14
|
-
};
|
|
15
|
-
export declare const logoutSucess: (() => {
|
|
8
|
+
export declare const loginSucess: (() => {
|
|
16
9
|
type: "SPA_LOGIN_SUCCESS";
|
|
17
10
|
}) & {
|
|
18
11
|
type: "SPA_LOGIN_SUCCESS";
|
|
@@ -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,
|
|
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,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAErE,eAAO,MAAM,iBAAiB;;;;CAAsC,CAAC;AACrE,eAAO,MAAM,WAAW;;;;CAA8B,CAAC;AACvD,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,7 +1,6 @@
|
|
|
1
1
|
import { action, payload } from "ts-action";
|
|
2
2
|
const initIndexDBSucess = action("SPA_INIT_INDEX_DB_SUCCESS");
|
|
3
|
-
const loginSucess = action("SPA_LOGIN_SUCCESS"
|
|
4
|
-
const logoutSucess = action("SPA_LOGIN_SUCCESS");
|
|
3
|
+
const loginSucess = action("SPA_LOGIN_SUCCESS");
|
|
5
4
|
const nologin = action("SPA_NO_LOGIN");
|
|
6
5
|
const routeAction = action("SPA_APP_ROUTE", payload());
|
|
7
6
|
const toastAction = action(
|
|
@@ -41,7 +40,6 @@ export {
|
|
|
41
40
|
changeSubTask,
|
|
42
41
|
initIndexDBSucess,
|
|
43
42
|
loginSucess,
|
|
44
|
-
logoutSucess,
|
|
45
43
|
nologin,
|
|
46
44
|
removeLoadingState,
|
|
47
45
|
routeAction,
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LoadingState } from '../model/spa-model.js';
|
|
2
2
|
export interface SpaAppState {
|
|
3
3
|
offline?: boolean;
|
|
4
4
|
loadingState: LoadingState[];
|
|
5
5
|
lastRoutes?: any[];
|
|
6
6
|
initIndexDB?: boolean;
|
|
7
|
-
|
|
8
|
-
user: AppUser | undefined;
|
|
7
|
+
userLogin?: boolean;
|
|
9
8
|
}
|
|
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
|
-
}>;
|
|
9
|
+
export declare const spaAppReducer: import('ts-action').Reducer<SpaAppState>;
|
|
18
10
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"spa-app-reducer.d.ts","sourceRoot":"","sources":["../../src/store/spa-app-reducer.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,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,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAMD,eAAO,MAAM,aAAa,0CAkDzB,CAAC"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { reducer, on } from "ts-action";
|
|
2
|
-
import { updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, routeAction, initIndexDBSucess, loginSucess
|
|
2
|
+
import { updateInternetOffline, addLoadingState, changeSubTask, removeLoadingState, routeAction, initIndexDBSucess, loginSucess } from "./spa-app-actions.js";
|
|
3
3
|
const initialState = {
|
|
4
|
-
loadingState: []
|
|
5
|
-
userLoginDone: false,
|
|
6
|
-
user: void 0
|
|
4
|
+
loadingState: []
|
|
7
5
|
};
|
|
8
6
|
const spaAppReducer = reducer(
|
|
9
7
|
initialState,
|
|
@@ -45,18 +43,9 @@ const spaAppReducer = reducer(
|
|
|
45
43
|
...state,
|
|
46
44
|
initIndexDB: true
|
|
47
45
|
})),
|
|
48
|
-
on(loginSucess, (state
|
|
46
|
+
on(loginSucess, (state) => ({
|
|
49
47
|
...state,
|
|
50
|
-
|
|
51
|
-
user: payload
|
|
52
|
-
})),
|
|
53
|
-
on(nologin, (state) => ({
|
|
54
|
-
...state,
|
|
55
|
-
userLoginDone: true
|
|
56
|
-
})),
|
|
57
|
-
on(logoutSucess, () => ({
|
|
58
|
-
...initialState,
|
|
59
|
-
userLoginDone: true
|
|
48
|
+
userLogin: true
|
|
60
49
|
}))
|
|
61
50
|
);
|
|
62
51
|
export {
|
|
@@ -1,11 +1,7 @@
|
|
|
1
1
|
export declare const getLoadingSelector: import('mini-rx-store/lib/selector.js').Selector<object, import('../model/spa-model.js').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
|
-
login: boolean;
|
|
4
|
+
login: boolean | undefined;
|
|
5
5
|
indexedDB: boolean | undefined;
|
|
6
6
|
}>;
|
|
7
|
-
export declare const selectAuthUser: import('mini-rx-store/lib/selector.js').Selector<object, {
|
|
8
|
-
user: import('../model/spa-model.js').AppUser | undefined;
|
|
9
|
-
loginCheckFinish: boolean;
|
|
10
|
-
}>;
|
|
11
7
|
//# 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
|
|
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"}
|
|
@@ -28,20 +28,12 @@ const getOfflineSelector = createSelector(
|
|
|
28
28
|
const getInitStatusSelector = createSelector(
|
|
29
29
|
getSpaAppFeatureState,
|
|
30
30
|
(state) => ({
|
|
31
|
-
login: state.
|
|
31
|
+
login: state.userLogin,
|
|
32
32
|
indexedDB: state.initIndexDB
|
|
33
33
|
})
|
|
34
34
|
);
|
|
35
|
-
const selectAuthUser = createSelector(
|
|
36
|
-
getSpaAppFeatureState,
|
|
37
|
-
(state) => ({
|
|
38
|
-
user: state.user,
|
|
39
|
-
loginCheckFinish: state.userLoginDone
|
|
40
|
-
})
|
|
41
|
-
);
|
|
42
35
|
export {
|
|
43
36
|
getInitStatusSelector,
|
|
44
37
|
getLoadingSelector,
|
|
45
|
-
getOfflineSelector
|
|
46
|
-
selectAuthUser
|
|
38
|
+
getOfflineSelector
|
|
47
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routing.stories.d.ts","sourceRoot":"","sources":["../../src/stories/routing.stories.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,OAAO,+BAA+B,CAAC;AAGvC,eAAO,MAAM,SAAS,EAAE,cAAc,EA4CrC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;CAe5B,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"routing.stories.d.ts","sourceRoot":"","sources":["../../src/stories/routing.stories.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAE5E,OAAO,+BAA+B,CAAC;AAGvC,eAAO,MAAM,SAAS,EAAE,cAAc,EA4CrC,CAAC;AAEF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;CAe5B,CAAC;;;;AASF,wBAEE;AAEF,eAAO,MAAM,YAAY,4CAcxB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { DefaultViewPage } from './default-view-page.js';
|
|
2
|
-
export declare class DefaultNotFound extends DefaultViewPage {
|
|
3
|
-
static styles: import('lit').CSSResult[];
|
|
4
|
-
render(): import('lit-html').TemplateResult<1>;
|
|
5
|
-
}
|
|
6
|
-
//# sourceMappingURL=default-not-found.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"default-not-found.d.ts","sourceRoot":"","sources":["../../src/defaultpage/default-not-found.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,qBACa,eAAgB,SAAQ,eAAe;IAClD,MAAM,CAAC,MAAM,4BASX;IAEF,MAAM;CAKP"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { css, html } from "lit";
|
|
2
|
-
import { customElement } from "lit/decorators.js";
|
|
3
|
-
import { DefaultViewPage } from "./default-view-page.js";
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
6
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
7
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
8
|
-
if (decorator = decorators[i])
|
|
9
|
-
result = decorator(result) || result;
|
|
10
|
-
return result;
|
|
11
|
-
};
|
|
12
|
-
let DefaultNotFound = class extends DefaultViewPage {
|
|
13
|
-
render() {
|
|
14
|
-
return html` <h3>Keine passende Seite gefunden</h3>
|
|
15
|
-
<p>Zu der URL konnte keine passende Seite gefunden werden</p>
|
|
16
|
-
<a href="/">Zurück zur Startseite</a>`;
|
|
17
|
-
}
|
|
18
|
-
};
|
|
19
|
-
DefaultNotFound.styles = [
|
|
20
|
-
css`
|
|
21
|
-
:host {
|
|
22
|
-
padding-top: 3em;
|
|
23
|
-
display: flex;
|
|
24
|
-
align-items: center;
|
|
25
|
-
justify-content: center;
|
|
26
|
-
}
|
|
27
|
-
`
|
|
28
|
-
];
|
|
29
|
-
DefaultNotFound = __decorateClass([
|
|
30
|
-
customElement("default-not-found")
|
|
31
|
-
], DefaultNotFound);
|
|
32
|
-
export {
|
|
33
|
-
DefaultNotFound
|
|
34
|
-
};
|