Merged in unmount-fix (pull request #1)
fixed unmount) Approved-by: Andrey Vlasov
This commit is contained in:
		
						commit
						ed64c788d5
					
				
							
								
								
									
										6
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dist/index.js
									
									
									
									
										vendored
									
									
								
							@ -78,7 +78,7 @@ var fireapp =
 | 
			
		||||
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
 | 
			
		||||
/******/
 | 
			
		||||
/******/ 	// __webpack_public_path__
 | 
			
		||||
/******/ 	__webpack_require__.p = "/fireapp/1.1.0/";
 | 
			
		||||
/******/ 	__webpack_require__.p = "/fireapp/1.3.0/";
 | 
			
		||||
/******/
 | 
			
		||||
/******/
 | 
			
		||||
/******/ 	// Load entry module and return exports
 | 
			
		||||
@ -245,7 +245,7 @@ eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass
 | 
			
		||||
/***/ (function(module, exports, __webpack_require__) {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(/*! systemjs/dist/system */ \"./node_modules/systemjs/dist/system.js\");\n__webpack_require__(/*! systemjs/dist/extras/amd */ \"./node_modules/systemjs/dist/extras/amd.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-register */ \"./node_modules/systemjs/dist/extras/named-register.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-exports */ \"./node_modules/systemjs/dist/extras/named-exports.js\");\n__webpack_require__(/*! systemjs/dist/extras/transform */ \"./node_modules/systemjs/dist/extras/transform.js\");\nconst history_1 = __webpack_require__(/*! history */ \"./node_modules/history/esm/history.js\");\nconst apps_1 = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\nconst virtual_module_1 = __webpack_require__(/*! ./virtual-module */ \"./src/virtual-module.ts\");\nconst systemJSImport = (requestUrl) => __awaiter(void 0, void 0, void 0, function* () {\n    const { default: component, mount, unmount } = yield System.import(requestUrl);\n    return { component, mount, unmount };\n});\n// const defaultNavigations = {\n//   login: '/login',\n//   main: '/main',\n//   news: '/news',\n//   org: '/org',\n//   sections: '/sections',\n//   'news.details': '/news/{{id}}',\n//   'org.details': '/org/{{name}}',\n//   'sections.details': '/sections/{{name}}'\n// }\n// const defaultApps = {\n//   login: { version: '1.0.0', name: 'login' },\n//   main: { version: '1.0.1', name: 'main' },\n//   news: { version: '1.0.0', name: 'news' },\n//   org: { version: '1.0.0', name: 'org' },\n//   sections: { version: '1.0.0', name: 'sections' }\n// }\nexports.default = ({ apps: rawApps, navigations, config }) => __awaiter(void 0, void 0, void 0, function* () {\n    virtual_module_1.defineVirtualModule({ navigations, config });\n    const apps = new apps_1.Apps(rawApps);\n    const history = history_1.createBrowserHistory();\n    let prevPathname = window.location.pathname;\n    const app = apps.findApp(history.location.pathname);\n    const publicPath = `/${app.name}/${app.version}`;\n    __webpack_require__.p = `${config.baseUrl}${publicPath}${__webpack_require__.p}`;\n    const appPath = `${config.baseUrl}${publicPath}/index.js`;\n    const { component, mount, unmount } = yield systemJSImport(appPath);\n    mount(component.default);\n    history.listen((location) => {\n        if (location.pathname !== prevPathname) {\n            prevPathname = location.pathname;\n            unmount();\n        }\n    });\n});\n\n\n//# sourceURL=webpack://fireapp/./src/main.ts?");
 | 
			
		||||
eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__webpack_require__(/*! systemjs/dist/system */ \"./node_modules/systemjs/dist/system.js\");\n__webpack_require__(/*! systemjs/dist/extras/amd */ \"./node_modules/systemjs/dist/extras/amd.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-register */ \"./node_modules/systemjs/dist/extras/named-register.js\");\n__webpack_require__(/*! systemjs/dist/extras/named-exports */ \"./node_modules/systemjs/dist/extras/named-exports.js\");\n__webpack_require__(/*! systemjs/dist/extras/transform */ \"./node_modules/systemjs/dist/extras/transform.js\");\nconst history_1 = __webpack_require__(/*! history */ \"./node_modules/history/esm/history.js\");\nconst apps_1 = __webpack_require__(/*! ./apps */ \"./src/apps.ts\");\nconst virtual_module_1 = __webpack_require__(/*! ./virtual-module */ \"./src/virtual-module.ts\");\nconst systemJSImport = (requestUrl) => __awaiter(void 0, void 0, void 0, function* () {\n    const { default: component, mount, unmount } = yield System.import(requestUrl);\n    return { component, mount, unmount };\n});\nexports.default = ({ apps: rawApps, navigations, config }) => __awaiter(void 0, void 0, void 0, function* () {\n    virtual_module_1.defineVirtualModule({ navigations, config });\n    const apps = new apps_1.Apps(rawApps);\n    const history = history_1.createBrowserHistory();\n    let prevPathname = window.location.pathname;\n    function getApp() {\n        return __awaiter(this, void 0, void 0, function* () {\n            const app = apps.findApp(history.location.pathname);\n            const publicPath = `/${app.name}/${app.version}`;\n            __webpack_require__.p = `${config.baseUrl}${publicPath}${__webpack_require__.p}`;\n            const appPath = `${config.baseUrl}${publicPath}/index.js`;\n            const { component, mount, unmount } = yield systemJSImport(appPath);\n            return { component, mount, unmount };\n        });\n    }\n    let { component, mount, unmount } = yield getApp();\n    mount(component.default);\n    history.listen((location) => __awaiter(void 0, void 0, void 0, function* () {\n        if (location.pathname !== prevPathname) {\n            prevPathname = location.pathname;\n            unmount();\n            const nextApp = yield getApp();\n            nextApp.mount(nextApp.component.default);\n            unmount = nextApp.unmount;\n        }\n    }));\n});\n\n\n//# sourceURL=webpack://fireapp/./src/main.ts?");
 | 
			
		||||
 | 
			
		||||
/***/ }),
 | 
			
		||||
 | 
			
		||||
