Drafts
or MousePos, or MouseTrack, idk what is best name yet
Mouse is binded in a element, and your ratio values are relative to this element.
| // passing object to render with two fns (opener & content, for example) | |
| <Modal> | |
| {{ | |
| opener: ({ open }) => <button onClick={open}>Open Modal</button>, | |
| content: {{ close }) => <div><h2>Hi modal</h2> <button onClick={close}>Close me</button></div> | |
| }} | |
| </Modal> | |
| // passing as children array | |
| // https://stackblitz.com/edit/react-array-render-props |
| export const uncurry = (fn) => (...args) => { | |
| let result = fn | |
| for(i in args){ | |
| result = typeof result === 'function' | |
| ? result(args[i]) | |
| : result | |
| } | |
| return result | |
| } |
| class ToggleOpened extends Component { | |
| state = { opened: false } | |
| toggle = () => | |
| this.setState(state => ({ opened: !state.opened })) | |
| render() { | |
| return this.props.render({ | |
| opened: this.state.opened, | |
| toggle: this.toggle, |
| <WhatIsTheMeaningOfLife | |
| context={someInput} | |
| render={meaningOfLife => ( | |
| <MyBeautifulUI> | |
| {meaningOfLife} | |
| </MyBeautifulUI> | |
| )} | |
| /> |
| const breakpoints = { | |
| 900: { name: 'Tablet' }, | |
| 600: { name: 'Mobile' }, | |
| } | |
| render( | |
| <Hello name="Desktop" bps={breakpoints} />, | |
| document.getElementById('root') | |
| ) |
| const toPairs = obj => Object.keys(obj).reduce((acc, value) => [ ...acc, [value, obj[value]] ], []); |