UNPKG

19.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"Clock-48fde975.js","sources":["../../src/constants/ClockType.ts","../../src/views/Clock/ClockPointer.tsx","../../src/_helpers/time-utils.ts","../../src/views/Clock/Clock.tsx"],"sourcesContent":["enum ClockType {\n HOURS = 'hours',\n\n MINUTES = 'minutes',\n\n SECONDS = 'seconds',\n}\n\nexport type ClockViewType = 'hours' | 'minutes' | 'seconds';\n\nexport default ClockType;\n","import * as React from 'react';\nimport clsx from 'clsx';\nimport ClockType, { ClockViewType } from '../../constants/ClockType';\nimport { Theme } from '@material-ui/core/styles';\nimport { withStyles, createStyles, WithStyles } from '@material-ui/core/styles';\n\nexport interface ClockPointerProps extends WithStyles<typeof styles> {\n value: number;\n hasSelected: boolean;\n isInner: boolean;\n type: ClockViewType;\n}\n\nexport class ClockPointer extends React.Component<ClockPointerProps> {\n public static getDerivedStateFromProps = (\n nextProps: ClockPointerProps,\n state: ClockPointer['state']\n ) => {\n if (nextProps.type !== state.previousType) {\n return {\n toAnimateTransform: true,\n previousType: nextProps.type,\n };\n }\n\n return {\n toAnimateTransform: false,\n previousType: nextProps.type,\n };\n };\n\n public state = {\n toAnimateTransform: false,\n previousType: undefined,\n };\n\n public getAngleStyle = () => {\n const { value, isInner, type } = this.props;\n\n const max = type === ClockType.HOURS ? 12 : 60;\n let angle = (360 / max) * value;\n\n if (type === ClockType.HOURS && value > 12) {\n angle -= 360; // round up angle to max 360 degrees\n }\n\n return {\n height: isInner ? '26%' : '40%',\n transform: `rotateZ(${angle}deg)`,\n };\n };\n\n public render() {\n const { classes, hasSelected } = this.props;\n\n return (\n <div\n style={this.getAngleStyle()}\n className={clsx(classes.pointer, {\n [classes.animateTransform]: this.state.toAnimateTransform,\n })}\n >\n <div\n className={clsx(classes.thumb, {\n [classes.noPoint]: hasSelected,\n })}\n />\n </div>\n );\n }\n}\n\nexport const styles = (theme: Theme) =>\n createStyles({\n pointer: {\n width: 2,\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n left: 'calc(50% - 1px)',\n bottom: '50%',\n transformOrigin: 'center bottom 0px',\n },\n animateTransform: {\n transition: theme.transitions.create(['transform', 'height']),\n },\n thumb: {\n width: 4,\n height: 4,\n backgroundColor: theme.palette.primary.contrastText,\n borderRadius: '100%',\n position: 'absolute',\n top: -21,\n left: -15,\n border: `14px solid ${theme.palette.primary.main}`,\n boxSizing: 'content-box',\n },\n noPoint: {\n backgroundColor: theme.palette.primary.main,\n },\n });\n\nexport default withStyles(styles, {\n name: 'MuiPickersClockPointer',\n})(ClockPointer as React.ComponentType<ClockPointerProps>);\n","import { IUtils } from '@date-io/core/IUtils';\nimport { MaterialUiPickersDate } from '../typings/date';\n\nconst center = {\n x: 260 / 2,\n y: 260 / 2,\n};\n\nconst basePoint = {\n x: center.x,\n y: 0,\n};\n\nconst cx = basePoint.x - center.x;\nconst cy = basePoint.y - center.y;\n\nconst rad2deg = (rad: number) => rad * 57.29577951308232;\n\nconst getAngleValue = (step: number, offsetX: number, offsetY: number) => {\n const x = offsetX - center.x;\n const y = offsetY - center.y;\n\n const atan = Math.atan2(cx, cy) - Math.atan2(x, y);\n\n let deg = rad2deg(atan);\n deg = Math.round(deg / step) * step;\n deg %= 360;\n\n const value = Math.floor(deg / step) || 0;\n const delta = Math.pow(x, 2) + Math.pow(y, 2);\n const distance = Math.sqrt(delta);\n\n return { value, distance };\n};\n\nexport const getHours = (offsetX: number, offsetY: number, ampm: boolean) => {\n let { value, distance } = getAngleValue(30, offsetX, offsetY);\n value = value || 12;\n\n if (!ampm) {\n if (distance < 90) {\n value += 12;\n value %= 24;\n }\n } else {\n value %= 12;\n }\n\n return value;\n};\n\nexport const getMinutes = (offsetX: number, offsetY: number, step = 1) => {\n const angleStep = step * 6;\n let { value } = getAngleValue(angleStep, offsetX, offsetY);\n value = (value * step) % 60;\n\n return value;\n};\n\nexport const getMeridiem = (\n date: MaterialUiPickersDate,\n utils: IUtils<MaterialUiPickersDate>\n): 'am' | 'pm' => {\n return utils.getHours(date) >= 12 ? 'pm' : 'am';\n};\n\nexport const convertToMeridiem = (\n time: MaterialUiPickersDate,\n meridiem: 'am' | 'pm',\n ampm: boolean,\n utils: IUtils<MaterialUiPickersDate>\n) => {\n if (ampm) {\n const currentMeridiem = utils.getHours(time) >= 12 ? 'pm' : 'am';\n if (currentMeridiem !== meridiem) {\n const hours = meridiem === 'am' ? utils.getHours(time) - 12 : utils.getHours(time) + 12;\n\n return utils.setHours(time, hours);\n }\n }\n\n return time;\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport ClockPointer from './ClockPointer';\nimport ClockType, { ClockViewType } from '../../constants/ClockType';\nimport { getHours, getMinutes } from '../../_helpers/time-utils';\nimport { withStyles, createStyles, WithStyles, Theme } from '@material-ui/core/styles';\n\nexport interface ClockProps extends WithStyles<typeof styles> {\n type: ClockViewType;\n value: number;\n onChange: (value: number, isFinish?: boolean) => void;\n ampm?: boolean;\n minutesStep?: number;\n children: React.ReactElement<any>[];\n}\n\nexport class Clock extends React.Component<ClockProps> {\n public static propTypes: any = {\n type: PropTypes.oneOf(\n Object.keys(ClockType).map(key => ClockType[key as keyof typeof ClockType])\n ).isRequired,\n value: PropTypes.number.isRequired,\n onChange: PropTypes.func.isRequired,\n children: PropTypes.arrayOf(PropTypes.node).isRequired,\n ampm: PropTypes.bool,\n minutesStep: PropTypes.number,\n innerRef: PropTypes.any,\n };\n\n public static defaultProps = {\n ampm: false,\n minutesStep: 1,\n };\n\n public isMoving = false;\n\n public setTime(e: any, isFinish = false) {\n let { offsetX, offsetY } = e;\n\n if (typeof offsetX === 'undefined') {\n const rect = e.target.getBoundingClientRect();\n\n offsetX = e.changedTouches[0].clientX - rect.left;\n offsetY = e.changedTouches[0].clientY - rect.top;\n }\n\n const value =\n this.props.type === ClockType.SECONDS || this.props.type === ClockType.MINUTES\n ? getMinutes(offsetX, offsetY, this.props.minutesStep)\n : getHours(offsetX, offsetY, Boolean(this.props.ampm));\n\n this.props.onChange(value, isFinish);\n }\n\n public handleTouchMove = (e: React.TouchEvent) => {\n this.isMoving = true;\n this.setTime(e);\n };\n\n public handleTouchEnd = (e: React.TouchEvent) => {\n if (this.isMoving) {\n this.setTime(e, true);\n this.isMoving = false;\n }\n };\n\n public handleMove = (e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n // MouseEvent.which is deprecated, but MouseEvent.buttons is not supported in Safari\n const isButtonPressed =\n typeof e.buttons === 'undefined' ? e.nativeEvent.which === 1 : e.buttons === 1;\n\n if (isButtonPressed) {\n this.setTime(e.nativeEvent, false);\n }\n };\n\n public handleMouseUp = (e: React.MouseEvent) => {\n if (this.isMoving) {\n this.isMoving = false;\n }\n\n this.setTime(e.nativeEvent, true);\n };\n\n public hasSelected = () => {\n const { type, value } = this.props;\n\n if (type === ClockType.HOURS) {\n return true;\n }\n\n return value % 5 === 0;\n };\n\n public render() {\n const { classes, value, children, type, ampm } = this.props;\n\n const isPointerInner = !ampm && type === ClockType.HOURS && (value < 1 || value > 12);\n\n return (\n <div className={classes.container}>\n <div className={classes.clock}>\n <div\n role=\"menu\"\n tabIndex={-1}\n className={classes.squareMask}\n onTouchMove={this.handleTouchMove}\n onTouchEnd={this.handleTouchEnd}\n onMouseUp={this.handleMouseUp}\n onMouseMove={this.handleMove}\n />\n\n <div className={classes.pin} />\n\n <ClockPointer\n type={type}\n value={value}\n isInner={isPointerInner}\n hasSelected={this.hasSelected()}\n />\n\n {children}\n </div>\n </div>\n );\n }\n}\n\nexport const styles = (theme: Theme) =>\n createStyles({\n container: {\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'flex-end',\n margin: `${theme.spacing(2)}px 0 ${theme.spacing(1)}px`,\n },\n clock: {\n backgroundColor: 'rgba(0,0,0,.07)',\n borderRadius: '50%',\n height: 260,\n width: 260,\n position: 'relative',\n pointerEvents: 'none',\n },\n squareMask: {\n width: '100%',\n height: '100%',\n position: 'absolute',\n pointerEvents: 'auto',\n outline: 'none',\n touchActions: 'none',\n userSelect: 'none',\n '&:active': {\n cursor: 'move',\n },\n },\n pin: {\n width: 6,\n height: 6,\n borderRadius: '50%',\n backgroundColor: theme.palette.primary.main,\n position: 'absolute',\n top: '50%',\n left: '50%',\n transform: 'translate(-50%, -50%)',\n },\n });\n\nexport default withStyles(styles, {\n name: 'MuiPickersClock',\n})(Clock as React.ComponentType<ClockProps>);\n"],"names":["ClockType","ClockPointer","state","toAnimateTransform","previousType","undefined","getAngleStyle","props","value","isInner","type","max","HOURS","angle","height","transform","classes","hasSelected","React.createElement","clsx","pointer","animateTransform","thumb","noPoint","React","getDerivedStateFromProps","nextProps","styles","theme","createStyles","width","backgroundColor","palette","primary","main","position","left","bottom","transformOrigin","transition","transitions","create","contrastText","borderRadius","top","border","boxSizing","withStyles","name","center","x","y","basePoint","cx","cy","rad2deg","rad","getAngleValue","step","offsetX","offsetY","atan","Math","atan2","deg","round","floor","delta","pow","distance","sqrt","getHours","ampm","getMinutes","angleStep","getMeridiem","date","utils","convertToMeridiem","time","meridiem","currentMeridiem","hours","setHours","Clock","isMoving","handleTouchMove","e","setTime","handleTouchEnd","handleMove","preventDefault","stopPropagation","isButtonPressed","buttons","nativeEvent","which","handleMouseUp","isFinish","rect","target","getBoundingClientRect","changedTouches","clientX","clientY","SECONDS","MINUTES","minutesStep","Boolean","onChange","children","isPointerInner","container","clock","squareMask","pin","propTypes","PropTypes","Object","keys","map","key","isRequired","innerRef","defaultProps","display","justifyContent","alignItems","margin","spacing","pointerEvents","outline","touchActions","userSelect","cursor"],"mappings":"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"}
\No newline at end of file