@luigi-project/client-support-angular 2.11.1-dev.202404221954 → 2.11.1-dev.202404240025
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/{esm2022 → esm2020}/lib/component/luigi.preload.component.mjs +5 -5
- package/esm2020/lib/luigi-mock/luigi-mock.module.mjs +40 -0
- package/esm2020/lib/luigi.angular.support.module.mjs +70 -0
- package/esm2020/lib/route/luigi-activated-route-snapshot-helper.mjs +11 -0
- package/esm2020/lib/service/luigi-auto-routing.service.mjs +141 -0
- package/esm2020/lib/service/luigi-context.service.impl.mjs +77 -0
- package/fesm2015/luigi-project-client-support-angular.mjs +357 -0
- package/fesm2015/luigi-project-client-support-angular.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/luigi-project-client-support-angular.mjs +41 -44
- package/{fesm2022 → fesm2020}/luigi-project-client-support-angular.mjs.map +1 -1
- package/lib/component/luigi.preload.component.d.ts +1 -1
- package/package.json +11 -5
- package/esm2022/lib/luigi-mock/luigi-mock.module.mjs +0 -40
- package/esm2022/lib/luigi.angular.support.module.mjs +0 -70
- package/esm2022/lib/route/luigi-activated-route-snapshot-helper.mjs +0 -11
- package/esm2022/lib/service/luigi-auto-routing.service.mjs +0 -143
- package/esm2022/lib/service/luigi-context.service.impl.mjs +0 -78
- /package/{esm2022 → esm2020}/lib/route/luigi-route-strategy.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/service/luigi-context-service.mjs +0 -0
- /package/{esm2022 → esm2020}/luigi-project-client-support-angular.mjs +0 -0
- /package/{esm2022 → esm2020}/public-api.mjs +0 -0
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, Injectable, NgModule, APP_INITIALIZER } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/router';
|
|
4
|
+
import { BaseRouteReuseStrategy, NavigationEnd, convertToParamMap, RouteReuseStrategy, RouterModule } from '@angular/router';
|
|
5
|
+
import { ReplaySubject, Subscription } from 'rxjs';
|
|
6
|
+
import { first, filter } from 'rxjs/operators';
|
|
7
|
+
import { addInitListener, addContextUpdateListener, uxManager, linkManager } from '@luigi-project/client';
|
|
8
|
+
import { LuigiMockEngine } from '@luigi-project/testing-utilities';
|
|
9
|
+
|
|
10
|
+
class LuigiPreloadComponent {
|
|
11
|
+
constructor() { }
|
|
12
|
+
ngOnInit() { }
|
|
13
|
+
}
|
|
14
|
+
LuigiPreloadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiPreloadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
LuigiPreloadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: LuigiPreloadComponent, selector: "lib-client-support-angular", ngImport: i0, template: "<p luigipreload=\"luigipreload\"></p>\n" });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiPreloadComponent, decorators: [{
|
|
17
|
+
type: Component,
|
|
18
|
+
args: [{ selector: 'lib-client-support-angular', template: "<p luigipreload=\"luigipreload\"></p>\n" }]
|
|
19
|
+
}], ctorParameters: function () { return []; } });
|
|
20
|
+
|
|
21
|
+
class LuigiContextService {
|
|
22
|
+
}
|
|
23
|
+
var ILuigiContextTypes;
|
|
24
|
+
(function (ILuigiContextTypes) {
|
|
25
|
+
ILuigiContextTypes[ILuigiContextTypes["INIT"] = 0] = "INIT";
|
|
26
|
+
ILuigiContextTypes[ILuigiContextTypes["UPDATE"] = 1] = "UPDATE";
|
|
27
|
+
})(ILuigiContextTypes || (ILuigiContextTypes = {}));
|
|
28
|
+
|
|
29
|
+
class LuigiContextServiceImpl {
|
|
30
|
+
constructor(zone) {
|
|
31
|
+
this.zone = zone;
|
|
32
|
+
this.subject = new ReplaySubject(1);
|
|
33
|
+
this.currentContext = null;
|
|
34
|
+
addInitListener(initContext => {
|
|
35
|
+
this.addListener(ILuigiContextTypes.INIT, initContext);
|
|
36
|
+
});
|
|
37
|
+
addContextUpdateListener(updateContext => {
|
|
38
|
+
this.addListener(ILuigiContextTypes.UPDATE, updateContext);
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
contextObservable() {
|
|
42
|
+
return this.subject.asObservable();
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get latest context object retrieved from luigi core application or empty object, if not yet set.
|
|
46
|
+
*/
|
|
47
|
+
getContext() {
|
|
48
|
+
return (this.currentContext && this.currentContext.context) || {};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get a promise that resolves when context is set.
|
|
52
|
+
*/
|
|
53
|
+
getContextAsync() {
|
|
54
|
+
return new Promise((resolve, reject) => {
|
|
55
|
+
if (this.isObject(this.getContext()) && Object.keys(this.getContext()).length > 0) {
|
|
56
|
+
resolve(this.getContext());
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
this.contextObservable()
|
|
60
|
+
.pipe(first())
|
|
61
|
+
.subscribe(ctx => {
|
|
62
|
+
resolve(ctx.context);
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Checks if input is an object.
|
|
69
|
+
* @param objectToCheck mixed
|
|
70
|
+
* @returns {boolean}
|
|
71
|
+
*/
|
|
72
|
+
isObject(objectToCheck) {
|
|
73
|
+
return !!(objectToCheck && typeof objectToCheck === 'object' && !Array.isArray(objectToCheck));
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Set current context
|
|
77
|
+
*/
|
|
78
|
+
setContext(obj) {
|
|
79
|
+
this.zone.run(() => {
|
|
80
|
+
this.currentContext = obj;
|
|
81
|
+
this.subject.next(obj);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
addListener(contextType, context) {
|
|
85
|
+
this.setContext({
|
|
86
|
+
contextType,
|
|
87
|
+
context
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
LuigiContextServiceImpl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiContextServiceImpl, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
92
|
+
LuigiContextServiceImpl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiContextServiceImpl, providedIn: 'root' });
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiContextServiceImpl, decorators: [{
|
|
94
|
+
type: Injectable,
|
|
95
|
+
args: [{
|
|
96
|
+
providedIn: 'root'
|
|
97
|
+
}]
|
|
98
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
99
|
+
|
|
100
|
+
class LuigiActivatedRouteSnapshotHelper {
|
|
101
|
+
static getCurrent() {
|
|
102
|
+
return LuigiActivatedRouteSnapshotHelper._current;
|
|
103
|
+
}
|
|
104
|
+
static setCurrent(current) {
|
|
105
|
+
LuigiActivatedRouteSnapshotHelper._current = current;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// tslint:disable-next-line:variable-name
|
|
109
|
+
LuigiActivatedRouteSnapshotHelper._current = null;
|
|
110
|
+
|
|
111
|
+
class LuigiRouteStrategy extends BaseRouteReuseStrategy {
|
|
112
|
+
retrieve(route) {
|
|
113
|
+
LuigiActivatedRouteSnapshotHelper.setCurrent(route);
|
|
114
|
+
return super.retrieve(route);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
class LuigiAutoRoutingService {
|
|
119
|
+
constructor(router, luigiContextService) {
|
|
120
|
+
this.router = router;
|
|
121
|
+
this.luigiContextService = luigiContextService;
|
|
122
|
+
this.subscription = new Subscription();
|
|
123
|
+
this.subscription.add(this.router.events.pipe(this.doFilter()).subscribe(this.doSubscription.bind(this)));
|
|
124
|
+
}
|
|
125
|
+
doFilter() {
|
|
126
|
+
return filter((event) => {
|
|
127
|
+
return !!(event instanceof NavigationEnd &&
|
|
128
|
+
event.url &&
|
|
129
|
+
event.url.length > 0 &&
|
|
130
|
+
!(history.state && history.state.luigiInduced));
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* This method will be take in consideration angular route that having in data object the paramter
|
|
135
|
+
* fromVirtualTreeRoot: true, here an example:
|
|
136
|
+
* {path: 'demo', component: DemoComponent, data:{fromVirtualTreeRoot: true}}
|
|
137
|
+
* Another option is to specify the LuigiPath: if you add in route data luigiRoute:'/xxxx/xxx';
|
|
138
|
+
* in the case we will update the path in LuigiCore navigation, here an example
|
|
139
|
+
* {path: 'demo', component: DemoComponent, data:{luigiRoute: '/home/demo''}}
|
|
140
|
+
* If updateModalPathParam is specified, than modalPathParam will be updated upon internal navigation:
|
|
141
|
+
* {path: 'demo', component: DemoComponent, data:{updateModalPathParam: true}}
|
|
142
|
+
* @param event the NavigationEnd event
|
|
143
|
+
*/
|
|
144
|
+
doSubscription(event) {
|
|
145
|
+
var _a;
|
|
146
|
+
let current = LuigiActivatedRouteSnapshotHelper.getCurrent();
|
|
147
|
+
if (!current) {
|
|
148
|
+
current = this.router.routerState.root.snapshot;
|
|
149
|
+
while (((_a = current === null || current === void 0 ? void 0 : current.children) === null || _a === void 0 ? void 0 : _a.length) > 0) {
|
|
150
|
+
// handle multiple children
|
|
151
|
+
let primary = null;
|
|
152
|
+
current === null || current === void 0 ? void 0 : current.children.forEach(childSnapshot => {
|
|
153
|
+
if (childSnapshot.outlet === 'primary') {
|
|
154
|
+
primary = childSnapshot;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
if (primary) {
|
|
158
|
+
current = primary;
|
|
159
|
+
}
|
|
160
|
+
else if (current.firstChild) {
|
|
161
|
+
current = current.firstChild;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
if (current === null || current === void 0 ? void 0 : current.data) {
|
|
169
|
+
const ux = uxManager();
|
|
170
|
+
let lm = linkManager().withoutSync();
|
|
171
|
+
let route;
|
|
172
|
+
if (current.data.luigiRoute) {
|
|
173
|
+
route = this.getResolvedLuigiRoute(current);
|
|
174
|
+
if (current.data.fromContext) {
|
|
175
|
+
if (!this.luigiContextService.getContext()) {
|
|
176
|
+
console.debug('Ignoring auto navigation request, luigi context not set');
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
if (current.data.fromContext === true) {
|
|
180
|
+
lm = lm.fromClosestContext();
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
lm = lm.fromContext(current.data.fromContext);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
else if (current.data.fromVirtualTreeRoot) {
|
|
188
|
+
let url = event.url;
|
|
189
|
+
const truncate = current.data.fromVirtualTreeRoot.truncate;
|
|
190
|
+
if (truncate) {
|
|
191
|
+
if (truncate.indexOf('*') === 0) {
|
|
192
|
+
const index = url.indexOf(truncate.substr(1));
|
|
193
|
+
url = url.substr(index + truncate.length - 1);
|
|
194
|
+
}
|
|
195
|
+
else if (url.indexOf(truncate) === 0) {
|
|
196
|
+
url = url.substr(truncate.length);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
route = url;
|
|
200
|
+
console.debug('Calling fromVirtualTreeRoot for url ==> ' + route);
|
|
201
|
+
lm = lm.fromVirtualTreeRoot();
|
|
202
|
+
}
|
|
203
|
+
if (ux.isModal()) {
|
|
204
|
+
if (current.data.updateModalDataPath) {
|
|
205
|
+
lm.updateModalPathInternalNavigation(route, {}, current.data.addHistoryEntry);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else if (route) {
|
|
209
|
+
lm.navigate(route);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
getResolvedLuigiRoute(current) {
|
|
214
|
+
let route = current.data.luigiRoute;
|
|
215
|
+
const allParams = this.getAllParamsFromParents(current);
|
|
216
|
+
if (!route || !allParams) {
|
|
217
|
+
return route;
|
|
218
|
+
}
|
|
219
|
+
const pmap = convertToParamMap(allParams);
|
|
220
|
+
pmap.keys.forEach(key => {
|
|
221
|
+
pmap.getAll(key).forEach(param => {
|
|
222
|
+
route = route === null || route === void 0 ? void 0 : route.replace(':' + key, param);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
return route;
|
|
226
|
+
}
|
|
227
|
+
getAllParamsFromParents(current) {
|
|
228
|
+
let allParams = {};
|
|
229
|
+
let currentToCheck = current;
|
|
230
|
+
while (currentToCheck) {
|
|
231
|
+
if (currentToCheck.params) {
|
|
232
|
+
allParams = Object.assign(Object.assign({}, allParams), currentToCheck.params);
|
|
233
|
+
}
|
|
234
|
+
currentToCheck = currentToCheck.parent;
|
|
235
|
+
}
|
|
236
|
+
return allParams;
|
|
237
|
+
}
|
|
238
|
+
ngOnDestroy() {
|
|
239
|
+
this.subscription.unsubscribe();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
LuigiAutoRoutingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAutoRoutingService, deps: [{ token: i1.Router }, { token: LuigiContextService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
243
|
+
LuigiAutoRoutingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAutoRoutingService, providedIn: 'root' });
|
|
244
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAutoRoutingService, decorators: [{
|
|
245
|
+
type: Injectable,
|
|
246
|
+
args: [{
|
|
247
|
+
providedIn: 'root'
|
|
248
|
+
}]
|
|
249
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: LuigiContextService }]; } });
|
|
250
|
+
|
|
251
|
+
const staticRoutes = [
|
|
252
|
+
/** here an example if you want to specify that this component is a virtualTree element in Luigi Core navigation*/
|
|
253
|
+
{
|
|
254
|
+
path: 'luigi-client-support-preload',
|
|
255
|
+
component: LuigiPreloadComponent,
|
|
256
|
+
data: { fromVirtualTreeRoot: true }
|
|
257
|
+
},
|
|
258
|
+
/** here an example if you want to specify that this component it is a luigi component and u want to change the navigation in Luigi core*/
|
|
259
|
+
{
|
|
260
|
+
path: 'luigi-client-support-preload',
|
|
261
|
+
component: LuigiPreloadComponent,
|
|
262
|
+
data: { luigiRoute: '/home/reload' }
|
|
263
|
+
},
|
|
264
|
+
/** here an example if you want to reuse the component and not recreating every time you navigate to it (a singleton Component) It requires in your module to redefine */
|
|
265
|
+
{
|
|
266
|
+
path: 'luigi-client-support-preload=component',
|
|
267
|
+
component: LuigiPreloadComponent,
|
|
268
|
+
data: { reuse: true }
|
|
269
|
+
},
|
|
270
|
+
/** here an example if you want to update modalPathParam on internal navigation */
|
|
271
|
+
{
|
|
272
|
+
path: 'luigi-client-support-preload',
|
|
273
|
+
component: LuigiPreloadComponent,
|
|
274
|
+
data: { updateModalPathParam: true }
|
|
275
|
+
}
|
|
276
|
+
];
|
|
277
|
+
class LuigiAngularSupportModule {
|
|
278
|
+
constructor(navigation, context) { }
|
|
279
|
+
}
|
|
280
|
+
LuigiAngularSupportModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, deps: [{ token: LuigiAutoRoutingService }, { token: LuigiContextService }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
281
|
+
LuigiAngularSupportModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, declarations: [LuigiPreloadComponent], imports: [i1.RouterModule], exports: [LuigiPreloadComponent] });
|
|
282
|
+
LuigiAngularSupportModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, providers: [
|
|
283
|
+
{
|
|
284
|
+
provide: LuigiContextService,
|
|
285
|
+
useClass: LuigiContextServiceImpl
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
provide: RouteReuseStrategy,
|
|
289
|
+
useClass: LuigiRouteStrategy
|
|
290
|
+
}
|
|
291
|
+
], imports: [RouterModule.forChild(staticRoutes)] });
|
|
292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, decorators: [{
|
|
293
|
+
type: NgModule,
|
|
294
|
+
args: [{
|
|
295
|
+
declarations: [LuigiPreloadComponent],
|
|
296
|
+
imports: [RouterModule.forChild(staticRoutes)],
|
|
297
|
+
providers: [
|
|
298
|
+
{
|
|
299
|
+
provide: LuigiContextService,
|
|
300
|
+
useClass: LuigiContextServiceImpl
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
provide: RouteReuseStrategy,
|
|
304
|
+
useClass: LuigiRouteStrategy
|
|
305
|
+
}
|
|
306
|
+
],
|
|
307
|
+
exports: [LuigiPreloadComponent]
|
|
308
|
+
}]
|
|
309
|
+
}], ctorParameters: function () { return [{ type: LuigiAutoRoutingService }, { type: LuigiContextService }]; } });
|
|
310
|
+
|
|
311
|
+
// @dynamic
|
|
312
|
+
/*
|
|
313
|
+
* This class mocks Luigi Core related functionality.
|
|
314
|
+
*
|
|
315
|
+
* Micro Frontends that use Luigi Client would usually communicate with Luigi Core
|
|
316
|
+
* back and forth. When testing Luigi Client based components, Luigi Core might
|
|
317
|
+
* not be present which leads into limitations on integration/e2e testing for standalone
|
|
318
|
+
* microfrontends.
|
|
319
|
+
*
|
|
320
|
+
* This module adds a hook to the window postMessage API by adding an event listener to the
|
|
321
|
+
* global message event of the window object and mocking the callback.
|
|
322
|
+
* In the normal workflow this message would picked up by Luigi Core which then sends the response back.
|
|
323
|
+
*/
|
|
324
|
+
class LuigiMockModule {
|
|
325
|
+
}
|
|
326
|
+
LuigiMockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
327
|
+
LuigiMockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule });
|
|
328
|
+
LuigiMockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule, providers: [
|
|
329
|
+
{
|
|
330
|
+
provide: APP_INITIALIZER,
|
|
331
|
+
useFactory: LuigiMockEngine.initPostMessageHook,
|
|
332
|
+
multi: true
|
|
333
|
+
}
|
|
334
|
+
] });
|
|
335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule, decorators: [{
|
|
336
|
+
type: NgModule,
|
|
337
|
+
args: [{
|
|
338
|
+
providers: [
|
|
339
|
+
{
|
|
340
|
+
provide: APP_INITIALIZER,
|
|
341
|
+
useFactory: LuigiMockEngine.initPostMessageHook,
|
|
342
|
+
multi: true
|
|
343
|
+
}
|
|
344
|
+
]
|
|
345
|
+
}]
|
|
346
|
+
}] });
|
|
347
|
+
|
|
348
|
+
/*
|
|
349
|
+
* Public API Surface of client-support-angular
|
|
350
|
+
*/
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Generated bundle index. Do not edit.
|
|
354
|
+
*/
|
|
355
|
+
|
|
356
|
+
export { ILuigiContextTypes, LuigiAngularSupportModule, LuigiAutoRoutingService, LuigiContextService, LuigiContextServiceImpl, LuigiMockModule, LuigiPreloadComponent, staticRoutes };
|
|
357
|
+
//# sourceMappingURL=luigi-project-client-support-angular.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"luigi-project-client-support-angular.mjs","sources":["../../../projects/client-support-angular/src/lib/component/luigi.preload.component.ts","../../../projects/client-support-angular/src/lib/component/luigi.preload.component.html","../../../projects/client-support-angular/src/lib/service/luigi-context-service.ts","../../../projects/client-support-angular/src/lib/service/luigi-context.service.impl.ts","../../../projects/client-support-angular/src/lib/route/luigi-activated-route-snapshot-helper.ts","../../../projects/client-support-angular/src/lib/route/luigi-route-strategy.ts","../../../projects/client-support-angular/src/lib/service/luigi-auto-routing.service.ts","../../../projects/client-support-angular/src/lib/luigi.angular.support.module.ts","../../../projects/client-support-angular/src/lib/luigi-mock/luigi-mock.module.ts","../../../projects/client-support-angular/src/public-api.ts","../../../projects/client-support-angular/src/luigi-project-client-support-angular.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-client-support-angular',\n templateUrl: './luigi.preload.component.html',\n styles: []\n})\nexport class LuigiPreloadComponent implements OnInit {\n constructor() {}\n ngOnInit(): void {}\n}\n","<p luigipreload=\"luigipreload\"></p>\n","import { Context } from '@luigi-project/client';\nimport { Observable } from 'rxjs';\n\nexport abstract class LuigiContextService {\n /**\n * Listen to context changes\n * Receives current value, even if the event was already dispatched earlier.\n */\n abstract contextObservable(): Observable<IContextMessage>;\n\n /**\n * Get latest set context object\n */\n abstract getContext(): Context;\n\n /**\n * Get a promise that resolves when context is set.\n */\n abstract getContextAsync(): Promise<Context>;\n}\n\nexport enum ILuigiContextTypes {\n INIT,\n UPDATE\n}\n\nexport interface IContextMessage {\n contextType: ILuigiContextTypes; // will be init or update\n context: Context;\n}\n","import { Injectable, NgZone } from '@angular/core';\nimport { ReplaySubject, Observable } from 'rxjs';\nimport { first } from 'rxjs/operators';\nimport { Context, addInitListener, addContextUpdateListener } from '@luigi-project/client';\nimport { IContextMessage, ILuigiContextTypes, LuigiContextService } from './luigi-context-service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LuigiContextServiceImpl implements LuigiContextService {\n private subject: ReplaySubject<IContextMessage> = new ReplaySubject<IContextMessage>(1);\n private currentContext: IContextMessage = (null as unknown) as IContextMessage;\n\n constructor(private zone: NgZone) {\n addInitListener(initContext => {\n this.addListener(ILuigiContextTypes.INIT, initContext);\n });\n addContextUpdateListener(updateContext => {\n this.addListener(ILuigiContextTypes.UPDATE, updateContext);\n });\n }\n\n public contextObservable(): Observable<IContextMessage> {\n return this.subject.asObservable();\n }\n\n /**\n * Get latest context object retrieved from luigi core application or empty object, if not yet set.\n */\n public getContext(): Context {\n return (this.currentContext && this.currentContext.context) || {};\n }\n\n /**\n * Get a promise that resolves when context is set.\n */\n public getContextAsync(): Promise<Context> {\n return new Promise<Context>((resolve, reject) => {\n if (this.isObject(this.getContext()) && Object.keys(this.getContext()).length > 0) {\n resolve(this.getContext());\n } else {\n this.contextObservable()\n .pipe(first())\n .subscribe(ctx => {\n resolve(ctx.context);\n });\n }\n });\n }\n\n /**\n * Checks if input is an object.\n * @param objectToCheck mixed\n * @returns {boolean}\n */\n private isObject(objectToCheck: any) {\n return !!(objectToCheck && typeof objectToCheck === 'object' && !Array.isArray(objectToCheck));\n }\n\n /**\n * Set current context\n */\n protected setContext(obj: IContextMessage): void {\n this.zone.run(() => {\n this.currentContext = obj;\n this.subject.next(obj);\n });\n }\n\n addListener(contextType: ILuigiContextTypes, context: Context): void {\n this.setContext({\n contextType,\n context\n } as IContextMessage);\n }\n}\n","import { ActivatedRouteSnapshot } from '@angular/router';\n\nexport class LuigiActivatedRouteSnapshotHelper {\n // tslint:disable-next-line:variable-name\n private static _current: ActivatedRouteSnapshot = (null as unknown) as ActivatedRouteSnapshot;\n\n static getCurrent(): ActivatedRouteSnapshot {\n return LuigiActivatedRouteSnapshotHelper._current;\n }\n\n static setCurrent(current: ActivatedRouteSnapshot): void {\n LuigiActivatedRouteSnapshotHelper._current = current;\n }\n}\n","import { BaseRouteReuseStrategy } from '@angular/router';\nimport { ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';\nimport { LuigiActivatedRouteSnapshotHelper } from './luigi-activated-route-snapshot-helper';\n\nexport class LuigiRouteStrategy extends BaseRouteReuseStrategy {\n retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {\n LuigiActivatedRouteSnapshotHelper.setCurrent(route);\n return super.retrieve(route);\n }\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { ActivatedRouteSnapshot, NavigationEnd, ParamMap, Router, RouterEvent, convertToParamMap } from '@angular/router';\nimport { linkManager, uxManager } from '@luigi-project/client';\nimport { OperatorFunction, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\nimport { LuigiActivatedRouteSnapshotHelper } from '../route/luigi-activated-route-snapshot-helper';\nimport { LuigiContextService } from './luigi-context-service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class LuigiAutoRoutingService implements OnDestroy {\n private subscription: Subscription = new Subscription();\n\n constructor(private router: Router, private luigiContextService: LuigiContextService) {\n this.subscription.add(\n this.router.events.pipe(this.doFilter()).subscribe(this.doSubscription.bind(this) as () => void)\n );\n }\n\n doFilter(): OperatorFunction<unknown, RouterEvent> {\n return filter((event): event is RouterEvent => {\n return !!(\n event instanceof NavigationEnd &&\n event.url &&\n event.url.length > 0 &&\n !(history.state && history.state.luigiInduced)\n );\n });\n }\n\n /**\n * This method will be take in consideration angular route that having in data object the paramter\n * fromVirtualTreeRoot: true, here an example:\n * {path: 'demo', component: DemoComponent, data:{fromVirtualTreeRoot: true}}\n * Another option is to specify the LuigiPath: if you add in route data luigiRoute:'/xxxx/xxx';\n * in the case we will update the path in LuigiCore navigation, here an example\n * {path: 'demo', component: DemoComponent, data:{luigiRoute: '/home/demo''}}\n * If updateModalPathParam is specified, than modalPathParam will be updated upon internal navigation:\n * {path: 'demo', component: DemoComponent, data:{updateModalPathParam: true}}\n * @param event the NavigationEnd event\n */\n doSubscription(event: NavigationEnd): void {\n let current: ActivatedRouteSnapshot | null = LuigiActivatedRouteSnapshotHelper.getCurrent();\n\n if (!current) {\n current = this.router.routerState.root.snapshot;\n while (current?.children?.length > 0) {\n // handle multiple children\n let primary: ActivatedRouteSnapshot | null = null;\n\n current?.children.forEach(childSnapshot => {\n if (childSnapshot.outlet === 'primary') {\n primary = childSnapshot;\n }\n });\n if (primary) {\n current = primary;\n } else if (current.firstChild) {\n current = current.firstChild;\n } else {\n break;\n }\n }\n }\n if (current?.data) {\n const ux = uxManager();\n let lm = linkManager().withoutSync();\n let route: string | undefined;\n\n if (current.data.luigiRoute) {\n route = this.getResolvedLuigiRoute(current);\n if (current.data.fromContext) {\n if (!this.luigiContextService.getContext()) {\n console.debug('Ignoring auto navigation request, luigi context not set');\n return;\n }\n if (current.data.fromContext === true) {\n lm = lm.fromClosestContext();\n } else {\n lm = lm.fromContext(current.data.fromContext);\n }\n }\n } else if (current.data.fromVirtualTreeRoot) {\n let url = event.url;\n const truncate = current.data.fromVirtualTreeRoot.truncate;\n if (truncate) {\n if (truncate.indexOf('*') === 0) {\n const index = url.indexOf(truncate.substr(1));\n url = url.substr(index + truncate.length - 1);\n } else if (url.indexOf(truncate) === 0) {\n url = url.substr(truncate.length);\n }\n }\n route = url;\n console.debug('Calling fromVirtualTreeRoot for url ==> ' + route);\n lm = lm.fromVirtualTreeRoot();\n }\n\n if (ux.isModal()) {\n if (current.data.updateModalDataPath) {\n lm.updateModalPathInternalNavigation(route as string, {}, current.data.addHistoryEntry);\n }\n } else if (route) {\n lm.navigate(route);\n }\n }\n }\n\n getResolvedLuigiRoute(\n current: ActivatedRouteSnapshot\n ): string | undefined {\n let route: string | undefined = current.data.luigiRoute;\n const allParams = this.getAllParamsFromParents(current);\n\n if (!route || !allParams) {\n return route;\n }\n\n const pmap: ParamMap = convertToParamMap(allParams);\n\n pmap.keys.forEach(key => {\n pmap.getAll(key).forEach(param => {\n route = route?.replace(':' + key, param);\n });\n });\n\n return route;\n }\n\n getAllParamsFromParents(current: ActivatedRouteSnapshot): { [key: string]: string } | undefined {\n let allParams: { [key: string]: string } = {};\n let currentToCheck:ActivatedRouteSnapshot|null = current;\n\n while (currentToCheck) {\n if (currentToCheck.params) {\n allParams = { ...allParams, ...currentToCheck.params };\n }\n currentToCheck = currentToCheck.parent;\n }\n\n return allParams;\n }\n\n ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n}\n","import { NgModule } from '@angular/core';\nimport { RouteReuseStrategy, RouterModule, Routes } from '@angular/router';\nimport { LuigiPreloadComponent } from './component/luigi.preload.component';\nimport { LuigiContextService } from './service/luigi-context-service';\nimport { LuigiContextServiceImpl } from './service/luigi-context.service.impl';\nimport { LuigiAutoRoutingService } from './service/luigi-auto-routing.service';\nimport { LuigiRouteStrategy } from './route/luigi-route-strategy';\n\nexport const staticRoutes: Routes = [\n /** here an example if you want to specify that this component is a virtualTree element in Luigi Core navigation*/\n {\n path: 'luigi-client-support-preload',\n component: LuigiPreloadComponent,\n data: { fromVirtualTreeRoot: true }\n },\n /** here an example if you want to specify that this component it is a luigi component and u want to change the navigation in Luigi core*/\n {\n path: 'luigi-client-support-preload',\n component: LuigiPreloadComponent,\n data: { luigiRoute: '/home/reload' }\n },\n /** here an example if you want to reuse the component and not recreating every time you navigate to it (a singleton Component) It requires in your module to redefine */\n {\n path: 'luigi-client-support-preload=component',\n component: LuigiPreloadComponent,\n data: { reuse: true }\n },\n /** here an example if you want to update modalPathParam on internal navigation */\n {\n path: 'luigi-client-support-preload',\n component: LuigiPreloadComponent,\n data: { updateModalPathParam: true }\n }\n];\n\n@NgModule({\n declarations: [LuigiPreloadComponent],\n imports: [RouterModule.forChild(staticRoutes)],\n providers: [\n {\n provide: LuigiContextService,\n useClass: LuigiContextServiceImpl\n },\n {\n provide: RouteReuseStrategy,\n useClass: LuigiRouteStrategy\n }\n ],\n exports: [LuigiPreloadComponent]\n})\nexport class LuigiAngularSupportModule {\n constructor(navigation: LuigiAutoRoutingService, context: LuigiContextService) {}\n}\n","import { APP_INITIALIZER, NgModule } from '@angular/core';\nimport { LuigiMockEngine } from '@luigi-project/testing-utilities';\n\n// @dynamic\n@NgModule({\n providers: [\n {\n provide: APP_INITIALIZER,\n useFactory: LuigiMockEngine.initPostMessageHook,\n multi: true\n }\n ]\n})\n/*\n * This class mocks Luigi Core related functionality.\n *\n * Micro Frontends that use Luigi Client would usually communicate with Luigi Core\n * back and forth. When testing Luigi Client based components, Luigi Core might\n * not be present which leads into limitations on integration/e2e testing for standalone\n * microfrontends.\n *\n * This module adds a hook to the window postMessage API by adding an event listener to the\n * global message event of the window object and mocking the callback.\n * In the normal workflow this message would picked up by Luigi Core which then sends the response back.\n */\nexport class LuigiMockModule { }\n","/*\n * Public API Surface of client-support-angular\n */\n\nexport * from './lib/component/luigi.preload.component';\nexport * from './lib/luigi.angular.support.module';\nexport * from './lib/service/luigi-context-service';\nexport * from './lib/service/luigi-context.service.impl';\nexport * from './lib/service/luigi-auto-routing.service';\nexport * from './lib/luigi-mock/luigi-mock.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.LuigiContextService","i1.LuigiAutoRoutingService","i3"],"mappings":"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"}
|
|
@@ -10,13 +10,13 @@ import { LuigiMockEngine } from '@luigi-project/testing-utilities';
|
|
|
10
10
|
class LuigiPreloadComponent {
|
|
11
11
|
constructor() { }
|
|
12
12
|
ngOnInit() { }
|
|
13
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiPreloadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: LuigiPreloadComponent, selector: "lib-client-support-angular", ngImport: i0, template: "<p luigipreload=\"luigipreload\"></p>\n" });
|
|
15
13
|
}
|
|
16
|
-
i0.ɵɵ
|
|
14
|
+
LuigiPreloadComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiPreloadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
15
|
+
LuigiPreloadComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: LuigiPreloadComponent, selector: "lib-client-support-angular", ngImport: i0, template: "<p luigipreload=\"luigipreload\"></p>\n" });
|
|
16
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiPreloadComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'lib-client-support-angular', template: "<p luigipreload=\"luigipreload\"></p>\n" }]
|
|
19
|
-
}], ctorParameters: ()
|
|
19
|
+
}], ctorParameters: function () { return []; } });
|
|
20
20
|
|
|
21
21
|
class LuigiContextService {
|
|
22
22
|
}
|
|
@@ -27,11 +27,10 @@ var ILuigiContextTypes;
|
|
|
27
27
|
})(ILuigiContextTypes || (ILuigiContextTypes = {}));
|
|
28
28
|
|
|
29
29
|
class LuigiContextServiceImpl {
|
|
30
|
-
zone;
|
|
31
|
-
subject = new ReplaySubject(1);
|
|
32
|
-
currentContext = null;
|
|
33
30
|
constructor(zone) {
|
|
34
31
|
this.zone = zone;
|
|
32
|
+
this.subject = new ReplaySubject(1);
|
|
33
|
+
this.currentContext = null;
|
|
35
34
|
addInitListener(initContext => {
|
|
36
35
|
this.addListener(ILuigiContextTypes.INIT, initContext);
|
|
37
36
|
});
|
|
@@ -88,19 +87,17 @@ class LuigiContextServiceImpl {
|
|
|
88
87
|
context
|
|
89
88
|
});
|
|
90
89
|
}
|
|
91
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiContextServiceImpl, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
92
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiContextServiceImpl, providedIn: 'root' });
|
|
93
90
|
}
|
|
94
|
-
i0.ɵɵ
|
|
91
|
+
LuigiContextServiceImpl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiContextServiceImpl, deps: [{ token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
92
|
+
LuigiContextServiceImpl.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiContextServiceImpl, providedIn: 'root' });
|
|
93
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiContextServiceImpl, decorators: [{
|
|
95
94
|
type: Injectable,
|
|
96
95
|
args: [{
|
|
97
96
|
providedIn: 'root'
|
|
98
97
|
}]
|
|
99
|
-
}], ctorParameters: ()
|
|
98
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }]; } });
|
|
100
99
|
|
|
101
100
|
class LuigiActivatedRouteSnapshotHelper {
|
|
102
|
-
// tslint:disable-next-line:variable-name
|
|
103
|
-
static _current = null;
|
|
104
101
|
static getCurrent() {
|
|
105
102
|
return LuigiActivatedRouteSnapshotHelper._current;
|
|
106
103
|
}
|
|
@@ -108,6 +105,8 @@ class LuigiActivatedRouteSnapshotHelper {
|
|
|
108
105
|
LuigiActivatedRouteSnapshotHelper._current = current;
|
|
109
106
|
}
|
|
110
107
|
}
|
|
108
|
+
// tslint:disable-next-line:variable-name
|
|
109
|
+
LuigiActivatedRouteSnapshotHelper._current = null;
|
|
111
110
|
|
|
112
111
|
class LuigiRouteStrategy extends BaseRouteReuseStrategy {
|
|
113
112
|
retrieve(route) {
|
|
@@ -117,12 +116,10 @@ class LuigiRouteStrategy extends BaseRouteReuseStrategy {
|
|
|
117
116
|
}
|
|
118
117
|
|
|
119
118
|
class LuigiAutoRoutingService {
|
|
120
|
-
router;
|
|
121
|
-
luigiContextService;
|
|
122
|
-
subscription = new Subscription();
|
|
123
119
|
constructor(router, luigiContextService) {
|
|
124
120
|
this.router = router;
|
|
125
121
|
this.luigiContextService = luigiContextService;
|
|
122
|
+
this.subscription = new Subscription();
|
|
126
123
|
this.subscription.add(this.router.events.pipe(this.doFilter()).subscribe(this.doSubscription.bind(this)));
|
|
127
124
|
}
|
|
128
125
|
doFilter() {
|
|
@@ -240,15 +237,15 @@ class LuigiAutoRoutingService {
|
|
|
240
237
|
ngOnDestroy() {
|
|
241
238
|
this.subscription.unsubscribe();
|
|
242
239
|
}
|
|
243
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiAutoRoutingService, deps: [{ token: i1.Router }, { token: LuigiContextService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
244
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiAutoRoutingService, providedIn: 'root' });
|
|
245
240
|
}
|
|
246
|
-
i0.ɵɵ
|
|
241
|
+
LuigiAutoRoutingService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAutoRoutingService, deps: [{ token: i1.Router }, { token: LuigiContextService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
242
|
+
LuigiAutoRoutingService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAutoRoutingService, providedIn: 'root' });
|
|
243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAutoRoutingService, decorators: [{
|
|
247
244
|
type: Injectable,
|
|
248
245
|
args: [{
|
|
249
246
|
providedIn: 'root'
|
|
250
247
|
}]
|
|
251
|
-
}], ctorParameters: ()
|
|
248
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: LuigiContextService }]; } });
|
|
252
249
|
|
|
253
250
|
const staticRoutes = [
|
|
254
251
|
/** here an example if you want to specify that this component is a virtualTree element in Luigi Core navigation*/
|
|
@@ -278,20 +275,20 @@ const staticRoutes = [
|
|
|
278
275
|
];
|
|
279
276
|
class LuigiAngularSupportModule {
|
|
280
277
|
constructor(navigation, context) { }
|
|
281
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiAngularSupportModule, deps: [{ token: LuigiAutoRoutingService }, { token: LuigiContextService }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
282
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: LuigiAngularSupportModule, declarations: [LuigiPreloadComponent], imports: [i1.RouterModule], exports: [LuigiPreloadComponent] });
|
|
283
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiAngularSupportModule, providers: [
|
|
284
|
-
{
|
|
285
|
-
provide: LuigiContextService,
|
|
286
|
-
useClass: LuigiContextServiceImpl
|
|
287
|
-
},
|
|
288
|
-
{
|
|
289
|
-
provide: RouteReuseStrategy,
|
|
290
|
-
useClass: LuigiRouteStrategy
|
|
291
|
-
}
|
|
292
|
-
], imports: [RouterModule.forChild(staticRoutes)] });
|
|
293
278
|
}
|
|
294
|
-
i0.ɵɵ
|
|
279
|
+
LuigiAngularSupportModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, deps: [{ token: LuigiAutoRoutingService }, { token: LuigiContextService }], target: i0.ɵɵFactoryTarget.NgModule });
|
|
280
|
+
LuigiAngularSupportModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, declarations: [LuigiPreloadComponent], imports: [i1.RouterModule], exports: [LuigiPreloadComponent] });
|
|
281
|
+
LuigiAngularSupportModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, providers: [
|
|
282
|
+
{
|
|
283
|
+
provide: LuigiContextService,
|
|
284
|
+
useClass: LuigiContextServiceImpl
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
provide: RouteReuseStrategy,
|
|
288
|
+
useClass: LuigiRouteStrategy
|
|
289
|
+
}
|
|
290
|
+
], imports: [RouterModule.forChild(staticRoutes)] });
|
|
291
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiAngularSupportModule, decorators: [{
|
|
295
292
|
type: NgModule,
|
|
296
293
|
args: [{
|
|
297
294
|
declarations: [LuigiPreloadComponent],
|
|
@@ -308,7 +305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
308
305
|
],
|
|
309
306
|
exports: [LuigiPreloadComponent]
|
|
310
307
|
}]
|
|
311
|
-
}], ctorParameters: ()
|
|
308
|
+
}], ctorParameters: function () { return [{ type: LuigiAutoRoutingService }, { type: LuigiContextService }]; } });
|
|
312
309
|
|
|
313
310
|
// @dynamic
|
|
314
311
|
/*
|
|
@@ -324,17 +321,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
324
321
|
* In the normal workflow this message would picked up by Luigi Core which then sends the response back.
|
|
325
322
|
*/
|
|
326
323
|
class LuigiMockModule {
|
|
327
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
328
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: LuigiMockModule });
|
|
329
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: LuigiMockModule, providers: [
|
|
330
|
-
{
|
|
331
|
-
provide: APP_INITIALIZER,
|
|
332
|
-
useFactory: LuigiMockEngine.initPostMessageHook,
|
|
333
|
-
multi: true
|
|
334
|
-
}
|
|
335
|
-
] });
|
|
336
324
|
}
|
|
337
|
-
i0.ɵɵ
|
|
325
|
+
LuigiMockModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
326
|
+
LuigiMockModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule });
|
|
327
|
+
LuigiMockModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule, providers: [
|
|
328
|
+
{
|
|
329
|
+
provide: APP_INITIALIZER,
|
|
330
|
+
useFactory: LuigiMockEngine.initPostMessageHook,
|
|
331
|
+
multi: true
|
|
332
|
+
}
|
|
333
|
+
] });
|
|
334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: LuigiMockModule, decorators: [{
|
|
338
335
|
type: NgModule,
|
|
339
336
|
args: [{
|
|
340
337
|
providers: [
|