@legalplace/wizardx-core 2.6.4 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/dist/App.js +13 -4
- package/dist/PluginLoader.d.ts +3 -1
- package/dist/PluginLoader.js +12 -0
- package/dist/ThemeLoader.d.ts +2 -2
- package/dist/components/SmartScript.d.ts +2 -2
- package/dist/components/SmartScript.js +2 -0
- package/dist/componentsConnectors/connectBox.d.ts +3 -1
- package/dist/componentsConnectors/connectDocument.d.ts +3 -1
- package/dist/componentsConnectors/connectHeader.d.ts +3 -1
- package/dist/componentsConnectors/connectMetaTitle.d.ts +3 -1
- package/dist/componentsConnectors/connectOption.d.ts +6 -2
- package/dist/componentsConnectors/connectOption.js +1 -1
- package/dist/componentsConnectors/connectPagination.d.ts +3 -1
- package/dist/componentsConnectors/connectPreview.d.ts +3 -1
- package/dist/componentsConnectors/connectProgress.d.ts +3 -1
- package/dist/componentsConnectors/connectRootOption.d.ts +3 -1
- package/dist/componentsConnectors/connectSection.d.ts +3 -1
- package/dist/componentsConnectors/connectSection.js +7 -10
- package/dist/componentsConnectors/connectSummary.d.ts +3 -1
- package/dist/componentsConnectors/connectSummaryItem.d.ts +3 -1
- package/dist/componentsConnectors/connectVariable.d.ts +6 -2
- package/dist/componentsConnectors/connectVariable.js +1 -1
- package/dist/componentsConnectors/connectWizardWrapper.d.ts +3 -1
- package/dist/componentsConnectors/connector/componentConnector.d.ts +5 -1
- package/dist/componentsConnectors/connector/componentConnector.js +43 -4
- package/dist/componentsConnectors/connector/index.d.ts +1 -0
- package/dist/componentsConnectors/connector/index.js +1 -0
- package/dist/componentsConnectors/index.d.ts +17 -0
- package/dist/componentsConnectors/index.js +17 -0
- package/dist/componentsConnectors/library.d.ts +43 -15
- package/dist/helpers/apiEndpoint.d.ts +1 -0
- package/dist/helpers/apiEndpoint.js +4 -0
- package/dist/helpers/index.d.ts +4 -0
- package/dist/helpers/index.js +4 -0
- package/dist/helpers/propsEqualityCheck.d.ts +1 -0
- package/dist/helpers/propsEqualityCheck.js +10 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/useActions.d.ts +2 -0
- package/dist/hooks/useActions.js +4 -0
- package/dist/hooks/useDispatch.d.ts +1 -0
- package/dist/hooks/useDispatch.js +4 -0
- package/dist/hooks/useSelectors.d.ts +2 -0
- package/dist/hooks/useSelectors.js +4 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +13 -0
- package/dist/libs/PathReader.d.ts +10 -6
- package/dist/libs/PathReader.js +47 -28
- package/dist/libs/index.d.ts +5 -0
- package/dist/libs/index.js +5 -0
- package/dist/redux/actions/index.d.ts +9 -0
- package/dist/redux/actions/index.js +9 -0
- package/dist/redux/actions/library.d.ts +59 -63
- package/dist/redux/actions/sagas/index.d.ts +3 -0
- package/dist/redux/actions/sagas/index.js +3 -0
- package/dist/redux/actions/sagas/model.d.ts +1 -5
- package/dist/redux/constants/app.d.ts +2 -0
- package/dist/redux/constants/app.js +2 -0
- package/dist/redux/constants/index.d.ts +8 -0
- package/dist/redux/constants/index.js +8 -0
- package/dist/redux/constants/sagas/index.d.ts +3 -0
- package/dist/redux/constants/sagas/index.js +3 -0
- package/dist/redux/index.d.ts +5 -0
- package/dist/redux/index.js +5 -0
- package/dist/redux/middlewares/conditionsWatcherMiddleware.js +11 -5
- package/dist/redux/middlewares/conditionsWatcherMiddleware.test.js +120 -113
- package/dist/redux/middlewares/paginationWatcherMiddleware.js +2 -2
- package/dist/redux/middlewares/smartscriptMiddleware.js +8 -0
- package/dist/redux/reducers/pluginsStore.d.ts +3 -0
- package/dist/redux/reducers/pluginsStore.js +12 -0
- package/dist/redux/routerHistory.js +2 -2
- package/dist/redux/sagas/fetchModel.js +22 -6
- package/dist/redux/sagas/initInputs.js +6 -7
- package/dist/redux/sagas/saveData.js +2 -0
- package/dist/redux/selectors/app.js +13 -18
- package/dist/redux/selectors/cache.d.ts +17 -0
- package/dist/redux/selectors/cache.js +35 -0
- package/dist/redux/selectors/conditions.js +7 -7
- package/dist/redux/selectors/index.d.ts +8 -0
- package/dist/redux/selectors/index.js +8 -0
- package/dist/redux/selectors/inputs.js +3 -3
- package/dist/redux/selectors/library.d.ts +2 -2
- package/dist/redux/selectors/references.js +26 -26
- package/dist/redux/selectors/selectors.d.ts +2 -2
- package/dist/redux/selectors/selectors.js +19 -8
- package/dist/redux/selectors/selectors.test.js +6 -6
- package/dist/redux/selectors/user.js +5 -5
- package/dist/redux/store.d.ts +1 -1
- package/dist/redux/store.js +12 -4
- package/dist/service/api.manager.d.ts +1 -6
- package/dist/service/index.d.ts +3 -0
- package/dist/service/index.js +3 -0
- package/dist/types/PluginConfig.type.d.ts +57 -0
- package/dist/types/PluginConfig.type.js +1 -0
- package/dist/types/State.type.d.ts +6 -0
- package/dist/types/config.type.d.ts +3 -1
- package/dist/types/index.d.ts +11 -0
- package/dist/types/index.js +11 -0
- package/package.json +13 -13
- package/.depcheckrc +0 -1
- package/.eslintignore +0 -2
- package/.eslintrc +0 -5
- package/__mocks__/fileMock.js +0 -1
- package/babel.config.json +0 -3
- package/jest.config.ts +0 -193
- package/setupJest.ts +0 -8
- package/src/App.test.tsx +0 -41
- package/src/App.tsx +0 -152
- package/src/Globals.ts +0 -69
- package/src/Loader.tsx +0 -8
- package/src/PluginLoader.test.tsx +0 -70
- package/src/PluginLoader.tsx +0 -407
- package/src/Shimmer.tsx +0 -108
- package/src/ThemeLoader.test.tsx +0 -82
- package/src/ThemeLoader.tsx +0 -95
- package/src/components/PluginRoute.tsx +0 -48
- package/src/components/SmartScript.tsx +0 -166
- package/src/components/UserLocked/UserLockedComponent.tsx +0 -33
- package/src/components/View.test.tsx +0 -110
- package/src/components/View.tsx +0 -114
- package/src/componentsConnectors/connectBox.test.tsx +0 -226
- package/src/componentsConnectors/connectBox.tsx +0 -70
- package/src/componentsConnectors/connectDocument.test.tsx +0 -108
- package/src/componentsConnectors/connectDocument.tsx +0 -64
- package/src/componentsConnectors/connectHeader.tsx +0 -21
- package/src/componentsConnectors/connectMetaTitle.test.tsx +0 -40
- package/src/componentsConnectors/connectMetaTitle.tsx +0 -8
- package/src/componentsConnectors/connectOption.tsx +0 -222
- package/src/componentsConnectors/connectPagination.tsx +0 -102
- package/src/componentsConnectors/connectPreview.tsx +0 -5
- package/src/componentsConnectors/connectProgress.tsx +0 -59
- package/src/componentsConnectors/connectRootOption.tsx +0 -95
- package/src/componentsConnectors/connectSection.tsx +0 -79
- package/src/componentsConnectors/connectSummary.tsx +0 -21
- package/src/componentsConnectors/connectSummaryItem.tsx +0 -102
- package/src/componentsConnectors/connectTermsheet.tsx +0 -359
- package/src/componentsConnectors/connectVariable.tsx +0 -191
- package/src/componentsConnectors/connectWizardWrapper.tsx +0 -30
- package/src/componentsConnectors/connector/componentConnector.tsx +0 -219
- package/src/componentsConnectors/library.ts +0 -35
- package/src/config.test.ts +0 -63
- package/src/config.ts +0 -11
- package/src/constants/emailValidation.ts +0 -2
- package/src/constants/phoneValidation.ts +0 -4
- package/src/definitions/path.join.d.ts +0 -4
- package/src/helpers/outputsParsing.ts +0 -412
- package/src/helpers/preloadTheme.ts +0 -17
- package/src/helpers/scriptsLoader.ts +0 -20
- package/src/hooks/usePrevious.ts +0 -9
- package/src/libs/ConditionsInitiator.ts +0 -164
- package/src/libs/ConditionsRunner/DataPopulator.ts +0 -266
- package/src/libs/ConditionsRunner.ts +0 -454
- package/src/libs/DocumentsOutputs.ts +0 -171
- package/src/libs/Eval/EvalBase.ts +0 -116
- package/src/libs/Eval/EvalFunctions.ts +0 -724
- package/src/libs/Eval/NumbersToLetters.ts +0 -185
- package/src/libs/EvalVariable.ts +0 -265
- package/src/libs/EventsTracking.ts +0 -250
- package/src/libs/InputsInitiator.ts +0 -136
- package/src/libs/NumAuto.test.ts +0 -55
- package/src/libs/NumAuto.ts +0 -56
- package/src/libs/OvcConverter.ts +0 -285
- package/src/libs/PathReader.ts +0 -272
- package/src/libs/SectionValidity.test.ts +0 -146
- package/src/libs/SectionValidity.ts +0 -110
- package/src/libs/SmartScriptStore.ts +0 -492
- package/src/misc/test_model.ts +0 -14603
- package/src/misc/test_models/connectDocumen.testmodel.json +0 -178
- package/src/misc/test_models/setDefaults.testmodel.json +0 -279
- package/src/misc/test_models/testmodel.json +0 -1
- package/src/polyfills/index.ts +0 -5
- package/src/polyfills/objectValues.ts +0 -4
- package/src/polyfills/prepend.ts +0 -31
- package/src/polyfills/stringRepeat.ts +0 -44
- package/src/redux/actions/app.test.ts +0 -123
- package/src/redux/actions/app.ts +0 -249
- package/src/redux/actions/conditions.test.ts +0 -84
- package/src/redux/actions/conditions.ts +0 -135
- package/src/redux/actions/inputs.test.ts +0 -85
- package/src/redux/actions/inputs.ts +0 -111
- package/src/redux/actions/library.ts +0 -23
- package/src/redux/actions/mandatories.ts +0 -98
- package/src/redux/actions/references.test.ts +0 -48
- package/src/redux/actions/references.ts +0 -37
- package/src/redux/actions/sagas/data.test.ts +0 -11
- package/src/redux/actions/sagas/data.ts +0 -18
- package/src/redux/actions/sagas/model.test.ts +0 -14
- package/src/redux/actions/sagas/model.ts +0 -48
- package/src/redux/actions/sagas/user.ts +0 -25
- package/src/redux/actions/smartscript.ts +0 -55
- package/src/redux/actions/user.test.ts +0 -18
- package/src/redux/actions/user.ts +0 -41
- package/src/redux/constants/app.ts +0 -36
- package/src/redux/constants/conditions.ts +0 -25
- package/src/redux/constants/inputs.ts +0 -15
- package/src/redux/constants/mandatories.ts +0 -11
- package/src/redux/constants/references.ts +0 -7
- package/src/redux/constants/sagas/data.ts +0 -1
- package/src/redux/constants/sagas/model.ts +0 -2
- package/src/redux/constants/sagas/user.ts +0 -2
- package/src/redux/constants/smartscript.ts +0 -9
- package/src/redux/constants/user.ts +0 -6
- package/src/redux/listeners/subscriber.test.ts +0 -45
- package/src/redux/listeners/subscriber.ts +0 -29
- package/src/redux/middlewares/conditionsWatcherMiddleware.test.ts +0 -370
- package/src/redux/middlewares/conditionsWatcherMiddleware.ts +0 -321
- package/src/redux/middlewares/evaluationsWatcherMiddleware.test.ts +0 -323
- package/src/redux/middlewares/evaluationsWatcherMiddleware.ts +0 -250
- package/src/redux/middlewares/mandatoriesWatcherMiddleware.ts +0 -473
- package/src/redux/middlewares/multiplesActionsMiddleware.test.ts +0 -230
- package/src/redux/middlewares/multiplesActionsMiddleware.ts +0 -121
- package/src/redux/middlewares/paginationWatcherMiddleware.ts +0 -251
- package/src/redux/middlewares/pluginsHookMiddleware.ts +0 -24
- package/src/redux/middlewares/prefillerWatcherMiddleware.test.ts +0 -118
- package/src/redux/middlewares/prefillerWatcherMiddleware.ts +0 -462
- package/src/redux/middlewares/smartscriptMiddleware.ts +0 -228
- package/src/redux/middlewares/thirdpartyScriptsMiddleware.ts +0 -41
- package/src/redux/reducers/app/customizations/initCustomizationAutoDefault.ts +0 -16
- package/src/redux/reducers/app/customizations/initCustomizationMeta.ts +0 -16
- package/src/redux/reducers/app/instance/initInstance.ts +0 -29
- package/src/redux/reducers/app/instance/setDataStatus.ts +0 -16
- package/src/redux/reducers/app/instance/updateInstance.ts +0 -30
- package/src/redux/reducers/app/instance/updateInstancePaid.ts +0 -20
- package/src/redux/reducers/app/instance.test.ts +0 -106
- package/src/redux/reducers/app/meta/fetchModelFailed.ts +0 -11
- package/src/redux/reducers/app/meta/fetchModelNonBlocking.ts +0 -11
- package/src/redux/reducers/app/meta/fetchModelSucceeded.ts +0 -11
- package/src/redux/reducers/app/meta/fetchModelUnhealthy.ts +0 -18
- package/src/redux/reducers/app/meta/fetchModelUserLocked.ts +0 -11
- package/src/redux/reducers/app/meta/initMeta.ts +0 -22
- package/src/redux/reducers/app/meta/setModelUuid.ts +0 -17
- package/src/redux/reducers/app/meta.test.ts +0 -90
- package/src/redux/reducers/app/pagination/goNextPage.ts +0 -69
- package/src/redux/reducers/app/pagination/goPage.ts +0 -81
- package/src/redux/reducers/app/pagination/goPreviousPage.ts +0 -60
- package/src/redux/reducers/app/pagination/initPagination.ts +0 -46
- package/src/redux/reducers/app/pagination/updateAvailableAppStates.ts +0 -77
- package/src/redux/reducers/app/pagination.test.ts +0 -363
- package/src/redux/reducers/app/wizard/updateAvailableSections.ts +0 -40
- package/src/redux/reducers/app/wizard.test.ts +0 -84
- package/src/redux/reducers/app.test.ts +0 -336
- package/src/redux/reducers/app.ts +0 -150
- package/src/redux/reducers/conditions/addMultipleOccurency.test.ts +0 -131
- package/src/redux/reducers/conditions/addMultipleOccurency.ts +0 -155
- package/src/redux/reducers/conditions/deleteMultipleOccurency.test.ts +0 -95
- package/src/redux/reducers/conditions/deleteMultipleOccurency.ts +0 -141
- package/src/redux/reducers/conditions/initConditions.ts +0 -18
- package/src/redux/reducers/conditions/updateDocumentConditions.test.ts +0 -47
- package/src/redux/reducers/conditions/updateDocumentConditions.ts +0 -21
- package/src/redux/reducers/conditions/updateOptionConditions.ts +0 -24
- package/src/redux/reducers/conditions/updateOptionValidatorCondition.test.ts +0 -50
- package/src/redux/reducers/conditions/updateOptionValidatorCondition.ts +0 -28
- package/src/redux/reducers/conditions/updatePrefillerConditions.ts +0 -29
- package/src/redux/reducers/conditions/updateSectionConditions.ts +0 -28
- package/src/redux/reducers/conditions/updateVariableConditions.ts +0 -25
- package/src/redux/reducers/conditions/updateVariableValidatorCondition.test.ts +0 -50
- package/src/redux/reducers/conditions/updateVariableValidatorCondition.ts +0 -28
- package/src/redux/reducers/conditions.test.ts +0 -241
- package/src/redux/reducers/conditions.ts +0 -68
- package/src/redux/reducers/inputs/addMultipleOccurency.test.ts +0 -117
- package/src/redux/reducers/inputs/addMultipleOccurency.ts +0 -50
- package/src/redux/reducers/inputs/deleteMultipleOccurency.test.ts +0 -70
- package/src/redux/reducers/inputs/deleteMultipleOccurency.ts +0 -50
- package/src/redux/reducers/inputs/initOption.ts +0 -16
- package/src/redux/reducers/inputs/initVariable.ts +0 -16
- package/src/redux/reducers/inputs/updateOptionInput.ts +0 -24
- package/src/redux/reducers/inputs/updateVariableInput.ts +0 -24
- package/src/redux/reducers/inputs.test.ts +0 -221
- package/src/redux/reducers/inputs.ts +0 -51
- package/src/redux/reducers/mandatories/addMultipleOccurency.ts +0 -52
- package/src/redux/reducers/mandatories/deleteMultipleOccurency.ts +0 -55
- package/src/redux/reducers/mandatories/initMandatoryOption.ts +0 -17
- package/src/redux/reducers/mandatories/initMandatoryVariable.ts +0 -17
- package/src/redux/reducers/mandatories/setMandatoryIgnore.ts +0 -17
- package/src/redux/reducers/mandatories/setMandatoryOption.ts +0 -25
- package/src/redux/reducers/mandatories/setMandatorySection.ts +0 -20
- package/src/redux/reducers/mandatories/setMandatoryVariable.ts +0 -24
- package/src/redux/reducers/mandatories.ts +0 -56
- package/src/redux/reducers/references/initReferences.ts +0 -37
- package/src/redux/reducers/references/updateOptionMeta.ts +0 -73
- package/src/redux/reducers/references/updateVariableMeta.ts +0 -72
- package/src/redux/reducers/references.ts +0 -59
- package/src/redux/reducers/smartscript/enableSmartScript.ts +0 -13
- package/src/redux/reducers/smartscript/initSmartScriptTriggers.ts +0 -14
- package/src/redux/reducers/smartscript/updateSmartscriptOptionHidden.ts +0 -30
- package/src/redux/reducers/smartscript/updateSmartscriptVariableHidden.ts +0 -30
- package/src/redux/reducers/smartscript.ts +0 -47
- package/src/redux/reducers/user/initUser.ts +0 -15
- package/src/redux/reducers/user/setUserStatus.ts +0 -13
- package/src/redux/reducers/user/setUserValidToken.ts +0 -13
- package/src/redux/reducers/user.test.ts +0 -51
- package/src/redux/reducers/user.ts +0 -40
- package/src/redux/routerHistore.test.ts +0 -19
- package/src/redux/routerHistory.ts +0 -26
- package/src/redux/sagas/fetchModel.test.ts +0 -76
- package/src/redux/sagas/fetchModel.ts +0 -683
- package/src/redux/sagas/homogeneousRadioInputsSaga.ts +0 -42
- package/src/redux/sagas/initInputs.ts +0 -110
- package/src/redux/sagas/runner.test.ts +0 -12
- package/src/redux/sagas/runner.ts +0 -26
- package/src/redux/sagas/saveData.test.ts +0 -125
- package/src/redux/sagas/saveData.ts +0 -55
- package/src/redux/sagas/setDefaults.test.ts +0 -100
- package/src/redux/sagas/setDefaults.ts +0 -167
- package/src/redux/sagas/setUserEmail.ts +0 -175
- package/src/redux/selectors/app.test.ts +0 -162
- package/src/redux/selectors/app.ts +0 -331
- package/src/redux/selectors/conditions.test.ts +0 -92
- package/src/redux/selectors/conditions.ts +0 -293
- package/src/redux/selectors/inputs.test.ts +0 -72
- package/src/redux/selectors/inputs.ts +0 -76
- package/src/redux/selectors/library.ts +0 -17
- package/src/redux/selectors/mandatories.ts +0 -83
- package/src/redux/selectors/references.test.ts +0 -660
- package/src/redux/selectors/references.ts +0 -413
- package/src/redux/selectors/selectors.test.ts +0 -21
- package/src/redux/selectors/selectors.ts +0 -87
- package/src/redux/selectors/smartscript.ts +0 -30
- package/src/redux/selectors/user.test.ts +0 -39
- package/src/redux/selectors/user.ts +0 -45
- package/src/redux/store.test.ts +0 -22
- package/src/redux/store.ts +0 -100
- package/src/service/api.manager.ts +0 -261
- package/src/service/auth.service.ts +0 -5
- package/src/service/pardot.service.ts +0 -10
- package/src/tests-misc/plugins/jestTestPlugin/after.tsx +0 -5
- package/src/tests-misc/plugins/jestTestPlugin/before.tsx +0 -11
- package/src/tests-misc/plugins/jestTestPlugin/index.ts +0 -11
- package/src/tests-misc/plugins/jestTestPlugin/title.tsx +0 -8
- package/src/tests-misc/themes/jestTestTheme/components/EmailComponent.tsx +0 -5
- package/src/tests-misc/themes/jestTestTheme/components/TermsheetComponent.tsx +0 -5
- package/src/tests-misc/themes/jestTestTheme/components/WizardComponent.tsx +0 -5
- package/src/tests-misc/themes/jestTestTheme/faltyIndex.ts +0 -3
- package/src/tests-misc/themes/jestTestTheme/faltyIndexLoader.ts +0 -1
- package/src/tests-misc/themes/jestTestTheme/index.ts +0 -13
- package/src/types/Actions.type.ts +0 -612
- package/src/types/Components.type.ts +0 -181
- package/src/types/State.type.ts +0 -323
- package/src/types/Termsheet.type.ts +0 -28
- package/src/types/api.type.ts +0 -37
- package/src/types/config.type.ts +0 -55
- package/src/types/env.type.ts +0 -5
- package/src/types/getActions.type.ts +0 -3
- package/src/types/getConnectors.type.ts +0 -5
- package/src/types/getSelectors.type.ts +0 -3
- package/src/wizard-params.ts +0 -56
- package/tsconfig.json +0 -43
package/src/Globals.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
declare global {
|
|
2
|
-
interface Window {
|
|
3
|
-
dataLayer: any;
|
|
4
|
-
// eslint-disable-next-line camelcase
|
|
5
|
-
google_trackConversion: (...args: any[]) => any;
|
|
6
|
-
uetq: any;
|
|
7
|
-
fbq: (...args: any[]) => any;
|
|
8
|
-
mixpanel: any;
|
|
9
|
-
sendinblue: any;
|
|
10
|
-
ga: any;
|
|
11
|
-
hj: any;
|
|
12
|
-
wizardxLoadAfterLcp: ({ src: string } | Function)[];
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export interface IGlobalParams {
|
|
17
|
-
[key: string]: any;
|
|
18
|
-
metadata?: Record<string, any>;
|
|
19
|
-
appEnv: string;
|
|
20
|
-
loadPlugin: (plugin: string) => Promise<any>;
|
|
21
|
-
loadTheme: (theme: string) => Promise<any>;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const globalParams: IGlobalParams = {
|
|
25
|
-
model: null,
|
|
26
|
-
instance: null,
|
|
27
|
-
meta: null,
|
|
28
|
-
user: null,
|
|
29
|
-
appEnv: "production",
|
|
30
|
-
version: null,
|
|
31
|
-
loadPlugin: async () => {},
|
|
32
|
-
loadTheme: async () => {},
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export const setGlobals = (params: typeof globalParams) => {
|
|
36
|
-
Object.keys(globalParams).forEach((currentParam) => {
|
|
37
|
-
if (params[currentParam]) globalParams[currentParam] = params[currentParam];
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
// Setting env
|
|
41
|
-
globalParams.appEnv =
|
|
42
|
-
process.env.REACT_APP_ENV?.toString() ||
|
|
43
|
-
process.env.NODE_ENV?.toString() ||
|
|
44
|
-
"production";
|
|
45
|
-
|
|
46
|
-
// Setting version
|
|
47
|
-
globalParams.version = process.env.REACT_APP_VERSION || "0.0.0";
|
|
48
|
-
|
|
49
|
-
if (
|
|
50
|
-
globalParams.appEnv !== "production" &&
|
|
51
|
-
process.env.JEST_WORKER_ID === undefined
|
|
52
|
-
) {
|
|
53
|
-
// eslint-disable-next-line no-console
|
|
54
|
-
console.log(
|
|
55
|
-
`%c[WZIARDX]: Current Environment: %c${globalParams.appEnv} (${globalParams.version})`,
|
|
56
|
-
"font-weight:bold",
|
|
57
|
-
"font-weight: bold; color: red"
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* Wrapping global params object into a proxy
|
|
64
|
-
* to avoid adding properties to it outside
|
|
65
|
-
* this file
|
|
66
|
-
*/
|
|
67
|
-
const Globals: Readonly<typeof globalParams> = globalParams;
|
|
68
|
-
|
|
69
|
-
export default Globals;
|
package/src/Loader.tsx
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
// @ts-ignore
|
|
3
|
-
import ReactDOMServer from 'react-async-ssr';
|
|
4
|
-
import '@testing-library/jest-dom/extend-expect';
|
|
5
|
-
import { render, cleanup, waitFor } from '@testing-library/react';
|
|
6
|
-
import loadable from '@loadable/component';
|
|
7
|
-
import { ReplaceComponent } from './PluginLoader';
|
|
8
|
-
|
|
9
|
-
jest.mock('react', () => {
|
|
10
|
-
const rct = jest.requireActual('react');
|
|
11
|
-
const Loadable = jest.requireActual('@loadable/component');
|
|
12
|
-
rct.lazy = Loadable.lazy;
|
|
13
|
-
return rct;
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
// Mocking config
|
|
17
|
-
jest.mock('./config', () => ({
|
|
18
|
-
getConfig: () => ({
|
|
19
|
-
plugins: {
|
|
20
|
-
jestTestPlugin: '1.0.0',
|
|
21
|
-
},
|
|
22
|
-
}),
|
|
23
|
-
}));
|
|
24
|
-
|
|
25
|
-
jest.mock('./Globals', () => ({
|
|
26
|
-
loadPlugin: (plugin: string) => import(`./tests-misc/plugins/${plugin}`),
|
|
27
|
-
}));
|
|
28
|
-
|
|
29
|
-
const { loadPlugins, PluginLoader } = require('./PluginLoader');
|
|
30
|
-
|
|
31
|
-
loadPlugins();
|
|
32
|
-
|
|
33
|
-
describe('<PluginLoader />', () => {
|
|
34
|
-
it('Loads "after" hook', async () => {
|
|
35
|
-
const { container } = render(<PluginLoader anchor={['after']} />);
|
|
36
|
-
await waitFor(() =>
|
|
37
|
-
expect(container).toContainHTML(
|
|
38
|
-
'<div><div class="title">Hello world - AFTER</div></div>'
|
|
39
|
-
)
|
|
40
|
-
);
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
it('Loads "before" hook', async () => {
|
|
44
|
-
const { container } = render(<PluginLoader anchor={['before']} />);
|
|
45
|
-
await waitFor(() =>
|
|
46
|
-
expect(container).toContainHTML(
|
|
47
|
-
'<div><h1>Hello<b>world</b>!!!</h1></div>'
|
|
48
|
-
)
|
|
49
|
-
);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it('Tries to load non existing plugin', async () => {
|
|
53
|
-
const { container } = render(
|
|
54
|
-
<PluginLoader anchor={['myNonExistingPlugin']} />
|
|
55
|
-
);
|
|
56
|
-
await waitFor(() => expect(container).toContainHTML('<div></div>'));
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
it('Loads replacement module', async () => {
|
|
60
|
-
const Component = ReplaceComponent('TitleComponent', () => {
|
|
61
|
-
return <span>Original</span>;
|
|
62
|
-
});
|
|
63
|
-
const { container } = render(<Component>Replaced</Component>);
|
|
64
|
-
await waitFor(() =>
|
|
65
|
-
expect(container).toContainHTML(
|
|
66
|
-
'<div><h1 style="color: red;">Replaced</h1></div>'
|
|
67
|
-
)
|
|
68
|
-
);
|
|
69
|
-
});
|
|
70
|
-
});
|
package/src/PluginLoader.tsx
DELETED
|
@@ -1,407 +0,0 @@
|
|
|
1
|
-
import React, { Props } from "react";
|
|
2
|
-
import { Action } from "redux";
|
|
3
|
-
import PropTypes from "prop-types";
|
|
4
|
-
import { LoadableComponent } from "@loadable/component";
|
|
5
|
-
import { getConfig } from "./config";
|
|
6
|
-
import { getStore } from "./redux/store";
|
|
7
|
-
import { getHistory } from "./redux/routerHistory";
|
|
8
|
-
import { EventsTracking } from "./libs/EventsTracking";
|
|
9
|
-
import Globals from "./Globals";
|
|
10
|
-
|
|
11
|
-
// This object will be used to contain all anchors
|
|
12
|
-
let globalAnchors: Record<string, React.FC[]> = {};
|
|
13
|
-
let reduxAnchors: Record<string, ((...args: any) => void)[]> = {};
|
|
14
|
-
let actionOverrideAnchor: Record<string, actionOverrideFunction[]> = {};
|
|
15
|
-
let replacers: Record<string, React.FC> = {};
|
|
16
|
-
|
|
17
|
-
export type PluginAppStatesRegisterFunction = (
|
|
18
|
-
currentAppStates: string[]
|
|
19
|
-
) => string[];
|
|
20
|
-
export type PluginsPageAppStatesType = Record<string, string>;
|
|
21
|
-
export type actionOverrideFunction = (action: Action) => Action;
|
|
22
|
-
|
|
23
|
-
export interface IPluginsAppStatesComponents {
|
|
24
|
-
[key: string]: LoadableComponent<any>;
|
|
25
|
-
}
|
|
26
|
-
export interface PluginsAppStatesDeclarations {
|
|
27
|
-
register: PluginAppStatesRegisterFunction;
|
|
28
|
-
pageAppState: PluginsPageAppStatesType;
|
|
29
|
-
components: IPluginsAppStatesComponents;
|
|
30
|
-
additionalRoutes?: Record<string, ReactComponent<any>>[];
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
let PluginsAppStatesRegistrers: PluginAppStatesRegisterFunction[] = [];
|
|
34
|
-
let PluginsPageAppStates: PluginsPageAppStatesType = {};
|
|
35
|
-
let PluginsAppStatesComponents: IPluginsAppStatesComponents = {};
|
|
36
|
-
let PluginAdditionRoutes: Record<string, ReactComponent<any>> = {};
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Declares plugins app state on plugin loading
|
|
40
|
-
* @param declaration Plugin app states declaration
|
|
41
|
-
*/
|
|
42
|
-
const pluginAppStates = (declaration: PluginsAppStatesDeclarations) => {
|
|
43
|
-
// Adding registration function
|
|
44
|
-
PluginsAppStatesRegistrers.push(declaration.register);
|
|
45
|
-
|
|
46
|
-
// Adding page app states
|
|
47
|
-
if (typeof declaration.pageAppState === "object")
|
|
48
|
-
Object.keys(declaration.pageAppState).forEach((appState) => {
|
|
49
|
-
if (typeof declaration.pageAppState[appState] === "string") {
|
|
50
|
-
const page = declaration.pageAppState[appState];
|
|
51
|
-
|
|
52
|
-
// Verifying if appState is already declared
|
|
53
|
-
if (
|
|
54
|
-
Object.prototype.hasOwnProperty.call(PluginsPageAppStates, appState)
|
|
55
|
-
) {
|
|
56
|
-
throw new Error(`Plugins AppState "${appState}" already declared.`);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
// Veryfing if page is already declared
|
|
60
|
-
const samePageAppStates = Object.keys(PluginsPageAppStates).filter(
|
|
61
|
-
(currentAppState) => PluginsPageAppStates[currentAppState] === page
|
|
62
|
-
);
|
|
63
|
-
if (samePageAppStates.length > 0)
|
|
64
|
-
throw new Error(`Plugins AppState page "${page}" already declared.`);
|
|
65
|
-
|
|
66
|
-
PluginsPageAppStates[appState] = page;
|
|
67
|
-
}
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
// Saving App States components
|
|
71
|
-
Object.keys(declaration.components).forEach((appState) => {
|
|
72
|
-
if (Object.prototype.hasOwnProperty.call(declaration, appState) === true)
|
|
73
|
-
throw new Error(
|
|
74
|
-
`Plugin's appState ${appState} already declared previously`
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
PluginsAppStatesComponents[appState] = declaration.components[appState];
|
|
78
|
-
});
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Registers plugins app states
|
|
83
|
-
* @param currentAppStates Current app states
|
|
84
|
-
*/
|
|
85
|
-
export const registerPluginsAppStates: PluginAppStatesRegisterFunction = (
|
|
86
|
-
currentAppStates
|
|
87
|
-
) => {
|
|
88
|
-
let appStates = [...currentAppStates];
|
|
89
|
-
PluginsAppStatesRegistrers.forEach((register) => {
|
|
90
|
-
appStates = register(appStates);
|
|
91
|
-
});
|
|
92
|
-
return appStates;
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* Loads plugin app states component
|
|
97
|
-
* @param name AppState Name
|
|
98
|
-
*/
|
|
99
|
-
export const loadPluginComponent = (name: string) => {
|
|
100
|
-
if (
|
|
101
|
-
Object.prototype.hasOwnProperty.call(PluginsAppStatesComponents, name) ===
|
|
102
|
-
false
|
|
103
|
-
) {
|
|
104
|
-
return undefined;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
return PluginsAppStatesComponents[name];
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Checks page app states for plugins
|
|
112
|
-
* @param page Page
|
|
113
|
-
*/
|
|
114
|
-
export const pluginPageAppState = (page: string) => {
|
|
115
|
-
const appStates = Object.keys(PluginsPageAppStates).filter(
|
|
116
|
-
(appState) => PluginsPageAppStates[appState] === page
|
|
117
|
-
);
|
|
118
|
-
if (appStates.length === 1) return appStates[0];
|
|
119
|
-
if (appStates.length > 1)
|
|
120
|
-
throw new Error(
|
|
121
|
-
`Found multipled appStates when checking for plugins page name`
|
|
122
|
-
);
|
|
123
|
-
return false;
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Returns a readyonly copy of PluginsPageAppStates
|
|
128
|
-
*/
|
|
129
|
-
export const getPluginsPageAppStates = (): Readonly<
|
|
130
|
-
typeof PluginsPageAppStates
|
|
131
|
-
> => PluginsPageAppStates;
|
|
132
|
-
|
|
133
|
-
const loadPluginFiles = async (pluginsList: Record<string, string>) => {
|
|
134
|
-
const plugins = Object.keys(pluginsList);
|
|
135
|
-
// We load all needed plugin first to continue in synchronous way
|
|
136
|
-
const pluginModules = await Promise.all(
|
|
137
|
-
plugins.map((plugin) => Globals.loadPlugin(plugin))
|
|
138
|
-
);
|
|
139
|
-
|
|
140
|
-
plugins.forEach((plugin, index) => {
|
|
141
|
-
const pluginModule = pluginModules[index];
|
|
142
|
-
const anchors = pluginModule.default;
|
|
143
|
-
const { loader } = pluginModule;
|
|
144
|
-
|
|
145
|
-
// Loading selectors if module has a loader function
|
|
146
|
-
if (loader !== undefined) {
|
|
147
|
-
loader(getStore().dispatch, getHistory(), getConfig(), EventsTracking);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
// Looking for anchors inside the plugin
|
|
151
|
-
Object.keys(anchors).forEach((anchor) => {
|
|
152
|
-
if (anchor === "replace") {
|
|
153
|
-
Object.keys(anchors[anchor]).forEach((replacer) => {
|
|
154
|
-
// Adding current replacer
|
|
155
|
-
replacers[replacer] = anchors[anchor][replacer];
|
|
156
|
-
});
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* App States
|
|
162
|
-
*/
|
|
163
|
-
if (anchor === "appstates") {
|
|
164
|
-
pluginAppStates(anchors.appstates);
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Redux Anchors
|
|
169
|
-
*/
|
|
170
|
-
if (anchor === "redux") {
|
|
171
|
-
Object.keys(anchors[anchor]).forEach((action) => {
|
|
172
|
-
if (reduxAnchors[action] === undefined) reduxAnchors[action] = [];
|
|
173
|
-
// Adding current action
|
|
174
|
-
reduxAnchors[action].push(anchors[anchor][action]);
|
|
175
|
-
});
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Action Override
|
|
181
|
-
*/
|
|
182
|
-
if (anchor === "actionOverride") {
|
|
183
|
-
Object.keys(anchors[anchor]).forEach((action) => {
|
|
184
|
-
if (actionOverrideAnchor[action] === undefined)
|
|
185
|
-
actionOverrideAnchor[action] = [];
|
|
186
|
-
// Adding current action
|
|
187
|
-
actionOverrideAnchor[action].push(anchors[anchor][action]);
|
|
188
|
-
});
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
/**
|
|
193
|
-
* Additional route
|
|
194
|
-
*/
|
|
195
|
-
if (anchor === "additionalRoutes") {
|
|
196
|
-
Object.keys(anchors[anchor]).forEach((route) => {
|
|
197
|
-
PluginAdditionRoutes[anchors[anchor][route].path] =
|
|
198
|
-
anchors[anchor][route].component;
|
|
199
|
-
});
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// In case no plugin has yet plugged to the anchor
|
|
204
|
-
// we create the anchor
|
|
205
|
-
if (!Object.prototype.hasOwnProperty.call(globalAnchors, anchor))
|
|
206
|
-
globalAnchors[anchor] = [];
|
|
207
|
-
|
|
208
|
-
// Adding current anchor
|
|
209
|
-
globalAnchors[anchor].push(anchors[anchor]);
|
|
210
|
-
});
|
|
211
|
-
});
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* Getting the plugins list from the config file
|
|
216
|
-
*/
|
|
217
|
-
let pluginsLoadingDone = false;
|
|
218
|
-
export const loadPlugins = async (plugins?: Record<string, string>) => {
|
|
219
|
-
let pluginsList;
|
|
220
|
-
if (!plugins) pluginsList = getConfig().plugins;
|
|
221
|
-
else pluginsList = plugins;
|
|
222
|
-
|
|
223
|
-
if (pluginsList === undefined) {
|
|
224
|
-
pluginsList = getConfig().plugins;
|
|
225
|
-
}
|
|
226
|
-
// We need to make sure all plugins are loaded before going on
|
|
227
|
-
await loadPluginFiles(pluginsList);
|
|
228
|
-
|
|
229
|
-
pluginsLoadingDone = true;
|
|
230
|
-
};
|
|
231
|
-
|
|
232
|
-
/**
|
|
233
|
-
* Returns whether plugins are loaded or not
|
|
234
|
-
*/
|
|
235
|
-
export const pluginsLoaded = () => pluginsLoadingDone;
|
|
236
|
-
|
|
237
|
-
// Plugin Loader props
|
|
238
|
-
export interface PluginLoaderProps {
|
|
239
|
-
anchor: string[];
|
|
240
|
-
props?: Props<null>;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
export type ReactComponent<T> = React.ComponentClass<T> | React.FC<T>;
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* PluginLoader component
|
|
247
|
-
*/
|
|
248
|
-
export type TPluginLoader<T = {}> = React.FC<T & PluginLoaderProps>;
|
|
249
|
-
export const PluginLoader: TPluginLoader = (props) => {
|
|
250
|
-
const { anchor } = props;
|
|
251
|
-
const anchorsList = !Array.isArray(anchor) ? [anchor] : anchor;
|
|
252
|
-
let Plugins: React.ReactNodeArray = [];
|
|
253
|
-
|
|
254
|
-
/**
|
|
255
|
-
* Looking for anchor
|
|
256
|
-
*/
|
|
257
|
-
for (let i = 0; i < anchorsList.length; i += 1) {
|
|
258
|
-
const currentAnchor = anchorsList[i];
|
|
259
|
-
if (
|
|
260
|
-
Object.prototype.hasOwnProperty.call(globalAnchors, currentAnchor) &&
|
|
261
|
-
globalAnchors[currentAnchor].length > 0
|
|
262
|
-
) {
|
|
263
|
-
const currentPlugins = globalAnchors[currentAnchor];
|
|
264
|
-
|
|
265
|
-
Plugins = [
|
|
266
|
-
...Plugins,
|
|
267
|
-
...currentPlugins.map((Plugin: React.FC) => (
|
|
268
|
-
<React.Suspense
|
|
269
|
-
key={`lpwp-${currentAnchor}-${Math.random()}`}
|
|
270
|
-
fallback={null}
|
|
271
|
-
>
|
|
272
|
-
<Plugin {...props.props} />
|
|
273
|
-
</React.Suspense>
|
|
274
|
-
)),
|
|
275
|
-
];
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
/**
|
|
280
|
-
* Looking for the anchor
|
|
281
|
-
*/
|
|
282
|
-
if (Plugins.length > 0) {
|
|
283
|
-
/**
|
|
284
|
-
* Maping plugins hooked to the anchor inside a Fragment
|
|
285
|
-
*/
|
|
286
|
-
return <>{Plugins}</>;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// Returning null incase the anchor doesn't have any hooks
|
|
290
|
-
// or it doesn't exist
|
|
291
|
-
return null;
|
|
292
|
-
};
|
|
293
|
-
|
|
294
|
-
PluginLoader.propTypes = {
|
|
295
|
-
anchor: PropTypes.arrayOf<string>(PropTypes.string.isRequired).isRequired,
|
|
296
|
-
// eslint-disable-next-line react/forbid-prop-types
|
|
297
|
-
props: PropTypes.object,
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
PluginLoader.defaultProps = {
|
|
301
|
-
props: {},
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
*
|
|
306
|
-
* @param replacerName Replacer name
|
|
307
|
-
* @param OriginalComponent Original component name
|
|
308
|
-
*/
|
|
309
|
-
let cache: Record<string, React.MemoExoticComponent<any>> = {};
|
|
310
|
-
export function ReplaceComponent<T = {}>(
|
|
311
|
-
replacerName: string | string[],
|
|
312
|
-
OriginalComponent: ReactComponent<T>,
|
|
313
|
-
componentName?: string
|
|
314
|
-
) {
|
|
315
|
-
const displayName =
|
|
316
|
-
componentName ||
|
|
317
|
-
OriginalComponent.displayName ||
|
|
318
|
-
OriginalComponent.name ||
|
|
319
|
-
"Component";
|
|
320
|
-
const anchorsList = !Array.isArray(replacerName)
|
|
321
|
-
? [replacerName]
|
|
322
|
-
: replacerName;
|
|
323
|
-
let Replacer: string | null = null;
|
|
324
|
-
|
|
325
|
-
const cacheKey =
|
|
326
|
-
anchorsList.reduce((a, b) => a + b) + OriginalComponent.toString();
|
|
327
|
-
if (Object.prototype.hasOwnProperty.call(cache, cacheKey)) {
|
|
328
|
-
return cache[cacheKey];
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
/**
|
|
332
|
-
* Looking for anchor
|
|
333
|
-
*/
|
|
334
|
-
for (let i = 0; i < anchorsList.length; i += 1) {
|
|
335
|
-
const currentAnchor = anchorsList[i];
|
|
336
|
-
if (Object.prototype.hasOwnProperty.call(replacers, currentAnchor)) {
|
|
337
|
-
Replacer = currentAnchor;
|
|
338
|
-
break;
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
let FinalComponent: React.ComponentType<T>;
|
|
343
|
-
if (Replacer !== null) {
|
|
344
|
-
const ReplacerComponent: React.FC = replacers[Replacer];
|
|
345
|
-
const FinalReplacedComponent: React.FC<T> = (props) => (
|
|
346
|
-
<React.Suspense fallback={null}>
|
|
347
|
-
<ReplacerComponent {...props} OriginalComponent={OriginalComponent}>
|
|
348
|
-
{props.children}
|
|
349
|
-
</ReplacerComponent>
|
|
350
|
-
</React.Suspense>
|
|
351
|
-
);
|
|
352
|
-
FinalComponent = FinalReplacedComponent;
|
|
353
|
-
FinalComponent.displayName = `replacedComponent(${displayName})`;
|
|
354
|
-
} else {
|
|
355
|
-
FinalComponent = OriginalComponent;
|
|
356
|
-
FinalComponent.displayName = `originalComponent(${displayName})`;
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
cache[cacheKey] = React.memo(FinalComponent);
|
|
360
|
-
return cache[cacheKey];
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
export function RunActionAnchor(anchor: string, ...args: any[]) {
|
|
364
|
-
if (
|
|
365
|
-
Object.prototype.hasOwnProperty.call(reduxAnchors, anchor) &&
|
|
366
|
-
reduxAnchors[anchor].length > 0
|
|
367
|
-
) {
|
|
368
|
-
reduxAnchors[anchor].forEach((currentFn) => {
|
|
369
|
-
currentFn.call(null, ...args);
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
export function RunOverrideActionAnchor(action: Action) {
|
|
375
|
-
let overridedAction = action;
|
|
376
|
-
if (
|
|
377
|
-
Object.prototype.hasOwnProperty.call(actionOverrideAnchor, action.type) &&
|
|
378
|
-
actionOverrideAnchor[action.type].length > 0
|
|
379
|
-
) {
|
|
380
|
-
actionOverrideAnchor[action.type].forEach((currentFn) => {
|
|
381
|
-
overridedAction = currentFn.call(null, overridedAction);
|
|
382
|
-
});
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
return overridedAction;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
/**
|
|
389
|
-
* Get PluginAdditional route object
|
|
390
|
-
*/
|
|
391
|
-
export const getPluginsAdditionalRoutes = () => PluginAdditionRoutes;
|
|
392
|
-
|
|
393
|
-
/**
|
|
394
|
-
* Clears plugins
|
|
395
|
-
*/
|
|
396
|
-
export const clearPlugins = () => {
|
|
397
|
-
globalAnchors = {};
|
|
398
|
-
reduxAnchors = {};
|
|
399
|
-
actionOverrideAnchor = {};
|
|
400
|
-
replacers = {};
|
|
401
|
-
PluginsAppStatesRegistrers = [];
|
|
402
|
-
PluginsPageAppStates = {};
|
|
403
|
-
PluginsAppStatesComponents = {};
|
|
404
|
-
PluginAdditionRoutes = {};
|
|
405
|
-
cache = {};
|
|
406
|
-
pluginsLoadingDone = false;
|
|
407
|
-
};
|
package/src/Shimmer.tsx
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import React, { CSSProperties, useState } from "react";
|
|
2
|
-
import { connect } from "react-redux";
|
|
3
|
-
import { StateType } from "./types/State.type";
|
|
4
|
-
import { addOnThemeLoadCallback, getThemeShimmer } from "./ThemeLoader";
|
|
5
|
-
import { PluginLoader } from "./PluginLoader";
|
|
6
|
-
import UserLockedComponent from "./components/UserLocked/UserLockedComponent";
|
|
7
|
-
|
|
8
|
-
const Shimmer: React.FC<{
|
|
9
|
-
fetchStatus: StateType.App.Meta["fetchStatus"];
|
|
10
|
-
report: StateType.App.Meta["report"];
|
|
11
|
-
}> = (props) => {
|
|
12
|
-
const [themeLoaded, setThemeloaded] = useState(false);
|
|
13
|
-
|
|
14
|
-
if (
|
|
15
|
-
props.fetchStatus === "succeeded" ||
|
|
16
|
-
props.fetchStatus === "nonBlocking"
|
|
17
|
-
) {
|
|
18
|
-
return <>{props.children}</>;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
addOnThemeLoadCallback(() => {
|
|
22
|
-
if (!themeLoaded) setThemeloaded(true);
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
if (!themeLoaded) return null;
|
|
26
|
-
|
|
27
|
-
const ThemeShimmer = getThemeShimmer();
|
|
28
|
-
|
|
29
|
-
const style: CSSProperties = {
|
|
30
|
-
position: "absolute",
|
|
31
|
-
left: "50%",
|
|
32
|
-
top: "50%",
|
|
33
|
-
transform: "translate(-50%, -50%)",
|
|
34
|
-
color: "#AAA",
|
|
35
|
-
fontWeight: "bold",
|
|
36
|
-
textTransform: "uppercase",
|
|
37
|
-
fontSize: "12px",
|
|
38
|
-
userSelect: "none",
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
const unhealthyStyle: CSSProperties = {
|
|
42
|
-
color: "#AAA",
|
|
43
|
-
fontWeight: "bold",
|
|
44
|
-
textTransform: "uppercase",
|
|
45
|
-
fontSize: "24px",
|
|
46
|
-
width: "700px",
|
|
47
|
-
margin: "auto",
|
|
48
|
-
textAlign: "center",
|
|
49
|
-
padding: "20px",
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
const unhealthyStylePre: CSSProperties = {
|
|
53
|
-
background: "#FDDCD0",
|
|
54
|
-
textAlign: "left",
|
|
55
|
-
fontSize: "12px",
|
|
56
|
-
color: "#6B0435",
|
|
57
|
-
padding: "10px",
|
|
58
|
-
borderRadius: "4px",
|
|
59
|
-
};
|
|
60
|
-
if (ThemeShimmer !== null && props.fetchStatus === "waiting") {
|
|
61
|
-
return <ThemeShimmer />;
|
|
62
|
-
}
|
|
63
|
-
return (
|
|
64
|
-
<>
|
|
65
|
-
{["waiting", "failed"].includes(props.fetchStatus) && (
|
|
66
|
-
<div style={style}>
|
|
67
|
-
{props.fetchStatus === "waiting" && (
|
|
68
|
-
<div className="lds-ripple">
|
|
69
|
-
<div />
|
|
70
|
-
<div />
|
|
71
|
-
</div>
|
|
72
|
-
)}
|
|
73
|
-
{props.fetchStatus === "failed" &&
|
|
74
|
-
"Une erreur a eu lieu pendant le chargement du questionnaire"}
|
|
75
|
-
</div>
|
|
76
|
-
)}
|
|
77
|
-
|
|
78
|
-
{props.fetchStatus === "userLocked" && (
|
|
79
|
-
<>
|
|
80
|
-
<PluginLoader anchor={[`userLockedScreen`]} props={props} />
|
|
81
|
-
<UserLockedComponent unhealthyStyle={unhealthyStyle} />
|
|
82
|
-
</>
|
|
83
|
-
)}
|
|
84
|
-
|
|
85
|
-
{props.fetchStatus === "unhealthy" && (
|
|
86
|
-
<div style={unhealthyStyle}>
|
|
87
|
-
Le modèle semble contenir des erreurs
|
|
88
|
-
<pre style={unhealthyStylePre}>{props.report?.raw}</pre>
|
|
89
|
-
</div>
|
|
90
|
-
)}
|
|
91
|
-
</>
|
|
92
|
-
);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
const mapStateToProps = (
|
|
96
|
-
state: StateType
|
|
97
|
-
): {
|
|
98
|
-
fetchStatus: StateType.App.Meta["fetchStatus"];
|
|
99
|
-
report: StateType.App.Meta["report"];
|
|
100
|
-
} => ({
|
|
101
|
-
fetchStatus:
|
|
102
|
-
state.app.meta.fetchStatus === "succeeded"
|
|
103
|
-
? "nonBlocking"
|
|
104
|
-
: state.app.meta.fetchStatus,
|
|
105
|
-
report: state.app.meta.report,
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
export default connect(mapStateToProps)(Shimmer);
|