AnimationToolbar.js (2372B)
1 /* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 5 "use strict"; 6 7 const { 8 createFactory, 9 PureComponent, 10 } = require("resource://devtools/client/shared/vendor/react.mjs"); 11 const dom = require("resource://devtools/client/shared/vendor/react-dom-factories.js"); 12 const PropTypes = require("resource://devtools/client/shared/vendor/react-prop-types.mjs"); 13 14 const CurrentTimeLabel = createFactory( 15 require("resource://devtools/client/inspector/animation/components/CurrentTimeLabel.js") 16 ); 17 const PauseResumeButton = createFactory( 18 require("resource://devtools/client/inspector/animation/components/PauseResumeButton.js") 19 ); 20 const PlaybackRateSelector = createFactory( 21 require("resource://devtools/client/inspector/animation/components/PlaybackRateSelector.js") 22 ); 23 const RewindButton = createFactory( 24 require("resource://devtools/client/inspector/animation/components/RewindButton.js") 25 ); 26 27 class AnimationToolbar extends PureComponent { 28 static get propTypes() { 29 return { 30 addAnimationsCurrentTimeListener: PropTypes.func.isRequired, 31 animations: PropTypes.arrayOf(PropTypes.object).isRequired, 32 removeAnimationsCurrentTimeListener: PropTypes.func.isRequired, 33 rewindAnimationsCurrentTime: PropTypes.func.isRequired, 34 setAnimationsPlaybackRate: PropTypes.func.isRequired, 35 setAnimationsPlayState: PropTypes.func.isRequired, 36 timeScale: PropTypes.object.isRequired, 37 }; 38 } 39 40 render() { 41 const { 42 addAnimationsCurrentTimeListener, 43 animations, 44 removeAnimationsCurrentTimeListener, 45 rewindAnimationsCurrentTime, 46 setAnimationsPlaybackRate, 47 setAnimationsPlayState, 48 timeScale, 49 } = this.props; 50 51 return dom.div( 52 { 53 className: "animation-toolbar devtools-toolbar", 54 }, 55 RewindButton({ 56 rewindAnimationsCurrentTime, 57 }), 58 PauseResumeButton({ 59 animations, 60 setAnimationsPlayState, 61 }), 62 PlaybackRateSelector({ 63 animations, 64 setAnimationsPlaybackRate, 65 }), 66 CurrentTimeLabel({ 67 addAnimationsCurrentTimeListener, 68 removeAnimationsCurrentTimeListener, 69 timeScale, 70 }) 71 ); 72 } 73 } 74 75 module.exports = AnimationToolbar;