@hai3/framework 0.2.0-alpha.3 → 0.4.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CLAUDE.md +194 -19
- package/dist/index.cjs +470 -521
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +308 -81
- package/dist/index.d.ts +308 -81
- package/dist/index.js +458 -504
- package/dist/index.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +30 -117
- package/dist/types.d.ts +30 -117
- package/llms.txt +122 -13
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -25,13 +25,27 @@ __export(src_exports, {
|
|
|
25
25
|
ApiPluginBase: () => import_api3.ApiPluginBase,
|
|
26
26
|
ApiProtocol: () => import_api3.ApiProtocol,
|
|
27
27
|
BaseApiService: () => import_api3.BaseApiService,
|
|
28
|
+
ContainerProvider: () => import_screensets11.ContainerProvider,
|
|
29
|
+
HAI3_ACTION_LOAD_EXT: () => import_screensets9.HAI3_ACTION_LOAD_EXT,
|
|
30
|
+
HAI3_ACTION_MOUNT_EXT: () => import_screensets9.HAI3_ACTION_MOUNT_EXT,
|
|
31
|
+
HAI3_ACTION_UNMOUNT_EXT: () => import_screensets9.HAI3_ACTION_UNMOUNT_EXT,
|
|
32
|
+
HAI3_OVERLAY_DOMAIN: () => HAI3_OVERLAY_DOMAIN,
|
|
33
|
+
HAI3_POPUP_DOMAIN: () => HAI3_POPUP_DOMAIN,
|
|
34
|
+
HAI3_SCREEN_DOMAIN: () => HAI3_SCREEN_DOMAIN,
|
|
35
|
+
HAI3_SCREEN_EXTENSION_TYPE: () => import_screensets8.HAI3_SCREEN_EXTENSION_TYPE,
|
|
36
|
+
HAI3_SHARED_PROPERTY_LANGUAGE: () => import_screensets10.HAI3_SHARED_PROPERTY_LANGUAGE,
|
|
37
|
+
HAI3_SHARED_PROPERTY_THEME: () => import_screensets10.HAI3_SHARED_PROPERTY_THEME,
|
|
38
|
+
HAI3_SIDEBAR_DOMAIN: () => HAI3_SIDEBAR_DOMAIN,
|
|
28
39
|
I18nRegistry: () => import_i18n6.I18nRegistryImpl,
|
|
29
|
-
I18nRegistryImpl: () =>
|
|
40
|
+
I18nRegistryImpl: () => import_i18n4.I18nRegistryImpl,
|
|
30
41
|
LAYOUT_SLICE_NAME: () => LAYOUT_SLICE_NAME,
|
|
31
|
-
Language: () =>
|
|
32
|
-
LanguageDisplayMode: () =>
|
|
33
|
-
LayoutDomain: () =>
|
|
42
|
+
Language: () => import_i18n4.Language,
|
|
43
|
+
LanguageDisplayMode: () => import_i18n4.LanguageDisplayMode,
|
|
44
|
+
LayoutDomain: () => import_screensets13.LayoutDomain,
|
|
34
45
|
MOCK_PLUGIN: () => import_api3.MOCK_PLUGIN,
|
|
46
|
+
MfeBridgeFactory: () => import_screensets11.MfeBridgeFactory,
|
|
47
|
+
MfeHandler: () => import_screensets11.MfeHandler,
|
|
48
|
+
MfeHandlerMF: () => import_handler.MfeHandlerMF,
|
|
35
49
|
MockEventSource: () => import_api3.MockEventSource,
|
|
36
50
|
MockEvents: () => MockEvents,
|
|
37
51
|
RestMockPlugin: () => import_api3.RestMockPlugin,
|
|
@@ -39,15 +53,16 @@ __export(src_exports, {
|
|
|
39
53
|
RestPluginWithConfig: () => import_api3.RestPluginWithConfig,
|
|
40
54
|
RestProtocol: () => import_api3.RestProtocol,
|
|
41
55
|
STATE_PATH_MAPPING: () => STATE_PATH_MAPPING,
|
|
42
|
-
SUPPORTED_LANGUAGES: () =>
|
|
43
|
-
|
|
56
|
+
SUPPORTED_LANGUAGES: () => import_i18n4.SUPPORTED_LANGUAGES,
|
|
57
|
+
ScreensetsRegistry: () => import_screensets11.ScreensetsRegistry,
|
|
58
|
+
ScreensetsRegistryFactory: () => import_screensets11.ScreensetsRegistryFactory,
|
|
44
59
|
SseMockPlugin: () => import_api3.SseMockPlugin,
|
|
45
60
|
SsePlugin: () => import_api3.SsePlugin,
|
|
46
61
|
SsePluginWithConfig: () => import_api3.SsePluginWithConfig,
|
|
47
62
|
SseProtocol: () => import_api3.SseProtocol,
|
|
48
63
|
TENANT_SLICE_NAME: () => TENANT_SLICE_NAME,
|
|
49
64
|
TenantEvents: () => TenantEvents,
|
|
50
|
-
TextDirection: () =>
|
|
65
|
+
TextDirection: () => import_i18n4.TextDirection,
|
|
51
66
|
apiRegistry: () => import_api3.apiRegistry,
|
|
52
67
|
changeTenant: () => changeTenant,
|
|
53
68
|
clearActiveScreen: () => clearActiveScreen,
|
|
@@ -57,34 +72,46 @@ __export(src_exports, {
|
|
|
57
72
|
closeAllPopups: () => closeAllPopups,
|
|
58
73
|
closePopup: () => closePopup,
|
|
59
74
|
closeTopPopup: () => closeTopPopup,
|
|
75
|
+
compareStrings: () => import_i18n5.compareStrings,
|
|
76
|
+
createCollator: () => import_i18n5.createCollator,
|
|
60
77
|
createHAI3: () => createHAI3,
|
|
61
78
|
createHAI3App: () => createHAI3App,
|
|
62
|
-
createI18nRegistry: () =>
|
|
79
|
+
createI18nRegistry: () => import_i18n4.createI18nRegistry,
|
|
63
80
|
createLegacySelector: () => createLegacySelector,
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
createStore: () => import_state17.createStore,
|
|
81
|
+
createShadowRoot: () => import_screensets12.createShadowRoot,
|
|
82
|
+
createSlice: () => import_state21.createSlice,
|
|
83
|
+
createStore: () => import_state21.createStore,
|
|
68
84
|
createThemeRegistry: () => createThemeRegistry,
|
|
69
85
|
effects: () => effects,
|
|
70
|
-
eventBus: () =>
|
|
86
|
+
eventBus: () => import_state21.eventBus,
|
|
87
|
+
extractGtsPackage: () => import_screensets12.extractGtsPackage,
|
|
71
88
|
footerActions: () => footerActions,
|
|
72
89
|
footerSlice: () => footerSlice,
|
|
90
|
+
formatCompact: () => import_i18n5.formatCompact,
|
|
91
|
+
formatCurrency: () => import_i18n5.formatCurrency,
|
|
92
|
+
formatDate: () => import_i18n5.formatDate,
|
|
93
|
+
formatDateTime: () => import_i18n5.formatDateTime,
|
|
94
|
+
formatNumber: () => import_i18n5.formatNumber,
|
|
95
|
+
formatPercent: () => import_i18n5.formatPercent,
|
|
96
|
+
formatRelative: () => import_i18n5.formatRelative,
|
|
97
|
+
formatTime: () => import_i18n5.formatTime,
|
|
73
98
|
full: () => full,
|
|
74
|
-
getLanguageMetadata: () =>
|
|
99
|
+
getLanguageMetadata: () => import_i18n4.getLanguageMetadata,
|
|
75
100
|
getLayoutDomainState: () => getLayoutDomainState,
|
|
76
|
-
getStore: () =>
|
|
101
|
+
getStore: () => import_state21.getStore,
|
|
102
|
+
gtsPlugin: () => import_gts2.gtsPlugin,
|
|
77
103
|
hasLegacyUicoreState: () => hasLegacyUicoreState,
|
|
78
104
|
hasNewLayoutState: () => hasNewLayoutState,
|
|
79
|
-
hasSlice: () =>
|
|
105
|
+
hasSlice: () => import_state21.hasSlice,
|
|
80
106
|
headerActions: () => headerActions,
|
|
81
107
|
headerSlice: () => headerSlice,
|
|
82
108
|
headless: () => headless,
|
|
83
109
|
hideOverlay: () => hideOverlay,
|
|
84
110
|
i18n: () => i18n,
|
|
85
|
-
i18nRegistry: () =>
|
|
111
|
+
i18nRegistry: () => import_i18n4.i18nRegistry,
|
|
86
112
|
initMockEffects: () => initMockEffects,
|
|
87
113
|
initTenantEffects: () => initTenantEffects,
|
|
114
|
+
injectCssVariables: () => import_screensets12.injectCssVariables,
|
|
88
115
|
isDeprecationWarningsEnabled: () => isDeprecationWarningsEnabled,
|
|
89
116
|
isMockPlugin: () => import_api3.isMockPlugin,
|
|
90
117
|
isRestShortCircuit: () => import_api3.isRestShortCircuit,
|
|
@@ -93,26 +120,34 @@ __export(src_exports, {
|
|
|
93
120
|
layout: () => layout,
|
|
94
121
|
layoutDomainReducers: () => layoutDomainReducers,
|
|
95
122
|
layoutReducer: () => layoutReducer,
|
|
123
|
+
loadExtension: () => loadExtension,
|
|
96
124
|
menuActions: () => menuActions,
|
|
97
125
|
menuSlice: () => menuSlice,
|
|
126
|
+
microfrontends: () => microfrontends,
|
|
98
127
|
minimal: () => minimal,
|
|
99
128
|
mock: () => mock,
|
|
100
129
|
mockActions: () => mockActions,
|
|
101
130
|
mockSlice: () => mockSlice,
|
|
131
|
+
mountExtension: () => mountExtension,
|
|
102
132
|
navigateTo: () => navigateTo,
|
|
103
|
-
navigation: () => navigation,
|
|
104
133
|
openPopup: () => openPopup,
|
|
105
134
|
overlayActions: () => overlayActions,
|
|
135
|
+
overlayDomain: () => overlayDomain,
|
|
106
136
|
overlaySlice: () => overlaySlice,
|
|
107
137
|
popupActions: () => popupActions,
|
|
138
|
+
popupDomain: () => popupDomain,
|
|
108
139
|
popupSlice: () => popupSlice,
|
|
109
140
|
presets: () => presets,
|
|
110
|
-
|
|
111
|
-
|
|
141
|
+
registerExtension: () => registerExtension,
|
|
142
|
+
registerSlice: () => import_state21.registerSlice,
|
|
112
143
|
screenActions: () => screenActions,
|
|
144
|
+
screenDomain: () => screenDomain,
|
|
113
145
|
screenSlice: () => screenSlice,
|
|
114
|
-
screensetRegistry: () => import_screensets5.screensetRegistry,
|
|
115
146
|
screensets: () => screensets,
|
|
147
|
+
screensetsRegistryFactory: () => import_screensets11.screensetsRegistryFactory,
|
|
148
|
+
selectExtensionError: () => selectExtensionError,
|
|
149
|
+
selectExtensionState: () => selectExtensionState,
|
|
150
|
+
selectRegisteredExtensions: () => selectRegisteredExtensions,
|
|
116
151
|
setActiveScreen: () => setActiveScreen,
|
|
117
152
|
setDeprecationWarnings: () => setDeprecationWarnings,
|
|
118
153
|
setFooterConfig: () => setFooterConfig,
|
|
@@ -138,6 +173,7 @@ __export(src_exports, {
|
|
|
138
173
|
setUser: () => setUser,
|
|
139
174
|
showOverlay: () => showOverlay,
|
|
140
175
|
sidebarActions: () => sidebarActions,
|
|
176
|
+
sidebarDomain: () => sidebarDomain,
|
|
141
177
|
sidebarSlice: () => sidebarSlice,
|
|
142
178
|
tenantActions: () => tenantActions,
|
|
143
179
|
tenantReducer: () => tenantSlice_default,
|
|
@@ -145,7 +181,9 @@ __export(src_exports, {
|
|
|
145
181
|
themes: () => themes,
|
|
146
182
|
toggleMenu: () => toggleMenu,
|
|
147
183
|
toggleMockMode: () => toggleMockMode,
|
|
148
|
-
toggleSidebar: () => toggleSidebar
|
|
184
|
+
toggleSidebar: () => toggleSidebar,
|
|
185
|
+
unmountExtension: () => unmountExtension,
|
|
186
|
+
unregisterExtension: () => unregisterExtension
|
|
149
187
|
});
|
|
150
188
|
module.exports = __toCommonJS(src_exports);
|
|
151
189
|
|
|
@@ -215,11 +253,10 @@ var HAI3AppBuilderImpl = class {
|
|
|
215
253
|
const app = {
|
|
216
254
|
config: this.config,
|
|
217
255
|
store,
|
|
218
|
-
screensetRegistry: aggregated.registries.screensetRegistry,
|
|
219
256
|
themeRegistry: aggregated.registries.themeRegistry,
|
|
220
|
-
routeRegistry: aggregated.registries.routeRegistry,
|
|
221
257
|
apiRegistry: import_api.apiRegistry,
|
|
222
258
|
i18nRegistry: aggregated.registries.i18nRegistry,
|
|
259
|
+
screensetsRegistry: aggregated.registries.screensetsRegistry,
|
|
223
260
|
actions: aggregated.actions,
|
|
224
261
|
destroy: () => this.destroyApp(orderedPlugins, app)
|
|
225
262
|
};
|
|
@@ -278,7 +315,7 @@ Add the missing plugin: .use(${depName}())`
|
|
|
278
315
|
const registries = {};
|
|
279
316
|
const slices = [];
|
|
280
317
|
const effects2 = [];
|
|
281
|
-
const
|
|
318
|
+
const actions2 = {};
|
|
282
319
|
plugins.forEach((plugin) => {
|
|
283
320
|
if (!plugin.provides) return;
|
|
284
321
|
if (plugin.provides.registries) {
|
|
@@ -291,10 +328,10 @@ Add the missing plugin: .use(${depName}())`
|
|
|
291
328
|
effects2.push(...plugin.provides.effects);
|
|
292
329
|
}
|
|
293
330
|
if (plugin.provides.actions) {
|
|
294
|
-
Object.assign(
|
|
331
|
+
Object.assign(actions2, plugin.provides.actions);
|
|
295
332
|
}
|
|
296
333
|
});
|
|
297
|
-
return { registries, slices, effects: effects2, actions };
|
|
334
|
+
return { registries, slices, effects: effects2, actions: actions2 };
|
|
298
335
|
}
|
|
299
336
|
/**
|
|
300
337
|
* Create store with all aggregated slices.
|
|
@@ -310,8 +347,8 @@ Add the missing plugin: .use(${depName}())`
|
|
|
310
347
|
*/
|
|
311
348
|
createStoreWithSlices(slices) {
|
|
312
349
|
const store = (0, import_state.getStore)();
|
|
313
|
-
slices.forEach((
|
|
314
|
-
(0, import_state.registerSlice)(
|
|
350
|
+
slices.forEach((slice11) => {
|
|
351
|
+
(0, import_state.registerSlice)(slice11);
|
|
315
352
|
});
|
|
316
353
|
return store;
|
|
317
354
|
}
|
|
@@ -330,9 +367,6 @@ function createHAI3(config) {
|
|
|
330
367
|
return new HAI3AppBuilderImpl(config);
|
|
331
368
|
}
|
|
332
369
|
|
|
333
|
-
// src/plugins/screensets.ts
|
|
334
|
-
var import_screensets = require("@hai3/screensets");
|
|
335
|
-
|
|
336
370
|
// src/slices/index.ts
|
|
337
371
|
var import_toolkit = require("@reduxjs/toolkit");
|
|
338
372
|
|
|
@@ -629,35 +663,26 @@ var layoutDomainReducers = {
|
|
|
629
663
|
var layoutReducer = (0, import_toolkit.combineReducers)(layoutDomainReducers);
|
|
630
664
|
|
|
631
665
|
// src/plugins/screensets.ts
|
|
632
|
-
|
|
633
|
-
var screenActions2 = screenActions;
|
|
634
|
-
function screensets(config) {
|
|
635
|
-
const screensetRegistry3 = import_screensets.screensetRegistry;
|
|
666
|
+
function screensets(_config) {
|
|
636
667
|
return {
|
|
637
668
|
name: "screensets",
|
|
638
669
|
dependencies: [],
|
|
639
670
|
provides: {
|
|
640
|
-
registries: {
|
|
641
|
-
|
|
642
|
-
},
|
|
643
|
-
slices: [screenSlice2],
|
|
671
|
+
registries: {},
|
|
672
|
+
slices: [screenSlice],
|
|
644
673
|
actions: {
|
|
645
|
-
setActiveScreen:
|
|
646
|
-
setScreenLoading:
|
|
674
|
+
setActiveScreen: screenActions.navigateTo,
|
|
675
|
+
setScreenLoading: screenActions.setScreenLoading
|
|
647
676
|
}
|
|
648
677
|
},
|
|
649
678
|
onInit() {
|
|
650
|
-
if (config?.autoDiscover) {
|
|
651
|
-
console.log(
|
|
652
|
-
"[HAI3] Auto-discover is enabled. Screensets should be registered via screensetRegistry.register() in your app."
|
|
653
|
-
);
|
|
654
|
-
}
|
|
655
679
|
}
|
|
656
680
|
};
|
|
657
681
|
}
|
|
658
682
|
|
|
659
683
|
// src/plugins/themes.ts
|
|
660
684
|
var import_state11 = require("@hai3/state");
|
|
685
|
+
var import_screensets = require("@hai3/screensets");
|
|
661
686
|
|
|
662
687
|
// src/registries/themeRegistry.ts
|
|
663
688
|
function createThemeRegistry(config) {
|
|
@@ -795,9 +820,14 @@ function themes(config) {
|
|
|
795
820
|
changeTheme
|
|
796
821
|
}
|
|
797
822
|
},
|
|
798
|
-
onInit(
|
|
823
|
+
onInit(app) {
|
|
799
824
|
import_state11.eventBus.on("theme/changed", (payload) => {
|
|
800
825
|
themeRegistry.apply(payload.themeId);
|
|
826
|
+
try {
|
|
827
|
+
app.screensetsRegistry?.updateSharedProperty(import_screensets.HAI3_SHARED_PROPERTY_THEME, payload.themeId);
|
|
828
|
+
} catch (error) {
|
|
829
|
+
console.error("[HAI3] Failed to propagate theme to MFE domains", error);
|
|
830
|
+
}
|
|
801
831
|
});
|
|
802
832
|
const themes2 = themeRegistry.getAll();
|
|
803
833
|
if (themes2.length > 0) {
|
|
@@ -809,18 +839,6 @@ function themes(config) {
|
|
|
809
839
|
|
|
810
840
|
// src/plugins/layout.ts
|
|
811
841
|
var import_state12 = require("@hai3/state");
|
|
812
|
-
var headerSlice2 = headerSlice;
|
|
813
|
-
var footerSlice2 = footerSlice;
|
|
814
|
-
var menuSlice2 = menuSlice;
|
|
815
|
-
var sidebarSlice2 = sidebarSlice;
|
|
816
|
-
var popupSlice2 = popupSlice;
|
|
817
|
-
var overlaySlice2 = overlaySlice;
|
|
818
|
-
var headerActions2 = headerActions;
|
|
819
|
-
var footerActions2 = footerActions;
|
|
820
|
-
var menuActions2 = menuActions;
|
|
821
|
-
var sidebarActions2 = sidebarActions;
|
|
822
|
-
var popupActions2 = popupActions;
|
|
823
|
-
var overlayActions2 = overlayActions;
|
|
824
842
|
function showPopup(payload) {
|
|
825
843
|
import_state12.eventBus.emit("layout/popup/requested", payload);
|
|
826
844
|
}
|
|
@@ -839,18 +857,20 @@ function toggleMenuCollapsed(payload) {
|
|
|
839
857
|
function toggleSidebarCollapsed(payload) {
|
|
840
858
|
import_state12.eventBus.emit("layout/sidebar/collapsed", payload);
|
|
841
859
|
}
|
|
860
|
+
function setHeaderVisible(_visible) {
|
|
861
|
+
}
|
|
842
862
|
function layout() {
|
|
843
863
|
return {
|
|
844
864
|
name: "layout",
|
|
845
865
|
dependencies: ["screensets"],
|
|
846
866
|
provides: {
|
|
847
867
|
slices: [
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
868
|
+
headerSlice,
|
|
869
|
+
footerSlice,
|
|
870
|
+
menuSlice,
|
|
871
|
+
sidebarSlice,
|
|
872
|
+
popupSlice,
|
|
873
|
+
overlaySlice
|
|
854
874
|
],
|
|
855
875
|
actions: {
|
|
856
876
|
showPopup,
|
|
@@ -860,463 +880,71 @@ function layout() {
|
|
|
860
880
|
toggleMenuCollapsed,
|
|
861
881
|
toggleSidebarCollapsed,
|
|
862
882
|
// Direct slice actions for backward compatibility
|
|
863
|
-
setHeaderVisible
|
|
864
|
-
setFooterVisible:
|
|
865
|
-
setMenuCollapsed:
|
|
866
|
-
setSidebarCollapsed:
|
|
883
|
+
setHeaderVisible,
|
|
884
|
+
setFooterVisible: footerActions.setFooterVisible,
|
|
885
|
+
setMenuCollapsed: menuActions.setMenuCollapsed,
|
|
886
|
+
setSidebarCollapsed: sidebarActions.setSidebarCollapsed
|
|
867
887
|
}
|
|
868
888
|
},
|
|
869
889
|
onInit(app) {
|
|
870
890
|
const dispatch = app.store.dispatch;
|
|
871
891
|
import_state12.eventBus.on("layout/popup/requested", (payload) => {
|
|
872
|
-
dispatch(
|
|
892
|
+
dispatch(popupActions.openPopup({
|
|
873
893
|
id: payload.id,
|
|
874
|
-
title: payload.title,
|
|
875
|
-
|
|
876
|
-
|
|
894
|
+
title: payload.title ?? "",
|
|
895
|
+
component: ""
|
|
896
|
+
// Payload doesn't include component - this needs review
|
|
877
897
|
}));
|
|
878
898
|
});
|
|
879
899
|
import_state12.eventBus.on("layout/popup/hidden", () => {
|
|
880
|
-
dispatch(
|
|
900
|
+
dispatch(popupActions.closeAllPopups());
|
|
881
901
|
});
|
|
882
|
-
import_state12.eventBus.on("layout/overlay/requested", (
|
|
883
|
-
dispatch(
|
|
902
|
+
import_state12.eventBus.on("layout/overlay/requested", (_payload) => {
|
|
903
|
+
dispatch(overlayActions.showOverlay());
|
|
884
904
|
});
|
|
885
905
|
import_state12.eventBus.on("layout/overlay/hidden", () => {
|
|
886
|
-
dispatch(
|
|
906
|
+
dispatch(overlayActions.hideOverlay());
|
|
887
907
|
});
|
|
888
908
|
import_state12.eventBus.on("layout/menu/collapsed", (payload) => {
|
|
889
|
-
dispatch(
|
|
909
|
+
dispatch(menuActions.setMenuCollapsed(payload.collapsed));
|
|
890
910
|
});
|
|
891
911
|
import_state12.eventBus.on("layout/sidebar/collapsed", (payload) => {
|
|
892
|
-
dispatch(
|
|
912
|
+
dispatch(sidebarActions.setSidebarCollapsed(payload.collapsed));
|
|
893
913
|
});
|
|
894
914
|
}
|
|
895
915
|
};
|
|
896
916
|
}
|
|
897
917
|
|
|
898
|
-
// src/plugins/
|
|
918
|
+
// src/plugins/i18n.ts
|
|
899
919
|
var import_state13 = require("@hai3/state");
|
|
900
920
|
var import_i18n = require("@hai3/i18n");
|
|
901
|
-
|
|
902
|
-
// src/utils/basePath.ts
|
|
903
|
-
function normalizeBase(base) {
|
|
904
|
-
if (!base) {
|
|
905
|
-
return "/";
|
|
906
|
-
}
|
|
907
|
-
let normalized = base.startsWith("/") ? base : `/${base}`;
|
|
908
|
-
if (normalized !== "/" && normalized.endsWith("/")) {
|
|
909
|
-
normalized = normalized.slice(0, -1);
|
|
910
|
-
}
|
|
911
|
-
return normalized;
|
|
912
|
-
}
|
|
913
|
-
function stripBase(pathname, base) {
|
|
914
|
-
if (base === "/") {
|
|
915
|
-
return pathname;
|
|
916
|
-
}
|
|
917
|
-
if (!pathname.startsWith(base)) {
|
|
918
|
-
return null;
|
|
919
|
-
}
|
|
920
|
-
const nextChar = pathname.charAt(base.length);
|
|
921
|
-
if (nextChar && nextChar !== "/") {
|
|
922
|
-
return null;
|
|
923
|
-
}
|
|
924
|
-
return pathname.slice(base.length) || "/";
|
|
925
|
-
}
|
|
926
|
-
function prependBase(path, base) {
|
|
927
|
-
if (base === "/") {
|
|
928
|
-
return path;
|
|
929
|
-
}
|
|
930
|
-
const cleanPath = path.startsWith("/") ? path : `/${path}`;
|
|
931
|
-
return `${base}${cleanPath}`;
|
|
932
|
-
}
|
|
933
|
-
function resolveBase(pluginConfig, appConfig) {
|
|
934
|
-
const rawBase = pluginConfig?.base ?? appConfig?.base ?? "/";
|
|
935
|
-
return normalizeBase(rawBase);
|
|
936
|
-
}
|
|
937
|
-
|
|
938
|
-
// src/utils/routeMatcher.ts
|
|
939
|
-
var import_path_to_regexp = require("path-to-regexp");
|
|
940
|
-
function compileRoute(pattern, screensetId, screenId) {
|
|
941
|
-
return {
|
|
942
|
-
pattern,
|
|
943
|
-
screensetId,
|
|
944
|
-
screenId,
|
|
945
|
-
matcher: (0, import_path_to_regexp.match)(pattern, { decode: decodeURIComponent }),
|
|
946
|
-
toPath: (0, import_path_to_regexp.compile)(pattern, { encode: encodeURIComponent })
|
|
947
|
-
};
|
|
948
|
-
}
|
|
949
|
-
function matchPath(path, routes) {
|
|
950
|
-
for (const route of routes) {
|
|
951
|
-
const result = route.matcher(path);
|
|
952
|
-
if (result) {
|
|
953
|
-
return {
|
|
954
|
-
screensetId: route.screensetId,
|
|
955
|
-
screenId: route.screenId,
|
|
956
|
-
params: result.params
|
|
957
|
-
};
|
|
958
|
-
}
|
|
959
|
-
}
|
|
960
|
-
return void 0;
|
|
961
|
-
}
|
|
962
|
-
function generatePath(route, params) {
|
|
963
|
-
return route.toPath(params);
|
|
964
|
-
}
|
|
965
|
-
function extractRequiredParams(pattern) {
|
|
966
|
-
const params = [];
|
|
967
|
-
const matches = pattern.match(/:([^/]+)/g);
|
|
968
|
-
if (matches) {
|
|
969
|
-
for (const match2 of matches) {
|
|
970
|
-
params.push(match2.slice(1));
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
return params;
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
// src/plugins/navigation.ts
|
|
977
|
-
var screenActions3 = screenActions;
|
|
978
|
-
var menuActions3 = menuActions;
|
|
979
|
-
function navigateToScreen(payload) {
|
|
980
|
-
import_state13.eventBus.emit("navigation/screen/navigated", payload);
|
|
981
|
-
}
|
|
982
|
-
function navigateToScreenset(payload) {
|
|
983
|
-
import_state13.eventBus.emit("navigation/screenset/navigated", payload);
|
|
984
|
-
}
|
|
985
|
-
function navigation(config) {
|
|
986
|
-
return {
|
|
987
|
-
name: "navigation",
|
|
988
|
-
dependencies: ["screensets"],
|
|
989
|
-
provides: {
|
|
990
|
-
actions: {
|
|
991
|
-
navigateToScreen,
|
|
992
|
-
navigateToScreenset
|
|
993
|
-
}
|
|
994
|
-
},
|
|
995
|
-
onInit(app) {
|
|
996
|
-
const dispatch = app.store.dispatch;
|
|
997
|
-
const base = resolveBase(config, app.config);
|
|
998
|
-
const routerMode = app.config.routerMode ?? "browser";
|
|
999
|
-
let currentScreensetId = null;
|
|
1000
|
-
const getCurrentPath = () => {
|
|
1001
|
-
if (typeof window === "undefined") return "/";
|
|
1002
|
-
switch (routerMode) {
|
|
1003
|
-
case "hash":
|
|
1004
|
-
return window.location.hash.slice(1) || "/";
|
|
1005
|
-
case "memory":
|
|
1006
|
-
return "/";
|
|
1007
|
-
case "browser":
|
|
1008
|
-
default:
|
|
1009
|
-
return window.location.pathname;
|
|
1010
|
-
}
|
|
1011
|
-
};
|
|
1012
|
-
const updateURL = (path) => {
|
|
1013
|
-
if (typeof window === "undefined" || routerMode === "memory") {
|
|
1014
|
-
return;
|
|
1015
|
-
}
|
|
1016
|
-
const url = prependBase(path, base);
|
|
1017
|
-
switch (routerMode) {
|
|
1018
|
-
case "hash":
|
|
1019
|
-
if (window.location.hash !== `#${url}`) {
|
|
1020
|
-
window.location.hash = url;
|
|
1021
|
-
}
|
|
1022
|
-
break;
|
|
1023
|
-
case "browser":
|
|
1024
|
-
default:
|
|
1025
|
-
if (window.location.pathname !== url) {
|
|
1026
|
-
window.history.pushState(null, "", url);
|
|
1027
|
-
}
|
|
1028
|
-
break;
|
|
1029
|
-
}
|
|
1030
|
-
};
|
|
1031
|
-
const loadScreensetTranslations = async (screensetId, language) => {
|
|
1032
|
-
await import_i18n.i18nRegistry.loadScreensetTranslations(
|
|
1033
|
-
screensetId,
|
|
1034
|
-
language
|
|
1035
|
-
);
|
|
1036
|
-
};
|
|
1037
|
-
const updateScreensetMenu = (screenset) => {
|
|
1038
|
-
const menuItems = screenset.menu.map((item) => ({
|
|
1039
|
-
id: item.menuItem.screenId ?? item.menuItem.id,
|
|
1040
|
-
label: item.menuItem.label,
|
|
1041
|
-
icon: item.menuItem.icon
|
|
1042
|
-
}));
|
|
1043
|
-
dispatch(menuActions3.setMenuItems(menuItems));
|
|
1044
|
-
};
|
|
1045
|
-
const activateScreenset = (screensetId) => {
|
|
1046
|
-
if (screensetId === currentScreensetId) {
|
|
1047
|
-
return;
|
|
1048
|
-
}
|
|
1049
|
-
const screenset = app.screensetRegistry.get(screensetId);
|
|
1050
|
-
if (!screenset) {
|
|
1051
|
-
return;
|
|
1052
|
-
}
|
|
1053
|
-
currentScreensetId = screensetId;
|
|
1054
|
-
loadScreensetTranslations(screensetId).catch((err) => {
|
|
1055
|
-
console.warn(`[HAI3] Failed to load translations for screenset ${screensetId}:`, err);
|
|
1056
|
-
});
|
|
1057
|
-
updateScreensetMenu(screenset);
|
|
1058
|
-
};
|
|
1059
|
-
const extractInternalPath = () => {
|
|
1060
|
-
const currentPath = getCurrentPath();
|
|
1061
|
-
return stripBase(currentPath, base) || "/";
|
|
1062
|
-
};
|
|
1063
|
-
const activateFromRouteMatch = (match2) => {
|
|
1064
|
-
activateScreenset(match2.screensetId);
|
|
1065
|
-
dispatch(screenActions3.navigateTo(match2.screenId));
|
|
1066
|
-
};
|
|
1067
|
-
const matchCurrentPath = () => {
|
|
1068
|
-
const path = extractInternalPath();
|
|
1069
|
-
return app.routeRegistry?.matchRoute(path);
|
|
1070
|
-
};
|
|
1071
|
-
import_state13.eventBus.on("navigation/screen/navigated", (payload) => {
|
|
1072
|
-
if (!app.routeRegistry?.hasScreen(payload.screensetId, payload.screenId)) {
|
|
1073
|
-
console.warn(
|
|
1074
|
-
`Screen "${payload.screenId}" in screenset "${payload.screensetId}" not found.`
|
|
1075
|
-
);
|
|
1076
|
-
return;
|
|
1077
|
-
}
|
|
1078
|
-
const pattern = app.routeRegistry?.getRoutePattern(payload.screenId);
|
|
1079
|
-
if (pattern) {
|
|
1080
|
-
const requiredParams = extractRequiredParams(pattern);
|
|
1081
|
-
const providedParams = payload.params || {};
|
|
1082
|
-
const missingParams = requiredParams.filter((param) => !(param in providedParams));
|
|
1083
|
-
if (missingParams.length > 0) {
|
|
1084
|
-
console.warn(
|
|
1085
|
-
`Screen "${payload.screenId}" requires route params [${requiredParams.join(", ")}] but missing: [${missingParams.join(", ")}]`
|
|
1086
|
-
);
|
|
1087
|
-
return;
|
|
1088
|
-
}
|
|
1089
|
-
}
|
|
1090
|
-
activateScreenset(payload.screensetId);
|
|
1091
|
-
dispatch(screenActions3.navigateTo(payload.screenId));
|
|
1092
|
-
const path = app.routeRegistry?.generatePath(payload.screenId, payload.params) ?? `/${payload.screenId}`;
|
|
1093
|
-
updateURL(path);
|
|
1094
|
-
});
|
|
1095
|
-
import_state13.eventBus.on("navigation/screenset/navigated", (payload) => {
|
|
1096
|
-
const screenset = app.screensetRegistry.get(payload.screensetId);
|
|
1097
|
-
if (!screenset) {
|
|
1098
|
-
console.warn(`Screenset "${payload.screensetId}" not found.`);
|
|
1099
|
-
return;
|
|
1100
|
-
}
|
|
1101
|
-
navigateToScreen({
|
|
1102
|
-
screensetId: payload.screensetId,
|
|
1103
|
-
screenId: screenset.defaultScreen
|
|
1104
|
-
});
|
|
1105
|
-
});
|
|
1106
|
-
let lastLoadedLanguage = null;
|
|
1107
|
-
import_i18n.i18nRegistry.subscribe(() => {
|
|
1108
|
-
const currentLanguage = import_i18n.i18nRegistry.getLanguage();
|
|
1109
|
-
if (!currentLanguage || currentLanguage === lastLoadedLanguage) {
|
|
1110
|
-
return;
|
|
1111
|
-
}
|
|
1112
|
-
if (!currentScreensetId) {
|
|
1113
|
-
return;
|
|
1114
|
-
}
|
|
1115
|
-
const screenset = app.screensetRegistry.get(currentScreensetId);
|
|
1116
|
-
if (!screenset) {
|
|
1117
|
-
return;
|
|
1118
|
-
}
|
|
1119
|
-
lastLoadedLanguage = currentLanguage;
|
|
1120
|
-
loadScreensetTranslations(currentScreensetId, currentLanguage).then(() => updateScreensetMenu(screenset)).catch((err) => {
|
|
1121
|
-
console.warn(
|
|
1122
|
-
`[HAI3] Failed to reload translations for screenset ${currentScreensetId}:`,
|
|
1123
|
-
err
|
|
1124
|
-
);
|
|
1125
|
-
});
|
|
1126
|
-
});
|
|
1127
|
-
if (typeof window !== "undefined" && routerMode !== "memory") {
|
|
1128
|
-
const handleURLChange = () => {
|
|
1129
|
-
const match3 = matchCurrentPath();
|
|
1130
|
-
if (match3) {
|
|
1131
|
-
activateFromRouteMatch(match3);
|
|
1132
|
-
}
|
|
1133
|
-
};
|
|
1134
|
-
if (routerMode === "hash") {
|
|
1135
|
-
window.addEventListener("hashchange", handleURLChange);
|
|
1136
|
-
} else {
|
|
1137
|
-
window.addEventListener("popstate", handleURLChange);
|
|
1138
|
-
}
|
|
1139
|
-
const match2 = matchCurrentPath();
|
|
1140
|
-
const autoNavigate = app.config.autoNavigate !== false;
|
|
1141
|
-
if (match2) {
|
|
1142
|
-
activateFromRouteMatch(match2);
|
|
1143
|
-
} else if (autoNavigate) {
|
|
1144
|
-
const screensets2 = app.screensetRegistry.getAll();
|
|
1145
|
-
if (screensets2.length > 0) {
|
|
1146
|
-
navigateToScreenset({ screensetId: screensets2[0].id });
|
|
1147
|
-
}
|
|
1148
|
-
}
|
|
1149
|
-
} else if (routerMode === "memory") {
|
|
1150
|
-
const autoNavigate = app.config.autoNavigate !== false;
|
|
1151
|
-
if (autoNavigate) {
|
|
1152
|
-
const screensets2 = app.screensetRegistry.getAll();
|
|
1153
|
-
if (screensets2.length > 0) {
|
|
1154
|
-
navigateToScreenset({ screensetId: screensets2[0].id });
|
|
1155
|
-
}
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
|
-
}
|
|
1159
|
-
};
|
|
1160
|
-
}
|
|
1161
|
-
|
|
1162
|
-
// src/registries/routeRegistry.ts
|
|
1163
|
-
function createRouteRegistry(screensetRegistry3) {
|
|
1164
|
-
let routes = null;
|
|
1165
|
-
function buildRoutes() {
|
|
1166
|
-
if (routes !== null) {
|
|
1167
|
-
return routes;
|
|
1168
|
-
}
|
|
1169
|
-
routes = [];
|
|
1170
|
-
const screensets2 = screensetRegistry3.getAll();
|
|
1171
|
-
screensets2.forEach((screenset) => {
|
|
1172
|
-
screenset.menu.forEach((menuScreenItem) => {
|
|
1173
|
-
const screenId = menuScreenItem.menuItem.screenId ?? menuScreenItem.menuItem.id;
|
|
1174
|
-
if (screenId && menuScreenItem.screen) {
|
|
1175
|
-
const pattern = menuScreenItem.menuItem.path ?? `/${screenId}`;
|
|
1176
|
-
const compiledRoute = compileRoute(pattern, screenset.id, screenId);
|
|
1177
|
-
routes.push({
|
|
1178
|
-
screensetId: screenset.id,
|
|
1179
|
-
screenId,
|
|
1180
|
-
loader: menuScreenItem.screen,
|
|
1181
|
-
pattern,
|
|
1182
|
-
compiledRoute
|
|
1183
|
-
});
|
|
1184
|
-
}
|
|
1185
|
-
});
|
|
1186
|
-
});
|
|
1187
|
-
routes.sort((a, b) => {
|
|
1188
|
-
const aHasParams = a.pattern.includes(":");
|
|
1189
|
-
const bHasParams = b.pattern.includes(":");
|
|
1190
|
-
if (!aHasParams && bHasParams) return -1;
|
|
1191
|
-
if (aHasParams && !bHasParams) return 1;
|
|
1192
|
-
return 0;
|
|
1193
|
-
});
|
|
1194
|
-
return routes;
|
|
1195
|
-
}
|
|
1196
|
-
return {
|
|
1197
|
-
/**
|
|
1198
|
-
* Check if a screen exists by screenId only (globally unique).
|
|
1199
|
-
*/
|
|
1200
|
-
hasScreenById(screenId) {
|
|
1201
|
-
const allRoutes = buildRoutes();
|
|
1202
|
-
return allRoutes.some((route) => route.screenId === screenId);
|
|
1203
|
-
},
|
|
1204
|
-
/**
|
|
1205
|
-
* Check if a screen exists by both screensetId and screenId (explicit lookup when screenset context is known).
|
|
1206
|
-
*/
|
|
1207
|
-
hasScreen(screensetId, screenId) {
|
|
1208
|
-
const allRoutes = buildRoutes();
|
|
1209
|
-
return allRoutes.some(
|
|
1210
|
-
(route) => route.screensetId === screensetId && route.screenId === screenId
|
|
1211
|
-
);
|
|
1212
|
-
},
|
|
1213
|
-
/**
|
|
1214
|
-
* Get screenset ID for a given screen ID (reverse lookup).
|
|
1215
|
-
* Screen IDs are globally unique across all screensets.
|
|
1216
|
-
*/
|
|
1217
|
-
getScreensetForScreen(screenId) {
|
|
1218
|
-
const allRoutes = buildRoutes();
|
|
1219
|
-
const route = allRoutes.find((r) => r.screenId === screenId);
|
|
1220
|
-
return route?.screensetId;
|
|
1221
|
-
},
|
|
1222
|
-
/**
|
|
1223
|
-
* Get screen loader by screenId only.
|
|
1224
|
-
*/
|
|
1225
|
-
getScreenById(screenId) {
|
|
1226
|
-
const allRoutes = buildRoutes();
|
|
1227
|
-
const route = allRoutes.find((r) => r.screenId === screenId);
|
|
1228
|
-
return route?.loader;
|
|
1229
|
-
},
|
|
1230
|
-
/**
|
|
1231
|
-
* Get screen loader by both screensetId and screenId (explicit lookup when screenset context is known).
|
|
1232
|
-
*/
|
|
1233
|
-
getScreen(screensetId, screenId) {
|
|
1234
|
-
const allRoutes = buildRoutes();
|
|
1235
|
-
const route = allRoutes.find(
|
|
1236
|
-
(r) => r.screensetId === screensetId && r.screenId === screenId
|
|
1237
|
-
);
|
|
1238
|
-
return route?.loader;
|
|
1239
|
-
},
|
|
1240
|
-
/**
|
|
1241
|
-
* Get all routes.
|
|
1242
|
-
*/
|
|
1243
|
-
getAll() {
|
|
1244
|
-
const allRoutes = buildRoutes();
|
|
1245
|
-
return allRoutes.map(({ screensetId, screenId }) => ({
|
|
1246
|
-
screensetId,
|
|
1247
|
-
screenId
|
|
1248
|
-
}));
|
|
1249
|
-
},
|
|
1250
|
-
/**
|
|
1251
|
-
* Match a URL path against registered routes, extracting params.
|
|
1252
|
-
* Returns the first matching route with extracted params, or undefined if no match.
|
|
1253
|
-
*/
|
|
1254
|
-
matchRoute(path) {
|
|
1255
|
-
const allRoutes = buildRoutes();
|
|
1256
|
-
const compiledRoutes = allRoutes.map((r) => r.compiledRoute);
|
|
1257
|
-
return matchPath(path, compiledRoutes);
|
|
1258
|
-
},
|
|
1259
|
-
/**
|
|
1260
|
-
* Generate a URL path for a screen with given params.
|
|
1261
|
-
*/
|
|
1262
|
-
generatePath(screenId, params = {}) {
|
|
1263
|
-
const allRoutes = buildRoutes();
|
|
1264
|
-
const route = allRoutes.find((r) => r.screenId === screenId);
|
|
1265
|
-
if (!route) {
|
|
1266
|
-
console.warn(`Route not found for screen: ${screenId}`);
|
|
1267
|
-
return `/${screenId}`;
|
|
1268
|
-
}
|
|
1269
|
-
return generatePath(route.compiledRoute, params);
|
|
1270
|
-
},
|
|
1271
|
-
/**
|
|
1272
|
-
* Get the route pattern for a screen.
|
|
1273
|
-
*/
|
|
1274
|
-
getRoutePattern(screenId) {
|
|
1275
|
-
const allRoutes = buildRoutes();
|
|
1276
|
-
const route = allRoutes.find((r) => r.screenId === screenId);
|
|
1277
|
-
return route?.pattern;
|
|
1278
|
-
}
|
|
1279
|
-
};
|
|
1280
|
-
}
|
|
1281
|
-
|
|
1282
|
-
// src/plugins/routing.ts
|
|
1283
|
-
function routing() {
|
|
1284
|
-
return {
|
|
1285
|
-
name: "routing",
|
|
1286
|
-
dependencies: ["screensets"],
|
|
1287
|
-
onRegister(_app) {
|
|
1288
|
-
},
|
|
1289
|
-
onInit(app) {
|
|
1290
|
-
const routeRegistry = createRouteRegistry(app.screensetRegistry);
|
|
1291
|
-
app.routeRegistry = routeRegistry;
|
|
1292
|
-
}
|
|
1293
|
-
};
|
|
1294
|
-
}
|
|
1295
|
-
|
|
1296
|
-
// src/plugins/i18n.ts
|
|
1297
|
-
var import_state14 = require("@hai3/state");
|
|
1298
|
-
var import_i18n2 = require("@hai3/i18n");
|
|
921
|
+
var import_screensets2 = require("@hai3/screensets");
|
|
1299
922
|
function setLanguage(payload) {
|
|
1300
|
-
|
|
923
|
+
import_state13.eventBus.emit("i18n/language/changed", payload);
|
|
1301
924
|
}
|
|
1302
925
|
function i18n() {
|
|
1303
|
-
const
|
|
926
|
+
const i18nRegistry2 = import_i18n.i18nRegistry;
|
|
1304
927
|
return {
|
|
1305
928
|
name: "i18n",
|
|
1306
929
|
dependencies: [],
|
|
1307
930
|
provides: {
|
|
1308
931
|
registries: {
|
|
1309
|
-
i18nRegistry:
|
|
932
|
+
i18nRegistry: i18nRegistry2
|
|
1310
933
|
},
|
|
1311
934
|
actions: {
|
|
1312
935
|
setLanguage
|
|
1313
936
|
}
|
|
1314
937
|
},
|
|
1315
|
-
onInit(
|
|
1316
|
-
|
|
1317
|
-
await
|
|
938
|
+
onInit(app) {
|
|
939
|
+
import_state13.eventBus.on("i18n/language/changed", async (payload) => {
|
|
940
|
+
await i18nRegistry2.setLanguage(payload.language);
|
|
941
|
+
try {
|
|
942
|
+
app.screensetsRegistry?.updateSharedProperty(import_screensets2.HAI3_SHARED_PROPERTY_LANGUAGE, payload.language);
|
|
943
|
+
} catch (error) {
|
|
944
|
+
console.error("[HAI3] Failed to propagate language to MFE domains", error);
|
|
945
|
+
}
|
|
1318
946
|
});
|
|
1319
|
-
|
|
947
|
+
i18nRegistry2.setLanguage(import_i18n.Language.English).catch((err) => {
|
|
1320
948
|
console.warn("[HAI3] Failed to load initial translations:", err);
|
|
1321
949
|
});
|
|
1322
950
|
}
|
|
@@ -1328,16 +956,13 @@ function effects() {
|
|
|
1328
956
|
return {
|
|
1329
957
|
name: "effects",
|
|
1330
958
|
dependencies: [],
|
|
1331
|
-
onInit(
|
|
1332
|
-
if (app.config.devMode) {
|
|
1333
|
-
console.log("[HAI3] Effects plugin initialized");
|
|
1334
|
-
}
|
|
959
|
+
onInit() {
|
|
1335
960
|
}
|
|
1336
961
|
};
|
|
1337
962
|
}
|
|
1338
963
|
|
|
1339
964
|
// src/effects/mockEffects.ts
|
|
1340
|
-
var
|
|
965
|
+
var import_state14 = require("@hai3/state");
|
|
1341
966
|
var import_api2 = require("@hai3/api");
|
|
1342
967
|
function hasPluginManagement(protocol) {
|
|
1343
968
|
return "plugins" in protocol && typeof protocol.plugins === "object";
|
|
@@ -1366,8 +991,8 @@ function syncMockPlugins(enabled) {
|
|
|
1366
991
|
}
|
|
1367
992
|
}
|
|
1368
993
|
function initMockEffects() {
|
|
1369
|
-
const store = (0,
|
|
1370
|
-
const unsubscribe =
|
|
994
|
+
const store = (0, import_state14.getStore)();
|
|
995
|
+
const unsubscribe = import_state14.eventBus.on(MockEvents.Toggle, (payload) => {
|
|
1371
996
|
store.dispatch(setMockEnabled(payload.enabled));
|
|
1372
997
|
syncMockPlugins(payload.enabled);
|
|
1373
998
|
});
|
|
@@ -1380,7 +1005,7 @@ function initMockEffects() {
|
|
|
1380
1005
|
};
|
|
1381
1006
|
}
|
|
1382
1007
|
function toggleMockMode(enabled) {
|
|
1383
|
-
|
|
1008
|
+
import_state14.eventBus.emit(MockEvents.Toggle, { enabled });
|
|
1384
1009
|
}
|
|
1385
1010
|
|
|
1386
1011
|
// src/plugins/mock.ts
|
|
@@ -1406,9 +1031,6 @@ function mock(config) {
|
|
|
1406
1031
|
const enabledByDefault = config?.enabledByDefault ?? isDev;
|
|
1407
1032
|
if (enabledByDefault) {
|
|
1408
1033
|
toggleMockMode(true);
|
|
1409
|
-
if (isDev) {
|
|
1410
|
-
console.log("[HAI3] Mock mode enabled by default (dev environment detected)");
|
|
1411
|
-
}
|
|
1412
1034
|
}
|
|
1413
1035
|
},
|
|
1414
1036
|
onDestroy() {
|
|
@@ -1420,6 +1042,286 @@ function mock(config) {
|
|
|
1420
1042
|
};
|
|
1421
1043
|
}
|
|
1422
1044
|
|
|
1045
|
+
// src/plugins/microfrontends/index.ts
|
|
1046
|
+
var import_screensets5 = require("@hai3/screensets");
|
|
1047
|
+
var import_gts = require("@hai3/screensets/plugins/gts");
|
|
1048
|
+
var import_state18 = require("@hai3/state");
|
|
1049
|
+
|
|
1050
|
+
// src/plugins/microfrontends/slice.ts
|
|
1051
|
+
var import_state15 = require("@hai3/state");
|
|
1052
|
+
var SLICE_KEY10 = "mfe";
|
|
1053
|
+
var initialState10 = {
|
|
1054
|
+
registrationStates: {},
|
|
1055
|
+
errors: {},
|
|
1056
|
+
mountedExtensions: {}
|
|
1057
|
+
};
|
|
1058
|
+
var { slice: slice10, ...actions } = (0, import_state15.createSlice)({
|
|
1059
|
+
name: SLICE_KEY10,
|
|
1060
|
+
initialState: initialState10,
|
|
1061
|
+
reducers: {
|
|
1062
|
+
// Registration state reducers
|
|
1063
|
+
setExtensionRegistering: (state, action) => {
|
|
1064
|
+
state.registrationStates[action.payload.extensionId] = "registering";
|
|
1065
|
+
},
|
|
1066
|
+
setExtensionRegistered: (state, action) => {
|
|
1067
|
+
state.registrationStates[action.payload.extensionId] = "registered";
|
|
1068
|
+
},
|
|
1069
|
+
setExtensionUnregistered: (state, action) => {
|
|
1070
|
+
state.registrationStates[action.payload.extensionId] = "unregistered";
|
|
1071
|
+
},
|
|
1072
|
+
setExtensionError: (state, action) => {
|
|
1073
|
+
state.registrationStates[action.payload.extensionId] = "error";
|
|
1074
|
+
state.errors[action.payload.extensionId] = action.payload.error;
|
|
1075
|
+
},
|
|
1076
|
+
// Mount state reducers
|
|
1077
|
+
setExtensionMounted: (state, action) => {
|
|
1078
|
+
state.mountedExtensions[action.payload.domainId] = action.payload.extensionId;
|
|
1079
|
+
},
|
|
1080
|
+
setExtensionUnmounted: (state, action) => {
|
|
1081
|
+
state.mountedExtensions[action.payload.domainId] = void 0;
|
|
1082
|
+
}
|
|
1083
|
+
}
|
|
1084
|
+
});
|
|
1085
|
+
var mfeSlice = slice10;
|
|
1086
|
+
var {
|
|
1087
|
+
setExtensionRegistering,
|
|
1088
|
+
setExtensionRegistered,
|
|
1089
|
+
setExtensionUnregistered,
|
|
1090
|
+
setExtensionError,
|
|
1091
|
+
setExtensionMounted,
|
|
1092
|
+
setExtensionUnmounted
|
|
1093
|
+
} = actions;
|
|
1094
|
+
function selectExtensionState(state, extensionId) {
|
|
1095
|
+
return state.mfe.registrationStates[extensionId] ?? "unregistered";
|
|
1096
|
+
}
|
|
1097
|
+
function selectRegisteredExtensions(state) {
|
|
1098
|
+
return Object.entries(state.mfe.registrationStates).filter(([_, regState]) => regState === "registered").map(([extensionId]) => extensionId);
|
|
1099
|
+
}
|
|
1100
|
+
function selectExtensionError(state, extensionId) {
|
|
1101
|
+
return state.mfe.errors[extensionId];
|
|
1102
|
+
}
|
|
1103
|
+
var slice_default = slice10.reducer;
|
|
1104
|
+
|
|
1105
|
+
// src/plugins/microfrontends/effects.ts
|
|
1106
|
+
var import_state16 = require("@hai3/state");
|
|
1107
|
+
|
|
1108
|
+
// src/plugins/microfrontends/constants.ts
|
|
1109
|
+
var HAI3_POPUP_DOMAIN = "gts.hai3.mfes.ext.domain.v1~hai3.screensets.layout.popup.v1";
|
|
1110
|
+
var HAI3_SIDEBAR_DOMAIN = "gts.hai3.mfes.ext.domain.v1~hai3.screensets.layout.sidebar.v1";
|
|
1111
|
+
var HAI3_SCREEN_DOMAIN = "gts.hai3.mfes.ext.domain.v1~hai3.screensets.layout.screen.v1";
|
|
1112
|
+
var HAI3_OVERLAY_DOMAIN = "gts.hai3.mfes.ext.domain.v1~hai3.screensets.layout.overlay.v1";
|
|
1113
|
+
var MfeEvents = {
|
|
1114
|
+
RegisterExtensionRequested: "mfe/registerExtensionRequested",
|
|
1115
|
+
UnregisterExtensionRequested: "mfe/unregisterExtensionRequested"
|
|
1116
|
+
};
|
|
1117
|
+
|
|
1118
|
+
// src/plugins/microfrontends/effects.ts
|
|
1119
|
+
function initMfeEffects(screensetsRegistry2) {
|
|
1120
|
+
const store = (0, import_state16.getStore)();
|
|
1121
|
+
const unsubscribers = [];
|
|
1122
|
+
const unsubRegisterExtension = import_state16.eventBus.on(MfeEvents.RegisterExtensionRequested, async (payload) => {
|
|
1123
|
+
const { extension } = payload;
|
|
1124
|
+
try {
|
|
1125
|
+
store.dispatch(setExtensionRegistering({ extensionId: extension.id }));
|
|
1126
|
+
await screensetsRegistry2.registerExtension(extension);
|
|
1127
|
+
store.dispatch(setExtensionRegistered({ extensionId: extension.id }));
|
|
1128
|
+
} catch (error) {
|
|
1129
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown registration error";
|
|
1130
|
+
store.dispatch(setExtensionError({ extensionId: extension.id, error: errorMessage }));
|
|
1131
|
+
}
|
|
1132
|
+
});
|
|
1133
|
+
unsubscribers.push(unsubRegisterExtension);
|
|
1134
|
+
const unsubUnregisterExtension = import_state16.eventBus.on(MfeEvents.UnregisterExtensionRequested, async (payload) => {
|
|
1135
|
+
const { extensionId } = payload;
|
|
1136
|
+
try {
|
|
1137
|
+
await screensetsRegistry2.unregisterExtension(extensionId);
|
|
1138
|
+
store.dispatch(setExtensionUnregistered({ extensionId }));
|
|
1139
|
+
} catch (error) {
|
|
1140
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown unregistration error";
|
|
1141
|
+
store.dispatch(setExtensionError({ extensionId, error: errorMessage }));
|
|
1142
|
+
}
|
|
1143
|
+
});
|
|
1144
|
+
unsubscribers.push(unsubUnregisterExtension);
|
|
1145
|
+
return () => {
|
|
1146
|
+
unsubscribers.forEach((unsub) => unsub.unsubscribe());
|
|
1147
|
+
};
|
|
1148
|
+
}
|
|
1149
|
+
|
|
1150
|
+
// src/plugins/microfrontends/actions.ts
|
|
1151
|
+
var import_state17 = require("@hai3/state");
|
|
1152
|
+
var import_screensets3 = require("@hai3/screensets");
|
|
1153
|
+
var screensetsRegistry = null;
|
|
1154
|
+
function setMfeRegistry(registry) {
|
|
1155
|
+
screensetsRegistry = registry;
|
|
1156
|
+
}
|
|
1157
|
+
function resolveDomainId(extensionId) {
|
|
1158
|
+
if (!screensetsRegistry) {
|
|
1159
|
+
throw new Error("MFE registry not initialized. Call setMfeRegistry() before using lifecycle actions.");
|
|
1160
|
+
}
|
|
1161
|
+
const extension = screensetsRegistry.getExtension(extensionId);
|
|
1162
|
+
if (!extension) {
|
|
1163
|
+
throw new Error(`Extension '${extensionId}' is not registered. Register it before calling lifecycle actions.`);
|
|
1164
|
+
}
|
|
1165
|
+
return extension.domain;
|
|
1166
|
+
}
|
|
1167
|
+
function loadExtension(extensionId) {
|
|
1168
|
+
const domainId = resolveDomainId(extensionId);
|
|
1169
|
+
screensetsRegistry.executeActionsChain({
|
|
1170
|
+
action: {
|
|
1171
|
+
type: import_screensets3.HAI3_ACTION_LOAD_EXT,
|
|
1172
|
+
target: domainId,
|
|
1173
|
+
payload: { extensionId }
|
|
1174
|
+
}
|
|
1175
|
+
}).catch((error) => {
|
|
1176
|
+
console.error(`[MFE] Load failed for ${extensionId}:`, error);
|
|
1177
|
+
});
|
|
1178
|
+
}
|
|
1179
|
+
function mountExtension(extensionId) {
|
|
1180
|
+
const domainId = resolveDomainId(extensionId);
|
|
1181
|
+
screensetsRegistry.executeActionsChain({
|
|
1182
|
+
action: {
|
|
1183
|
+
type: import_screensets3.HAI3_ACTION_MOUNT_EXT,
|
|
1184
|
+
target: domainId,
|
|
1185
|
+
payload: { extensionId }
|
|
1186
|
+
}
|
|
1187
|
+
}).catch((error) => {
|
|
1188
|
+
console.error(`[MFE] Mount failed for ${extensionId}:`, error);
|
|
1189
|
+
});
|
|
1190
|
+
}
|
|
1191
|
+
function unmountExtension(extensionId) {
|
|
1192
|
+
const domainId = resolveDomainId(extensionId);
|
|
1193
|
+
screensetsRegistry.executeActionsChain({
|
|
1194
|
+
action: {
|
|
1195
|
+
type: import_screensets3.HAI3_ACTION_UNMOUNT_EXT,
|
|
1196
|
+
target: domainId,
|
|
1197
|
+
payload: { extensionId }
|
|
1198
|
+
}
|
|
1199
|
+
}).catch((error) => {
|
|
1200
|
+
console.error(`[MFE] Unmount failed for ${extensionId}:`, error);
|
|
1201
|
+
});
|
|
1202
|
+
}
|
|
1203
|
+
function registerExtension(extension) {
|
|
1204
|
+
import_state17.eventBus.emit(MfeEvents.RegisterExtensionRequested, { extension });
|
|
1205
|
+
}
|
|
1206
|
+
function unregisterExtension(extensionId) {
|
|
1207
|
+
import_state17.eventBus.emit(MfeEvents.UnregisterExtensionRequested, { extensionId });
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
// src/plugins/microfrontends/base-domains.ts
|
|
1211
|
+
var import_screensets4 = require("@hai3/screensets");
|
|
1212
|
+
var INIT_ONLY_LIFECYCLE_STAGES = [
|
|
1213
|
+
"gts.hai3.mfes.lifecycle.stage.v1~hai3.mfes.lifecycle.init.v1"
|
|
1214
|
+
];
|
|
1215
|
+
var DEFAULT_LIFECYCLE_STAGES = [
|
|
1216
|
+
"gts.hai3.mfes.lifecycle.stage.v1~hai3.mfes.lifecycle.init.v1",
|
|
1217
|
+
"gts.hai3.mfes.lifecycle.stage.v1~hai3.mfes.lifecycle.activated.v1",
|
|
1218
|
+
"gts.hai3.mfes.lifecycle.stage.v1~hai3.mfes.lifecycle.deactivated.v1",
|
|
1219
|
+
"gts.hai3.mfes.lifecycle.stage.v1~hai3.mfes.lifecycle.destroyed.v1"
|
|
1220
|
+
];
|
|
1221
|
+
var screenDomain = {
|
|
1222
|
+
id: HAI3_SCREEN_DOMAIN,
|
|
1223
|
+
actions: [import_screensets4.HAI3_ACTION_LOAD_EXT, import_screensets4.HAI3_ACTION_MOUNT_EXT],
|
|
1224
|
+
extensionsActions: [],
|
|
1225
|
+
sharedProperties: [import_screensets4.HAI3_SHARED_PROPERTY_THEME, import_screensets4.HAI3_SHARED_PROPERTY_LANGUAGE],
|
|
1226
|
+
defaultActionTimeout: 3e4,
|
|
1227
|
+
lifecycleStages: [...INIT_ONLY_LIFECYCLE_STAGES],
|
|
1228
|
+
extensionsLifecycleStages: [...DEFAULT_LIFECYCLE_STAGES],
|
|
1229
|
+
extensionsTypeId: import_screensets4.HAI3_SCREEN_EXTENSION_TYPE,
|
|
1230
|
+
lifecycle: void 0
|
|
1231
|
+
};
|
|
1232
|
+
var sidebarDomain = {
|
|
1233
|
+
id: HAI3_SIDEBAR_DOMAIN,
|
|
1234
|
+
actions: [import_screensets4.HAI3_ACTION_LOAD_EXT, import_screensets4.HAI3_ACTION_MOUNT_EXT, import_screensets4.HAI3_ACTION_UNMOUNT_EXT],
|
|
1235
|
+
extensionsActions: [],
|
|
1236
|
+
sharedProperties: [import_screensets4.HAI3_SHARED_PROPERTY_THEME, import_screensets4.HAI3_SHARED_PROPERTY_LANGUAGE],
|
|
1237
|
+
defaultActionTimeout: 3e4,
|
|
1238
|
+
lifecycleStages: [...DEFAULT_LIFECYCLE_STAGES],
|
|
1239
|
+
extensionsLifecycleStages: [...DEFAULT_LIFECYCLE_STAGES],
|
|
1240
|
+
lifecycle: void 0
|
|
1241
|
+
};
|
|
1242
|
+
var popupDomain = {
|
|
1243
|
+
id: HAI3_POPUP_DOMAIN,
|
|
1244
|
+
actions: [import_screensets4.HAI3_ACTION_LOAD_EXT, import_screensets4.HAI3_ACTION_MOUNT_EXT, import_screensets4.HAI3_ACTION_UNMOUNT_EXT],
|
|
1245
|
+
extensionsActions: [],
|
|
1246
|
+
sharedProperties: [import_screensets4.HAI3_SHARED_PROPERTY_THEME, import_screensets4.HAI3_SHARED_PROPERTY_LANGUAGE],
|
|
1247
|
+
defaultActionTimeout: 3e4,
|
|
1248
|
+
lifecycleStages: [...DEFAULT_LIFECYCLE_STAGES],
|
|
1249
|
+
extensionsLifecycleStages: [...DEFAULT_LIFECYCLE_STAGES],
|
|
1250
|
+
lifecycle: void 0
|
|
1251
|
+
};
|
|
1252
|
+
var overlayDomain = {
|
|
1253
|
+
id: HAI3_OVERLAY_DOMAIN,
|
|
1254
|
+
actions: [import_screensets4.HAI3_ACTION_LOAD_EXT, import_screensets4.HAI3_ACTION_MOUNT_EXT, import_screensets4.HAI3_ACTION_UNMOUNT_EXT],
|
|
1255
|
+
extensionsActions: [],
|
|
1256
|
+
sharedProperties: [import_screensets4.HAI3_SHARED_PROPERTY_THEME, import_screensets4.HAI3_SHARED_PROPERTY_LANGUAGE],
|
|
1257
|
+
defaultActionTimeout: 3e4,
|
|
1258
|
+
lifecycleStages: [...DEFAULT_LIFECYCLE_STAGES],
|
|
1259
|
+
extensionsLifecycleStages: [...DEFAULT_LIFECYCLE_STAGES],
|
|
1260
|
+
lifecycle: void 0
|
|
1261
|
+
};
|
|
1262
|
+
|
|
1263
|
+
// src/plugins/microfrontends/index.ts
|
|
1264
|
+
function microfrontends(config = {}) {
|
|
1265
|
+
const screensetsRegistry2 = import_screensets5.screensetsRegistryFactory.build({
|
|
1266
|
+
typeSystem: import_gts.gtsPlugin,
|
|
1267
|
+
mfeHandlers: config.mfeHandlers
|
|
1268
|
+
});
|
|
1269
|
+
const originalExecuteActionsChain = screensetsRegistry2.executeActionsChain.bind(screensetsRegistry2);
|
|
1270
|
+
screensetsRegistry2.executeActionsChain = async (chain) => {
|
|
1271
|
+
await originalExecuteActionsChain(chain);
|
|
1272
|
+
const actionType = chain.action?.type;
|
|
1273
|
+
if (actionType === import_screensets5.HAI3_ACTION_MOUNT_EXT) {
|
|
1274
|
+
const store = (0, import_state18.getStore)();
|
|
1275
|
+
const domainId = chain.action.target;
|
|
1276
|
+
const extensionId = chain.action.payload?.extensionId;
|
|
1277
|
+
if (domainId && extensionId) {
|
|
1278
|
+
store.dispatch(setExtensionMounted({ domainId, extensionId }));
|
|
1279
|
+
}
|
|
1280
|
+
} else if (actionType === import_screensets5.HAI3_ACTION_UNMOUNT_EXT) {
|
|
1281
|
+
const store = (0, import_state18.getStore)();
|
|
1282
|
+
const domainId = chain.action.target;
|
|
1283
|
+
if (domainId) {
|
|
1284
|
+
store.dispatch(setExtensionUnmounted({ domainId }));
|
|
1285
|
+
}
|
|
1286
|
+
}
|
|
1287
|
+
};
|
|
1288
|
+
let effectsCleanup = null;
|
|
1289
|
+
return {
|
|
1290
|
+
name: "microfrontends",
|
|
1291
|
+
dependencies: ["screensets"],
|
|
1292
|
+
// Requires screensets to be initialized
|
|
1293
|
+
provides: {
|
|
1294
|
+
registries: {
|
|
1295
|
+
// Expose the MFE-enabled ScreensetsRegistry
|
|
1296
|
+
// This registry has registerDomain(), registerExtension(), etc.
|
|
1297
|
+
screensetsRegistry: screensetsRegistry2
|
|
1298
|
+
},
|
|
1299
|
+
slices: [mfeSlice],
|
|
1300
|
+
// NOTE: Effects are NOT initialized via provides.effects.
|
|
1301
|
+
// They are initialized in onInit to capture cleanup references.
|
|
1302
|
+
// The framework calls provides.effects at build step 5, then onInit at step 7.
|
|
1303
|
+
// We only initialize effects in onInit to avoid duplicate event listeners.
|
|
1304
|
+
actions: {
|
|
1305
|
+
loadExtension,
|
|
1306
|
+
mountExtension,
|
|
1307
|
+
unmountExtension,
|
|
1308
|
+
registerExtension,
|
|
1309
|
+
unregisterExtension
|
|
1310
|
+
}
|
|
1311
|
+
},
|
|
1312
|
+
onInit() {
|
|
1313
|
+
setMfeRegistry(screensetsRegistry2);
|
|
1314
|
+
effectsCleanup = initMfeEffects(screensetsRegistry2);
|
|
1315
|
+
},
|
|
1316
|
+
onDestroy() {
|
|
1317
|
+
if (effectsCleanup) {
|
|
1318
|
+
effectsCleanup();
|
|
1319
|
+
effectsCleanup = null;
|
|
1320
|
+
}
|
|
1321
|
+
}
|
|
1322
|
+
};
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1423
1325
|
// src/presets/index.ts
|
|
1424
1326
|
function full(config) {
|
|
1425
1327
|
return [
|
|
@@ -1427,10 +1329,9 @@ function full(config) {
|
|
|
1427
1329
|
screensets({ autoDiscover: true }),
|
|
1428
1330
|
themes(config?.themes),
|
|
1429
1331
|
layout(),
|
|
1430
|
-
routing(),
|
|
1431
|
-
navigation(),
|
|
1432
1332
|
i18n(),
|
|
1433
|
-
mock()
|
|
1333
|
+
mock(),
|
|
1334
|
+
microfrontends(config?.microfrontends)
|
|
1434
1335
|
];
|
|
1435
1336
|
}
|
|
1436
1337
|
function minimal() {
|
|
@@ -1452,28 +1353,35 @@ var presets = {
|
|
|
1452
1353
|
|
|
1453
1354
|
// src/createHAI3App.ts
|
|
1454
1355
|
function createHAI3App(config) {
|
|
1455
|
-
return createHAI3(config).useAll(full({
|
|
1356
|
+
return createHAI3(config).useAll(full({
|
|
1357
|
+
themes: config?.themes,
|
|
1358
|
+
microfrontends: config?.microfrontends
|
|
1359
|
+
})).build();
|
|
1456
1360
|
}
|
|
1457
1361
|
|
|
1458
|
-
// src/registries/index.ts
|
|
1459
|
-
var import_screensets4 = require("@hai3/screensets");
|
|
1460
|
-
|
|
1461
1362
|
// src/index.ts
|
|
1462
|
-
var
|
|
1463
|
-
var
|
|
1363
|
+
var import_screensets8 = require("@hai3/screensets");
|
|
1364
|
+
var import_screensets9 = require("@hai3/screensets");
|
|
1365
|
+
var import_screensets10 = require("@hai3/screensets");
|
|
1366
|
+
var import_screensets11 = require("@hai3/screensets");
|
|
1367
|
+
var import_handler = require("@hai3/screensets/mfe/handler");
|
|
1368
|
+
var import_gts2 = require("@hai3/screensets/plugins/gts");
|
|
1369
|
+
var import_screensets12 = require("@hai3/screensets");
|
|
1370
|
+
var import_state21 = require("@hai3/state");
|
|
1371
|
+
var import_screensets13 = require("@hai3/screensets");
|
|
1464
1372
|
|
|
1465
1373
|
// src/effects/tenantEffects.ts
|
|
1466
|
-
var
|
|
1374
|
+
var import_state19 = require("@hai3/state");
|
|
1467
1375
|
var TenantEvents = {
|
|
1468
1376
|
Changed: "app/tenant/changed",
|
|
1469
1377
|
Cleared: "app/tenant/cleared"
|
|
1470
1378
|
};
|
|
1471
1379
|
function initTenantEffects() {
|
|
1472
|
-
const store = (0,
|
|
1473
|
-
const subChanged =
|
|
1380
|
+
const store = (0, import_state19.getStore)();
|
|
1381
|
+
const subChanged = import_state19.eventBus.on(TenantEvents.Changed, (payload) => {
|
|
1474
1382
|
store.dispatch(setTenant(payload.tenant));
|
|
1475
1383
|
});
|
|
1476
|
-
const subCleared =
|
|
1384
|
+
const subCleared = import_state19.eventBus.on(TenantEvents.Cleared, () => {
|
|
1477
1385
|
store.dispatch(clearTenant());
|
|
1478
1386
|
});
|
|
1479
1387
|
return () => {
|
|
@@ -1481,23 +1389,26 @@ function initTenantEffects() {
|
|
|
1481
1389
|
subCleared.unsubscribe();
|
|
1482
1390
|
};
|
|
1483
1391
|
}
|
|
1392
|
+
|
|
1393
|
+
// src/effects/tenantActions.ts
|
|
1394
|
+
var import_state20 = require("@hai3/state");
|
|
1484
1395
|
function changeTenant(tenant) {
|
|
1485
|
-
|
|
1396
|
+
import_state20.eventBus.emit(TenantEvents.Changed, { tenant });
|
|
1486
1397
|
}
|
|
1487
1398
|
function clearTenantAction() {
|
|
1488
|
-
|
|
1399
|
+
import_state20.eventBus.emit(TenantEvents.Cleared, {});
|
|
1489
1400
|
}
|
|
1490
1401
|
function setTenantLoadingState(loading) {
|
|
1491
|
-
(0,
|
|
1402
|
+
(0, import_state20.getStore)().dispatch(setTenantLoading(loading));
|
|
1492
1403
|
}
|
|
1493
1404
|
|
|
1494
1405
|
// src/index.ts
|
|
1495
1406
|
var import_api3 = require("@hai3/api");
|
|
1407
|
+
var import_i18n4 = require("@hai3/i18n");
|
|
1496
1408
|
var import_i18n5 = require("@hai3/i18n");
|
|
1497
1409
|
var import_i18n6 = require("@hai3/i18n");
|
|
1498
1410
|
|
|
1499
1411
|
// src/compat.ts
|
|
1500
|
-
var import_screensets5 = require("@hai3/screensets");
|
|
1501
1412
|
var ACCOUNTS_DOMAIN = "accounts";
|
|
1502
1413
|
|
|
1503
1414
|
// src/migration.ts
|
|
@@ -1560,6 +1471,17 @@ function hasNewLayoutState(state) {
|
|
|
1560
1471
|
ApiPluginBase,
|
|
1561
1472
|
ApiProtocol,
|
|
1562
1473
|
BaseApiService,
|
|
1474
|
+
ContainerProvider,
|
|
1475
|
+
HAI3_ACTION_LOAD_EXT,
|
|
1476
|
+
HAI3_ACTION_MOUNT_EXT,
|
|
1477
|
+
HAI3_ACTION_UNMOUNT_EXT,
|
|
1478
|
+
HAI3_OVERLAY_DOMAIN,
|
|
1479
|
+
HAI3_POPUP_DOMAIN,
|
|
1480
|
+
HAI3_SCREEN_DOMAIN,
|
|
1481
|
+
HAI3_SCREEN_EXTENSION_TYPE,
|
|
1482
|
+
HAI3_SHARED_PROPERTY_LANGUAGE,
|
|
1483
|
+
HAI3_SHARED_PROPERTY_THEME,
|
|
1484
|
+
HAI3_SIDEBAR_DOMAIN,
|
|
1563
1485
|
I18nRegistry,
|
|
1564
1486
|
I18nRegistryImpl,
|
|
1565
1487
|
LAYOUT_SLICE_NAME,
|
|
@@ -1567,6 +1489,9 @@ function hasNewLayoutState(state) {
|
|
|
1567
1489
|
LanguageDisplayMode,
|
|
1568
1490
|
LayoutDomain,
|
|
1569
1491
|
MOCK_PLUGIN,
|
|
1492
|
+
MfeBridgeFactory,
|
|
1493
|
+
MfeHandler,
|
|
1494
|
+
MfeHandlerMF,
|
|
1570
1495
|
MockEventSource,
|
|
1571
1496
|
MockEvents,
|
|
1572
1497
|
RestMockPlugin,
|
|
@@ -1575,7 +1500,8 @@ function hasNewLayoutState(state) {
|
|
|
1575
1500
|
RestProtocol,
|
|
1576
1501
|
STATE_PATH_MAPPING,
|
|
1577
1502
|
SUPPORTED_LANGUAGES,
|
|
1578
|
-
|
|
1503
|
+
ScreensetsRegistry,
|
|
1504
|
+
ScreensetsRegistryFactory,
|
|
1579
1505
|
SseMockPlugin,
|
|
1580
1506
|
SsePlugin,
|
|
1581
1507
|
SsePluginWithConfig,
|
|
@@ -1592,23 +1518,34 @@ function hasNewLayoutState(state) {
|
|
|
1592
1518
|
closeAllPopups,
|
|
1593
1519
|
closePopup,
|
|
1594
1520
|
closeTopPopup,
|
|
1521
|
+
compareStrings,
|
|
1522
|
+
createCollator,
|
|
1595
1523
|
createHAI3,
|
|
1596
1524
|
createHAI3App,
|
|
1597
1525
|
createI18nRegistry,
|
|
1598
1526
|
createLegacySelector,
|
|
1599
|
-
|
|
1600
|
-
createScreensetRegistry,
|
|
1527
|
+
createShadowRoot,
|
|
1601
1528
|
createSlice,
|
|
1602
1529
|
createStore,
|
|
1603
1530
|
createThemeRegistry,
|
|
1604
1531
|
effects,
|
|
1605
1532
|
eventBus,
|
|
1533
|
+
extractGtsPackage,
|
|
1606
1534
|
footerActions,
|
|
1607
1535
|
footerSlice,
|
|
1536
|
+
formatCompact,
|
|
1537
|
+
formatCurrency,
|
|
1538
|
+
formatDate,
|
|
1539
|
+
formatDateTime,
|
|
1540
|
+
formatNumber,
|
|
1541
|
+
formatPercent,
|
|
1542
|
+
formatRelative,
|
|
1543
|
+
formatTime,
|
|
1608
1544
|
full,
|
|
1609
1545
|
getLanguageMetadata,
|
|
1610
1546
|
getLayoutDomainState,
|
|
1611
1547
|
getStore,
|
|
1548
|
+
gtsPlugin,
|
|
1612
1549
|
hasLegacyUicoreState,
|
|
1613
1550
|
hasNewLayoutState,
|
|
1614
1551
|
hasSlice,
|
|
@@ -1620,6 +1557,7 @@ function hasNewLayoutState(state) {
|
|
|
1620
1557
|
i18nRegistry,
|
|
1621
1558
|
initMockEffects,
|
|
1622
1559
|
initTenantEffects,
|
|
1560
|
+
injectCssVariables,
|
|
1623
1561
|
isDeprecationWarningsEnabled,
|
|
1624
1562
|
isMockPlugin,
|
|
1625
1563
|
isRestShortCircuit,
|
|
@@ -1628,26 +1566,34 @@ function hasNewLayoutState(state) {
|
|
|
1628
1566
|
layout,
|
|
1629
1567
|
layoutDomainReducers,
|
|
1630
1568
|
layoutReducer,
|
|
1569
|
+
loadExtension,
|
|
1631
1570
|
menuActions,
|
|
1632
1571
|
menuSlice,
|
|
1572
|
+
microfrontends,
|
|
1633
1573
|
minimal,
|
|
1634
1574
|
mock,
|
|
1635
1575
|
mockActions,
|
|
1636
1576
|
mockSlice,
|
|
1577
|
+
mountExtension,
|
|
1637
1578
|
navigateTo,
|
|
1638
|
-
navigation,
|
|
1639
1579
|
openPopup,
|
|
1640
1580
|
overlayActions,
|
|
1581
|
+
overlayDomain,
|
|
1641
1582
|
overlaySlice,
|
|
1642
1583
|
popupActions,
|
|
1584
|
+
popupDomain,
|
|
1643
1585
|
popupSlice,
|
|
1644
1586
|
presets,
|
|
1587
|
+
registerExtension,
|
|
1645
1588
|
registerSlice,
|
|
1646
|
-
routing,
|
|
1647
1589
|
screenActions,
|
|
1590
|
+
screenDomain,
|
|
1648
1591
|
screenSlice,
|
|
1649
|
-
screensetRegistry,
|
|
1650
1592
|
screensets,
|
|
1593
|
+
screensetsRegistryFactory,
|
|
1594
|
+
selectExtensionError,
|
|
1595
|
+
selectExtensionState,
|
|
1596
|
+
selectRegisteredExtensions,
|
|
1651
1597
|
setActiveScreen,
|
|
1652
1598
|
setDeprecationWarnings,
|
|
1653
1599
|
setFooterConfig,
|
|
@@ -1673,6 +1619,7 @@ function hasNewLayoutState(state) {
|
|
|
1673
1619
|
setUser,
|
|
1674
1620
|
showOverlay,
|
|
1675
1621
|
sidebarActions,
|
|
1622
|
+
sidebarDomain,
|
|
1676
1623
|
sidebarSlice,
|
|
1677
1624
|
tenantActions,
|
|
1678
1625
|
tenantReducer,
|
|
@@ -1680,6 +1627,8 @@ function hasNewLayoutState(state) {
|
|
|
1680
1627
|
themes,
|
|
1681
1628
|
toggleMenu,
|
|
1682
1629
|
toggleMockMode,
|
|
1683
|
-
toggleSidebar
|
|
1630
|
+
toggleSidebar,
|
|
1631
|
+
unmountExtension,
|
|
1632
|
+
unregisterExtension
|
|
1684
1633
|
});
|
|
1685
1634
|
//# sourceMappingURL=index.cjs.map
|