@ -257,7 +257,7 @@ eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _argument
 | 
			
		||||
/***/ (function(module, exports, __webpack_require__) {
 | 
			
		||||
 | 
			
		||||
"use strict";
 | 
			
		||||
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createVirtualModule = ({ config, navigations }) => ({\n    getConfig: () => config,\n    getConfigValue: (key) => config[key],\n    getNavigations: () => navigations,\n    getNavigationsValue: (key) => navigations[key],\n});\nexports.defineVirtualModule = (params) => {\n    const virtualModule = createVirtualModule(params);\n    // @ts-ignore\n    System.set('root.scope', Object.assign({}, virtualModule));\n};\n\n\n//# sourceURL=webpack://fireapp/./src/virtual-module.ts?");
 | 
			
		||||
eval("\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst createVirtualModule = ({ config, navigations, features }) => ({\n    getConfig: () => config,\n    getConfigValue: (pkg) => config[pkg],\n    getNavigations: () => navigations,\n    getNavigationsValue: (pkg) => navigations[pkg],\n    getAllFeatures: () => features,\n    getFeatures: (pkg) => features[pkg]\n});\nexports.defineVirtualModule = (params) => {\n    const virtualModule = createVirtualModule(params);\n    // @ts-ignore\n    System.set('root.scope', Object.assign({}, virtualModule));\n};\n\n\n//# sourceURL=webpack://fireapp/./src/virtual-module.ts?");
 | 
			
		||||
 | 
			
		||||
/***/ })
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										48
									
								
								src/main.ts
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								src/main.ts
									
									
									
									
									
								
							@ -14,27 +14,8 @@ const systemJSImport = async (requestUrl: string) => {
 | 
			
		||||
  return { component, mount, unmount }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// const defaultNavigations = {
 | 
			
		||||
//   login: '/login',
 | 
			
		||||
//   main: '/main',
 | 
			
		||||
//   news: '/news',
 | 
			
		||||
//   org: '/org',
 | 
			
		||||
//   sections: '/sections',
 | 
			
		||||
//   'news.details': '/news/{{id}}',
 | 
			
		||||
//   'org.details': '/org/{{name}}',
 | 
			
		||||
//   'sections.details': '/sections/{{name}}'
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
// const defaultApps = {
 | 
			
		||||
//   login: { version: '1.0.0', name: 'login' },
 | 
			
		||||
//   main: { version: '1.0.1', name: 'main' },
 | 
			
		||||
//   news: { version: '1.0.0', name: 'news' },
 | 
			
		||||
//   org: { version: '1.0.0', name: 'org' },
 | 
			
		||||
//   sections: { version: '1.0.0', name: 'sections' }
 | 
			
		||||
// }
 | 
			
		||||
 | 
			
		||||
export default async ({ apps: rawApps, navigations, config, features }) => {
 | 
			
		||||
  defineVirtualModule({ navigations, config, features })
 | 
			
		||||
export default async ({ apps: rawApps, navigations, config }) => {
 | 
			
		||||
  defineVirtualModule({ navigations, config })
 | 
			
		||||
 | 
			
		||||
  const apps = new Apps(rawApps)
 | 
			
		||||
 | 
			
		||||
@ -42,22 +23,31 @@ export default async ({ apps: rawApps, navigations, config, features }) => {
 | 
			
		||||
 | 
			
		||||
  let prevPathname = window.location.pathname
 | 
			
		||||
 | 
			
		||||
  const app = apps.findApp(history.location.pathname)
 | 
			
		||||
  async function getApp() {
 | 
			
		||||
    const app = apps.findApp(history.location.pathname)
 | 
			
		||||
 | 
			
		||||
  const publicPath = `/${app.name}/${app.version}`
 | 
			
		||||
    const publicPath = `/${app.name}/${app.version}`
 | 
			
		||||
  
 | 
			
		||||
    __webpack_public_path__ = `${config.baseUrl}${publicPath}${__webpack_public_path__}`
 | 
			
		||||
  
 | 
			
		||||
    const appPath = `${config.baseUrl}${publicPath}/index.js`
 | 
			
		||||
  
 | 
			
		||||
    const { component, mount, unmount } = await systemJSImport(appPath);
 | 
			
		||||
 | 
			
		||||
  __webpack_public_path__ = `${config.baseUrl}${publicPath}${__webpack_public_path__}`
 | 
			
		||||
 | 
			
		||||
  const appPath = `${config.baseUrl}${publicPath}/index.js`
 | 
			
		||||
 | 
			
		||||
  const { component, mount, unmount } = await systemJSImport(appPath);
 | 
			
		||||
    return { component, mount, unmount };
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  let { component, mount, unmount } = await getApp()
 | 
			
		||||
  mount(component.default);
 | 
			
		||||
 | 
			
		||||
  history.listen((location) => {
 | 
			
		||||
  history.listen(async (location) => {
 | 
			
		||||
    if (location.pathname !== prevPathname) {
 | 
			
		||||
      prevPathname = location.pathname
 | 
			
		||||
      unmount()
 | 
			
		||||
 | 
			
		||||
      const nextApp = await getApp();
 | 
			
		||||
      nextApp.mount(nextApp.component.default)
 | 
			
		||||
      unmount = nextApp.unmount;
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user