@luigi-project/client-support-angular 2.9.0 → 2.9.1-dev.202402191429

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.
@@ -18,121 +18,124 @@ export class LuigiMockModule {
18
18
  // Add a hook to the post message api to mock the LuigiCore response to the Client
19
19
  static initPostMessageHook() {
20
20
  return async () => {
21
+ console.log('luigiMockModule sapluigi client-support-angular');
21
22
  // Check if Luigi Client is running standalone
22
- if (window.parent === window) {
23
- console.debug('Detected standalone mode');
24
- // Check and skip if Luigi environment is already mocked
25
- if (window.luigiMockEnvironment) {
26
- return;
27
- }
28
- // mock target origin
29
- if (window.LuigiClient) {
30
- window.LuigiClient.setTargetOrigin('*');
31
- }
32
- window.luigiMockEnvironment = {
33
- msgListener: function (e) {
34
- if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {
35
- console.debug('Luigi msg', e.data);
36
- if (e.data.msg === 'luigi.get-context') {
37
- window.postMessage({
38
- msg: 'luigi.init',
39
- emulated: true,
40
- internal: {
41
- viewStackSize: 1
42
- },
43
- context: e.data.context
44
- }, '*');
45
- }
46
- // vizualise retrieved event data
47
- LuigiMockEngine.visualize(JSON.stringify(e.data));
48
- // Check and run mocked callback if it exists
49
- const mockListener = window.luigiMockEnvironment.mockListeners[e.data.msg];
50
- if (mockListener) {
51
- mockListener(e);
52
- }
53
- }
54
- },
55
- mockListeners: {
56
- 'luigi.navigation.pathExists': (event) => {
57
- const mockData = window.sessionStorage.getItem('luigiMockData');
58
- let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;
59
- const inputPath = event.data.data.link;
60
- const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];
61
- const response = {
62
- msg: 'luigi.navigation.pathExists.answer',
63
- data: {
64
- correlationId: event.data.data.id,
65
- pathExists: pathExists ? pathExists : false
23
+ // if (window.parent === window) {
24
+ console.debug('Detected standalone mode');
25
+ // Check and skip if Luigi environment is already mocked
26
+ if (window.luigiMockEnvironment) {
27
+ return;
28
+ }
29
+ // mock target origin
30
+ console.log('(window as any).LuigiClient', window.LuigiClient);
31
+ if (window.LuigiClient) {
32
+ window.LuigiClient.setTargetOrigin('*');
33
+ }
34
+ window.luigiMockEnvironment = {
35
+ msgListener: function (e) {
36
+ console.log('msg starts with luigi. or storage', e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage'));
37
+ if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {
38
+ console.debug('Luigi msg', e.data);
39
+ if (e.data.msg === 'luigi.get-context') {
40
+ window.postMessage({
41
+ msg: 'luigi.init',
42
+ emulated: true,
43
+ internal: {
44
+ viewStackSize: 1
66
45
  },
67
- emulated: true
68
- };
69
- window.postMessage(response, '*');
70
- },
71
- //ux
72
- 'luigi.ux.confirmationModal.show': (event) => {
73
- const response = {
74
- msg: 'luigi.ux.confirmationModal.hide',
75
- data: event.data,
76
- emulated: true
77
- };
78
- window.postMessage(response, '*');
79
- },
80
- 'luigi.ux.alert.show': (event) => {
81
- const response = {
82
- msg: 'luigi.ux.alert.hide',
83
- data: event.data,
84
- emulated: true
85
- };
86
- window.postMessage(response, '*');
87
- },
88
- 'luigi.ux.set-current-locale': (event) => {
89
- const response = {
90
- msg: 'luigi.current-locale-changed',
91
- currentLocale: event.data.data.currentLocale,
92
- emulated: true
93
- };
94
- window.postMessage(response, '*');
95
- },
96
- // linkManager
97
- 'luigi.navigation.open': (event) => {
98
- const response = {
99
- msg: 'luigi.navigate.ok',
100
- data: event.data,
101
- emulated: true
102
- };
103
- window.postMessage(response, '*');
104
- },
105
- 'luigi.navigation.splitview.close': (event) => {
106
- const response = {
107
- msg: 'luigi.navigate.ok',
108
- data: event.data,
109
- emulated: true
110
- };
111
- window.postMessage(response, '*');
112
- },
113
- 'luigi.navigation.splitview.collapse': (event) => {
114
- const response = {
115
- msg: 'luigi.navigate.ok',
116
- data: event.data,
117
- emulated: true
118
- };
119
- window.postMessage(response, '*');
120
- },
121
- 'luigi.navigation.splitview.expand': (event) => {
122
- const response = {
123
- msg: 'luigi.navigate.ok',
124
- data: event.data,
125
- emulated: true
126
- };
127
- window.postMessage(response, '*');
128
- },
129
- // storage
130
- storage: () => { }
46
+ context: e.data.context
47
+ }, '*');
48
+ }
49
+ // vizualise retrieved event data
50
+ LuigiMockEngine.visualize(JSON.stringify(e.data));
51
+ // Check and run mocked callback if it exists
52
+ const mockListener = window.luigiMockEnvironment.mockListeners[e.data.msg];
53
+ if (mockListener) {
54
+ mockListener(e);
55
+ }
131
56
  }
132
- };
133
- // Listen to the global 'message' event of the window object
134
- window.addEventListener('message', window.luigiMockEnvironment.msgListener);
135
- }
57
+ },
58
+ mockListeners: {
59
+ 'luigi.navigation.pathExists': (event) => {
60
+ const mockData = window.sessionStorage.getItem('luigiMockData');
61
+ let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;
62
+ const inputPath = event.data.data.link;
63
+ const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];
64
+ const response = {
65
+ msg: 'luigi.navigation.pathExists.answer',
66
+ data: {
67
+ correlationId: event.data.data.id,
68
+ pathExists: pathExists ? pathExists : false
69
+ },
70
+ emulated: true
71
+ };
72
+ window.postMessage(response, '*');
73
+ },
74
+ //ux
75
+ 'luigi.ux.confirmationModal.show': (event) => {
76
+ const response = {
77
+ msg: 'luigi.ux.confirmationModal.hide',
78
+ data: event.data,
79
+ emulated: true
80
+ };
81
+ window.postMessage(response, '*');
82
+ },
83
+ 'luigi.ux.alert.show': (event) => {
84
+ const response = {
85
+ msg: 'luigi.ux.alert.hide',
86
+ data: event.data,
87
+ emulated: true
88
+ };
89
+ window.postMessage(response, '*');
90
+ },
91
+ 'luigi.ux.set-current-locale': (event) => {
92
+ const response = {
93
+ msg: 'luigi.current-locale-changed',
94
+ currentLocale: event.data.data.currentLocale,
95
+ emulated: true
96
+ };
97
+ window.postMessage(response, '*');
98
+ },
99
+ // linkManager
100
+ 'luigi.navigation.open': (event) => {
101
+ const response = {
102
+ msg: 'luigi.navigate.ok',
103
+ data: event.data,
104
+ emulated: true
105
+ };
106
+ window.postMessage(response, '*');
107
+ },
108
+ 'luigi.navigation.splitview.close': (event) => {
109
+ const response = {
110
+ msg: 'luigi.navigate.ok',
111
+ data: event.data,
112
+ emulated: true
113
+ };
114
+ window.postMessage(response, '*');
115
+ },
116
+ 'luigi.navigation.splitview.collapse': (event) => {
117
+ const response = {
118
+ msg: 'luigi.navigate.ok',
119
+ data: event.data,
120
+ emulated: true
121
+ };
122
+ window.postMessage(response, '*');
123
+ },
124
+ 'luigi.navigation.splitview.expand': (event) => {
125
+ const response = {
126
+ msg: 'luigi.navigate.ok',
127
+ data: event.data,
128
+ emulated: true
129
+ };
130
+ window.postMessage(response, '*');
131
+ },
132
+ // storage
133
+ storage: () => { }
134
+ }
135
+ };
136
+ // Listen to the global 'message' event of the window object
137
+ window.addEventListener('message', window.luigiMockEnvironment.msgListener);
138
+ // }
136
139
  };
137
140
  }
138
141
  /*
@@ -175,4 +178,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
175
178
  ]
176
179
  }]
177
180
  }] });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHVpZ2ktbW9jay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc3VwcG9ydC1hbmd1bGFyL3NyYy9saWIvbHVpZ2ktbW9jay9sdWlnaS1tb2NrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRW5FLFdBQVc7QUFVWDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCLGtGQUFrRjtJQUMzRSxNQUFNLENBQUMsbUJBQW1CO1FBQy9CLE9BQU8sS0FBSyxJQUFtQixFQUFFO1lBQy9CLDhDQUE4QztZQUM5QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFO2dCQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7Z0JBRTFDLHdEQUF3RDtnQkFDeEQsSUFBSyxNQUFjLENBQUMsb0JBQW9CLEVBQUU7b0JBQ3hDLE9BQU87aUJBQ1I7Z0JBRUQscUJBQXFCO2dCQUNyQixJQUFLLE1BQWMsQ0FBQyxXQUFXLEVBQUU7b0JBQzlCLE1BQWMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2lCQUNsRDtnQkFFQSxNQUFjLENBQUMsb0JBQW9CLEdBQUc7b0JBQ3JDLFdBQVcsRUFBRSxVQUFTLENBQU07d0JBQzFCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssU0FBUyxDQUFDLEVBQUU7NEJBQy9FLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQzs0QkFFbkMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxtQkFBbUIsRUFBRTtnQ0FDdEMsTUFBTSxDQUFDLFdBQVcsQ0FDaEI7b0NBQ0UsR0FBRyxFQUFFLFlBQVk7b0NBQ2pCLFFBQVEsRUFBRSxJQUFJO29DQUNkLFFBQVEsRUFBRTt3Q0FDUixhQUFhLEVBQUUsQ0FBQztxQ0FDakI7b0NBQ0QsT0FBTyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTztpQ0FDeEIsRUFDRCxHQUFHLENBQ0osQ0FBQzs2QkFDSDs0QkFFRCxpQ0FBaUM7NEJBQ2pDLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs0QkFFbEQsNkNBQTZDOzRCQUM3QyxNQUFNLFlBQVksR0FBSSxNQUFjLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7NEJBQ3BGLElBQUksWUFBWSxFQUFFO2dDQUNoQixZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7NkJBQ2pCO3lCQUNGO29CQUNILENBQUM7b0JBQ0QsYUFBYSxFQUFFO3dCQUNiLDZCQUE2QixFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7NEJBQzVDLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDOzRCQUNoRSxJQUFJLGNBQWMsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQzs0QkFDakUsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDOzRCQUN2QyxNQUFNLFVBQVUsR0FBRyxjQUFjLElBQUksY0FBYyxDQUFDLFVBQVUsSUFBSSxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDOzRCQUV2RyxNQUFNLFFBQVEsR0FBRztnQ0FDZixHQUFHLEVBQUUsb0NBQW9DO2dDQUN6QyxJQUFJLEVBQUU7b0NBQ0osYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7b0NBQ2pDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSztpQ0FDNUM7Z0NBQ0QsUUFBUSxFQUFFLElBQUk7NkJBQ2YsQ0FBQzs0QkFDRixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDcEMsQ0FBQzt3QkFDRCxJQUFJO3dCQUNKLGlDQUFpQyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7NEJBQ2hELE1BQU0sUUFBUSxHQUFHO2dDQUNmLEdBQUcsRUFBRSxpQ0FBaUM7Z0NBQ3RDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsUUFBUSxFQUFFLElBQUk7NkJBQ2YsQ0FBQzs0QkFDRixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDcEMsQ0FBQzt3QkFDRCxxQkFBcUIsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFOzRCQUNwQyxNQUFNLFFBQVEsR0FBRztnQ0FDZixHQUFHLEVBQUUscUJBQXFCO2dDQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0NBQ2hCLFFBQVEsRUFBRSxJQUFJOzZCQUNmLENBQUM7NEJBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ3BDLENBQUM7d0JBQ0QsNkJBQTZCLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTs0QkFDNUMsTUFBTSxRQUFRLEdBQUc7Z0NBQ2YsR0FBRyxFQUFFLDhCQUE4QjtnQ0FDbkMsYUFBYSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7Z0NBQzVDLFFBQVEsRUFBRSxJQUFJOzZCQUNmLENBQUM7NEJBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ3BDLENBQUM7d0JBQ0QsY0FBYzt3QkFDZCx1QkFBdUIsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFOzRCQUN0QyxNQUFNLFFBQVEsR0FBRztnQ0FDZixHQUFHLEVBQUUsbUJBQW1CO2dDQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0NBQ2hCLFFBQVEsRUFBRSxJQUFJOzZCQUNmLENBQUM7NEJBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ3BDLENBQUM7d0JBQ0Qsa0NBQWtDLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTs0QkFDakQsTUFBTSxRQUFRLEdBQUc7Z0NBQ2YsR0FBRyxFQUFFLG1CQUFtQjtnQ0FDeEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dDQUNoQixRQUFRLEVBQUUsSUFBSTs2QkFDZixDQUFDOzRCQUNGLE1BQU0sQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDO3dCQUNwQyxDQUFDO3dCQUNELHFDQUFxQyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7NEJBQ3BELE1BQU0sUUFBUSxHQUFHO2dDQUNmLEdBQUcsRUFBRSxtQkFBbUI7Z0NBQ3hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtnQ0FDaEIsUUFBUSxFQUFFLElBQUk7NkJBQ2YsQ0FBQzs0QkFDRixNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQzt3QkFDcEMsQ0FBQzt3QkFDRCxtQ0FBbUMsRUFBRSxDQUFDLEtBQVUsRUFBRSxFQUFFOzRCQUNsRCxNQUFNLFFBQVEsR0FBRztnQ0FDZixHQUFHLEVBQUUsbUJBQW1CO2dDQUN4QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7Z0NBQ2hCLFFBQVEsRUFBRSxJQUFJOzZCQUNmLENBQUM7NEJBQ0YsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7d0JBQ3BDLENBQUM7d0JBQ0QsVUFBVTt3QkFDVixPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQztxQkFDbEI7aUJBQ0YsQ0FBQztnQkFFRiw0REFBNEQ7Z0JBQzVELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUcsTUFBYyxDQUFDLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ3RGO1FBQ0gsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWTtRQUNsQyxJQUFJLDJCQUEyQixHQUFtQixRQUFRLENBQUMsYUFBYSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDakcseURBQXlEO1FBQ3pELElBQUksQ0FBQywyQkFBMkIsRUFBRTtZQUNoQywyQkFBMkIsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVELDJCQUEyQixDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLENBQUMsQ0FBQztZQUN0RSxtR0FBbUc7WUFDbkcsMkJBQTJCLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNsRSxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQ3hEO1FBQ0QsTUFBTSxJQUFJLEdBQW1CLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsMkJBQTJCLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hELENBQUM7OzZHQXRKVSxlQUFlOzhHQUFmLGVBQWU7OEdBQWYsZUFBZSxhQXBCZjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxtQkFBbUI7WUFDL0MsS0FBSyxFQUFFLElBQUk7U0FDWjtLQUNGOzRGQWNVLGVBQWU7a0JBckIzQixRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLGVBQWUsQ0FBQyxtQkFBbUI7NEJBQy9DLEtBQUssRUFBRSxJQUFJO3lCQUNaO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVBQX0lOSVRJQUxJWkVSLCBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTHVpZ2lNb2NrRW5naW5lIH0gZnJvbSAnQGx1aWdpLXByb2plY3QvdGVzdGluZy11dGlsaXRpZXMnO1xuXG4vLyBAZHluYW1pY1xuQE5nTW9kdWxlKHtcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQVBQX0lOSVRJQUxJWkVSLFxuICAgICAgdXNlRmFjdG9yeTogTHVpZ2lNb2NrRW5naW5lLmluaXRQb3N0TWVzc2FnZUhvb2ssXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbi8qXG4gKiBUaGlzIGNsYXNzIG1vY2tzIEx1aWdpIENvcmUgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LlxuICpcbiAqIE1pY3JvIEZyb250ZW5kcyB0aGF0IHVzZSBMdWlnaSBDbGllbnQgd291bGQgdXN1YWxseSBjb21tdW5pY2F0ZSB3aXRoIEx1aWdpIENvcmVcbiAqIGJhY2sgYW5kIGZvcnRoLiBXaGVuIHRlc3RpbmcgTHVpZ2kgQ2xpZW50IGJhc2VkIGNvbXBvbmVudHMsIEx1aWdpIENvcmUgbWlnaHRcbiAqIG5vdCBiZSBwcmVzZW50IHdoaWNoIGxlYWRzIGludG8gbGltaXRhdGlvbnMgb24gaW50ZWdyYXRpb24vZTJlIHRlc3RpbmcgZm9yIHN0YW5kYWxvbmVcbiAqIG1pY3JvZnJvbnRlbmRzLlxuICpcbiAqIFRoaXMgbW9kdWxlIGFkZHMgYSBob29rIHRvIHRoZSB3aW5kb3cgcG9zdE1lc3NhZ2UgQVBJIGJ5IGFkZGluZyBhbiBldmVudCBsaXN0ZW5lciB0byB0aGVcbiAqIGdsb2JhbCBtZXNzYWdlIGV2ZW50IG9mIHRoZSB3aW5kb3cgb2JqZWN0IGFuZCBtb2NraW5nIHRoZSBjYWxsYmFjay5cbiAqIEluIHRoZSBub3JtYWwgd29ya2Zsb3cgdGhpcyBtZXNzYWdlIHdvdWxkIHBpY2tlZCB1cCBieSBMdWlnaSBDb3JlIHdoaWNoIHRoZW4gc2VuZHMgdGhlIHJlc3BvbnNlIGJhY2suXG4gKi9cbmV4cG9ydCBjbGFzcyBMdWlnaU1vY2tNb2R1bGUge1xuICAvLyBBZGQgYSBob29rIHRvIHRoZSBwb3N0IG1lc3NhZ2UgYXBpIHRvIG1vY2sgdGhlIEx1aWdpQ29yZSByZXNwb25zZSB0byB0aGUgQ2xpZW50XG4gIHB1YmxpYyBzdGF0aWMgaW5pdFBvc3RNZXNzYWdlSG9vaygpIHtcbiAgICByZXR1cm4gYXN5bmMgKCk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgLy8gQ2hlY2sgaWYgTHVpZ2kgQ2xpZW50IGlzIHJ1bm5pbmcgc3RhbmRhbG9uZVxuICAgICAgaWYgKHdpbmRvdy5wYXJlbnQgPT09IHdpbmRvdykge1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdEZXRlY3RlZCBzdGFuZGFsb25lIG1vZGUnKTtcblxuICAgICAgICAvLyBDaGVjayBhbmQgc2tpcCBpZiBMdWlnaSBlbnZpcm9ubWVudCBpcyBhbHJlYWR5IG1vY2tlZFxuICAgICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLmx1aWdpTW9ja0Vudmlyb25tZW50KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbW9jayB0YXJnZXQgb3JpZ2luXG4gICAgICAgIGlmICgod2luZG93IGFzIGFueSkuTHVpZ2lDbGllbnQpIHtcbiAgICAgICAgICAod2luZG93IGFzIGFueSkuTHVpZ2lDbGllbnQuc2V0VGFyZ2V0T3JpZ2luKCcqJyk7XG4gICAgICAgIH1cblxuICAgICAgICAod2luZG93IGFzIGFueSkubHVpZ2lNb2NrRW52aXJvbm1lbnQgPSB7XG4gICAgICAgICAgbXNnTGlzdGVuZXI6IGZ1bmN0aW9uKGU6IGFueSkge1xuICAgICAgICAgICAgaWYgKGUuZGF0YS5tc2cgJiYgKGUuZGF0YS5tc2cuc3RhcnRzV2l0aCgnbHVpZ2kuJykgfHwgZS5kYXRhLm1zZyA9PT0gJ3N0b3JhZ2UnKSkge1xuICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKCdMdWlnaSBtc2cnLCBlLmRhdGEpO1xuXG4gICAgICAgICAgICAgIGlmIChlLmRhdGEubXNnID09PSAnbHVpZ2kuZ2V0LWNvbnRleHQnKSB7XG4gICAgICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBtc2c6ICdsdWlnaS5pbml0JyxcbiAgICAgICAgICAgICAgICAgICAgZW11bGF0ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGludGVybmFsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgdmlld1N0YWNrU2l6ZTogMVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb250ZXh0OiBlLmRhdGEuY29udGV4dFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICcqJ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAvLyB2aXp1YWxpc2UgcmV0cmlldmVkIGV2ZW50IGRhdGFcbiAgICAgICAgICAgICAgTHVpZ2lNb2NrRW5naW5lLnZpc3VhbGl6ZShKU09OLnN0cmluZ2lmeShlLmRhdGEpKTtcblxuICAgICAgICAgICAgICAvLyBDaGVjayBhbmQgcnVuIG1vY2tlZCBjYWxsYmFjayBpZiBpdCBleGlzdHNcbiAgICAgICAgICAgICAgY29uc3QgbW9ja0xpc3RlbmVyID0gKHdpbmRvdyBhcyBhbnkpLmx1aWdpTW9ja0Vudmlyb25tZW50Lm1vY2tMaXN0ZW5lcnNbZS5kYXRhLm1zZ107XG4gICAgICAgICAgICAgIGlmIChtb2NrTGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgICBtb2NrTGlzdGVuZXIoZSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIG1vY2tMaXN0ZW5lcnM6IHtcbiAgICAgICAgICAgICdsdWlnaS5uYXZpZ2F0aW9uLnBhdGhFeGlzdHMnOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtb2NrRGF0YSA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdsdWlnaU1vY2tEYXRhJyk7XG4gICAgICAgICAgICAgIGxldCBtb2NrRGF0YVBhcnNlZCA9IG1vY2tEYXRhID8gSlNPTi5wYXJzZShtb2NrRGF0YSkgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIGNvbnN0IGlucHV0UGF0aCA9IGV2ZW50LmRhdGEuZGF0YS5saW5rO1xuICAgICAgICAgICAgICBjb25zdCBwYXRoRXhpc3RzID0gbW9ja0RhdGFQYXJzZWQgJiYgbW9ja0RhdGFQYXJzZWQucGF0aEV4aXN0cyAmJiBtb2NrRGF0YVBhcnNlZC5wYXRoRXhpc3RzW2lucHV0UGF0aF07XG5cbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kubmF2aWdhdGlvbi5wYXRoRXhpc3RzLmFuc3dlcicsXG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgY29ycmVsYXRpb25JZDogZXZlbnQuZGF0YS5kYXRhLmlkLFxuICAgICAgICAgICAgICAgICAgcGF0aEV4aXN0czogcGF0aEV4aXN0cyA/IHBhdGhFeGlzdHMgOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZW11bGF0ZWQ6IHRydWVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKHJlc3BvbnNlLCAnKicpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vdXhcbiAgICAgICAgICAgICdsdWlnaS51eC5jb25maXJtYXRpb25Nb2RhbC5zaG93JzogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kudXguY29uZmlybWF0aW9uTW9kYWwuaGlkZScsXG4gICAgICAgICAgICAgICAgZGF0YTogZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICBlbXVsYXRlZDogdHJ1ZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UocmVzcG9uc2UsICcqJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2x1aWdpLnV4LmFsZXJ0LnNob3cnOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgICBtc2c6ICdsdWlnaS51eC5hbGVydC5oaWRlJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBldmVudC5kYXRhLFxuICAgICAgICAgICAgICAgIGVtdWxhdGVkOiB0cnVlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnbHVpZ2kudXguc2V0LWN1cnJlbnQtbG9jYWxlJzogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kuY3VycmVudC1sb2NhbGUtY2hhbmdlZCcsXG4gICAgICAgICAgICAgICAgY3VycmVudExvY2FsZTogZXZlbnQuZGF0YS5kYXRhLmN1cnJlbnRMb2NhbGUsXG4gICAgICAgICAgICAgICAgZW11bGF0ZWQ6IHRydWVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKHJlc3BvbnNlLCAnKicpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIC8vIGxpbmtNYW5hZ2VyXG4gICAgICAgICAgICAnbHVpZ2kubmF2aWdhdGlvbi5vcGVuJzogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kubmF2aWdhdGUub2snLFxuICAgICAgICAgICAgICAgIGRhdGE6IGV2ZW50LmRhdGEsXG4gICAgICAgICAgICAgICAgZW11bGF0ZWQ6IHRydWVcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKHJlc3BvbnNlLCAnKicpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdsdWlnaS5uYXZpZ2F0aW9uLnNwbGl0dmlldy5jbG9zZSc6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgICAgIG1zZzogJ2x1aWdpLm5hdmlnYXRlLm9rJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBldmVudC5kYXRhLFxuICAgICAgICAgICAgICAgIGVtdWxhdGVkOiB0cnVlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnbHVpZ2kubmF2aWdhdGlvbi5zcGxpdHZpZXcuY29sbGFwc2UnOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgICBtc2c6ICdsdWlnaS5uYXZpZ2F0ZS5vaycsXG4gICAgICAgICAgICAgICAgZGF0YTogZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgICBlbXVsYXRlZDogdHJ1ZVxuICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UocmVzcG9uc2UsICcqJyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2x1aWdpLm5hdmlnYXRpb24uc3BsaXR2aWV3LmV4cGFuZCc6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgICAgIG1zZzogJ2x1aWdpLm5hdmlnYXRlLm9rJyxcbiAgICAgICAgICAgICAgICBkYXRhOiBldmVudC5kYXRhLFxuICAgICAgICAgICAgICAgIGVtdWxhdGVkOiB0cnVlXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAvLyBzdG9yYWdlXG4gICAgICAgICAgICBzdG9yYWdlOiAoKSA9PiB7fVxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBMaXN0ZW4gdG8gdGhlIGdsb2JhbCAnbWVzc2FnZScgZXZlbnQgb2YgdGhlIHdpbmRvdyBvYmplY3RcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAod2luZG93IGFzIGFueSkubHVpZ2lNb2NrRW52aXJvbm1lbnQubXNnTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBUaGlzIG1ldGhvZCB0YWtlcyBhIGRhdGEgb2JqZWN0IG9mIHR5cGUgJ2FueScgYW5kIHZpenVhbGl6ZXMgYSBzaW1wbGUgY29udGFpbmVyXG4gICAqIHdoaWNoIGhvbGRzIGRhdGEgdGhhdCBpcyB1c2VmdWwgZm9yIGUyZSB0ZXN0aW5nLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2aXN1YWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGx1aWdpVmlzdWFsaXphdGlvbkNvbnRhaW5lcjogRWxlbWVudCB8IG51bGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbHVpZ2ktZGVidWctdmlzLWNudCcpO1xuICAgIC8vIENvbnN0cnVjdCBlbGVtZW50IHN0cnVjdHVyZSBpZiBub3QgYWxyZWFkeSBjb25zdHJ1Y3RlZFxuICAgIGlmICghbHVpZ2lWaXN1YWxpemF0aW9uQ29udGFpbmVyKSB7XG4gICAgICBsdWlnaVZpc3VhbGl6YXRpb25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGx1aWdpVmlzdWFsaXphdGlvbkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2x1aWdpLWRlYnVnLXZpcy1jbnQnKTtcbiAgICAgIC8vIEhpZGUgdGhlIGFkZGVkIERPTSBlbGVtZW50IHRvIGF2b2lkIGludGVyZmVycmluZy9vdmVybGFwcGluZyB3aXRoIG90aGVyIGVsZW1lbnRzIGR1cmluZyB0ZXN0aW5nLlxuICAgICAgbHVpZ2lWaXN1YWxpemF0aW9uQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpub25lJyk7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGx1aWdpVmlzdWFsaXphdGlvbkNvbnRhaW5lcik7XG4gICAgfVxuICAgIGNvbnN0IGxpbmU6IEhUTUxEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbGluZS50ZXh0Q29udGVudCA9IGRhdGE7XG4gICAgbHVpZ2lWaXN1YWxpemF0aW9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGxpbmUpO1xuICB9XG59XG4iXX0=
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibHVpZ2ktbW9jay5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtc3VwcG9ydC1hbmd1bGFyL3NyYy9saWIvbHVpZ2ktbW9jay9sdWlnaS1tb2NrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBRW5FLFdBQVc7QUFVWDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQzFCLGtGQUFrRjtJQUMzRSxNQUFNLENBQUMsbUJBQW1CO1FBQy9CLE9BQU8sS0FBSyxJQUFtQixFQUFFO1lBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUMvRCw4Q0FBOEM7WUFDOUMsa0NBQWtDO1lBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUUxQyx3REFBd0Q7WUFDeEQsSUFBSyxNQUFjLENBQUMsb0JBQW9CLEVBQUU7Z0JBQ3hDLE9BQU87YUFDUjtZQUVELHFCQUFxQjtZQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLDZCQUE2QixFQUFHLE1BQWMsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4RSxJQUFLLE1BQWMsQ0FBQyxXQUFXLEVBQUU7Z0JBQzlCLE1BQWMsQ0FBQyxXQUFXLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xEO1lBRUEsTUFBYyxDQUFDLG9CQUFvQixHQUFHO2dCQUNyQyxXQUFXLEVBQUUsVUFBVSxDQUFNO29CQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLG1DQUFtQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFB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Q0FBQztRQUN4QiwyQkFBMkIsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQsQ0FBQzs7NkdBekpVLGVBQWU7OEdBQWYsZUFBZTs4R0FBZixlQUFlLGFBcEJmO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsZUFBZSxDQUFDLG1CQUFtQjtZQUMvQyxLQUFLLEVBQUUsSUFBSTtTQUNaO0tBQ0Y7NEZBY1UsZUFBZTtrQkFyQjNCLFFBQVE7bUJBQUM7b0JBQ1IsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxlQUFlOzRCQUN4QixVQUFVLEVBQUUsZUFBZSxDQUFDLG1CQUFtQjs0QkFDL0MsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBUFBfSU5JVElBTElaRVIsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMdWlnaU1vY2tFbmdpbmUgfSBmcm9tICdAbHVpZ2ktcHJvamVjdC90ZXN0aW5nLXV0aWxpdGllcyc7XG5cbi8vIEBkeW5hbWljXG5ATmdNb2R1bGUoe1xuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBBUFBfSU5JVElBTElaRVIsXG4gICAgICB1c2VGYWN0b3J5OiBMdWlnaU1vY2tFbmdpbmUuaW5pdFBvc3RNZXNzYWdlSG9vayxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuLypcbiAqIFRoaXMgY2xhc3MgbW9ja3MgTHVpZ2kgQ29yZSByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuXG4gKlxuICogTWljcm8gRnJvbnRlbmRzIHRoYXQgdXNlIEx1aWdpIENsaWVudCB3b3VsZCB1c3VhbGx5IGNvbW11bmljYXRlIHdpdGggTHVpZ2kgQ29yZVxuICogYmFjayBhbmQgZm9ydGguIFdoZW4gdGVzdGluZyBMdWlnaSBDbGllbnQgYmFzZWQgY29tcG9uZW50cywgTHVpZ2kgQ29yZSBtaWdodFxuICogbm90IGJlIHByZXNlbnQgd2hpY2ggbGVhZHMgaW50byBsaW1pdGF0aW9ucyBvbiBpbnRlZ3JhdGlvbi9lMmUgdGVzdGluZyBmb3Igc3RhbmRhbG9uZVxuICogbWljcm9mcm9udGVuZHMuXG4gKlxuICogVGhpcyBtb2R1bGUgYWRkcyBhIGhvb2sgdG8gdGhlIHdpbmRvdyBwb3N0TWVzc2FnZSBBUEkgYnkgYWRkaW5nIGFuIGV2ZW50IGxpc3RlbmVyIHRvIHRoZVxuICogZ2xvYmFsIG1lc3NhZ2UgZXZlbnQgb2YgdGhlIHdpbmRvdyBvYmplY3QgYW5kIG1vY2tpbmcgdGhlIGNhbGxiYWNrLlxuICogSW4gdGhlIG5vcm1hbCB3b3JrZmxvdyB0aGlzIG1lc3NhZ2Ugd291bGQgcGlja2VkIHVwIGJ5IEx1aWdpIENvcmUgd2hpY2ggdGhlbiBzZW5kcyB0aGUgcmVzcG9uc2UgYmFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEx1aWdpTW9ja01vZHVsZSB7XG4gIC8vIEFkZCBhIGhvb2sgdG8gdGhlIHBvc3QgbWVzc2FnZSBhcGkgdG8gbW9jayB0aGUgTHVpZ2lDb3JlIHJlc3BvbnNlIHRvIHRoZSBDbGllbnRcbiAgcHVibGljIHN0YXRpYyBpbml0UG9zdE1lc3NhZ2VIb29rKCkge1xuICAgIHJldHVybiBhc3luYyAoKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnbHVpZ2lNb2NrTW9kdWxlIHNhcGx1aWdpIGNsaWVudC1zdXBwb3J0LWFuZ3VsYXInKTtcbiAgICAgIC8vIENoZWNrIGlmIEx1aWdpIENsaWVudCBpcyBydW5uaW5nIHN0YW5kYWxvbmVcbiAgICAgIC8vIGlmICh3aW5kb3cucGFyZW50ID09PSB3aW5kb3cpIHtcbiAgICAgIGNvbnNvbGUuZGVidWcoJ0RldGVjdGVkIHN0YW5kYWxvbmUgbW9kZScpO1xuXG4gICAgICAvLyBDaGVjayBhbmQgc2tpcCBpZiBMdWlnaSBlbnZpcm9ubWVudCBpcyBhbHJlYWR5IG1vY2tlZFxuICAgICAgaWYgKCh3aW5kb3cgYXMgYW55KS5sdWlnaU1vY2tFbnZpcm9ubWVudCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIG1vY2sgdGFyZ2V0IG9yaWdpblxuICAgICAgY29uc29sZS5sb2coJyh3aW5kb3cgYXMgYW55KS5MdWlnaUNsaWVudCcsICh3aW5kb3cgYXMgYW55KS5MdWlnaUNsaWVudCk7XG4gICAgICBpZiAoKHdpbmRvdyBhcyBhbnkpLkx1aWdpQ2xpZW50KSB7XG4gICAgICAgICh3aW5kb3cgYXMgYW55KS5MdWlnaUNsaWVudC5zZXRUYXJnZXRPcmlnaW4oJyonKTtcbiAgICAgIH1cblxuICAgICAgKHdpbmRvdyBhcyBhbnkpLmx1aWdpTW9ja0Vudmlyb25tZW50ID0ge1xuICAgICAgICBtc2dMaXN0ZW5lcjogZnVuY3Rpb24gKGU6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdtc2cgc3RhcnRzIHdpdGggbHVpZ2kuIG9yIHN0b3JhZ2UnLCBlLmRhdGEubXNnICYmIChlLmRhdGEubXNnLnN0YXJ0c1dpdGgoJ2x1aWdpLicpIHx8IGUuZGF0YS5tc2cgPT09ICdzdG9yYWdlJykpO1xuICAgICAgICAgIGlmIChlLmRhdGEubXNnICYmIChlLmRhdGEubXNnLnN0YXJ0c1dpdGgoJ2x1aWdpLicpIHx8IGUuZGF0YS5tc2cgPT09ICdzdG9yYWdlJykpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ0x1aWdpIG1zZycsIGUuZGF0YSk7XG5cbiAgICAgICAgICAgIGlmIChlLmRhdGEubXNnID09PSAnbHVpZ2kuZ2V0LWNvbnRleHQnKSB7XG4gICAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBtc2c6ICdsdWlnaS5pbml0JyxcbiAgICAgICAgICAgICAgICAgIGVtdWxhdGVkOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgaW50ZXJuYWw6IHtcbiAgICAgICAgICAgICAgICAgICAgdmlld1N0YWNrU2l6ZTogMVxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGNvbnRleHQ6IGUuZGF0YS5jb250ZXh0XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnKidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gdml6dWFsaXNlIHJldHJpZXZlZCBldmVudCBkYXRhXG4gICAgICAgICAgICBMdWlnaU1vY2tFbmdpbmUudmlzdWFsaXplKEpTT04uc3RyaW5naWZ5KGUuZGF0YSkpO1xuXG4gICAgICAgICAgICAvLyBDaGVjayBhbmQgcnVuIG1vY2tlZCBjYWxsYmFjayBpZiBpdCBleGlzdHNcbiAgICAgICAgICAgIGNvbnN0IG1vY2tMaXN0ZW5lciA9ICh3aW5kb3cgYXMgYW55KS5sdWlnaU1vY2tFbnZpcm9ubWVudC5tb2NrTGlzdGVuZXJzW2UuZGF0YS5tc2ddO1xuICAgICAgICAgICAgaWYgKG1vY2tMaXN0ZW5lcikge1xuICAgICAgICAgICAgICBtb2NrTGlzdGVuZXIoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBtb2NrTGlzdGVuZXJzOiB7XG4gICAgICAgICAgJ2x1aWdpLm5hdmlnYXRpb24ucGF0aEV4aXN0cyc6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtb2NrRGF0YSA9IHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdsdWlnaU1vY2tEYXRhJyk7XG4gICAgICAgICAgICBsZXQgbW9ja0RhdGFQYXJzZWQgPSBtb2NrRGF0YSA/IEpTT04ucGFyc2UobW9ja0RhdGEpIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgY29uc3QgaW5wdXRQYXRoID0gZXZlbnQuZGF0YS5kYXRhLmxpbms7XG4gICAgICAgICAgICBjb25zdCBwYXRoRXhpc3RzID0gbW9ja0RhdGFQYXJzZWQgJiYgbW9ja0RhdGFQYXJzZWQucGF0aEV4aXN0cyAmJiBtb2NrRGF0YVBhcnNlZC5wYXRoRXhpc3RzW2lucHV0UGF0aF07XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgICBtc2c6ICdsdWlnaS5uYXZpZ2F0aW9uLnBhdGhFeGlzdHMuYW5zd2VyJyxcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGNvcnJlbGF0aW9uSWQ6IGV2ZW50LmRhdGEuZGF0YS5pZCxcbiAgICAgICAgICAgICAgICBwYXRoRXhpc3RzOiBwYXRoRXhpc3RzID8gcGF0aEV4aXN0cyA6IGZhbHNlXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGVtdWxhdGVkOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKHJlc3BvbnNlLCAnKicpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgLy91eFxuICAgICAgICAgICdsdWlnaS51eC5jb25maXJtYXRpb25Nb2RhbC5zaG93JzogKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0ge1xuICAgICAgICAgICAgICBtc2c6ICdsdWlnaS51eC5jb25maXJtYXRpb25Nb2RhbC5oaWRlJyxcbiAgICAgICAgICAgICAgZGF0YTogZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgZW11bGF0ZWQ6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UocmVzcG9uc2UsICcqJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAnbHVpZ2kudXguYWxlcnQuc2hvdyc6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kudXguYWxlcnQuaGlkZScsXG4gICAgICAgICAgICAgIGRhdGE6IGV2ZW50LmRhdGEsXG4gICAgICAgICAgICAgIGVtdWxhdGVkOiB0cnVlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgd2luZG93LnBvc3RNZXNzYWdlKHJlc3BvbnNlLCAnKicpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgJ2x1aWdpLnV4LnNldC1jdXJyZW50LWxvY2FsZSc6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kuY3VycmVudC1sb2NhbGUtY2hhbmdlZCcsXG4gICAgICAgICAgICAgIGN1cnJlbnRMb2NhbGU6IGV2ZW50LmRhdGEuZGF0YS5jdXJyZW50TG9jYWxlLFxuICAgICAgICAgICAgICBlbXVsYXRlZDogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIC8vIGxpbmtNYW5hZ2VyXG4gICAgICAgICAgJ2x1aWdpLm5hdmlnYXRpb24ub3Blbic6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kubmF2aWdhdGUub2snLFxuICAgICAgICAgICAgICBkYXRhOiBldmVudC5kYXRhLFxuICAgICAgICAgICAgICBlbXVsYXRlZDogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICdsdWlnaS5uYXZpZ2F0aW9uLnNwbGl0dmlldy5jbG9zZSc6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kubmF2aWdhdGUub2snLFxuICAgICAgICAgICAgICBkYXRhOiBldmVudC5kYXRhLFxuICAgICAgICAgICAgICBlbXVsYXRlZDogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICdsdWlnaS5uYXZpZ2F0aW9uLnNwbGl0dmlldy5jb2xsYXBzZSc6IChldmVudDogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXNwb25zZSA9IHtcbiAgICAgICAgICAgICAgbXNnOiAnbHVpZ2kubmF2aWdhdGUub2snLFxuICAgICAgICAgICAgICBkYXRhOiBldmVudC5kYXRhLFxuICAgICAgICAgICAgICBlbXVsYXRlZDogdHJ1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5wb3N0TWVzc2FnZShyZXNwb25zZSwgJyonKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgICdsdWlnaS5uYXZpZ2F0aW9uLnNwbGl0dmlldy5leHBhbmQnOiAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSB7XG4gICAgICAgICAgICAgIG1zZzogJ2x1aWdpLm5hdmlnYXRlLm9rJyxcbiAgICAgICAgICAgICAgZGF0YTogZXZlbnQuZGF0YSxcbiAgICAgICAgICAgICAgZW11bGF0ZWQ6IHRydWVcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB3aW5kb3cucG9zdE1lc3NhZ2UocmVzcG9uc2UsICcqJyk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAvLyBzdG9yYWdlXG4gICAgICAgICAgc3RvcmFnZTogKCkgPT4geyB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8vIExpc3RlbiB0byB0aGUgZ2xvYmFsICdtZXNzYWdlJyBldmVudCBvZiB0aGUgd2luZG93IG9iamVjdFxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCAod2luZG93IGFzIGFueSkubHVpZ2lNb2NrRW52aXJvbm1lbnQubXNnTGlzdGVuZXIpO1xuICAgICAgLy8gfVxuICAgIH07XG4gIH1cblxuICAvKlxuICAgKiBUaGlzIG1ldGhvZCB0YWtlcyBhIGRhdGEgb2JqZWN0IG9mIHR5cGUgJ2FueScgYW5kIHZpenVhbGl6ZXMgYSBzaW1wbGUgY29udGFpbmVyXG4gICAqIHdoaWNoIGhvbGRzIGRhdGEgdGhhdCBpcyB1c2VmdWwgZm9yIGUyZSB0ZXN0aW5nLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2aXN1YWxpemUoZGF0YTogc3RyaW5nKTogdm9pZCB7XG4gICAgbGV0IGx1aWdpVmlzdWFsaXphdGlvbkNvbnRhaW5lcjogRWxlbWVudCB8IG51bGwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjbHVpZ2ktZGVidWctdmlzLWNudCcpO1xuICAgIC8vIENvbnN0cnVjdCBlbGVtZW50IHN0cnVjdHVyZSBpZiBub3QgYWxyZWFkeSBjb25zdHJ1Y3RlZFxuICAgIGlmICghbHVpZ2lWaXN1YWxpemF0aW9uQ29udGFpbmVyKSB7XG4gICAgICBsdWlnaVZpc3VhbGl6YXRpb25Db250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGx1aWdpVmlzdWFsaXphdGlvbkNvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lkJywgJ2x1aWdpLWRlYnVnLXZpcy1jbnQnKTtcbiAgICAgIC8vIEhpZGUgdGhlIGFkZGVkIERPTSBlbGVtZW50IHRvIGF2b2lkIGludGVyZmVycmluZy9vdmVybGFwcGluZyB3aXRoIG90aGVyIGVsZW1lbnRzIGR1cmluZyB0ZXN0aW5nLlxuICAgICAgbHVpZ2lWaXN1YWxpemF0aW9uQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnZGlzcGxheTpub25lJyk7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGx1aWdpVmlzdWFsaXphdGlvbkNvbnRhaW5lcik7XG4gICAgfVxuICAgIGNvbnN0IGxpbmU6IEhUTUxEaXZFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbGluZS50ZXh0Q29udGVudCA9IGRhdGE7XG4gICAgbHVpZ2lWaXN1YWxpemF0aW9uQ29udGFpbmVyLmFwcGVuZENoaWxkKGxpbmUpO1xuICB9XG59XG4iXX0=
@@ -309,121 +309,124 @@ class LuigiMockModule {
309
309
  // Add a hook to the post message api to mock the LuigiCore response to the Client
310
310
  static initPostMessageHook() {
311
311
  return () => __awaiter(this, void 0, void 0, function* () {
312
+ console.log('luigiMockModule sapluigi client-support-angular');
312
313
  // Check if Luigi Client is running standalone
313
- if (window.parent === window) {
314
- console.debug('Detected standalone mode');
315
- // Check and skip if Luigi environment is already mocked
316
- if (window.luigiMockEnvironment) {
317
- return;
318
- }
319
- // mock target origin
320
- if (window.LuigiClient) {
321
- window.LuigiClient.setTargetOrigin('*');
322
- }
323
- window.luigiMockEnvironment = {
324
- msgListener: function (e) {
325
- if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {
326
- console.debug('Luigi msg', e.data);
327
- if (e.data.msg === 'luigi.get-context') {
328
- window.postMessage({
329
- msg: 'luigi.init',
330
- emulated: true,
331
- internal: {
332
- viewStackSize: 1
333
- },
334
- context: e.data.context
335
- }, '*');
336
- }
337
- // vizualise retrieved event data
338
- LuigiMockEngine.visualize(JSON.stringify(e.data));
339
- // Check and run mocked callback if it exists
340
- const mockListener = window.luigiMockEnvironment.mockListeners[e.data.msg];
341
- if (mockListener) {
342
- mockListener(e);
343
- }
344
- }
345
- },
346
- mockListeners: {
347
- 'luigi.navigation.pathExists': (event) => {
348
- const mockData = window.sessionStorage.getItem('luigiMockData');
349
- let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;
350
- const inputPath = event.data.data.link;
351
- const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];
352
- const response = {
353
- msg: 'luigi.navigation.pathExists.answer',
354
- data: {
355
- correlationId: event.data.data.id,
356
- pathExists: pathExists ? pathExists : false
314
+ // if (window.parent === window) {
315
+ console.debug('Detected standalone mode');
316
+ // Check and skip if Luigi environment is already mocked
317
+ if (window.luigiMockEnvironment) {
318
+ return;
319
+ }
320
+ // mock target origin
321
+ console.log('(window as any).LuigiClient', window.LuigiClient);
322
+ if (window.LuigiClient) {
323
+ window.LuigiClient.setTargetOrigin('*');
324
+ }
325
+ window.luigiMockEnvironment = {
326
+ msgListener: function (e) {
327
+ console.log('msg starts with luigi. or storage', e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage'));
328
+ if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {
329
+ console.debug('Luigi msg', e.data);
330
+ if (e.data.msg === 'luigi.get-context') {
331
+ window.postMessage({
332
+ msg: 'luigi.init',
333
+ emulated: true,
334
+ internal: {
335
+ viewStackSize: 1
357
336
  },
358
- emulated: true
359
- };
360
- window.postMessage(response, '*');
361
- },
362
- //ux
363
- 'luigi.ux.confirmationModal.show': (event) => {
364
- const response = {
365
- msg: 'luigi.ux.confirmationModal.hide',
366
- data: event.data,
367
- emulated: true
368
- };
369
- window.postMessage(response, '*');
370
- },
371
- 'luigi.ux.alert.show': (event) => {
372
- const response = {
373
- msg: 'luigi.ux.alert.hide',
374
- data: event.data,
375
- emulated: true
376
- };
377
- window.postMessage(response, '*');
378
- },
379
- 'luigi.ux.set-current-locale': (event) => {
380
- const response = {
381
- msg: 'luigi.current-locale-changed',
382
- currentLocale: event.data.data.currentLocale,
383
- emulated: true
384
- };
385
- window.postMessage(response, '*');
386
- },
387
- // linkManager
388
- 'luigi.navigation.open': (event) => {
389
- const response = {
390
- msg: 'luigi.navigate.ok',
391
- data: event.data,
392
- emulated: true
393
- };
394
- window.postMessage(response, '*');
395
- },
396
- 'luigi.navigation.splitview.close': (event) => {
397
- const response = {
398
- msg: 'luigi.navigate.ok',
399
- data: event.data,
400
- emulated: true
401
- };
402
- window.postMessage(response, '*');
403
- },
404
- 'luigi.navigation.splitview.collapse': (event) => {
405
- const response = {
406
- msg: 'luigi.navigate.ok',
407
- data: event.data,
408
- emulated: true
409
- };
410
- window.postMessage(response, '*');
411
- },
412
- 'luigi.navigation.splitview.expand': (event) => {
413
- const response = {
414
- msg: 'luigi.navigate.ok',
415
- data: event.data,
416
- emulated: true
417
- };
418
- window.postMessage(response, '*');
419
- },
420
- // storage
421
- storage: () => { }
337
+ context: e.data.context
338
+ }, '*');
339
+ }
340
+ // vizualise retrieved event data
341
+ LuigiMockEngine.visualize(JSON.stringify(e.data));
342
+ // Check and run mocked callback if it exists
343
+ const mockListener = window.luigiMockEnvironment.mockListeners[e.data.msg];
344
+ if (mockListener) {
345
+ mockListener(e);
346
+ }
422
347
  }
423
- };
424
- // Listen to the global 'message' event of the window object
425
- window.addEventListener('message', window.luigiMockEnvironment.msgListener);
426
- }
348
+ },
349
+ mockListeners: {
350
+ 'luigi.navigation.pathExists': (event) => {
351
+ const mockData = window.sessionStorage.getItem('luigiMockData');
352
+ let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;
353
+ const inputPath = event.data.data.link;
354
+ const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];
355
+ const response = {
356
+ msg: 'luigi.navigation.pathExists.answer',
357
+ data: {
358
+ correlationId: event.data.data.id,
359
+ pathExists: pathExists ? pathExists : false
360
+ },
361
+ emulated: true
362
+ };
363
+ window.postMessage(response, '*');
364
+ },
365
+ //ux
366
+ 'luigi.ux.confirmationModal.show': (event) => {
367
+ const response = {
368
+ msg: 'luigi.ux.confirmationModal.hide',
369
+ data: event.data,
370
+ emulated: true
371
+ };
372
+ window.postMessage(response, '*');
373
+ },
374
+ 'luigi.ux.alert.show': (event) => {
375
+ const response = {
376
+ msg: 'luigi.ux.alert.hide',
377
+ data: event.data,
378
+ emulated: true
379
+ };
380
+ window.postMessage(response, '*');
381
+ },
382
+ 'luigi.ux.set-current-locale': (event) => {
383
+ const response = {
384
+ msg: 'luigi.current-locale-changed',
385
+ currentLocale: event.data.data.currentLocale,
386
+ emulated: true
387
+ };
388
+ window.postMessage(response, '*');
389
+ },
390
+ // linkManager
391
+ 'luigi.navigation.open': (event) => {
392
+ const response = {
393
+ msg: 'luigi.navigate.ok',
394
+ data: event.data,
395
+ emulated: true
396
+ };
397
+ window.postMessage(response, '*');
398
+ },
399
+ 'luigi.navigation.splitview.close': (event) => {
400
+ const response = {
401
+ msg: 'luigi.navigate.ok',
402
+ data: event.data,
403
+ emulated: true
404
+ };
405
+ window.postMessage(response, '*');
406
+ },
407
+ 'luigi.navigation.splitview.collapse': (event) => {
408
+ const response = {
409
+ msg: 'luigi.navigate.ok',
410
+ data: event.data,
411
+ emulated: true
412
+ };
413
+ window.postMessage(response, '*');
414
+ },
415
+ 'luigi.navigation.splitview.expand': (event) => {
416
+ const response = {
417
+ msg: 'luigi.navigate.ok',
418
+ data: event.data,
419
+ emulated: true
420
+ };
421
+ window.postMessage(response, '*');
422
+ },
423
+ // storage
424
+ storage: () => { }
425
+ }
426
+ };
427
+ // Listen to the global 'message' event of the window object
428
+ window.addEventListener('message', window.luigiMockEnvironment.msgListener);
429
+ // }
427
430
  });
428
431
  }
429
432
  /*
@@ -1 +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 { OperatorFunction, PartialObserver, Subscription } from 'rxjs';\nimport { convertToParamMap, NavigationEnd, ParamMap, Router, RouterEvent } from '@angular/router';\nimport { linkManager, uxManager } from '@luigi-project/client';\nimport { filter } from 'rxjs/operators';\nimport { LuigiActivatedRouteSnapshotHelper } from '../route/luigi-activated-route-snapshot-helper';\nimport { LuigiContextService } from './luigi-context-service';\nimport { ActivatedRouteSnapshot } from '@angular/router';\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 = current.data.luigiRoute;\n\n if (current.params) {\n const pmap: ParamMap = convertToParamMap(current.params);\n pmap.keys.forEach(key => {\n const val = pmap.getAll(key).forEach(param => {\n route = route?.replace(':' + key, param);\n });\n });\n }\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 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 // Add a hook to the post message api to mock the LuigiCore response to the Client\n public static initPostMessageHook() {\n return async (): Promise<void> => {\n // Check if Luigi Client is running standalone\n if (window.parent === window) {\n console.debug('Detected standalone mode');\n\n // Check and skip if Luigi environment is already mocked\n if ((window as any).luigiMockEnvironment) {\n return;\n }\n\n // mock target origin\n if ((window as any).LuigiClient) {\n (window as any).LuigiClient.setTargetOrigin('*');\n }\n\n (window as any).luigiMockEnvironment = {\n msgListener: function(e: any) {\n if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {\n console.debug('Luigi msg', e.data);\n\n if (e.data.msg === 'luigi.get-context') {\n window.postMessage(\n {\n msg: 'luigi.init',\n emulated: true,\n internal: {\n viewStackSize: 1\n },\n context: e.data.context\n },\n '*'\n );\n }\n\n // vizualise retrieved event data\n LuigiMockEngine.visualize(JSON.stringify(e.data));\n\n // Check and run mocked callback if it exists\n const mockListener = (window as any).luigiMockEnvironment.mockListeners[e.data.msg];\n if (mockListener) {\n mockListener(e);\n }\n }\n },\n mockListeners: {\n 'luigi.navigation.pathExists': (event: any) => {\n const mockData = window.sessionStorage.getItem('luigiMockData');\n let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;\n const inputPath = event.data.data.link;\n const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];\n\n const response = {\n msg: 'luigi.navigation.pathExists.answer',\n data: {\n correlationId: event.data.data.id,\n pathExists: pathExists ? pathExists : false\n },\n emulated: true\n };\n window.postMessage(response, '*');\n },\n //ux\n 'luigi.ux.confirmationModal.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.confirmationModal.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.alert.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.alert.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.set-current-locale': (event: any) => {\n const response = {\n msg: 'luigi.current-locale-changed',\n currentLocale: event.data.data.currentLocale,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // linkManager\n 'luigi.navigation.open': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.close': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.collapse': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.expand': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // storage\n storage: () => {}\n }\n };\n\n // Listen to the global 'message' event of the window object\n window.addEventListener('message', (window as any).luigiMockEnvironment.msgListener);\n }\n };\n }\n\n /*\n * This method takes a data object of type 'any' and vizualizes a simple container\n * which holds data that is useful for e2e testing.\n */\n public static visualize(data: string): void {\n let luigiVisualizationContainer: Element | null = document.querySelector('#luigi-debug-vis-cnt');\n // Construct element structure if not already constructed\n if (!luigiVisualizationContainer) {\n luigiVisualizationContainer = document.createElement('div');\n luigiVisualizationContainer.setAttribute('id', 'luigi-debug-vis-cnt');\n // Hide the added DOM element to avoid interferring/overlapping with other elements during testing.\n luigiVisualizationContainer.setAttribute('style', 'display:none');\n document.body.appendChild(luigiVisualizationContainer);\n }\n const line: HTMLDivElement = document.createElement('div');\n line.textContent = data;\n luigiVisualizationContainer.appendChild(line);\n }\n}\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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"}
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 { OperatorFunction, PartialObserver, Subscription } from 'rxjs';\nimport { convertToParamMap, NavigationEnd, ParamMap, Router, RouterEvent } from '@angular/router';\nimport { linkManager, uxManager } from '@luigi-project/client';\nimport { filter } from 'rxjs/operators';\nimport { LuigiActivatedRouteSnapshotHelper } from '../route/luigi-activated-route-snapshot-helper';\nimport { LuigiContextService } from './luigi-context-service';\nimport { ActivatedRouteSnapshot } from '@angular/router';\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 = current.data.luigiRoute;\n\n if (current.params) {\n const pmap: ParamMap = convertToParamMap(current.params);\n pmap.keys.forEach(key => {\n const val = pmap.getAll(key).forEach(param => {\n route = route?.replace(':' + key, param);\n });\n });\n }\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 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 // Add a hook to the post message api to mock the LuigiCore response to the Client\n public static initPostMessageHook() {\n return async (): Promise<void> => {\n console.log('luigiMockModule sapluigi client-support-angular');\n // Check if Luigi Client is running standalone\n // if (window.parent === window) {\n console.debug('Detected standalone mode');\n\n // Check and skip if Luigi environment is already mocked\n if ((window as any).luigiMockEnvironment) {\n return;\n }\n\n // mock target origin\n console.log('(window as any).LuigiClient', (window as any).LuigiClient);\n if ((window as any).LuigiClient) {\n (window as any).LuigiClient.setTargetOrigin('*');\n }\n\n (window as any).luigiMockEnvironment = {\n msgListener: function (e: any) {\n console.log('msg starts with luigi. or storage', e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage'));\n if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {\n console.debug('Luigi msg', e.data);\n\n if (e.data.msg === 'luigi.get-context') {\n window.postMessage(\n {\n msg: 'luigi.init',\n emulated: true,\n internal: {\n viewStackSize: 1\n },\n context: e.data.context\n },\n '*'\n );\n }\n\n // vizualise retrieved event data\n LuigiMockEngine.visualize(JSON.stringify(e.data));\n\n // Check and run mocked callback if it exists\n const mockListener = (window as any).luigiMockEnvironment.mockListeners[e.data.msg];\n if (mockListener) {\n mockListener(e);\n }\n }\n },\n mockListeners: {\n 'luigi.navigation.pathExists': (event: any) => {\n const mockData = window.sessionStorage.getItem('luigiMockData');\n let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;\n const inputPath = event.data.data.link;\n const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];\n\n const response = {\n msg: 'luigi.navigation.pathExists.answer',\n data: {\n correlationId: event.data.data.id,\n pathExists: pathExists ? pathExists : false\n },\n emulated: true\n };\n window.postMessage(response, '*');\n },\n //ux\n 'luigi.ux.confirmationModal.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.confirmationModal.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.alert.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.alert.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.set-current-locale': (event: any) => {\n const response = {\n msg: 'luigi.current-locale-changed',\n currentLocale: event.data.data.currentLocale,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // linkManager\n 'luigi.navigation.open': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.close': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.collapse': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.expand': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // storage\n storage: () => { }\n }\n };\n\n // Listen to the global 'message' event of the window object\n window.addEventListener('message', (window as any).luigiMockEnvironment.msgListener);\n // }\n };\n }\n\n /*\n * This method takes a data object of type 'any' and vizualizes a simple container\n * which holds data that is useful for e2e testing.\n */\n public static visualize(data: string): void {\n let luigiVisualizationContainer: Element | null = document.querySelector('#luigi-debug-vis-cnt');\n // Construct element structure if not already constructed\n if (!luigiVisualizationContainer) {\n luigiVisualizationContainer = document.createElement('div');\n luigiVisualizationContainer.setAttribute('id', 'luigi-debug-vis-cnt');\n // Hide the added DOM element to avoid interferring/overlapping with other elements during testing.\n luigiVisualizationContainer.setAttribute('style', 'display:none');\n document.body.appendChild(luigiVisualizationContainer);\n }\n const line: HTMLDivElement = document.createElement('div');\n line.textContent = data;\n luigiVisualizationContainer.appendChild(line);\n }\n}\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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"}
@@ -307,121 +307,124 @@ class LuigiMockModule {
307
307
  // Add a hook to the post message api to mock the LuigiCore response to the Client
308
308
  static initPostMessageHook() {
309
309
  return async () => {
310
+ console.log('luigiMockModule sapluigi client-support-angular');
310
311
  // Check if Luigi Client is running standalone
311
- if (window.parent === window) {
312
- console.debug('Detected standalone mode');
313
- // Check and skip if Luigi environment is already mocked
314
- if (window.luigiMockEnvironment) {
315
- return;
316
- }
317
- // mock target origin
318
- if (window.LuigiClient) {
319
- window.LuigiClient.setTargetOrigin('*');
320
- }
321
- window.luigiMockEnvironment = {
322
- msgListener: function (e) {
323
- if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {
324
- console.debug('Luigi msg', e.data);
325
- if (e.data.msg === 'luigi.get-context') {
326
- window.postMessage({
327
- msg: 'luigi.init',
328
- emulated: true,
329
- internal: {
330
- viewStackSize: 1
331
- },
332
- context: e.data.context
333
- }, '*');
334
- }
335
- // vizualise retrieved event data
336
- LuigiMockEngine.visualize(JSON.stringify(e.data));
337
- // Check and run mocked callback if it exists
338
- const mockListener = window.luigiMockEnvironment.mockListeners[e.data.msg];
339
- if (mockListener) {
340
- mockListener(e);
341
- }
342
- }
343
- },
344
- mockListeners: {
345
- 'luigi.navigation.pathExists': (event) => {
346
- const mockData = window.sessionStorage.getItem('luigiMockData');
347
- let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;
348
- const inputPath = event.data.data.link;
349
- const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];
350
- const response = {
351
- msg: 'luigi.navigation.pathExists.answer',
352
- data: {
353
- correlationId: event.data.data.id,
354
- pathExists: pathExists ? pathExists : false
312
+ // if (window.parent === window) {
313
+ console.debug('Detected standalone mode');
314
+ // Check and skip if Luigi environment is already mocked
315
+ if (window.luigiMockEnvironment) {
316
+ return;
317
+ }
318
+ // mock target origin
319
+ console.log('(window as any).LuigiClient', window.LuigiClient);
320
+ if (window.LuigiClient) {
321
+ window.LuigiClient.setTargetOrigin('*');
322
+ }
323
+ window.luigiMockEnvironment = {
324
+ msgListener: function (e) {
325
+ console.log('msg starts with luigi. or storage', e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage'));
326
+ if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {
327
+ console.debug('Luigi msg', e.data);
328
+ if (e.data.msg === 'luigi.get-context') {
329
+ window.postMessage({
330
+ msg: 'luigi.init',
331
+ emulated: true,
332
+ internal: {
333
+ viewStackSize: 1
355
334
  },
356
- emulated: true
357
- };
358
- window.postMessage(response, '*');
359
- },
360
- //ux
361
- 'luigi.ux.confirmationModal.show': (event) => {
362
- const response = {
363
- msg: 'luigi.ux.confirmationModal.hide',
364
- data: event.data,
365
- emulated: true
366
- };
367
- window.postMessage(response, '*');
368
- },
369
- 'luigi.ux.alert.show': (event) => {
370
- const response = {
371
- msg: 'luigi.ux.alert.hide',
372
- data: event.data,
373
- emulated: true
374
- };
375
- window.postMessage(response, '*');
376
- },
377
- 'luigi.ux.set-current-locale': (event) => {
378
- const response = {
379
- msg: 'luigi.current-locale-changed',
380
- currentLocale: event.data.data.currentLocale,
381
- emulated: true
382
- };
383
- window.postMessage(response, '*');
384
- },
385
- // linkManager
386
- 'luigi.navigation.open': (event) => {
387
- const response = {
388
- msg: 'luigi.navigate.ok',
389
- data: event.data,
390
- emulated: true
391
- };
392
- window.postMessage(response, '*');
393
- },
394
- 'luigi.navigation.splitview.close': (event) => {
395
- const response = {
396
- msg: 'luigi.navigate.ok',
397
- data: event.data,
398
- emulated: true
399
- };
400
- window.postMessage(response, '*');
401
- },
402
- 'luigi.navigation.splitview.collapse': (event) => {
403
- const response = {
404
- msg: 'luigi.navigate.ok',
405
- data: event.data,
406
- emulated: true
407
- };
408
- window.postMessage(response, '*');
409
- },
410
- 'luigi.navigation.splitview.expand': (event) => {
411
- const response = {
412
- msg: 'luigi.navigate.ok',
413
- data: event.data,
414
- emulated: true
415
- };
416
- window.postMessage(response, '*');
417
- },
418
- // storage
419
- storage: () => { }
335
+ context: e.data.context
336
+ }, '*');
337
+ }
338
+ // vizualise retrieved event data
339
+ LuigiMockEngine.visualize(JSON.stringify(e.data));
340
+ // Check and run mocked callback if it exists
341
+ const mockListener = window.luigiMockEnvironment.mockListeners[e.data.msg];
342
+ if (mockListener) {
343
+ mockListener(e);
344
+ }
420
345
  }
421
- };
422
- // Listen to the global 'message' event of the window object
423
- window.addEventListener('message', window.luigiMockEnvironment.msgListener);
424
- }
346
+ },
347
+ mockListeners: {
348
+ 'luigi.navigation.pathExists': (event) => {
349
+ const mockData = window.sessionStorage.getItem('luigiMockData');
350
+ let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;
351
+ const inputPath = event.data.data.link;
352
+ const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];
353
+ const response = {
354
+ msg: 'luigi.navigation.pathExists.answer',
355
+ data: {
356
+ correlationId: event.data.data.id,
357
+ pathExists: pathExists ? pathExists : false
358
+ },
359
+ emulated: true
360
+ };
361
+ window.postMessage(response, '*');
362
+ },
363
+ //ux
364
+ 'luigi.ux.confirmationModal.show': (event) => {
365
+ const response = {
366
+ msg: 'luigi.ux.confirmationModal.hide',
367
+ data: event.data,
368
+ emulated: true
369
+ };
370
+ window.postMessage(response, '*');
371
+ },
372
+ 'luigi.ux.alert.show': (event) => {
373
+ const response = {
374
+ msg: 'luigi.ux.alert.hide',
375
+ data: event.data,
376
+ emulated: true
377
+ };
378
+ window.postMessage(response, '*');
379
+ },
380
+ 'luigi.ux.set-current-locale': (event) => {
381
+ const response = {
382
+ msg: 'luigi.current-locale-changed',
383
+ currentLocale: event.data.data.currentLocale,
384
+ emulated: true
385
+ };
386
+ window.postMessage(response, '*');
387
+ },
388
+ // linkManager
389
+ 'luigi.navigation.open': (event) => {
390
+ const response = {
391
+ msg: 'luigi.navigate.ok',
392
+ data: event.data,
393
+ emulated: true
394
+ };
395
+ window.postMessage(response, '*');
396
+ },
397
+ 'luigi.navigation.splitview.close': (event) => {
398
+ const response = {
399
+ msg: 'luigi.navigate.ok',
400
+ data: event.data,
401
+ emulated: true
402
+ };
403
+ window.postMessage(response, '*');
404
+ },
405
+ 'luigi.navigation.splitview.collapse': (event) => {
406
+ const response = {
407
+ msg: 'luigi.navigate.ok',
408
+ data: event.data,
409
+ emulated: true
410
+ };
411
+ window.postMessage(response, '*');
412
+ },
413
+ 'luigi.navigation.splitview.expand': (event) => {
414
+ const response = {
415
+ msg: 'luigi.navigate.ok',
416
+ data: event.data,
417
+ emulated: true
418
+ };
419
+ window.postMessage(response, '*');
420
+ },
421
+ // storage
422
+ storage: () => { }
423
+ }
424
+ };
425
+ // Listen to the global 'message' event of the window object
426
+ window.addEventListener('message', window.luigiMockEnvironment.msgListener);
427
+ // }
425
428
  };
426
429
  }
427
430
  /*
@@ -1 +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 { OperatorFunction, PartialObserver, Subscription } from 'rxjs';\nimport { convertToParamMap, NavigationEnd, ParamMap, Router, RouterEvent } from '@angular/router';\nimport { linkManager, uxManager } from '@luigi-project/client';\nimport { filter } from 'rxjs/operators';\nimport { LuigiActivatedRouteSnapshotHelper } from '../route/luigi-activated-route-snapshot-helper';\nimport { LuigiContextService } from './luigi-context-service';\nimport { ActivatedRouteSnapshot } from '@angular/router';\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 = current.data.luigiRoute;\n\n if (current.params) {\n const pmap: ParamMap = convertToParamMap(current.params);\n pmap.keys.forEach(key => {\n const val = pmap.getAll(key).forEach(param => {\n route = route?.replace(':' + key, param);\n });\n });\n }\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 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 // Add a hook to the post message api to mock the LuigiCore response to the Client\n public static initPostMessageHook() {\n return async (): Promise<void> => {\n // Check if Luigi Client is running standalone\n if (window.parent === window) {\n console.debug('Detected standalone mode');\n\n // Check and skip if Luigi environment is already mocked\n if ((window as any).luigiMockEnvironment) {\n return;\n }\n\n // mock target origin\n if ((window as any).LuigiClient) {\n (window as any).LuigiClient.setTargetOrigin('*');\n }\n\n (window as any).luigiMockEnvironment = {\n msgListener: function(e: any) {\n if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {\n console.debug('Luigi msg', e.data);\n\n if (e.data.msg === 'luigi.get-context') {\n window.postMessage(\n {\n msg: 'luigi.init',\n emulated: true,\n internal: {\n viewStackSize: 1\n },\n context: e.data.context\n },\n '*'\n );\n }\n\n // vizualise retrieved event data\n LuigiMockEngine.visualize(JSON.stringify(e.data));\n\n // Check and run mocked callback if it exists\n const mockListener = (window as any).luigiMockEnvironment.mockListeners[e.data.msg];\n if (mockListener) {\n mockListener(e);\n }\n }\n },\n mockListeners: {\n 'luigi.navigation.pathExists': (event: any) => {\n const mockData = window.sessionStorage.getItem('luigiMockData');\n let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;\n const inputPath = event.data.data.link;\n const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];\n\n const response = {\n msg: 'luigi.navigation.pathExists.answer',\n data: {\n correlationId: event.data.data.id,\n pathExists: pathExists ? pathExists : false\n },\n emulated: true\n };\n window.postMessage(response, '*');\n },\n //ux\n 'luigi.ux.confirmationModal.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.confirmationModal.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.alert.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.alert.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.set-current-locale': (event: any) => {\n const response = {\n msg: 'luigi.current-locale-changed',\n currentLocale: event.data.data.currentLocale,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // linkManager\n 'luigi.navigation.open': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.close': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.collapse': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.expand': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // storage\n storage: () => {}\n }\n };\n\n // Listen to the global 'message' event of the window object\n window.addEventListener('message', (window as any).luigiMockEnvironment.msgListener);\n }\n };\n }\n\n /*\n * This method takes a data object of type 'any' and vizualizes a simple container\n * which holds data that is useful for e2e testing.\n */\n public static visualize(data: string): void {\n let luigiVisualizationContainer: Element | null = document.querySelector('#luigi-debug-vis-cnt');\n // Construct element structure if not already constructed\n if (!luigiVisualizationContainer) {\n luigiVisualizationContainer = document.createElement('div');\n luigiVisualizationContainer.setAttribute('id', 'luigi-debug-vis-cnt');\n // Hide the added DOM element to avoid interferring/overlapping with other elements during testing.\n luigiVisualizationContainer.setAttribute('style', 'display:none');\n document.body.appendChild(luigiVisualizationContainer);\n }\n const line: HTMLDivElement = document.createElement('div');\n line.textContent = data;\n luigiVisualizationContainer.appendChild(line);\n }\n}\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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"}
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 { OperatorFunction, PartialObserver, Subscription } from 'rxjs';\nimport { convertToParamMap, NavigationEnd, ParamMap, Router, RouterEvent } from '@angular/router';\nimport { linkManager, uxManager } from '@luigi-project/client';\nimport { filter } from 'rxjs/operators';\nimport { LuigiActivatedRouteSnapshotHelper } from '../route/luigi-activated-route-snapshot-helper';\nimport { LuigiContextService } from './luigi-context-service';\nimport { ActivatedRouteSnapshot } from '@angular/router';\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 = current.data.luigiRoute;\n\n if (current.params) {\n const pmap: ParamMap = convertToParamMap(current.params);\n pmap.keys.forEach(key => {\n const val = pmap.getAll(key).forEach(param => {\n route = route?.replace(':' + key, param);\n });\n });\n }\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 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 // Add a hook to the post message api to mock the LuigiCore response to the Client\n public static initPostMessageHook() {\n return async (): Promise<void> => {\n console.log('luigiMockModule sapluigi client-support-angular');\n // Check if Luigi Client is running standalone\n // if (window.parent === window) {\n console.debug('Detected standalone mode');\n\n // Check and skip if Luigi environment is already mocked\n if ((window as any).luigiMockEnvironment) {\n return;\n }\n\n // mock target origin\n console.log('(window as any).LuigiClient', (window as any).LuigiClient);\n if ((window as any).LuigiClient) {\n (window as any).LuigiClient.setTargetOrigin('*');\n }\n\n (window as any).luigiMockEnvironment = {\n msgListener: function (e: any) {\n console.log('msg starts with luigi. or storage', e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage'));\n if (e.data.msg && (e.data.msg.startsWith('luigi.') || e.data.msg === 'storage')) {\n console.debug('Luigi msg', e.data);\n\n if (e.data.msg === 'luigi.get-context') {\n window.postMessage(\n {\n msg: 'luigi.init',\n emulated: true,\n internal: {\n viewStackSize: 1\n },\n context: e.data.context\n },\n '*'\n );\n }\n\n // vizualise retrieved event data\n LuigiMockEngine.visualize(JSON.stringify(e.data));\n\n // Check and run mocked callback if it exists\n const mockListener = (window as any).luigiMockEnvironment.mockListeners[e.data.msg];\n if (mockListener) {\n mockListener(e);\n }\n }\n },\n mockListeners: {\n 'luigi.navigation.pathExists': (event: any) => {\n const mockData = window.sessionStorage.getItem('luigiMockData');\n let mockDataParsed = mockData ? JSON.parse(mockData) : undefined;\n const inputPath = event.data.data.link;\n const pathExists = mockDataParsed && mockDataParsed.pathExists && mockDataParsed.pathExists[inputPath];\n\n const response = {\n msg: 'luigi.navigation.pathExists.answer',\n data: {\n correlationId: event.data.data.id,\n pathExists: pathExists ? pathExists : false\n },\n emulated: true\n };\n window.postMessage(response, '*');\n },\n //ux\n 'luigi.ux.confirmationModal.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.confirmationModal.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.alert.show': (event: any) => {\n const response = {\n msg: 'luigi.ux.alert.hide',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.ux.set-current-locale': (event: any) => {\n const response = {\n msg: 'luigi.current-locale-changed',\n currentLocale: event.data.data.currentLocale,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // linkManager\n 'luigi.navigation.open': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.close': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.collapse': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n 'luigi.navigation.splitview.expand': (event: any) => {\n const response = {\n msg: 'luigi.navigate.ok',\n data: event.data,\n emulated: true\n };\n window.postMessage(response, '*');\n },\n // storage\n storage: () => { }\n }\n };\n\n // Listen to the global 'message' event of the window object\n window.addEventListener('message', (window as any).luigiMockEnvironment.msgListener);\n // }\n };\n }\n\n /*\n * This method takes a data object of type 'any' and vizualizes a simple container\n * which holds data that is useful for e2e testing.\n */\n public static visualize(data: string): void {\n let luigiVisualizationContainer: Element | null = document.querySelector('#luigi-debug-vis-cnt');\n // Construct element structure if not already constructed\n if (!luigiVisualizationContainer) {\n luigiVisualizationContainer = document.createElement('div');\n luigiVisualizationContainer.setAttribute('id', 'luigi-debug-vis-cnt');\n // Hide the added DOM element to avoid interferring/overlapping with other elements during testing.\n luigiVisualizationContainer.setAttribute('style', 'display:none');\n document.body.appendChild(luigiVisualizationContainer);\n }\n const line: HTMLDivElement = document.createElement('div');\n line.textContent = data;\n luigiVisualizationContainer.appendChild(line);\n }\n}\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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"}
package/package.json CHANGED
@@ -9,8 +9,8 @@
9
9
  "peerDependencies": {
10
10
  "@angular/common": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0",
11
11
  "@angular/core": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0",
12
- "@luigi-project/client": "^2.0.0",
13
- "@luigi-project/testing-utilities": "^2.0.0"
12
+ "@luigi-project/client": "2.9.1-dev.202402191417",
13
+ "@luigi-project/testing-utilities": "2.9.1-dev.202402191417"
14
14
  },
15
15
  "dependencies": {
16
16
  "tslib": "^2.0.0"
@@ -18,7 +18,7 @@
18
18
  "publishConfig": {
19
19
  "tag": "client-support-angular"
20
20
  },
21
- "version": "2.9.0",
21
+ "version": "2.9.1-dev.202402191429",
22
22
  "module": "fesm2015/luigi-project-client-support-angular.mjs",
23
23
  "es2020": "fesm2020/luigi-project-client-support-angular.mjs",
24
24
  "esm2020": "esm2020/luigi-project-client-support-angular.mjs",