Skip to content

Commit 734c9c9

Browse files
authored
[release] 1.1.0 (#6)
* [feature/1.1.0] update package versions * [feature/1.1.0] update readme * [feature/1.1.0] using useCallback API, update devDepency packages version
1 parent 6869142 commit 734c9c9

File tree

10 files changed

+7703
-5266
lines changed

10 files changed

+7703
-5266
lines changed

.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
.vscode
33
.git*
44
.storybook
5+
.babelrc
6+
.gitignore
57

68
example
79
node_modules

.npmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
save-exact=true

.storybook/webpack.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module.exports = {
88
test: /\.tsx?$/,
99
include: path.resolve(__dirname, "../"),
1010
use: [
11-
require.resolve("ts-loader")
11+
require.resolve("babel-loader")
1212
]
1313
},
1414
{

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change Log
22

3+
1.1.0 (January 25, 2020)
4+
- update devDepencies packages version
5+
- use ``useCallback`` in main source
6+
37
1.0.6 (January 25, 2020)
48
- add example sources
59
- add Live demo

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
[![Download Count][download-image]][download-url]
55

66
[react-url]: https://reactjs.org
7-
[react-image]: https://img.shields.io/badge/React-%5E16.9.0-blue
7+
[react-image]: https://img.shields.io/badge/React-16.13.1-blue
88
[typescript-url]: https://www.typescriptlang.org
9-
[typescript-image]: https://img.shields.io/badge/Typescript-%5E3.7.0-brightgreen
9+
[typescript-image]: https://img.shields.io/badge/Typescript-3.9.7-orange
1010
[download-image]: http://img.shields.io/npm/dm/react-sequence-player.svg?style=flat
1111
[download-url]: http://www.npmjs.com/package/react-sequence-player
1212

example/delay.story.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ storiesOf('SequencePlayer', module)
4545
imageSize={{ width: 918, height: 506 }}
4646
ref={playerRef}
4747
delay={200}
48+
logging={true}
4849
/>
4950
</div>
5051
);

package-lock.json

Lines changed: 7643 additions & 5209 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
{
22
"name": "react-sequence-player",
3-
"version": "1.0.6",
3+
"version": "1.1.0",
44
"description": "react component for sequence playing in <div>",
55
"main": "dist/index.js",
66
"scripts": {
77
"type-check": "tsc -p tsconfig.json",
88
"dev": "start-storybook -p 6006",
9+
"prebuild": "npm run type-check",
910
"build": "rm -rf dist && rollup -c",
1011
"build:watch": "rollup -c --watch",
1112
"build:storybook": "build-storybook --quiet"
@@ -33,30 +34,29 @@
3334
},
3435
"homepage": "https://github.com/kimcoder/react-sequence-player#readme",
3536
"devDependencies": {
36-
"@babel/plugin-transform-runtime": "^7.8.0",
37-
"@babel/preset-env": "^7.8.2",
38-
"@babel/preset-react": "^7.8.0",
39-
"@babel/preset-typescript": "^7.8.0",
40-
"@storybook/addon-info": "^5.3.1",
41-
"@storybook/addon-links": "^5.3.1",
42-
"@storybook/addons": "^5.3.1",
43-
"@storybook/preset-typescript": "^1.2.0",
44-
"@storybook/react": "^5.3.1",
45-
"@types/react": "^16.9.17",
46-
"@types/react-dom": "^16.9.4",
47-
"babel-loader": "^8.0.6",
48-
"css-loader": "^3.4.2",
49-
"react": "^16.12.0",
50-
"react-dom": "^16.12.0",
51-
"rollup": "^1.29.0",
52-
"rollup-plugin-babel": "^4.3.3",
53-
"rollup-plugin-typescript2": "^0.25.3",
54-
"style-loader": "^1.1.2",
55-
"ts-loader": "^6.2.1",
56-
"tslint": "^5.20.1",
57-
"tslint-config-standard": "^9.0.0",
58-
"tslint-react": "^4.1.0",
59-
"typescript": "^3.7.4"
37+
"@babel/plugin-transform-runtime": "7.11.0",
38+
"@babel/preset-env": "7.11.0",
39+
"@babel/preset-react": "7.10.4",
40+
"@babel/preset-typescript": "7.10.4",
41+
"@storybook/addon-info": "5.3.19",
42+
"@storybook/addon-links": "6.0.6",
43+
"@storybook/addons": "6.0.6",
44+
"@storybook/preset-typescript": "3.0.0",
45+
"@storybook/react": "6.0.6",
46+
"@types/react": "16.9.46",
47+
"@types/react-dom": "16.9.8",
48+
"babel-loader": "8.1.0",
49+
"css-loader": "4.2.1",
50+
"react": "16.13.1",
51+
"react-dom": "16.13.1",
52+
"rollup": "2.25.0",
53+
"rollup-plugin-babel": "4.4.0",
54+
"rollup-plugin-typescript2": "0.27.2",
55+
"style-loader": "1.2.1",
56+
"tslint": "6.1.3",
57+
"tslint-config-standard": "9.0.0",
58+
"tslint-react": "5.0.0",
59+
"typescript": "3.9.7"
6060
},
6161
"dependencies": {}
6262
}

rollup.config.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ const config = {
77
output: [
88
{
99
file: pkg.main,
10-
format: 'cjs'
10+
format: 'esm'
1111
},
1212
],
1313
external: [

src/SequencePlayer.tsx

Lines changed: 23 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -36,42 +36,44 @@ const SequencePlayer = (props: Props, ref: any) => {
3636
const [isReverse, setIsReverse] = React.useState(false);
3737
const getSize = (size: number) => props.forMobile ? Math.round(size / 2) : size;
3838

39-
const play = (idx: number = 0) => {
40-
props.logging && console.log('[SequencePlayer play]');
39+
const play = React.useCallback((idx: number = 0) => {
40+
if (isPlaying) return;
41+
props.logging && console.log('[SequencePlayer play]', isPlaying);
4142
props.onStart && props.onStart();
4243
setIndex(idx);
4344
setIsPlaying(true);
4445
setIsReverse(false);
45-
update();
46-
};
46+
}, [isPlaying]);
4747

48-
const reverse = () => {
49-
props.logging && console.log('[SequencePlayer reverse]');
50-
if (index > 0) {
48+
const reverse = React.useCallback(() => {
49+
if (isReverse) return;
50+
props.logging && console.log('[SequencePlayer reverse]', index);
51+
if (index > 0 && !isReverse) {
5152
props.onStart && props.onStart();
52-
setIsPlaying(true);
5353
setIsReverse(true);
54-
update();
54+
setIsPlaying(true);
5555
} else {
56-
props.logging && console.log('[SequencePlayer reverse] can not reverse, because idx is 0', index);
56+
props.logging && console.log('[SequencePlayer reverse] can not reverse, because idx is 0 or currently is reversing', index);
5757
}
58-
};
58+
}, [index]);
5959

60-
const pause = (idx?: number) => {
60+
const pause = React.useCallback((idx?: number) => {
61+
if (!isPlaying) return;
6162
props.logging && console.log('[SequencePlayer pause]');
6263
if (idx) {
6364
setIndex(idx);
6465
}
6566
setIsPlaying(false);
6667
props.onPaused && props.onPaused();
67-
};
68+
}, [isPlaying]);
6869

69-
const resume = () => {
70+
const resume = React.useCallback(() => {
71+
if (isPlaying) return;
7072
props.logging && console.log('[SequencePlayer resume]');
71-
isPlaying ? pause() : play(index);
72-
};
73-
74-
const update = () => {
73+
play(index);
74+
}, [index, isPlaying]);
75+
76+
const update = React.useCallback(() => {
7577
if (!isPlaying) return;
7678
props.logging && console.log(`[SequencePlayer update] isReverse:${isReverse} ${index}/${props.data.length - 1}`);
7779
const isFirst: boolean = index === 0;
@@ -83,29 +85,22 @@ const SequencePlayer = (props: Props, ref: any) => {
8385
} else if (isReverse && isFirst) {
8486
setIsPlaying(false);
8587
props.onComplete && props.onComplete();
86-
} else if (isReverse && index > 1) {
88+
} else if (isReverse && index > 0) {
8789
setIndex(index - 1);
8890
} else if (!isReverse && props.data.length > index + 1) {
8991
setIndex(index + 1);
9092
}
91-
};
93+
}, [index, isPlaying, isReverse]);
9294

9395
React.useImperativeHandle(ref, () => ({ play, resume, pause, reverse }));
9496
React.useEffect(() => {
95-
setTimeout(update, props.delay || 50);
97+
isPlaying && setTimeout(update, props.delay || 50);
9698
}, [index]);
9799

98100
React.useEffect(() => {
99101
isPlaying && update();
100102
}, [isPlaying]);
101103

102-
React.useEffect(() => {
103-
// window.addEventListener("mousemove", logMousePosition);
104-
return () => {
105-
// window.removeEventListener("mousemove", logMousePosition);
106-
};
107-
}, []);
108-
109104
const overrideStyle: React.CSSProperties = {
110105
...props.style,
111106
backgroundRepeat: 'no-repeat',

0 commit comments

Comments
 (0)