@ray-js/framework 0.4.11 → 0.4.12-beta-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/index.js +2 -1
- package/lib/api/index.js.map +1 -0
- package/lib/api/tabBar.js +10 -17
- package/lib/api/tabBar.js.map +1 -0
- package/lib/app/createApp.jsx +11 -0
- package/lib/app/createApp.jsx.map +1 -0
- package/lib/app/createAppInstance.jsx +13 -0
- package/lib/app/createAppInstance.jsx.map +1 -0
- package/lib/app/index.d.ts +1 -1
- package/lib/app/index.jsx +8 -0
- package/lib/app/index.jsx.map +1 -0
- package/lib/components/AppWrapper/index.jsx +30 -0
- package/lib/components/AppWrapper/index.jsx.map +1 -0
- package/lib/components/Application/index.d.ts +1 -1
- package/lib/components/Application/index.jsx +59 -0
- package/lib/components/Application/index.jsx.map +1 -0
- package/lib/components/PageWrapper/index.jsx +118 -0
- package/lib/components/PageWrapper/index.jsx.map +1 -0
- package/lib/components/TabBar/index.jsx +55 -0
- package/lib/components/TabBar/index.jsx.map +1 -0
- package/lib/createApp.jsx +11 -0
- package/lib/createApp.jsx.map +1 -0
- package/lib/index.js +3 -2
- package/lib/index.js.map +1 -0
- package/lib/index.native.js +2 -1
- package/lib/index.native.js.map +1 -0
- package/lib/runtime/index.js +4 -3
- package/lib/runtime/index.js.map +1 -0
- package/lib/runtime/responsive.js +20 -21
- package/lib/runtime/responsive.js.map +1 -0
- package/lib/store/appStore.js +19 -20
- package/lib/store/appStore.js.map +1 -0
- package/lib/utils/index.js +2 -1
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/normalizeTabBar.js +11 -17
- package/lib/utils/normalizeTabBar.js.map +1 -0
- package/lib/utils/withPublicPath.js +3 -4
- package/lib/utils/withPublicPath.js.map +1 -0
- package/package.json +11 -11
package/lib/api/index.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export { showTabBar, hideTabBar } from './tabBar';
|
|
1
|
+
export { showTabBar, hideTabBar } from './tabBar';
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA"}
|
package/lib/api/tabBar.js
CHANGED
|
@@ -1,21 +1,14 @@
|
|
|
1
1
|
import { appStoreEmitter, actions } from '../store/appStore';
|
|
2
2
|
export function showTabBar(options) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
animation: options.animation
|
|
8
|
-
});
|
|
9
|
-
options === null || options === void 0 ? void 0 : (_options$success = options.success) === null || _options$success === void 0 ? void 0 : _options$success.call(options);
|
|
10
|
-
options === null || options === void 0 ? void 0 : (_options$complete = options.complete) === null || _options$complete === void 0 ? void 0 : _options$complete.call(options);
|
|
3
|
+
var _a, _b;
|
|
4
|
+
appStoreEmitter.emit(actions.toggleTabBar, { visible: true, animation: options.animation });
|
|
5
|
+
(_a = options === null || options === void 0 ? void 0 : options.success) === null || _a === void 0 ? void 0 : _a.call(options);
|
|
6
|
+
(_b = options === null || options === void 0 ? void 0 : options.complete) === null || _b === void 0 ? void 0 : _b.call(options);
|
|
11
7
|
}
|
|
12
8
|
export function hideTabBar(options) {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
options === null || options === void 0 ? void 0 : (_options$success2 = options.success) === null || _options$success2 === void 0 ? void 0 : _options$success2.call(options);
|
|
20
|
-
options === null || options === void 0 ? void 0 : (_options$complete2 = options.complete) === null || _options$complete2 === void 0 ? void 0 : _options$complete2.call(options);
|
|
21
|
-
}
|
|
9
|
+
var _a, _b;
|
|
10
|
+
appStoreEmitter.emit(actions.toggleTabBar, { visible: false, animation: options.animation });
|
|
11
|
+
(_a = options === null || options === void 0 ? void 0 : options.success) === null || _a === void 0 ? void 0 : _a.call(options);
|
|
12
|
+
(_b = options === null || options === void 0 ? void 0 : options.complete) === null || _b === void 0 ? void 0 : _b.call(options);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=tabBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabBar.js","sourceRoot":"","sources":["../../src/api/tabBar.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAE5D,MAAM,UAAU,UAAU,CAAC,OAAkD;;IAC3E,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC3F,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,uDAAI,CAAA;IACpB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,uDAAI,CAAA;AACvB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAkD;;IAC3E,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC5F,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,uDAAI,CAAA;IACpB,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,uDAAI,CAAA;AACvB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ReactDOM from 'react-dom';
|
|
3
|
+
import { Application } from '../components/Application';
|
|
4
|
+
export function createApp(options) {
|
|
5
|
+
const root = document.createElement('div');
|
|
6
|
+
root.id = 'root';
|
|
7
|
+
document.body.appendChild(root);
|
|
8
|
+
// 作为 web 构建的启动入口文件
|
|
9
|
+
ReactDOM.render(<Application {...options}/>, root);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=createApp.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createApp.jsx","sourceRoot":"","sources":["../../src/app/createApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,WAAW,EAAoB,MAAM,2BAA2B,CAAA;AAEzE,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,GAAG,MAAM,CAAA;IAChB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC/B,mBAAmB;IACnB,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,EAAG,EAAE,IAAI,CAAC,CAAA;AACrD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getCurrent } from '@ray-js/runtime';
|
|
2
|
+
/**
|
|
3
|
+
* 创建抽象的 App Instance 对标到小程序,提供给 getApp() 进行使用
|
|
4
|
+
* @param appThis
|
|
5
|
+
*/
|
|
6
|
+
export function createAppInstance(appThis) {
|
|
7
|
+
const current = getCurrent();
|
|
8
|
+
// App 实例仅且注册一次
|
|
9
|
+
if (!current.app) {
|
|
10
|
+
current.app = appThis;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=createAppInstance.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAppInstance.jsx","sourceRoot":"","sources":["../../src/app/createAppInstance.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAY;IAC5C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,eAAe;IACf,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;QAChB,OAAO,CAAC,GAAG,GAAG,OAAO,CAAA;KACtB;AACH,CAAC"}
|
package/lib/app/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../src/app/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,cAAc,aAAa,CAAA;AAC3B,cAAc,qBAAqB,CAAA;AAEnC,MAAM,UAAU,MAAM;IACpB,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAA;AACpB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import styles from './index.module.less';
|
|
3
|
+
import { getApp } from '../../app';
|
|
4
|
+
import location from '@ray-js/location';
|
|
5
|
+
export class AppWrapper extends React.Component {
|
|
6
|
+
componentDidMount() {
|
|
7
|
+
const app = getApp();
|
|
8
|
+
if (typeof app.onLaunch === 'function') {
|
|
9
|
+
app.onLaunch({
|
|
10
|
+
path: location.pathname,
|
|
11
|
+
query: location.query,
|
|
12
|
+
params: location.params,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
// 初次展现
|
|
16
|
+
if (typeof app.onShow === 'function') {
|
|
17
|
+
app.onShow({
|
|
18
|
+
path: location.pathname,
|
|
19
|
+
query: location.query,
|
|
20
|
+
params: location.params,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
render() {
|
|
25
|
+
return (<div id='Application' className={styles.application}>
|
|
26
|
+
{this.props.children}
|
|
27
|
+
</div>);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=index.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../src/components/AppWrapper/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,MAAM,MAAM,qBAAqB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClC,OAAO,QAAQ,MAAM,kBAAkB,CAAA;AAEvC,MAAM,OAAO,UAAW,SAAQ,KAAK,CAAC,SAAS;IAC7C,iBAAiB;QACf,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;QACpB,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE;YACtC,GAAG,CAAC,QAAQ,CAAC;gBACX,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC,CAAA;SACH;QACD,OAAO;QACP,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,UAAU,EAAE;YACpC,GAAG,CAAC,MAAM,CAAC;gBACT,IAAI,EAAE,QAAQ,CAAC,QAAQ;gBACvB,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;aACxB,CAAC,CAAA;SACH;IACH,CAAC;IAED,MAAM;QACJ,OAAO,CACL,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAClD;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CACtB;MAAA,EAAE,GAAG,CAAC,CACP,CAAA;IACH,CAAC;CACF"}
|
|
@@ -16,5 +16,5 @@ export declare class Application extends React.Component<ApplicationProps, {
|
|
|
16
16
|
constructor(props: Readonly<ApplicationProps>);
|
|
17
17
|
componentDidMount(): void;
|
|
18
18
|
getGlobalConfig: (path: string | string[], defaultValue?: any) => any;
|
|
19
|
-
render(): JSX.Element
|
|
19
|
+
render(): JSX.Element;
|
|
20
20
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import '../../runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { createRouter } from '@ray-js/router';
|
|
4
|
+
import { createAppInstance } from '../../app/createAppInstance';
|
|
5
|
+
import { get } from '../../utils';
|
|
6
|
+
import { normalizeTabBar } from '../../utils/normalizeTabBar';
|
|
7
|
+
import { AppWrapper } from '../AppWrapper';
|
|
8
|
+
import { PageWrapper } from '../PageWrapper';
|
|
9
|
+
import { TabBar } from '../TabBar';
|
|
10
|
+
const isClassComponent = (Component) => {
|
|
11
|
+
return Component.prototype && typeof Component.prototype.render === 'function';
|
|
12
|
+
};
|
|
13
|
+
export class Application extends React.Component {
|
|
14
|
+
constructor(props) {
|
|
15
|
+
super(props);
|
|
16
|
+
this.getGlobalConfig = (path, defaultValue) => {
|
|
17
|
+
const { globalConfig = {} } = this.props;
|
|
18
|
+
const value = get(globalConfig, path, defaultValue);
|
|
19
|
+
return value;
|
|
20
|
+
};
|
|
21
|
+
this.state = {};
|
|
22
|
+
const title = this.getGlobalConfig(['window', 'navigationBarTitleText'], 'Ray App');
|
|
23
|
+
document.title = title;
|
|
24
|
+
}
|
|
25
|
+
componentDidMount() {
|
|
26
|
+
const { routes, pages, tabBar, globalConfig } = this.props;
|
|
27
|
+
const { basename } = globalConfig;
|
|
28
|
+
document.body.style.backgroundColor = this.getGlobalConfig(['window', 'backgroundColor'], '#fff');
|
|
29
|
+
createRouter({
|
|
30
|
+
basename,
|
|
31
|
+
routes,
|
|
32
|
+
pages,
|
|
33
|
+
tabBar,
|
|
34
|
+
onChange: (component, props) => {
|
|
35
|
+
this.setState({ component, matchedPage: props.page });
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
render() {
|
|
40
|
+
const { app: App, tabBar, routes, basename } = this.props;
|
|
41
|
+
const { component: PageComponent, matchedPage } = this.state;
|
|
42
|
+
// 空页面暂不渲染,否则 appEvent 无法应用到页面内部
|
|
43
|
+
if (!matchedPage) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
const isClassType = isClassComponent(PageComponent);
|
|
47
|
+
return (<AppWrapper>
|
|
48
|
+
<App ref={(appThis) => {
|
|
49
|
+
createAppInstance(appThis);
|
|
50
|
+
}}>
|
|
51
|
+
<PageWrapper isClassType={isClassType} page={matchedPage} key={matchedPage.route} getGlobalConfig={this.getGlobalConfig}>
|
|
52
|
+
<PageComponent />
|
|
53
|
+
</PageWrapper>
|
|
54
|
+
{matchedPage.isTabBar && (<TabBar basename={basename} config={normalizeTabBar(tabBar, routes)}/>)}
|
|
55
|
+
</App>
|
|
56
|
+
</AppWrapper>);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=index.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../src/components/Application/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
// import { normalizeTabBar } from '../../utils/normalizeTabBar';
|
|
3
|
+
import { lifecycle, PageInstance, PageInstanceContext } from '@ray-js/runtime';
|
|
4
|
+
import { pageLifecycles } from '@ray-js/types';
|
|
5
|
+
import { get } from '../../utils';
|
|
6
|
+
import './index.module.less';
|
|
7
|
+
export class PageWrapper extends React.Component {
|
|
8
|
+
constructor(props) {
|
|
9
|
+
super(props);
|
|
10
|
+
this.$reachBottomDistance = 50;
|
|
11
|
+
this.handlePageResize = () => {
|
|
12
|
+
const windowWidth = document.documentElement.clientWidth;
|
|
13
|
+
const windowHeight = document.documentElement.clientHeight;
|
|
14
|
+
lifecycle.emit({
|
|
15
|
+
uniqueId: this.$instance.uniqueId,
|
|
16
|
+
name: pageLifecycles.onResize,
|
|
17
|
+
args: { windowWidth, windowHeight },
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
this.handlePageScroll = () => {
|
|
21
|
+
const event = { scrollTop: window.scrollY };
|
|
22
|
+
lifecycle.emit({
|
|
23
|
+
uniqueId: this.$instance.uniqueId,
|
|
24
|
+
name: pageLifecycles.onPageScroll,
|
|
25
|
+
args: event,
|
|
26
|
+
});
|
|
27
|
+
this.checkReachBottom();
|
|
28
|
+
};
|
|
29
|
+
this.checkReachBottom = () => {
|
|
30
|
+
const isCurrentReachBottom = document.body.scrollHeight - (window.innerHeight + window.scrollY) <=
|
|
31
|
+
this.$reachBottomDistance;
|
|
32
|
+
if (!this.$isReachBottom && isCurrentReachBottom) {
|
|
33
|
+
this.$isReachBottom = true;
|
|
34
|
+
lifecycle.emit({
|
|
35
|
+
uniqueId: this.$instance.uniqueId,
|
|
36
|
+
name: pageLifecycles.onReachBottom,
|
|
37
|
+
});
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this.$isReachBottom = isCurrentReachBottom;
|
|
41
|
+
};
|
|
42
|
+
this.getPageConfig = (field, defaultValue) => {
|
|
43
|
+
const { page } = this.props;
|
|
44
|
+
const pageConfig = page.config;
|
|
45
|
+
return get(pageConfig, field, defaultValue);
|
|
46
|
+
};
|
|
47
|
+
this.$instance = new PageInstance();
|
|
48
|
+
lifecycle.addInstance(this.$instance);
|
|
49
|
+
this.getGlobalConfig = this.props.getGlobalConfig;
|
|
50
|
+
}
|
|
51
|
+
componentDidMount() {
|
|
52
|
+
const title = this.getPageConfig('navigationBarTitleText', '');
|
|
53
|
+
document.title = title;
|
|
54
|
+
window.addEventListener('scroll', this.handlePageScroll);
|
|
55
|
+
window.addEventListener('resize', this.handlePageResize);
|
|
56
|
+
const backgroundColor = this.getPageConfig('backgroundColor');
|
|
57
|
+
if (backgroundColor) {
|
|
58
|
+
document.body.style.backgroundColor = backgroundColor;
|
|
59
|
+
}
|
|
60
|
+
// 获取页面触底的距离
|
|
61
|
+
this.$reachBottomDistance = this.getPageConfig('onReachBottomDistance', this.getGlobalConfig(['window', 'onReachBottomDistance'], 50) // 全局配置
|
|
62
|
+
);
|
|
63
|
+
// FIXME: 应用实例化未完成,didMount 从内至外执行
|
|
64
|
+
// 此时触发 onShow onReady 获取不到 getApp 实例,组件内也存在这样的情况
|
|
65
|
+
lifecycle.emit({
|
|
66
|
+
uniqueId: this.$instance.uniqueId,
|
|
67
|
+
name: pageLifecycles.onShow,
|
|
68
|
+
});
|
|
69
|
+
lifecycle.emit({
|
|
70
|
+
uniqueId: this.$instance.uniqueId,
|
|
71
|
+
name: pageLifecycles.onReady,
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
componentWillUnmount() {
|
|
75
|
+
window.removeEventListener('scroll', this.handlePageScroll);
|
|
76
|
+
window.removeEventListener('resize', this.handlePageResize);
|
|
77
|
+
// FIXME: 目前是 SPA 的页面直接切换,卸载前直接调用事件
|
|
78
|
+
lifecycle.emit({
|
|
79
|
+
uniqueId: this.$instance.uniqueId,
|
|
80
|
+
name: pageLifecycles.onHide,
|
|
81
|
+
});
|
|
82
|
+
lifecycle.emit({
|
|
83
|
+
uniqueId: this.$instance.uniqueId,
|
|
84
|
+
name: pageLifecycles.onUnload,
|
|
85
|
+
});
|
|
86
|
+
lifecycle.removeInstance(this.$instance);
|
|
87
|
+
// TODO: 实现 onPullDownRefresh 生命周期
|
|
88
|
+
}
|
|
89
|
+
render() {
|
|
90
|
+
const { page, children, isClassType } = this.props;
|
|
91
|
+
const $instance = this.$instance;
|
|
92
|
+
const globalBackgroundColor = this.getGlobalConfig(['window', 'backgroundColor'], '#fff');
|
|
93
|
+
const backgroundColor = this.getPageConfig('backgroundColor', globalBackgroundColor);
|
|
94
|
+
document.body.style.backgroundColor = backgroundColor;
|
|
95
|
+
return (<PageInstanceContext.Provider value={{ $instance, pageConfig: page.config }}>
|
|
96
|
+
<v-page data-route={page.route}>
|
|
97
|
+
{isClassType
|
|
98
|
+
? // @ts-ignore
|
|
99
|
+
React.cloneElement(children, {
|
|
100
|
+
ref(ins) {
|
|
101
|
+
if (ins) {
|
|
102
|
+
// 实现 class 生命周期用法的挂载
|
|
103
|
+
Object.keys(pageLifecycles).forEach((event) => {
|
|
104
|
+
if (typeof ins[event] === 'function') {
|
|
105
|
+
$instance.registerLifecycle(event, ins, ins[event]);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
})
|
|
111
|
+
: children}
|
|
112
|
+
{/* TODO: 如果需要转场动画,需要在 PageWrapper 中渲染 */}
|
|
113
|
+
{/* {page?.isTabBar && <TabBar config={tabBarConfig} />} */}
|
|
114
|
+
</v-page>
|
|
115
|
+
</PageInstanceContext.Provider>);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=index.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../src/components/PageWrapper/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import clsx from 'clsx';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import router from '@ray-js/router';
|
|
4
|
+
import { events, appStoreEmitter, renderOptions } from '../../store/appStore';
|
|
5
|
+
import { withPublicPath } from '../../utils/withPublicPath';
|
|
6
|
+
import styles from './index.module.less';
|
|
7
|
+
export class TabBar extends React.Component {
|
|
8
|
+
constructor() {
|
|
9
|
+
super(...arguments);
|
|
10
|
+
this.state = {
|
|
11
|
+
currentRoute: router.scheduler.currentRoute,
|
|
12
|
+
renderOptions: renderOptions,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
componentDidMount() {
|
|
16
|
+
this.unChangeHandle = router.scheduler.on('routeChange', (route) => {
|
|
17
|
+
this.setState({
|
|
18
|
+
currentRoute: route,
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
this.unAppStoreChange = appStoreEmitter.on(events.tabBarChange, (state) => {
|
|
22
|
+
this.setState({ renderOptions: state });
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
componentWillUnmount() {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
(_a = this.unChangeHandle) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
28
|
+
(_b = this.unAppStoreChange) === null || _b === void 0 ? void 0 : _b.call(this);
|
|
29
|
+
}
|
|
30
|
+
render() {
|
|
31
|
+
const { config, basename = '' } = this.props;
|
|
32
|
+
const { currentRoute, renderOptions } = this.state;
|
|
33
|
+
return (<div data-route={currentRoute} className={clsx(styles.wrapper, {
|
|
34
|
+
[styles.hidden]: !renderOptions.tabBarVisible && !renderOptions.tabBarAnimation,
|
|
35
|
+
[styles.showIn]: renderOptions.tabBarVisible && renderOptions.tabBarAnimation,
|
|
36
|
+
[styles.hideOut]: !renderOptions.tabBarVisible && renderOptions.tabBarAnimation,
|
|
37
|
+
})}>
|
|
38
|
+
<div className={styles.tabBar}>
|
|
39
|
+
{config.list.map((item) => {
|
|
40
|
+
const fullRoute = basename + item.route;
|
|
41
|
+
const isActive = currentRoute === fullRoute;
|
|
42
|
+
return (<div data-full-route={fullRoute} key={item.route || item.id} className={styles.item} onClick={() => {
|
|
43
|
+
router.push(item.route);
|
|
44
|
+
}}>
|
|
45
|
+
{item.icon && (<img className={styles.icon} src={`${withPublicPath(isActive ? item.activeIcon : item.icon)}`}/>)}
|
|
46
|
+
<span className={styles.text} style={{ color: isActive ? config.selectedColor : config.textColor }}>
|
|
47
|
+
{item.text}
|
|
48
|
+
</span>
|
|
49
|
+
</div>);
|
|
50
|
+
})}
|
|
51
|
+
</div>
|
|
52
|
+
</div>);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=index.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.jsx","sourceRoot":"","sources":["../../../src/components/TabBar/index.tsx"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,MAAM,MAAM,gBAAgB,CAAA;AAGnC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAC3D,OAAO,MAAM,MAAM,qBAAqB,CAAA;AAIxC,MAAM,OAAO,MAAO,SAAQ,KAAK,CAAC,SAGjC;IAHD;;QAOE,UAAK,GAAG;YACN,YAAY,EAAE,MAAM,CAAC,SAAS,CAAC,YAAY;YAC3C,aAAa,EAAE,aAAa;SAC7B,CAAA;IAgEH,CAAC;IA9DC,iBAAiB;QACf,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC,KAAa,EAAE,EAAE;YACzE,IAAI,CAAC,QAAQ,CAAC;gBACZ,YAAY,EAAE,KAAK;aACpB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE;YACxE,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oBAAoB;;QAClB,MAAA,IAAI,CAAC,cAAc,oDAAI,CAAA;QACvB,MAAA,IAAI,CAAC,gBAAgB,oDAAI,CAAA;IAC3B,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAC5C,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAA;QAElD,OAAO,CACL,CAAC,GAAG,CACF,UAAU,CAAC,CAAC,YAAY,CAAC,CACzB,SAAS,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBAC9B,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,eAAe;gBAC/E,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,aAAa,IAAI,aAAa,CAAC,eAAe;gBAC7E,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC,aAAa,IAAI,aAAa,CAAC,eAAe;aAChF,CAAC,CAAC,CAEH;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAC5B;UAAA,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxB,MAAM,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAA;gBACvC,MAAM,QAAQ,GAAG,YAAY,KAAK,SAAS,CAAA;gBAC3C,OAAO,CACL,CAAC,GAAG,CACF,eAAe,CAAC,CAAC,SAAS,CAAC,CAC3B,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,CAAC,CAC3B,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACvB,OAAO,CAAC,CAAC,GAAG,EAAE;wBACZ,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;oBACzB,CAAC,CAAC,CAEF;gBAAA,CAAC,IAAI,CAAC,IAAI,IAAI,CACZ,CAAC,GAAG,CACF,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACvB,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EACjE,CACH,CACD;gBAAA,CAAC,IAAI,CACH,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACvB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAErE;kBAAA,CAAC,IAAI,CAAC,IAAI,CACZ;gBAAA,EAAE,IAAI,CACR;cAAA,EAAE,GAAG,CAAC,CACP,CAAA;YACH,CAAC,CAAC,CACJ;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CAAC,CACP,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ReactDOM from 'react-dom';
|
|
3
|
+
import { Application } from './components/Application';
|
|
4
|
+
export function createApp(options) {
|
|
5
|
+
const root = document.createElement('div');
|
|
6
|
+
root.id = 'root';
|
|
7
|
+
document.body.appendChild(root);
|
|
8
|
+
// 作为 web 构建的启动入口文件
|
|
9
|
+
ReactDOM.render(<Application {...options}/>, root);
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=createApp.jsx.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createApp.jsx","sourceRoot":"","sources":["../src/createApp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,OAAO,EAAE,WAAW,EAAoB,MAAM,0BAA0B,CAAA;AAExE,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,CAAC,EAAE,GAAG,MAAM,CAAA;IAChB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAA;IAC/B,mBAAmB;IACnB,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,EAAG,EAAE,IAAI,CAAC,CAAA;AACrD,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { createApp, getApp } from './app';
|
|
2
|
-
export { lifecycle, PageInstance, PageInstanceContext, useAppEvent, usePageEvent, withPageLifecycle } from '@ray-js/runtime';
|
|
3
|
-
export * from './api';
|
|
2
|
+
export { lifecycle, PageInstance, PageInstanceContext, useAppEvent, usePageEvent, withPageLifecycle, } from '@ray-js/runtime';
|
|
3
|
+
export * from './api';
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EACL,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,iBAAiB,GAClB,MAAM,iBAAiB,CAAA;AAExB,cAAc,OAAO,CAAA"}
|
package/lib/index.native.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
export * from '@ray-js/framework-native';
|
|
1
|
+
export * from '@ray-js/framework-native';
|
|
2
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.native.js","sourceRoot":"","sources":["../src/index.native.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA"}
|
package/lib/runtime/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import { responsive } from './responsive';
|
|
2
|
-
|
|
3
|
-
responsive();
|
|
1
|
+
import { responsive } from './responsive';
|
|
2
|
+
// 响应式设计 rem 单位
|
|
3
|
+
responsive();
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,eAAe;AACf,UAAU,EAAE,CAAA"}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
|
|
2
|
-
var htmlRoot = document.querySelector('html');
|
|
1
|
+
const htmlRoot = document.querySelector('html');
|
|
3
2
|
export function responsive() {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
3
|
+
function setRem() {
|
|
4
|
+
let clientWidth = htmlRoot.clientWidth;
|
|
5
|
+
// clientWidth = Math.min(clientWidth, 640); // PC 模式下限定最大值
|
|
6
|
+
htmlRoot.style.fontSize = `${clientWidth / 7.5}px`;
|
|
7
|
+
const div = document.createElement('div');
|
|
8
|
+
div.style.width = '7.5rem';
|
|
9
|
+
document.body.appendChild(div);
|
|
10
|
+
htmlRoot.style.fontSize = `${(parseFloat(htmlRoot.style.fontSize) * clientWidth) / div.clientWidth}px`;
|
|
11
|
+
document.body.removeChild(div);
|
|
12
|
+
document.body.style.fontSize = `16px`;
|
|
13
|
+
}
|
|
14
|
+
let b = null;
|
|
15
|
+
window.addEventListener('resize', function () {
|
|
16
|
+
clearTimeout(b);
|
|
17
|
+
b = setTimeout(setRem, 100);
|
|
18
|
+
}, !1);
|
|
19
|
+
setRem();
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=responsive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responsive.js","sourceRoot":"","sources":["../../src/runtime/responsive.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;AAE/C,MAAM,UAAU,UAAU;IACxB,SAAS,MAAM;QACb,IAAI,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAA;QACtC,2DAA2D;QAC3D,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,WAAW,GAAG,GAAG,IAAI,CAAA;QAClD,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QACzC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAA;QAC1B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC9B,QAAQ,CAAC,KAAK,CAAC,QAAQ,GAAG,GACxB,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,WAC5D,IAAI,CAAA;QACJ,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QAC9B,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAA;IACvC,CAAC;IAED,IAAI,CAAC,GAAG,IAAI,CAAA;IACZ,MAAM,CAAC,gBAAgB,CACrB,QAAQ,EACR;QACE,YAAY,CAAC,CAAC,CAAC,CAAA;QACf,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC,EACD,CAAC,CAAC,CACH,CAAA;IAED,MAAM,EAAE,CAAA;AACV,CAAC"}
|
package/lib/store/appStore.js
CHANGED
|
@@ -1,26 +1,25 @@
|
|
|
1
|
-
import "core-js/modules/es.object.assign.js";
|
|
2
1
|
import { Emitter } from '@ray-js/framework-shared';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
export const appStoreEmitter = new Emitter();
|
|
3
|
+
export const renderOptions = {
|
|
4
|
+
tabBarVisible: true,
|
|
5
|
+
tabBarAnimation: false,
|
|
7
6
|
};
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
export const actions = {
|
|
8
|
+
toggleTabBar: 'toggleTabBar',
|
|
9
|
+
onChange: 'onChange',
|
|
11
10
|
};
|
|
12
|
-
export
|
|
13
|
-
|
|
11
|
+
export const events = {
|
|
12
|
+
tabBarChange: 'tabBarChange',
|
|
14
13
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
appStoreEmitter.emit(eventName, renderOptions);
|
|
14
|
+
const update = (eventName, nextState) => {
|
|
15
|
+
Object.assign(renderOptions, nextState);
|
|
16
|
+
appStoreEmitter.emit(eventName, renderOptions);
|
|
19
17
|
};
|
|
20
|
-
|
|
21
18
|
appStoreEmitter.on(actions.toggleTabBar, function (next) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
});
|
|
19
|
+
if (next.visible !== renderOptions.tabBarVisible)
|
|
20
|
+
update(events.tabBarChange, {
|
|
21
|
+
tabBarVisible: next.visible,
|
|
22
|
+
tabBarAnimation: next.animation,
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
//# sourceMappingURL=appStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appStore.js","sourceRoot":"","sources":["../../src/store/appStore.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,EAAE,CAAA;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,KAAK;CACvB,CAAA;AAED,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,YAAY,EAAE,cAAc;IAC5B,QAAQ,EAAE,UAAU;CACrB,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,YAAY,EAAE,cAAc;CAC7B,CAAA;AAED,MAAM,MAAM,GAAG,CAAC,SAAiB,EAAE,SAAwC,EAAE,EAAE;IAC7E,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,CAAA;IACvC,eAAe,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;AAChD,CAAC,CAAA;AAED,eAAe,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,IAA8C;IAC/F,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,CAAC,aAAa;QAC9C,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;YAC1B,aAAa,EAAE,IAAI,CAAC,OAAO;YAC3B,eAAe,EAAE,IAAI,CAAC,SAAS;SAChC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
|
package/lib/utils/index.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,YAAY,CAAA;AAE5B,OAAO,EAAE,GAAG,EAAE,CAAA"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import "core-js/modules/es.array.map.js";
|
|
2
|
-
import "core-js/modules/es.array.find.js";
|
|
3
|
-
import "core-js/modules/es.object.to-string.js";
|
|
4
1
|
export function normalizeTabBar(tabBar, routes) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return tabBar;
|
|
18
|
-
}
|
|
2
|
+
if (tabBar.list) {
|
|
3
|
+
tabBar.list = tabBar.list.map((item) => {
|
|
4
|
+
if (item.id) {
|
|
5
|
+
item.route = routes.find((i) => i.id === item.id).route;
|
|
6
|
+
}
|
|
7
|
+
return item;
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
return tabBar;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=normalizeTabBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalizeTabBar.js","sourceRoot":"","sources":["../../src/utils/normalizeTabBar.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,MAAc;IAC5D,IAAI,MAAM,CAAC,IAAI,EAAE;QACf,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,EAAE,EAAE;gBACX,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAA;aACxD;YACD,OAAO,IAAI,CAAA;QACb,CAAC,CAAC,CAAA;KACH;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import "core-js/modules/es.regexp.exec.js";
|
|
2
|
-
import "core-js/modules/es.string.replace.js";
|
|
3
1
|
export function withPublicPath(basePath) {
|
|
4
|
-
|
|
5
|
-
}
|
|
2
|
+
return PUBLIC_PATH + basePath.replace(/^\//, '');
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=withPublicPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withPublicPath.js","sourceRoot":"","sources":["../../src/utils/withPublicPath.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAClD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ray-js/framework",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.12-beta-0",
|
|
4
4
|
"description": "Ray Core",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ray"
|
|
@@ -20,21 +20,21 @@
|
|
|
20
20
|
"watch": "tsc -p ./tsconfig.build.json --module esnext --outDir lib --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@ray-js/framework-mp": "^0.4.
|
|
24
|
-
"@ray-js/framework-native": "^0.4.
|
|
25
|
-
"@ray-js/framework-shared": "^0.4.
|
|
26
|
-
"@ray-js/library": "^0.4.
|
|
27
|
-
"@ray-js/location": "^0.4.
|
|
28
|
-
"@ray-js/router": "^0.4.
|
|
29
|
-
"@ray-js/runtime": "^0.4.
|
|
23
|
+
"@ray-js/framework-mp": "^0.4.12-beta-0",
|
|
24
|
+
"@ray-js/framework-native": "^0.4.12-beta-0",
|
|
25
|
+
"@ray-js/framework-shared": "^0.4.12-beta-0",
|
|
26
|
+
"@ray-js/library": "^0.4.12-beta-0",
|
|
27
|
+
"@ray-js/location": "^0.4.12-beta-0",
|
|
28
|
+
"@ray-js/router": "^0.4.12-beta-0",
|
|
29
|
+
"@ray-js/runtime": "^0.4.12-beta-0",
|
|
30
30
|
"clsx": "^1.1.1",
|
|
31
31
|
"hoist-non-react-statics": "^3.3.2",
|
|
32
32
|
"lodash.get": "^4.4.2",
|
|
33
33
|
"tiny-invariant": "^1.1.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@ray-js/cli": "^0.4.
|
|
37
|
-
"@ray-js/types": "^0.4.
|
|
36
|
+
"@ray-js/cli": "^0.4.12-beta-0",
|
|
37
|
+
"@ray-js/types": "^0.4.12-beta-0"
|
|
38
38
|
},
|
|
39
39
|
"maintainers": [
|
|
40
40
|
{
|
|
@@ -42,6 +42,6 @@
|
|
|
42
42
|
"email": "tuyafe@tuya.com"
|
|
43
43
|
}
|
|
44
44
|
],
|
|
45
|
-
"gitHead": "
|
|
45
|
+
"gitHead": "522a92a23084e3195cdea186caf37f0c3492110b",
|
|
46
46
|
"repository": {}
|
|
47
47
|
}
|