Commit 2770be22 by Wee

reafactor: migrate to TypeScript

parent 9e6b616f
"use strict";
var __extends = (this && this.__extends) || (function () { var __extends = (this && this.__extends) || (function () {
var extendStatics = function (d, b) { var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf || extendStatics = Object.setPrototypeOf ||
...@@ -22,13 +23,14 @@ var __assign = (this && this.__assign) || function () { ...@@ -22,13 +23,14 @@ var __assign = (this && this.__assign) || function () {
}; };
return __assign.apply(this, arguments); return __assign.apply(this, arguments);
}; };
import warning from 'warning'; Object.defineProperty(exports, "__esModule", { value: true });
import invariant from 'invariant'; var warning = require("warning");
import React from 'react'; var invariant = require("invariant");
import PropTypes from 'prop-types'; var React = require("react");
import ReactDOM from 'react-dom'; var PropTypes = require("prop-types");
import { matchPath } from 'react-router'; var ReactDOM = require("react-dom");
import { isValidElementType } from 'react-is'; var react_router_1 = require("react-router");
var react_is_1 = require("react-is");
var isEmptyChildren = function (children) { return React.Children.count(children) === 0; }; var isEmptyChildren = function (children) { return React.Children.count(children) === 0; };
var LiveState; var LiveState;
(function (LiveState) { (function (LiveState) {
...@@ -37,6 +39,9 @@ var LiveState; ...@@ -37,6 +39,9 @@ var LiveState;
LiveState["NORMAL_RENDER_ON_INIT"] = "normal render (matched or unmatched)"; LiveState["NORMAL_RENDER_ON_INIT"] = "normal render (matched or unmatched)";
LiveState["HIDE_RENDER"] = "hide route when livePath matched"; LiveState["HIDE_RENDER"] = "hide route when livePath matched";
})(LiveState || (LiveState = {})); })(LiveState || (LiveState = {}));
var debugLog = function (message) {
// console.log(message)
};
/** /**
* The public API for matching a single path and rendering. * The public API for matching a single path and rendering.
*/ */
...@@ -86,13 +91,13 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -86,13 +91,13 @@ var LiveRoute = /** @class */ (function (_super) {
match: computedMatch match: computedMatch
}); });
}; };
// 获取 Route 对应的 DOM // get route of DOM
LiveRoute.prototype.componentDidUpdate = function (prevProps, prevState) { LiveRoute.prototype.componentDidUpdate = function (prevProps, prevState) {
if (!this.doesRouteEnableLive()) { if (!this.doesRouteEnableLive()) {
return; return;
} }
// restore display when matched normally // restore display when matched normally
console.log(this.liveState); debugLog(this.liveState);
if (this.liveState === LiveState.NORMAL_RENDER_MATCHED) { if (this.liveState === LiveState.NORMAL_RENDER_MATCHED) {
this.showRoute(); this.showRoute();
this.restoreScrollPosition(); this.restoreScrollPosition();
...@@ -124,37 +129,41 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -124,37 +129,41 @@ var LiveRoute = /** @class */ (function (_super) {
* Back up current router every time it is rendered normally, backing up to the next livePath rendering * Back up current router every time it is rendered normally, backing up to the next livePath rendering
*/ */
LiveRoute.prototype.computeMatchWithLive = function (props, nextProps, nextContext, match) { LiveRoute.prototype.computeMatchWithLive = function (props, nextProps, nextContext, match) {
// console.log(`>>> ` + this.props.name + ` <<<`) debugLog(">>> " + this.props.name + " <<<");
// compute if livePath match // compute if livePath match
var livePath = nextProps.livePath; var livePath = nextProps.livePath, alwaysLive = nextProps.alwaysLive;
var nextPropsWithLivePath = __assign({}, nextProps, { paths: livePath }); var nextPropsWithLivePath = __assign({}, nextProps, { paths: livePath });
var prevMatch = this.computeMatch(props, this.context.router); var prevMatch = this.computeMatch(props, this.context.router);
var livePathMatch = this.computePathsMatch(nextPropsWithLivePath, nextContext.router); var livePathMatch = this.computePathsMatch(nextPropsWithLivePath, nextContext.router);
if (match) {
// normal matched render // normal matched render
console.log('--- NORMAL MATCH FLAG ---'); if (match) {
debugLog('--- NORMAL MATCH FLAG ---');
if (this.liveState === LiveState.HIDE_RENDER && typeof this.props.onReappear === 'function') {
this.props.onReappear({ location: location, livePath: livePath, alwaysLive: alwaysLive });
}
this.liveState = LiveState.NORMAL_RENDER_MATCHED; this.liveState = LiveState.NORMAL_RENDER_MATCHED;
return match; return match;
} }
else if ((livePathMatch || props.alwaysLive) && this.routeDom) { // hide render
if ((livePathMatch || props.alwaysLive) && this.routeDom) {
// backup router when from normal match render to hide render // backup router when from normal match render to hide render
if (prevMatch) { if (prevMatch) {
this._latestMatchedRouter = this.context.router; this._latestMatchedRouter = this.context.router;
} }
// hide render if (typeof this.props.onHide === 'function') {
console.log('--- HIDE FLAG ---'); this.props.onHide({ location: location, livePath: livePath, alwaysLive: alwaysLive });
}
debugLog('--- HIDE FLAG ---');
this.liveState = LiveState.HIDE_RENDER; this.liveState = LiveState.HIDE_RENDER;
this.saveScrollPosition(); this.saveScrollPosition();
this.hideRoute(); this.hideRoute();
return prevMatch; return prevMatch;
} }
else {
// normal unmatched unmount // normal unmatched unmount
console.log('--- NORMAL UNMATCH FLAG ---'); debugLog('--- NORMAL UNMATCH FLAG ---');
this.liveState = LiveState.NORMAL_RENDER_UNMATCHED; this.liveState = LiveState.NORMAL_RENDER_UNMATCHED;
this.clearScroll(); this.clearScroll();
this.clearDomData(); this.clearDomData();
}
}; };
LiveRoute.prototype.computePathsMatch = function (_a, router) { LiveRoute.prototype.computePathsMatch = function (_a, router) {
var computedMatch = _a.computedMatch, location = _a.location, paths = _a.paths, strict = _a.strict, exact = _a.exact, sensitive = _a.sensitive; var computedMatch = _a.computedMatch, location = _a.location, paths = _a.paths, strict = _a.strict, exact = _a.exact, sensitive = _a.sensitive;
...@@ -168,7 +177,7 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -168,7 +177,7 @@ var LiveRoute = /** @class */ (function (_super) {
if (typeof path !== 'string') { if (typeof path !== 'string') {
continue; continue;
} }
var currPath = matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, router.match); var currPath = react_router_1.matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, router.match);
// return if one of the livePaths is matched // return if one of the livePaths is matched
if (currPath) { if (currPath) {
return currPath; return currPath;
...@@ -177,7 +186,7 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -177,7 +186,7 @@ var LiveRoute = /** @class */ (function (_super) {
return null; return null;
} }
else { else {
return matchPath(pathname, { path: paths, strict: strict, exact: exact, sensitive: sensitive }, router.match); return react_router_1.matchPath(pathname, { path: paths, strict: strict, exact: exact, sensitive: sensitive }, router.match);
} }
}; };
LiveRoute.prototype.computeMatch = function (_a, router) { LiveRoute.prototype.computeMatch = function (_a, router) {
...@@ -188,7 +197,7 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -188,7 +197,7 @@ var LiveRoute = /** @class */ (function (_super) {
invariant(router, 'You should not use <Route> or withRouter() outside a <Router>'); invariant(router, 'You should not use <Route> or withRouter() outside a <Router>');
var route = router.route; var route = router.route;
var pathname = (location || route.location).pathname; var pathname = (location || route.location).pathname;
return matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match); return react_router_1.matchPath(pathname, { path: path, strict: strict, exact: exact, sensitive: sensitive }, route.match);
}; };
// get DOM of Route // get DOM of Route
LiveRoute.prototype.getRouteDom = function () { LiveRoute.prototype.getRouteDom = function () {
...@@ -198,7 +207,7 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -198,7 +207,7 @@ var LiveRoute = /** @class */ (function (_super) {
// backup scroll and hide DOM // backup scroll and hide DOM
LiveRoute.prototype.hideRoute = function () { LiveRoute.prototype.hideRoute = function () {
if (this.routeDom && this.routeDom.style.display !== 'none') { if (this.routeDom && this.routeDom.style.display !== 'none') {
console.log('--- hide route ---'); debugLog('--- hide route ---');
this.previousDisplayStyle = this.routeDom.style.display; this.previousDisplayStyle = this.routeDom.style.display;
this.routeDom.style.display = 'none'; this.routeDom.style.display = 'none';
} }
...@@ -214,14 +223,14 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -214,14 +223,14 @@ var LiveRoute = /** @class */ (function (_super) {
if (this.routeDom && this.scrollPosBackup === null) { if (this.routeDom && this.scrollPosBackup === null) {
var scrollTop = document.documentElement.scrollTop || document.body.scrollTop; var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft; var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;
console.log("saved top = " + scrollTop + ", left = " + scrollLeft); debugLog("saved top = " + scrollTop + ", left = " + scrollLeft);
this.scrollPosBackup = { top: scrollTop, left: scrollLeft }; this.scrollPosBackup = { top: scrollTop, left: scrollLeft };
} }
}; };
// restore the scroll position before hide // restore the scroll position before hide
LiveRoute.prototype.restoreScrollPosition = function () { LiveRoute.prototype.restoreScrollPosition = function () {
var scroll = this.scrollPosBackup; var scroll = this.scrollPosBackup;
console.log(scroll); debugLog(scroll);
if (scroll && this.routeDom) { if (scroll && this.routeDom) {
window.scrollTo(scroll.left, scroll.top); window.scrollTo(scroll.left, scroll.top);
} }
...@@ -241,7 +250,7 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -241,7 +250,7 @@ var LiveRoute = /** @class */ (function (_super) {
}; };
// normally render or unmount Route // normally render or unmount Route
LiveRoute.prototype.renderRoute = function (component, render, props, match) { LiveRoute.prototype.renderRoute = function (component, render, props, match) {
console.log(match); debugLog(match);
if (component) if (component)
return match ? React.createElement(component, props) : null; return match ? React.createElement(component, props) : null;
if (render) if (render)
...@@ -249,12 +258,13 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -249,12 +258,13 @@ var LiveRoute = /** @class */ (function (_super) {
}; };
LiveRoute.prototype.render = function () { LiveRoute.prototype.render = function () {
var match = this.state.match; var match = this.state.match;
var _a = this.props, children = _a.children, component = _a.component, render = _a.render, livePath = _a.livePath, alwaysLive = _a.alwaysLive; var _a = this.props, children = _a.children, component = _a.component, render = _a.render, livePath = _a.livePath, alwaysLive = _a.alwaysLive, onHide = _a.onHide;
var _b = this.context.router, history = _b.history, route = _b.route, staticContext = _b.staticContext; var _b = this.context.router, history = _b.history, route = _b.route, staticContext = _b.staticContext;
var location = this.props.location || route.location; var location = this.props.location || route.location;
var props = { match: match, location: location, history: history, staticContext: staticContext }; var props = { match: match, location: location, history: history, staticContext: staticContext };
// only affect LiveRoute
if ((livePath || alwaysLive) && (component || render)) { if ((livePath || alwaysLive) && (component || render)) {
console.log('=== RENDER FLAG: ' + this.liveState + ' ==='); debugLog('=== RENDER FLAG: ' + this.liveState + ' ===');
if (this.liveState === LiveState.NORMAL_RENDER_MATCHED || if (this.liveState === LiveState.NORMAL_RENDER_MATCHED ||
this.liveState === LiveState.NORMAL_RENDER_UNMATCHED || this.liveState === LiveState.NORMAL_RENDER_UNMATCHED ||
this.liveState === LiveState.NORMAL_RENDER_ON_INIT) { this.liveState === LiveState.NORMAL_RENDER_ON_INIT) {
...@@ -264,10 +274,8 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -264,10 +274,8 @@ var LiveRoute = /** @class */ (function (_super) {
else if (this.liveState === LiveState.HIDE_RENDER) { else if (this.liveState === LiveState.HIDE_RENDER) {
// hide render // hide render
var prevRouter = this._latestMatchedRouter; var prevRouter = this._latestMatchedRouter;
// load properties from prevRouter and fake props of latest normal render var history_1 = prevRouter.history, route_1 = prevRouter.route, staticContext_1 = prevRouter.staticContext; // load properties from prevRouter and fake props of latest normal render
var history_1 = prevRouter.history, route_1 = prevRouter.route, staticContext_1 = prevRouter.staticContext; var liveProps = { match: match, location: location, history: history_1, staticContext: staticContext_1 };
var location_1 = this.props.location || route_1.location;
var liveProps = { match: match, location: location_1, history: history_1, staticContext: staticContext_1 };
return this.renderRoute(component, render, liveProps, true); return this.renderRoute(component, render, liveProps, true);
} }
} }
...@@ -289,13 +297,14 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -289,13 +297,14 @@ var LiveRoute = /** @class */ (function (_super) {
strict: PropTypes.bool, strict: PropTypes.bool,
sensitive: PropTypes.bool, sensitive: PropTypes.bool,
component: function (props, propName) { component: function (props, propName) {
if (props[propName] && !isValidElementType(props[propName])) { if (props[propName] && !react_is_1.isValidElementType(props[propName])) {
return new Error("Invalid prop 'component' supplied to 'Route': the prop is not a valid React component"); return new Error("Invalid prop 'component' supplied to 'Route': the prop is not a valid React component");
} }
}, },
render: PropTypes.func, render: PropTypes.func,
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]), children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
location: PropTypes.object, location: PropTypes.object,
onHide: PropTypes.func,
livePath: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), livePath: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
alwaysLive: PropTypes.bool, alwaysLive: PropTypes.bool,
name: PropTypes.string // for LiveRoute debug name: PropTypes.string // for LiveRoute debug
...@@ -315,5 +324,5 @@ var LiveRoute = /** @class */ (function (_super) { ...@@ -315,5 +324,5 @@ var LiveRoute = /** @class */ (function (_super) {
}; };
return LiveRoute; return LiveRoute;
}(React.Component)); }(React.Component));
export { LiveRoute }; exports.LiveRoute = LiveRoute;
//# sourceMappingURL=LiveRoute.js.map //# sourceMappingURL=LiveRoute.js.map
\ No newline at end of file
{"version":3,"file":"LiveRoute.js","sourceRoot":"","sources":["../src/LiveRoute.tsx"],"names":[],"mappings":"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"} {"version":3,"file":"LiveRoute.js","sourceRoot":"","sources":["../src/LiveRoute.tsx"],"names":[],"mappings":"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"}
\ No newline at end of file \ No newline at end of file
export { LiveRoute } from './LiveRoute'; "use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var LiveRoute_1 = require("./LiveRoute");
exports.default = LiveRoute_1.LiveRoute;
//# sourceMappingURL=index.js.map //# sourceMappingURL=index.js.map
\ No newline at end of file
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;AAAA,yCAAuC;AAEvC,kBAAe,qBAAS,CAAA"}
\ No newline at end of file \ No newline at end of file
console.log(233);
var a = 3;
export default a;
//# sourceMappingURL=test.js.map
\ No newline at end of file
{"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.tsx"],"names":[],"mappings":"AAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;AAEhB,IAAM,CAAC,GAAG,CAAC,CAAA;AAEX,eAAe,CAAC,CAAA"}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
"dependencies": { "dependencies": {
"react": "16.4.1", "react": "16.4.1",
"react-dom": "16.4.1", "react-dom": "16.4.1",
"react-live-route": "1.2.4", "react-live-route": "../",
"react-router-dom": "4.3.1", "react-router-dom": "4.3.1",
"react-scripts": "1.1.4" "react-scripts": "1.1.4"
}, },
......
...@@ -8,10 +8,10 @@ const List = props => { ...@@ -8,10 +8,10 @@ const List = props => {
<div>&gt;&gt; back to List</div> <div>&gt;&gt; back to List</div>
</Link> </Link>
<div className="detailContent">{`hello, I'm item - ${props.match.params.id}`}</div> <div className="detailContent">{`hello, I'm item - ${props.match.params.id}`}</div>
<Link className="pagination" to={`/item/${Number.parseInt(props.match.params.id) - 1}`}> <Link className="pagination" to={`/item/${Number.parseInt(props.match.params.id, 10) - 1}`}>
Prev item Prev item
</Link> </Link>
<Link className="pagination" to={`/item/${Number.parseInt(props.match.params.id) + 1}`}> <Link className="pagination" to={`/item/${Number.parseInt(props.match.params.id, 10) + 1}`}>
Next item Next item
</Link> </Link>
</div> </div>
......
import React from 'react' import React from 'react'
import ReactDOM from 'react-dom' import ReactDOM from 'react-dom'
import { Route, BrowserRouter } from 'react-router-dom' import { Route, BrowserRouter } from 'react-router-dom'
import LiveRoute from '../../dist/index' import LiveRoute from 'react-live-route'
import List from './list' import List from './list'
import Detail from './detail' import Detail from './detail'
import Bar from './bar' import Bar from './bar'
...@@ -13,7 +13,20 @@ function App() { ...@@ -13,7 +13,20 @@ function App() {
return ( return (
<div className="App"> <div className="App">
<Route exact path="/" component={Home} /> <Route exact path="/" component={Home} />
<LiveRoute path="/items" component={List} livePath="/item/:id" name="items" /> <LiveRoute
path="/items"
component={List}
livePath="/item/:id"
name="items"
onHide={routeState => {
console.log('[on hide]')
console.log(routeState)
}}
onReappear={routeState => {
console.log('[on reappear]')
console.log(routeState)
}}
/>
<Route path="/item/:id" component={Detail} /> <Route path="/item/:id" component={Detail} />
<LiveRoute path="/about" alwaysLive={true} component={About} name="about" /> <LiveRoute path="/about" alwaysLive={true} component={About} name="about" />
<Bar /> <Bar />
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -5,10 +5,6 @@ ...@@ -5,10 +5,6 @@
"repository": "fi3ework/react-live-route", "repository": "fi3ework/react-live-route",
"license": "MIT", "license": "MIT",
"authors": "fi3ework", "authors": "fi3ework",
"files": [
"index.js",
"LiveRoute.js"
],
"main": "dist/index.js", "main": "dist/index.js",
"module": "es/index.js", "module": "es/index.js",
"sideEffects": false, "sideEffects": false,
...@@ -25,9 +21,9 @@ ...@@ -25,9 +21,9 @@
"dependencies": { "dependencies": {
"invariant": "^2.2.4", "invariant": "^2.2.4",
"prop-types": "^15.6.1", "prop-types": "^15.6.1",
"react-is": "^16.7.0",
"react": "^16.3.2", "react": "^16.3.2",
"react-dom": "^16.3.2", "react-dom": "^16.3.2",
"react-is": "^16.7.0",
"react-router": "^4.3.1", "react-router": "^4.3.1",
"react-router-dom": "^4.3.1", "react-router-dom": "^4.3.1",
"warning": "^4.0.1" "warning": "^4.0.1"
......
import warning from 'warning' import * as warning from 'warning'
import invariant from 'invariant' import * as invariant from 'invariant'
import React, { ReactNode } from 'react' import * as React from 'react'
import PropTypes, { ReactComponentLike } from 'prop-types' import * as PropTypes from 'prop-types'
import ReactDOM from 'react-dom' import * as ReactDOM from 'react-dom'
import { matchPath } from 'react-router' import { matchPath } from 'react-router'
import { isValidElementType } from 'react-is' import { isValidElementType } from 'react-is'
...@@ -23,14 +23,20 @@ interface IProps { ...@@ -23,14 +23,20 @@ interface IProps {
exact?: boolean exact?: boolean
strict?: boolean strict?: boolean
sensitive?: boolean sensitive?: boolean
component?: ReactComponentLike component?: PropTypes.ReactComponentLike
render?: React.StatelessComponent render?: React.StatelessComponent
location: string location: string
livePath?: string livePath?: string
alwaysLive: boolean alwaysLive: boolean
onHide?: Function
onReappear?: Function
name?: string name?: string
} }
const debugLog = (message: any) => {
// console.log(message)
}
/** /**
* The public API for matching a single path and rendering. * The public API for matching a single path and rendering.
*/ */
...@@ -49,6 +55,7 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -49,6 +55,7 @@ class LiveRoute extends React.Component<IProps, any> {
render: PropTypes.func, render: PropTypes.func,
children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]), children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
location: PropTypes.object, location: PropTypes.object,
onHide: PropTypes.func,
livePath: PropTypes.oneOfType([PropTypes.string, PropTypes.array]), livePath: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
alwaysLive: PropTypes.bool, alwaysLive: PropTypes.bool,
name: PropTypes.string // for LiveRoute debug name: PropTypes.string // for LiveRoute debug
...@@ -142,14 +149,14 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -142,14 +149,14 @@ class LiveRoute extends React.Component<IProps, any> {
}) })
} }
// 获取 Route 对应的 DOM // get route of DOM
componentDidUpdate(prevProps, prevState) { componentDidUpdate(prevProps, prevState) {
if (!this.doesRouteEnableLive()) { if (!this.doesRouteEnableLive()) {
return return
} }
// restore display when matched normally // restore display when matched normally
console.log(this.liveState) debugLog(this.liveState)
if (this.liveState === LiveState.NORMAL_RENDER_MATCHED) { if (this.liveState === LiveState.NORMAL_RENDER_MATCHED) {
this.showRoute() this.showRoute()
this.restoreScrollPosition() this.restoreScrollPosition()
...@@ -185,36 +192,45 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -185,36 +192,45 @@ class LiveRoute extends React.Component<IProps, any> {
* Back up current router every time it is rendered normally, backing up to the next livePath rendering * Back up current router every time it is rendered normally, backing up to the next livePath rendering
*/ */
computeMatchWithLive(props, nextProps, nextContext, match) { computeMatchWithLive(props, nextProps, nextContext, match) {
// console.log(`>>> ` + this.props.name + ` <<<`) debugLog(`>>> ` + this.props.name + ` <<<`)
// compute if livePath match // compute if livePath match
const livePath = nextProps.livePath const { livePath, alwaysLive } = nextProps
const nextPropsWithLivePath = { ...nextProps, paths: livePath } const nextPropsWithLivePath = { ...nextProps, paths: livePath }
const prevMatch = this.computeMatch(props, this.context.router) const prevMatch = this.computeMatch(props, this.context.router)
const livePathMatch = this.computePathsMatch(nextPropsWithLivePath, nextContext.router) const livePathMatch = this.computePathsMatch(nextPropsWithLivePath, nextContext.router)
if (match) {
// normal matched render // normal matched render
console.log('--- NORMAL MATCH FLAG ---') if (match) {
debugLog('--- NORMAL MATCH FLAG ---')
if (this.liveState === LiveState.HIDE_RENDER && typeof this.props.onReappear === 'function') {
this.props.onReappear({ location, livePath, alwaysLive })
}
this.liveState = LiveState.NORMAL_RENDER_MATCHED this.liveState = LiveState.NORMAL_RENDER_MATCHED
return match return match
} else if ((livePathMatch || props.alwaysLive) && this.routeDom) { }
// hide render
if ((livePathMatch || props.alwaysLive) && this.routeDom) {
// backup router when from normal match render to hide render // backup router when from normal match render to hide render
if (prevMatch) { if (prevMatch) {
this._latestMatchedRouter = this.context.router this._latestMatchedRouter = this.context.router
} }
// hide render if (typeof this.props.onHide === 'function') {
console.log('--- HIDE FLAG ---') this.props.onHide({ location, livePath, alwaysLive })
}
debugLog('--- HIDE FLAG ---')
this.liveState = LiveState.HIDE_RENDER this.liveState = LiveState.HIDE_RENDER
this.saveScrollPosition() this.saveScrollPosition()
this.hideRoute() this.hideRoute()
return prevMatch return prevMatch
} else { }
// normal unmatched unmount // normal unmatched unmount
console.log('--- NORMAL UNMATCH FLAG ---') debugLog('--- NORMAL UNMATCH FLAG ---')
this.liveState = LiveState.NORMAL_RENDER_UNMATCHED this.liveState = LiveState.NORMAL_RENDER_UNMATCHED
this.clearScroll() this.clearScroll()
this.clearDomData() this.clearDomData()
} }
}
computePathsMatch({ computedMatch, location, paths, strict, exact, sensitive }, router) { computePathsMatch({ computedMatch, location, paths, strict, exact, sensitive }, router) {
invariant(router, 'You should not use <Route> or withRouter() outside a <Router>') invariant(router, 'You should not use <Route> or withRouter() outside a <Router>')
...@@ -260,7 +276,7 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -260,7 +276,7 @@ class LiveRoute extends React.Component<IProps, any> {
// backup scroll and hide DOM // backup scroll and hide DOM
hideRoute() { hideRoute() {
if (this.routeDom && this.routeDom.style.display !== 'none') { if (this.routeDom && this.routeDom.style.display !== 'none') {
console.log('--- hide route ---') debugLog('--- hide route ---')
this.previousDisplayStyle = this.routeDom.style.display this.previousDisplayStyle = this.routeDom.style.display
this.routeDom.style.display = 'none' this.routeDom.style.display = 'none'
} }
...@@ -278,7 +294,7 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -278,7 +294,7 @@ class LiveRoute extends React.Component<IProps, any> {
if (this.routeDom && this.scrollPosBackup === null) { if (this.routeDom && this.scrollPosBackup === null) {
const scrollTop = document.documentElement.scrollTop || document.body.scrollTop const scrollTop = document.documentElement.scrollTop || document.body.scrollTop
const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft const scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft
console.log(`saved top = ${scrollTop}, left = ${scrollLeft}`) debugLog(`saved top = ${scrollTop}, left = ${scrollLeft}`)
this.scrollPosBackup = { top: scrollTop, left: scrollLeft } this.scrollPosBackup = { top: scrollTop, left: scrollLeft }
} }
} }
...@@ -286,7 +302,7 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -286,7 +302,7 @@ class LiveRoute extends React.Component<IProps, any> {
// restore the scroll position before hide // restore the scroll position before hide
restoreScrollPosition() { restoreScrollPosition() {
const scroll = this.scrollPosBackup const scroll = this.scrollPosBackup
console.log(scroll) debugLog(scroll)
if (scroll && this.routeDom) { if (scroll && this.routeDom) {
window.scrollTo(scroll.left, scroll.top) window.scrollTo(scroll.left, scroll.top)
} }
...@@ -309,19 +325,21 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -309,19 +325,21 @@ class LiveRoute extends React.Component<IProps, any> {
// normally render or unmount Route // normally render or unmount Route
renderRoute(component, render, props, match) { renderRoute(component, render, props, match) {
console.log(match) debugLog(match)
if (component) return match ? React.createElement(component, props) : null if (component) return match ? React.createElement(component, props) : null
if (render) return match ? render(props) : null if (render) return match ? render(props) : null
} }
render() { render() {
const { match } = this.state const { match } = this.state
const { children, component, render, livePath, alwaysLive } = this.props const { children, component, render, livePath, alwaysLive, onHide } = this.props
const { history, route, staticContext } = this.context.router const { history, route, staticContext } = this.context.router
const location = this.props.location || route.location const location = this.props.location || route.location
const props = { match, location, history, staticContext } const props = { match, location, history, staticContext }
// only affect LiveRoute
if ((livePath || alwaysLive) && (component || render)) { if ((livePath || alwaysLive) && (component || render)) {
console.log('=== RENDER FLAG: ' + this.liveState + ' ===') debugLog('=== RENDER FLAG: ' + this.liveState + ' ===')
if ( if (
this.liveState === LiveState.NORMAL_RENDER_MATCHED || this.liveState === LiveState.NORMAL_RENDER_MATCHED ||
this.liveState === LiveState.NORMAL_RENDER_UNMATCHED || this.liveState === LiveState.NORMAL_RENDER_UNMATCHED ||
...@@ -332,9 +350,7 @@ class LiveRoute extends React.Component<IProps, any> { ...@@ -332,9 +350,7 @@ class LiveRoute extends React.Component<IProps, any> {
} else if (this.liveState === LiveState.HIDE_RENDER) { } else if (this.liveState === LiveState.HIDE_RENDER) {
// hide render // hide render
const prevRouter = this._latestMatchedRouter const prevRouter = this._latestMatchedRouter
// load properties from prevRouter and fake props of latest normal render const { history, route, staticContext } = prevRouter // load properties from prevRouter and fake props of latest normal render
const { history, route, staticContext } = prevRouter
const location = this.props.location || route.location
const liveProps = { match, location, history, staticContext } const liveProps = { match, location, history, staticContext }
return this.renderRoute(component, render, liveProps, true) return this.renderRoute(component, render, liveProps, true)
} }
......
export { LiveRoute } from './LiveRoute' import { LiveRoute } from './LiveRoute'
export default LiveRoute
...@@ -3,16 +3,11 @@ ...@@ -3,16 +3,11 @@
"strict": true, "strict": true,
"experimentalDecorators": true, "experimentalDecorators": true,
"allowSyntheticDefaultImports": true, "allowSyntheticDefaultImports": true,
"baseUrl": ".",
"paths": {
"@/*": ["src/index/*"]
},
"outDir": "dist/", "outDir": "dist/",
"module": "esnext", "module": "commonjs",
"target": "es5", "target": "es5",
"lib": ["es6", "dom"], "lib": ["es6", "dom"],
"sourceMap": true, "sourceMap": true,
"allowJs": true,
"jsx": "react", "jsx": "react",
"moduleResolution": "node", "moduleResolution": "node",
"rootDir": "src", "rootDir": "src",
......
{
"extends": "./tsconfig.json"
}
\ No newline at end of file
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs"
}
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment