@modern-js/plugin-garfish 1.5.3 → 1.5.4
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.
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
export const makeProvider = () => `
|
|
2
2
|
export const provider = function ({basename, dom}) {
|
|
3
3
|
return {
|
|
4
|
-
render({basename, dom, props}) {
|
|
5
|
-
|
|
6
|
-
const node = dom.querySelector('#' + MOUNT_ID) || dom;
|
|
7
|
-
const App = function () {
|
|
8
|
-
return React.createElement(SubApp, props)
|
|
9
|
-
};
|
|
10
|
-
bootstrap(hoistNonReactStatics(App,SubApp), node);
|
|
4
|
+
render({basename, dom, props, appName}) {
|
|
5
|
+
render({ props, basename, dom, appName });
|
|
11
6
|
},
|
|
12
7
|
destroy({ dom }) {
|
|
13
8
|
const node = dom.querySelector('#' + MOUNT_ID) || dom;
|
|
@@ -33,38 +28,60 @@ if (typeof __GARFISH_EXPORTS__ !== 'undefined') {
|
|
|
33
28
|
__GARFISH_EXPORTS__.provider = provider;
|
|
34
29
|
}
|
|
35
30
|
|
|
36
|
-
function
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
function canContinueRender ({ dom, appName }) {
|
|
32
|
+
var renderByGarfish =
|
|
33
|
+
typeof __GARFISH_EXPORTS__ !== 'undefined'
|
|
34
|
+
|| typeof window !== 'undefined' && window.Garfish && window.Garfish.activeApps && window.Garfish.activeApps.some((app)=>app.appInfo.name === appName);
|
|
35
|
+
let renderByProvider = dom || appName;
|
|
36
|
+
if (renderByGarfish) {
|
|
37
|
+
// Runs in the Garfish environment and is rendered by the provider
|
|
38
|
+
if (renderByProvider) {
|
|
39
|
+
return true;
|
|
40
|
+
} else {
|
|
41
|
+
// Runs in the Garfish environment and is not rendered by the provider
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
} else {
|
|
45
|
+
// Running in a non-Garfish environment
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
41
48
|
}
|
|
42
|
-
`;
|
|
43
|
-
export const makeRenderFunction = code => {
|
|
44
|
-
const inGarfishToRender = `
|
|
45
|
-
const { basename, props } = arguments[0] || {};
|
|
46
|
-
let renderByGarfish = renderInGarfish();
|
|
47
|
-
const renderByProvider = !!basename;
|
|
48
|
-
|
|
49
|
-
if (renderByGarfish && !renderByProvider) return null;
|
|
50
49
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
50
|
+
function generateRouterPlugin (basename,routerConfig) {
|
|
51
|
+
if (basename) {
|
|
52
|
+
routerConfig.basename = basename;
|
|
53
|
+
if (routerConfig.supportHtml5History !== false) {
|
|
54
|
+
if (!routerConfig.historyOptions) {
|
|
55
|
+
routerConfig.historyOptions = {
|
|
56
|
+
basename: basename
|
|
57
|
+
};
|
|
58
|
+
} else {
|
|
59
|
+
routerConfig.historyOptions.basename = basename;
|
|
62
60
|
}
|
|
63
61
|
}
|
|
64
|
-
return router(routerConfig);
|
|
65
62
|
}
|
|
63
|
+
return router(routerConfig);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function generateAppWrapperAndRootDom ({ App, props, dom }) {
|
|
67
|
+
let AppWrapper = App;
|
|
68
|
+
if (props) {
|
|
69
|
+
AppWrapper = function () {
|
|
70
|
+
return React.createElement(App, props);
|
|
71
|
+
};
|
|
72
|
+
AppWrapper = hoistNonReactStatics(AppWrapper, App);
|
|
73
|
+
}
|
|
74
|
+
const mountNode = dom ? (dom.querySelector('#' + MOUNT_ID) || dom) : MOUNT_ID;
|
|
75
|
+
return { AppWrapper, mountNode }
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
export const makeRenderFunction = code => {
|
|
79
|
+
const inGarfishToRender = `
|
|
80
|
+
const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};
|
|
81
|
+
if (!canContinueRender({ dom, appName })) return null;
|
|
82
|
+
let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App, props, dom});
|
|
66
83
|
`;
|
|
67
|
-
return inGarfishToRender + code.replace(`router(`, `
|
|
84
|
+
return inGarfishToRender + code.replace(`router(`, `generateRouterPlugin(basename,`).replace('(App)', `(AppWrapper)`).replace('MOUNT_ID', 'mountNode');
|
|
68
85
|
}; // support legacy config
|
|
69
86
|
|
|
70
87
|
export function getRuntimeConfig(config) {
|
|
@@ -10,13 +10,8 @@ exports.setRuntimeConfig = setRuntimeConfig;
|
|
|
10
10
|
const makeProvider = () => `
|
|
11
11
|
export const provider = function ({basename, dom}) {
|
|
12
12
|
return {
|
|
13
|
-
render({basename, dom, props}) {
|
|
14
|
-
|
|
15
|
-
const node = dom.querySelector('#' + MOUNT_ID) || dom;
|
|
16
|
-
const App = function () {
|
|
17
|
-
return React.createElement(SubApp, props)
|
|
18
|
-
};
|
|
19
|
-
bootstrap(hoistNonReactStatics(App,SubApp), node);
|
|
13
|
+
render({basename, dom, props, appName}) {
|
|
14
|
+
render({ props, basename, dom, appName });
|
|
20
15
|
},
|
|
21
16
|
destroy({ dom }) {
|
|
22
17
|
const node = dom.querySelector('#' + MOUNT_ID) || dom;
|
|
@@ -42,11 +37,51 @@ if (typeof __GARFISH_EXPORTS__ !== 'undefined') {
|
|
|
42
37
|
__GARFISH_EXPORTS__.provider = provider;
|
|
43
38
|
}
|
|
44
39
|
|
|
45
|
-
function
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
function canContinueRender ({ dom, appName }) {
|
|
41
|
+
var renderByGarfish =
|
|
42
|
+
typeof __GARFISH_EXPORTS__ !== 'undefined'
|
|
43
|
+
|| typeof window !== 'undefined' && window.Garfish && window.Garfish.activeApps && window.Garfish.activeApps.some((app)=>app.appInfo.name === appName);
|
|
44
|
+
let renderByProvider = dom || appName;
|
|
45
|
+
if (renderByGarfish) {
|
|
46
|
+
// Runs in the Garfish environment and is rendered by the provider
|
|
47
|
+
if (renderByProvider) {
|
|
48
|
+
return true;
|
|
49
|
+
} else {
|
|
50
|
+
// Runs in the Garfish environment and is not rendered by the provider
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
// Running in a non-Garfish environment
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function generateRouterPlugin (basename,routerConfig) {
|
|
60
|
+
if (basename) {
|
|
61
|
+
routerConfig.basename = basename;
|
|
62
|
+
if (routerConfig.supportHtml5History !== false) {
|
|
63
|
+
if (!routerConfig.historyOptions) {
|
|
64
|
+
routerConfig.historyOptions = {
|
|
65
|
+
basename: basename
|
|
66
|
+
};
|
|
67
|
+
} else {
|
|
68
|
+
routerConfig.historyOptions.basename = basename;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return router(routerConfig);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function generateAppWrapperAndRootDom ({ App, props, dom }) {
|
|
76
|
+
let AppWrapper = App;
|
|
77
|
+
if (props) {
|
|
78
|
+
AppWrapper = function () {
|
|
79
|
+
return React.createElement(App, props);
|
|
80
|
+
};
|
|
81
|
+
AppWrapper = hoistNonReactStatics(AppWrapper, App);
|
|
82
|
+
}
|
|
83
|
+
const mountNode = dom ? (dom.querySelector('#' + MOUNT_ID) || dom) : MOUNT_ID;
|
|
84
|
+
return { AppWrapper, mountNode }
|
|
50
85
|
}
|
|
51
86
|
`;
|
|
52
87
|
|
|
@@ -54,29 +89,11 @@ exports.makeProvider = makeProvider;
|
|
|
54
89
|
|
|
55
90
|
const makeRenderFunction = code => {
|
|
56
91
|
const inGarfishToRender = `
|
|
57
|
-
const { basename, props } = arguments[0] || {};
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
if (renderByGarfish && !renderByProvider) return null;
|
|
62
|
-
|
|
63
|
-
function RouterPlugin (routerConfig) {
|
|
64
|
-
if (basename) {
|
|
65
|
-
routerConfig.basename = basename;
|
|
66
|
-
if (routerConfig.supportHtml5History !== false) {
|
|
67
|
-
if (!routerConfig.historyOptions) {
|
|
68
|
-
routerConfig.historyOptions = {
|
|
69
|
-
basename: basename
|
|
70
|
-
};
|
|
71
|
-
} else {
|
|
72
|
-
routerConfig.historyOptions.basename = basename;
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
return router(routerConfig);
|
|
77
|
-
}
|
|
92
|
+
const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};
|
|
93
|
+
if (!canContinueRender({ dom, appName })) return null;
|
|
94
|
+
let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App, props, dom});
|
|
78
95
|
`;
|
|
79
|
-
return inGarfishToRender + code.replace(`router(`, `
|
|
96
|
+
return inGarfishToRender + code.replace(`router(`, `generateRouterPlugin(basename,`).replace('(App)', `(AppWrapper)`).replace('MOUNT_ID', 'mountNode');
|
|
80
97
|
}; // support legacy config
|
|
81
98
|
|
|
82
99
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
export var makeProvider = function makeProvider() {
|
|
2
|
-
return "\nexport const provider = function ({basename, dom}) {\n return {\n render({basename, dom, props}) {\n
|
|
2
|
+
return "\nexport const provider = function ({basename, dom}) {\n return {\n render({basename, dom, props, appName}) {\n render({ props, basename, dom, appName });\n },\n destroy({ dom }) {\n const node = dom.querySelector('#' + MOUNT_ID) || dom;\n\n if (node) {\n unmountComponentAtNode(node);\n }\n },\n SubModuleComponent: (props) => {\n const SubApp = render({props, basename});\n\n return createPortal(<SubApp />, dom.querySelector('#' + MOUNT_ID) || dom);\n },\n jupiter_submodule_app_key: (props) => {\n const SubApp = render({props, basename});\n\n return createPortal(<SubApp />, dom.querySelector('#' + MOUNT_ID) || dom);\n }\n }\n};\n\nif (typeof __GARFISH_EXPORTS__ !== 'undefined') {\n __GARFISH_EXPORTS__.provider = provider;\n}\n\nfunction canContinueRender ({ dom, appName }) {\n var renderByGarfish =\n typeof __GARFISH_EXPORTS__ !== 'undefined'\n || typeof window !== 'undefined' && window.Garfish && window.Garfish.activeApps && window.Garfish.activeApps.some((app)=>app.appInfo.name === appName);\n let renderByProvider = dom || appName;\n if (renderByGarfish) {\n // Runs in the Garfish environment and is rendered by the provider\n if (renderByProvider) {\n return true;\n } else {\n // Runs in the Garfish environment and is not rendered by the provider\n return false;\n }\n } else {\n // Running in a non-Garfish environment\n return true;\n }\n}\n\nfunction generateRouterPlugin (basename,routerConfig) {\n if (basename) {\n routerConfig.basename = basename;\n if (routerConfig.supportHtml5History !== false) {\n if (!routerConfig.historyOptions) {\n routerConfig.historyOptions = {\n basename: basename\n };\n } else {\n routerConfig.historyOptions.basename = basename;\n }\n }\n }\n return router(routerConfig);\n}\n\nfunction generateAppWrapperAndRootDom ({ App, props, dom }) {\n let AppWrapper = App;\n if (props) {\n AppWrapper = function () {\n return React.createElement(App, props);\n };\n AppWrapper = hoistNonReactStatics(AppWrapper, App);\n }\n const mountNode = dom ? (dom.querySelector('#' + MOUNT_ID) || dom) : MOUNT_ID;\n return { AppWrapper, mountNode }\n}\n";
|
|
3
3
|
};
|
|
4
4
|
export var makeRenderFunction = function makeRenderFunction(code) {
|
|
5
|
-
var inGarfishToRender = "\n const { basename, props } = arguments[0]
|
|
6
|
-
return inGarfishToRender + code.replace("router(", "
|
|
5
|
+
var inGarfishToRender = "\n const { basename, props, dom, appName } = typeof arguments[0] === 'object' && arguments[0] || {};\n if (!canContinueRender({ dom, appName })) return null;\n let { AppWrapper, mountNode } = generateAppWrapperAndRootDom({App, props, dom});\n ";
|
|
6
|
+
return inGarfishToRender + code.replace("router(", "generateRouterPlugin(basename,").replace('(App)', "(AppWrapper)").replace('MOUNT_ID', 'mountNode');
|
|
7
7
|
}; // support legacy config
|
|
8
8
|
|
|
9
9
|
export function getRuntimeConfig(config) {
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"modern",
|
|
12
12
|
"modern.js"
|
|
13
13
|
],
|
|
14
|
-
"version": "1.5.
|
|
14
|
+
"version": "1.5.4",
|
|
15
15
|
"jsnext:source": "./src/index.ts",
|
|
16
16
|
"types": "./dist/types/runtime/index.d.ts",
|
|
17
17
|
"typesVersions": {
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"devDependencies": {
|
|
70
70
|
"@modern-js/core": "1.11.2",
|
|
71
71
|
"@modern-js/plugin-router": "1.2.15",
|
|
72
|
-
"@modern-js/runtime-core": "1.4.
|
|
72
|
+
"@modern-js/runtime-core": "1.4.11",
|
|
73
73
|
"@modern-js/types": "1.5.4",
|
|
74
74
|
"@scripts/build": "0.0.0",
|
|
75
75
|
"@scripts/jest-config": "0.0.0",
|