fcc-challenges/pomodoro-clock-react/build/static/js/main.4e34ae4f.chunk.js.map

1 line
52 KiB
Plaintext

{"version":3,"sources":["BeepSound.ogg","actions/breakLengthAction.js","actions/sessionLengthAction.js","actions/clockAction.js","reducers/rootReducer.js","reducers/innerWindowWidthReducer.js","actions/innerWindowWidthAction.js","reducers/innerWindowHeightReducer.js","actions/innerWindowHeightAction.js","reducers/breakLengthReducer.js","reducers/sessionLengthReducer.js","reducers/timerReducer.js","actions/timerAction.js","reducers/clockReducer.js","reducers/clockIsRunningReducer.js","actions/clockIsRunningAction.js","reducers/zeroTimeReducer.js","actions/zeroTimeAction.js","store.js","globals.js","BreakControls.js","Break.js","SessionControls.js","Session.js","Top.js","Clock.js","Controls.js","PomodoroClock.js","FullScreen.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","breakLengthAction","breakLength","type","sessionLengthAction","sessionLength","clockAction","time","combineReducers","innerWindowWidth","state","action","window","innerWidth","windowInnerWidth","innerWindowHeight","innerHeight","windowInnerHeight","timer","clock","clockIsRunning","zeroTime","store","createStore","rootReducer","colors","makeClock","remainingTime","remainingSeconds","remainingMinutes","Math","floor","toString","BreakControls","props","handleDownArrowMouseEvent","bind","handleUpArrowMouseEvent","incrementBreak","decrementBreak","downColor","upColor","this","newBreakLength","e","setState","downArrowStyle","color","upArrowStyle","style","height","width","display","flexDirection","alignItems","justifyContent","marginRight","fontSize","id","onClick","onTouchStart","onTouchEnd","onMouseDown","onMouseUp","icon","faArrowCircleDown","faArrowCircleUp","React","Component","connect","dispatch","Break","breakTextStyle","textAlign","SessionControls","incrementSession","decrementSession","newSessionLength","marginLeft","Session","sessionTextStyle","Top","titleStyle","Clock","timerLabelStyle","Controls","handleMouseEventPlay","handleMouseEventPause","handleMouseEventReset","handlePlay","handleReset","handleNoSleep","playColor","pauseColor","resetColor","sound","navigator","userAgent","includes","self","noSleep","NoSleep","enable","refreshNoSleep","setInterval","disable","clearInterval","clockIsRunningAction","now","Date","nowSeconds","getTime","split","parseInt","zeroTimeAction","refreshClock","newClock","timerAction","pause","currentTime","prevProps","play","document","getElementById","playStyle","pauseStyle","resetStyle","faPlayCircle","faPauseCircle","faSyncAlt","preload","src","BeepSoundOgg","PomodoroClock","eightyPercentWidth","round","eightyPercentHeight","margin","border","borderColor","zIndex","backgroundColor","borderRadius","userSelect","MozUserSelect","WebkitUserSelect","clockContainerStyle","maxHeight","FullScreen","handleClick","fullscreenElement","exitFullscreen","documentElement","requestFullscreen","faExpand","position","bottom","right","App","handleResize","innerWindowWidthAction","innerWindowHeightAction","addEventListener","removeEventListener","gitHubLabelStyle","attachmentStyle","overFlow","fontFamily","href","target","rel","className","alt","data-recalc-dims","Boolean","location","hostname","match","ReactDOM","render","serviceWorker","ready","then","registration","unregister","catch","error","console","message"],"mappings":"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","file":"static/js/main.4e34ae4f.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/BeepSound.049fe0d0.ogg\";","export const SETBREAKLENGTH = \"SETBREAKLENGTH\";\n\nexport const breakLengthAction = (breakLength) => {\n return {\n type: SETBREAKLENGTH,\n breakLength: breakLength,\n };\n};\n","export const SETSESSIONLENGTH = \"SETSESSIONLENGTH\";\n\nexport const sessionLengthAction = (sessionLength) => {\n return {\n type: SETSESSIONLENGTH,\n sessionLength: sessionLength,\n };\n};\n","export const SETCLOCK = \"SETCLOCK\";\n\nexport const clockAction = (time) => {\n return {\n type: SETCLOCK,\n time: time,\n };\n};\n","import { combineReducers } from \"redux\";\nimport innerWindowWidthReducer from \"./innerWindowWidthReducer\";\nimport innerWindowHeightReducer from \"./innerWindowHeightReducer\";\nimport breakLengthReducer from \"./breakLengthReducer\";\nimport sessionLengthReducer from \"./sessionLengthReducer\";\nimport timerReducer from \"./timerReducer\";\nimport clockReducer from \"./clockReducer\";\nimport clockIsRunningReducer from \"./clockIsRunningReducer\";\nimport zeroTimeReducer from \"./zeroTimeReducer\";\n\nexport default combineReducers({\n innerWindowWidth: innerWindowWidthReducer,\n innerWindowHeight: innerWindowHeightReducer,\n breakLength: breakLengthReducer,\n sessionLength: sessionLengthReducer,\n timer: timerReducer,\n clock: clockReducer,\n clockIsRunning: clockIsRunningReducer,\n zeroTime: zeroTimeReducer,\n});\n","import { SETWINDOWINNERWIDTH } from \"../actions/innerWindowWidthAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = window.innerWidth;\n }\n\n switch (action.type) {\n case SETWINDOWINNERWIDTH:\n return action.windowInnerWidth;\n default:\n return state;\n };\n};\n","export const SETWINDOWINNERWIDTH = \"SETWINDOWINNERWIDTH\";\n\nexport const innerWindowWidthAction = (windowInnerWidth) => {\n return {\n type: SETWINDOWINNERWIDTH,\n windowInnerWidth: windowInnerWidth,\n };\n};\n","import { SETWINDOWINNERHEIGHT } from \"../actions/innerWindowHeightAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = window.innerHeight;\n }\n\n switch (action.type) {\n case SETWINDOWINNERHEIGHT:\n return action.windowInnerHeight;\n default:\n return state;\n }\n};\n","export const SETWINDOWINNERHEIGHT = \"SETWINDOWINNERHEIGHT\";\n\nexport const innerWindowHeightAction = (windowInnerHeight) => {\n return {\n type: SETWINDOWINNERHEIGHT,\n windowInnerHeight: windowInnerHeight,\n };\n};\n","import { SETBREAKLENGTH } from \"../actions/breakLengthAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = 5;\n }\n\n switch (action.type) {\n case SETBREAKLENGTH:\n return action.breakLength;\n default:\n return state;\n }\n};\n","import { SETSESSIONLENGTH } from \"../actions/sessionLengthAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = 25;\n }\n\n switch (action.type) {\n case SETSESSIONLENGTH:\n return action.sessionLength;\n default:\n return state;\n }\n};\n","import { SETTIMER } from \"../actions/timerAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = 'Session';\n }\n\n switch (action.type) {\n case SETTIMER:\n return action.timer;\n default:\n return state;\n }\n};\n","export const SETTIMER = \"SETTIMER\";\n\nexport const timerAction = (timer) => {\n return {\n type: SETTIMER,\n timer: timer,\n };\n};\n","import { SETCLOCK } from \"../actions/clockAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = '25:00';\n }\n\n switch (action.type) {\n case SETCLOCK:\n return action.time;\n default:\n return state;\n }\n};\n","import { SETCLOCKISRUNNING } from \"../actions/clockIsRunningAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = false;\n }\n\n switch (action.type) {\n case SETCLOCKISRUNNING:\n return action.clockIsRunning;\n default:\n return state;\n }\n};\n","export const SETCLOCKISRUNNING = \"SETCLOCKISRUNNING\";\n\nexport const clockIsRunningAction = (clockIsRunning) => {\n return {\n type: SETCLOCKISRUNNING,\n clockIsRunning: clockIsRunning,\n };\n};\n","import { SETZEROTIME } from \"../actions/zeroTimeAction\";\n\nexport default (state, action) => {\n if (!state) {\n state = 0;\n }\n\n switch (action.type) {\n case SETZEROTIME:\n return action.zeroTime;\n default:\n return state;\n }\n};\n","export const SETZEROTIME = \"SETZEROTIME\";\n\nexport const zeroTimeAction = (zeroTime) => {\n return {\n type: SETZEROTIME,\n zeroTime: zeroTime,\n };\n};\n","import { createStore } from \"redux\";\nimport rootReducer from \"./reducers/rootReducer\";\n\nconst store = createStore(rootReducer);\n\nexport default store;\n","export const colors = {\n prussianBlue: '#0b3c5d',\n skyBlue: '#328cc1',\n goldLeaf: '#d9b310',\n ivoryBlack: '#1d2731',\n};\n\nexport const makeClock = (remainingTime) => {\n const remainingSeconds = remainingTime % 60;\n const remainingMinutes = Math.floor(remainingTime / 60);\n const minutes = remainingMinutes > 9 ? remainingMinutes.toString() : '0' + remainingMinutes.toString() ;\n const seconds = remainingSeconds > 9 ? remainingSeconds.toString() : '0' + remainingSeconds.toString() ;\n return minutes + ':' + seconds;\n};\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowCircleDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { faArrowCircleUp } from \"@fortawesome/free-solid-svg-icons\";\nimport { colors,makeClock } from './globals'\n\nimport { breakLengthAction } from \"./actions/breakLengthAction\";\nimport { clockAction } from \"./actions/clockAction\";\n\nconst mapDispatchToProps = (dispatch) => ({\n breakLengthAction: (breakLength) => dispatch(breakLengthAction(breakLength)),\n clockAction: (time) => dispatch(clockAction(time)),\n});\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass BreakControls extends React.Component {\n constructor(props) {\n super(props);\n this.handleDownArrowMouseEvent = this.handleDownArrowMouseEvent.bind(this);\n this.handleUpArrowMouseEvent = this.handleUpArrowMouseEvent.bind(this);\n this.incrementBreak = this.incrementBreak.bind(this);\n this.decrementBreak = this.decrementBreak.bind(this);\n this.state = {\n downColor: colors.ivoryBlack,\n upColor: colors.ivoryBlack,\n };\n };\n\n incrementBreak() {\n if (this.props.breakLength < 60) {\n const newBreakLength = this.props.breakLength + 1;\n if (!this.props.clockIsRunning) {\n this.props.breakLengthAction(newBreakLength);\n if (this.props.timer === 'Break') {\n this.props.clockAction(makeClock(newBreakLength * 60));\n }\n } else {\n if (this.props.timer === 'Session') {\n this.props.breakLengthAction(newBreakLength);\n }\n }\n }\n };\n\n decrementBreak() {\n if (this.props.breakLength > 1) {\n const newBreakLength = this.props.breakLength - 1;\n if (!this.props.clockIsRunning) {\n this.props.breakLengthAction(newBreakLength);\n if (this.props.timer === 'Break') {\n this.props.clockAction(makeClock(newBreakLength * 60));\n }\n } else {\n if (this.props.timer === 'Session') {\n this.props.breakLengthAction(newBreakLength);\n }\n }\n }\n };\n\n handleDownArrowMouseEvent(e) {\n if (e.type === 'mousedown' || e.type === 'touchstart') {\n this.setState({downColor: colors.goldLeaf});\n } else if (e.type === 'mouseup' || e.type === 'touchend') {\n this.setState({downColor: colors.ivoryBlack});\n }\n };\n\n handleUpArrowMouseEvent(e) {\n if (e.type === 'mousedown' || e.type === 'touchstart') {\n this.setState({upColor: colors.goldLeaf});\n } else if (e.type === 'mouseup' || e.type === 'touchend') {\n this.setState({upColor: colors.ivoryBlack});\n }\n };\n\n render() {\n const style = {\n height: '50%',\n width: '75%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n marginRight: '25%',\n fontSize: 32,\n };\n\n const breakStyle = {\n width: 50,\n }\n\n const downArrowStyle = {\n color: this.state.downColor,\n }\n\n const upArrowStyle = {\n color: this.state.upColor,\n }\n\n return(\n <div style={style}>\n <div id='break-decrement' style={downArrowStyle} onClick={this.decrementBreak}\n onTouchStart={this.handleDownArrowMouseEvent} onTouchEnd={this.handleDownArrowMouseEvent}\n onMouseDown={this.handleDownArrowMouseEvent} onMouseUp={this.handleDownArrowMouseEvent}>\n <FontAwesomeIcon icon={faArrowCircleDown}/>\n </div>\n\n <p id='break-length' style={breakStyle}>{this.props.breakLength}</p>\n\n <div id='break-increment' style={upArrowStyle} onClick={this.incrementBreak}\n onTouchStart={this.handleUpArrowMouseEvent} onTouchEnd={this.handleUpArrowMouseEvent}\n onMouseDown={this.handleUpArrowMouseEvent} onMouseUp={this.handleUpArrowMouseEvent}>\n <FontAwesomeIcon icon={faArrowCircleUp}/>\n </div>\n </div>\n );\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BreakControls);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport { colors } from './globals'\nimport BreakControls from './BreakControls';\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass Break extends React.Component {\n render() {\n const width = this.props.innerWindowWidth;\n const height = this.props.innerWindowHeight;\n const style = {\n height: '100%',\n width: '50%',\n };\n\n const breakTextStyle = {\n height: '50%',\n width: '90%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n textAlign: 'right',\n marginRight: '10%',\n color: colors.goldLeaf,\n };\n\n if (height > width && width < 380) {\n breakTextStyle['fontSize'] = 20;\n }\n\n return(\n <div style={style}>\n <div id=\"break-label\" style={breakTextStyle}>Break Length</div>\n <BreakControls />\n </div>\n );\n }\n};\n\nexport default connect(mapStateToProps)(Break);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faArrowCircleDown } from \"@fortawesome/free-solid-svg-icons\";\nimport { faArrowCircleUp } from \"@fortawesome/free-solid-svg-icons\";\nimport { colors,makeClock } from './globals'\n\nimport { sessionLengthAction } from \"./actions/sessionLengthAction\";\nimport { clockAction } from \"./actions/clockAction\";\n\nconst mapDispatchToProps = (dispatch) => ({\n sessionLengthAction: (sessionLength) => dispatch(sessionLengthAction(sessionLength)),\n clockAction: (time) => dispatch(clockAction(time)),\n});\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass SessionControls extends React.Component {\n constructor(props) {\n super(props);\n this.handleDownArrowMouseEvent = this.handleDownArrowMouseEvent.bind(this);\n this.handleUpArrowMouseEvent = this.handleUpArrowMouseEvent.bind(this);\n this.incrementSession = this.incrementSession.bind(this);\n this.decrementSession = this.decrementSession.bind(this);\n this.state = {\n downColor: colors.ivoryBlack,\n upColor: colors.ivoryBlack,\n };\n };\n\n incrementSession() {\n if (this.props.sessionLength < 60) {\n const newSessionLength = this.props.sessionLength + 1;\n if (!this.props.clockIsRunning) {\n this.props.sessionLengthAction(newSessionLength);\n if (this.props.timer === 'Session') {\n this.props.clockAction(makeClock(newSessionLength * 60));\n }\n } else {\n if (this.props.timer === 'Break') {\n this.props.sessionLengthAction(newSessionLength);\n }\n }\n }\n };\n\n decrementSession() {\n if (this.props.sessionLength > 1) {\n const newSessionLength = this.props.sessionLength - 1;\n if (!this.props.clockIsRunning) {\n this.props.sessionLengthAction(newSessionLength);\n if (this.props.timer === 'Session') {\n this.props.clockAction(makeClock(newSessionLength * 60));\n }\n } else {\n if (this.props.timer === 'Break') {\n this.props.sessionLengthAction(newSessionLength);\n }\n }\n }\n };\n\n handleDownArrowMouseEvent(e) {\n if (e.type === 'mousedown' || e.type === 'touchstart') {\n this.setState({downColor: colors.goldLeaf});\n } else if (e.type === 'mouseup' || e.type === 'touchend') {\n this.setState({downColor: colors.ivoryBlack});\n }\n };\n\n handleUpArrowMouseEvent(e) {\n if (e.type === 'mousedown' || e.type === 'touchstart') {\n this.setState({upColor: colors.goldLeaf});\n } else if (e.type === 'mouseup' || e.type === 'touchend') {\n this.setState({upColor: colors.ivoryBlack});\n }\n };\n\n render() {\n const style = {\n height: '50%',\n width: '75%',\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n justifyContent: 'flex-start',\n marginLeft: '25%',\n fontSize: 32,\n };\n\n const breakStyle = {\n width: 50,\n }\n\n const downArrowStyle = {\n color: this.state.downColor,\n }\n\n const upArrowStyle = {\n color: this.state.upColor,\n }\n\n return(\n <div style={style}>\n <div id='session-decrement' style={downArrowStyle} onClick={this.decrementSession}\n onTouchStart={this.handleDownArrowMouseEvent} onTouchEnd={this.handleDownArrowMouseEvent}\n onMouseDown={this.handleDownArrowMouseEvent} onMouseUp={this.handleDownArrowMouseEvent}>\n <FontAwesomeIcon icon={faArrowCircleDown}/>\n </div>\n\n <p id='session-length' style={breakStyle}>{this.props.sessionLength}</p>\n\n <div id='session-increment' style={upArrowStyle} onClick={this.incrementSession}\n onTouchStart={this.handleUpArrowMouseEvent} onTouchEnd={this.handleUpArrowMouseEvent}\n onMouseDown={this.handleUpArrowMouseEvent} onMouseUp={this.handleUpArrowMouseEvent}>\n <FontAwesomeIcon icon={faArrowCircleUp}/>\n </div>\n </div>\n );\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SessionControls);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport { colors } from './globals'\nimport SessionControls from './SessionControls';\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass Session extends React.Component {\n render() {\n const width = this.props.innerWindowWidth;\n const height = this.props.innerWindowHeight;\n const style = {\n height: '100%',\n width: '50%',\n };\n\n const sessionTextStyle = {\n height: '50%',\n width: '90%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n textAlign: 'left',\n marginLeft: '10%',\n color: colors.goldLeaf,\n };\n if (height > width && width < 380) {\n sessionTextStyle['fontSize'] = 20;\n }\n\n\n return(\n <div style={style}>\n <div id=\"session-label\" style={sessionTextStyle}>Session Length</div>\n <SessionControls />\n </div>\n );\n }\n};\n\nexport default connect(mapStateToProps)(Session);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport Break from './Break';\nimport Session from './Session';\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass Top extends React.Component {\n render() {\n const width = this.props.innerWindowWidth;\n const height = this.props.innerWindowHeight;\n const style = {\n height: '40%',\n width: '100%',\n }\n\n const titleStyle = {\n height: '50%',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n fontSize: 48,\n }\n\n const breakAndSessionStyle = {\n height: '50%',\n width: '100%',\n display: 'flex',\n }\n\n if (height > width && width < 385) {\n titleStyle['fontSize'] = 36;\n }\n\n return(\n <div style={style}>\n <div style={titleStyle}>Pomodoro Clock</div>\n <div style={breakAndSessionStyle}>\n <Break />\n <Session />\n </div>\n </div>\n );\n };\n};\n\nexport default connect(mapStateToProps)(Top);\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport { colors } from './globals'\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass Clock extends React.Component {\n render() {\n const clockStyle = {\n height: '40%',\n width: '100%',\n }\n\n const timerLabelStyle = {\n height: '30%',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n color: colors.goldLeaf,\n }\n\n const timerStyle = {\n height: '70%',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n fontSize: 96,\n }\n\n return(\n <div style={clockStyle}>\n <div id='timer-label' style={timerLabelStyle}>{this.props.timer}</div>\n <div id='time-left' style={timerStyle}>{this.props.clock}</div>\n </div>\n );\n };\n};\n\nexport default connect(mapStateToProps)(Clock);\n","import React from 'react';\nimport NoSleep from 'nosleep.js';\nimport { connect } from \"react-redux\";\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faPlayCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { faPauseCircle } from \"@fortawesome/free-solid-svg-icons\";\nimport { faSyncAlt } from \"@fortawesome/free-solid-svg-icons\";\nimport { colors,makeClock } from './globals'\n\nimport { clockIsRunningAction } from \"./actions/clockIsRunningAction\";\nimport { zeroTimeAction } from \"./actions/zeroTimeAction\";\nimport { clockAction } from \"./actions/clockAction\";\nimport { timerAction } from \"./actions/timerAction\";\nimport { sessionLengthAction } from \"./actions/sessionLengthAction\";\nimport { breakLengthAction } from \"./actions/breakLengthAction\";\nimport BeepSoundOgg from './BeepSound.ogg';\n\nconst mapDispatchToProps = (dispatch) => ({\n clockIsRunningAction: (clockIsRunning) => dispatch(clockIsRunningAction(clockIsRunning)),\n zeroTimeAction: (zeroTime) => dispatch(zeroTimeAction(zeroTime)),\n clockAction: (time) => dispatch(clockAction(time)),\n timerAction: (timer) => dispatch(timerAction(timer)),\n sessionLengthAction: (sessionLength) => dispatch(sessionLengthAction(sessionLength)),\n breakLengthAction: (breakLength) => dispatch(breakLengthAction(breakLength)),\n});\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass Controls extends React.Component {\n constructor(props) {\n super(props);\n this.handleMouseEventPlay = this.handleMouseEventPlay.bind(this);\n this.handleMouseEventPause = this.handleMouseEventPause.bind(this);\n this.handleMouseEventReset = this.handleMouseEventReset.bind(this);\n this.handlePlay = this.handlePlay.bind(this);\n this.handleReset = this.handleReset.bind(this);\n this.handleNoSleep = this.handleNoSleep.bind(this);\n this.state = {\n playColor: colors.ivoryBlack,\n pauseColor: colors.ivoryBlack,\n resetColor: colors.ivoryBlack,\n sound: '',\n };\n };\n\n handleNoSleep() {\n if (navigator.userAgent.includes('Mobile')) {\n const self = this;\n var noSleep = new NoSleep();\n noSleep.enable();\n let refreshNoSleep = setInterval(function() {\n if (!self.props.clockIsRunning) {\n noSleep.disable();\n clearInterval(refreshNoSleep);\n }\n },5000);\n }\n };\n\n handlePlay() {\n if (this.props.clockIsRunning) {\n this.props.clockIsRunningAction(false);\n } else {\n this.props.clockIsRunningAction(true);\n this.handleNoSleep();\n const now = new Date();\n const nowSeconds = Math.floor(now.getTime() / 1000);\n const remainingTime = this.props.clock.split(':');\n const remainingSeconds = (60 * parseInt(remainingTime[0])) + parseInt(remainingTime[1]);\n this.props.zeroTimeAction(nowSeconds + remainingSeconds);\n const self = this;\n let refreshClock = setInterval(function(){\n if (!self.props.clockIsRunning) {\n clearInterval(refreshClock);\n } else {\n const now = new Date();\n const nowSeconds = Math.floor(now.getTime() / 1000);\n if (nowSeconds <= self.props.zeroTime) {\n const remainingTime = self.props.zeroTime - nowSeconds;\n const newClock = makeClock(remainingTime);\n if (newClock !== self.props.clock) {\n self.props.clockAction(newClock);\n }\n } else {\n let remainingTime = self.props.breakLength * 60;\n if (self.props.timer === 'Session') {\n self.props.timerAction('Break');\n } else {\n self.props.timerAction('Session');\n remainingTime = self.props.sessionLength * 60;\n }\n self.props.zeroTimeAction(nowSeconds + remainingTime);\n self.props.clockAction(makeClock(remainingTime));\n }\n }\n },1000);\n }\n };\n\n handleReset() {\n if (this.props.clockIsRunning) {\n this.props.clockIsRunningAction(false);\n }\n if (this.props.timer === 'Break') {\n this.props.timerAction('Session');\n }\n if (this.props.sessionLength !== 25) {\n this.props.sessionLengthAction(25);\n }\n if (this.props.breakLength !== 5) {\n this.props.breakLengthAction(5);\n }\n if (this.props.clock !== '25:00') {\n this.props.clockAction('25:00');\n }\n this.state.sound.pause();\n const oldSound = this.state.sound;\n oldSound.currentTime = 0;\n };\n\n componentDidUpdate(prevProps) {\n if (this.props.clock === '00:00') {\n this.state.sound.play();\n }\n };\n\n handleMouseEventPlay(e) {\n if (e.type === 'mousedown' || e.type === 'touchstart') {\n this.setState({playColor: colors.goldLeaf});\n } else if (e.type === 'mouseup' || e.type === 'touchend') {\n this.setState({playColor: colors.ivoryBlack});\n }\n };\n\n handleMouseEventPause(e) {\n if (e.type === 'mousedown' || e.type === 'touchstart') {\n this.setState({pauseColor: colors.goldLeaf});\n } else if (e.type === 'mouseup' || e.type === 'touchend') {\n this.setState({pauseColor: colors.ivoryBlack});\n }\n };\n\n handleMouseEventReset(e) {\n if (e.type === 'mousedown' || e.type === 'touchstart') {\n this.setState({resetColor: colors.goldLeaf});\n } else if (e.type === 'mouseup' || e.type === 'touchend') {\n this.setState({resetColor: colors.ivoryBlack});\n }\n };\n\n componentDidMount() {\n this.setState({sound: document.getElementById('beep')});\n };\n\n render() {\n const controlsStyle = {\n height: '20%',\n width: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n fontSize: 48,\n }\n\n const playStyle = {\n color: this.state.playColor,\n };\n\n const pauseStyle = {\n color: this.state.pauseColor,\n width: 150,\n };\n\n const resetStyle = {\n color: this.state.resetColor,\n };\n\n return(\n <div style={controlsStyle}>\n <div id='start_stop' style={playStyle} onClick={this.handlePlay}\n onMouseDown={this.handleMouseEventPlay} onMouseUp={this.handleMouseEventPlay}\n onTouchStart={this.handleMouseEventPlay} onTouchEnd={this.handleMouseEventPlay}>\n <FontAwesomeIcon icon={faPlayCircle}/>\n </div>\n\n <FontAwesomeIcon style={pauseStyle} onMouseDown={this.handleMouseEventPause}\n onMouseUp={this.handleMouseEventPause} onTouchStart={this.handleMouseEventPause}\n onTouchEnd={this.handleMouseEventPause} onClick={() => {this.props.clockIsRunningAction(false)}} icon={faPauseCircle}/>\n\n <div id='reset' style={resetStyle} onClick={this.handleReset}\n onMouseDown={this.handleMouseEventReset} onMouseUp={this.handleMouseEventReset}\n onTouchStart={this.handleMouseEventReset} onTouchEnd={this.handleMouseEventReset}>\n <FontAwesomeIcon icon={faSyncAlt}/>\n </div>\n\n <audio id='beep' preload='auto' src={BeepSoundOgg} type='audio/ogg'></audio>\n </div>\n );\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Controls);\n","import React from 'react';\nimport { connect } from \"react-redux\";\nimport { colors } from './globals'\n\nimport Top from './Top';\nimport Clock from './Clock';\nimport Controls from './Controls';\n\nconst mapStateToProps = (state) => ({ ...state });\n\nclass PomodoroClock extends React.Component {\n render() {\n const width = this.props.innerWindowWidth;\n const height = this.props.innerWindowHeight;\n const eightyPercentWidth = Math.round(width * 0.8);\n const eightyPercentHeight = Math.round(height * 0.8);\n const maxHeight = 500;\n const maxWidth = 800;\n const style = {\n margin: 'auto',\n border: '3px solid',\n borderColor: colors.ivoryBlack,\n zIndex: '1',\n backgroundColor: colors.skyBlue,\n borderRadius: 10,\n height: eightyPercentHeight < maxHeight ? eightyPercentHeight : maxHeight,\n width: eightyPercentWidth < maxWidth ? eightyPercentWidth : maxWidth,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'center',\n fontSize: 32,\n userSelect: 'none',\n MozUserSelect: 'none',\n WebkitUserSelect: 'none',\n };\n\n const clockContainerStyle = { \n height: '100%',\n width: '100%',\n };\n\n if (width > height && height < 450) {\n style['height'] = '96vh';\n style['width'] = '75vw';\n style['margin'] = '1vh auto 3vh auto';\n style['fontSize'] = 24;\n } else if (height > width) {\n if (height > (maxHeight + 179)) {\n style['margin'] = 'auto';\n } else {\n style['margin'] = '99px 0 80px 0';\n }\n style['height'] = Math.round(height * 0.75);\n style['maxHeight'] = maxHeight;\n clockContainerStyle['height'] = width > style['height'] ? style['height'] : width; \n clockContainerStyle['minHeight'] = '340px';\n clockContainerStyle['maxHeight'] = maxHeight;\n style['width'] = width - 6;\n style['maxWidth'] = maxWidth;\n style['fontSize'] = 24;\n }\n\n return(\n <div id='pomodoroClock' style={style}>\n <div id='clockContainer' style={clockContainerStyle}>\n <Top />\n <Clock />\n <Controls />\n </div>\n </div>\n );\n };\n};\n\nexport default connect(mapStateToProps)(PomodoroClock);\n","import React from 'react';\n\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\nimport { faExpand } from \"@fortawesome/free-solid-svg-icons\";\n\nclass FullScreen extends React.Component {\n constructor(props) {\n super(props);\n this.handleClick = this.handleClick.bind(this);\n };\n\n handleClick(e) {\n if (!document.fullscreenElement) {\n document.documentElement.requestFullscreen();\n } else {\n if (document.exitFullscreen){\n document.exitFullscreen();\n }\n }\n }\n\n render() {\n const expandIconStyle = {\n position: 'fixed',\n fontSize: 32,\n bottom: 10,\n right: 10,\n }\n\n return(\n <div>\n <FontAwesomeIcon icon={faExpand} style={expandIconStyle} onClick={this.handleClick}/>\n </div>\n );\n };\n};\n\nexport default FullScreen;\n","import React from 'react';\nimport { connect } from \"react-redux\";\n\nimport PomodoroClock from './PomodoroClock';\nimport FullScreen from './FullScreen';\n\nimport { colors } from './globals'\n\nimport { innerWindowWidthAction } from \"./actions/innerWindowWidthAction\";\nimport { innerWindowHeightAction } from \"./actions/innerWindowHeightAction\";\n\nconst mapStateToProps = (state) => ({ ...state });\n\nconst mapDispatchToProps = (dispatch) => ({\n innerWindowWidthAction: (windowInnerWidth) => dispatch(innerWindowWidthAction(windowInnerWidth)),\n innerWindowHeightAction: (windowInnerHeight) => dispatch(innerWindowHeightAction(windowInnerHeight)),\n});\n\nclass App extends React.Component {\n constructor(props) {\n super(props);\n this.handleResize = this.handleResize.bind(this);\n };\n\n handleResize() {\n this.props.innerWindowWidthAction(window.innerWidth);\n this.props.innerWindowHeightAction(window.innerHeight);\n };\n\n componentDidMount() {\n window.addEventListener('resize',this.handleResize);\n };\n\n componentWillUnmount() {\n window.removeEventListener('resize',this.handleResize);\n };\n\n render() {\n const height = this.props.innerWindowHeight;\n const width = this.props.innerWindowWidth;\n const gitHubLabelStyle = {\n backgroundColor: colors.prussianBlue,\n border: 'none',\n width: 149,\n height: 0,\n position: 'absolute',\n right: 0,\n };\n\n const attachmentStyle = {\n position: 'absolute',\n right: 0,\n height: 149,\n width: 149,\n };\n\n const style = {\n textAlign: 'center',\n backgroundColor: colors.prussianBlue,\n height: '100vh',\n width: '100vw',\n display: 'flex',\n flexDirection: 'column',\n color: colors.ivoryBlack,\n overFlow: 'hidden',\n fontFamily: 'Ubuntu, sans-serif',\n fontSize: 48,\n };\n\n if (width > height && height < 450) {\n gitHubLabelStyle['width'] = 99;\n attachmentStyle['width'] = 99;\n attachmentStyle['height'] = 99;\n } else if (height > width) {\n gitHubLabelStyle['width'] = 99;\n attachmentStyle['width'] = 99;\n attachmentStyle['height'] = 99;\n }\n\n return (\n <div style={style}>\n <a href=\"https://github.com/TrentSPalmer/fcc-challenges/tree/gh-pages/pomodoro-clock-react\"\n style={gitHubLabelStyle}\n target=\"_blank\" rel=\"noopener noreferrer\">\n <img\n src=\"https://github.blog/wp-content/uploads/2008/12/forkme_right_white_ffffff.png?resize=149%2C149\"\n className=\"size-full\"\n style={attachmentStyle}\n alt=\"Fork me on GitHub\"\n data-recalc-dims=\"1\">\n </img>\n </a>\n <PomodoroClock />\n { navigator.userAgent.includes('Mobile') && <FullScreen /> }\n </div>\n );\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from \"react-redux\";\nimport store from \"./store\";\n\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n <Provider store={store}>\n <App />\n </Provider>,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}