Skip to content

Instantly share code, notes, and snippets.

View souporserious's full-sized avatar

Travis Arnold souporserious

View GitHub Profile
<View
onNavigation={e => {
if (e.type.down || e.type.right) {
this.moveFocus(1)
}
}}
/>
const DATA_ATTRIBUTE_INDEX = 'data-focus-index'
const DATA_ATTRIBUTE_SKIP = 'data-focus-skip'
const focusableElements = [
'a[href]',
'area[href]',
'button:not([disabled])',
'embed',
'iframe',
'input:not([disabled])',
@souporserious
souporserious / createScrollFrame.js
Last active December 14, 2017 10:28
determine current scroll progress of an element
function createScrollFrame({
scrollPosition = window.pageYOffset,
triggerSize = window.innerHeight,
triggerOrigin = 0,
startElement,
startOrigin = 0,
startOffset = 0,
endElement,
endOrigin = 1,
endOffset = 0,
<Resize>
{ ({ bindElement, contentRects }) =>
<div {...bindElement({ id: 1, onResize: contentRect => console.log(contentRect) })}>
{contentRects['1']}
</div>
}
</Resize>
import React, { Component } from 'react'
import Collapse from './components/Collapse'
import OverflowMenu from './components/OverflowMenu'
import Popover from './components/Popover'
import Table from './components/Table'
import ResizeObserver from 'resize-observer-polyfill'
import createReactContext from 'create-react-context'
@souporserious
souporserious / table-grid.js
Created March 7, 2018 23:40
CSS Grid Table experiment
class App extends React.Component {
render() {
const columns = [
{
header: '',
cell: 'id',
},
{
header: 'First Name',
cell: 'firstName',
function shallowEqual(a, b) {
return JSON.stringify(a) === JSON.stringify(b)
}
function toggleValue(value, item) {
let previousValue = false
const newValue = value.reduce((values, value) => {
if (shallowEqual(item, value)) {
previousValue = true
return values
import React from 'react'
import ReactDOM from 'react-dom'
import AnimatedValue from '../../AnimatedValue'
const check = value => value === 'auto'
const convert = (acc, [name, value]) => ({
...acc,
[name]: new AnimatedValue(value),
})
@souporserious
souporserious / clone-children.js
Last active April 16, 2020 03:29
Utilities to join and clone React children.
/**
* Used to clone and apply props to children
*/
function cloneChildren(children, callback) {
const childrenArray = React.Children.toArray(children).filter(
child => child !== undefined && child !== null && child !== false
)
const childrenCount = childrenArray.length
return childrenArray.map(
(child, index) =>
@souporserious
souporserious / getJSONFromFigmaFile.js
Created July 13, 2018 21:52
Generates JSON from Figma file
import request from 'request'
const api_endpoint = 'https://api.figma.com/v1'
const personal_access_token = 'FIGMA_ACCESS_TOKEN_HERE' // https://www.figma.com/developers/docs#auth-dev-token
function downloadSvgFromAWS(url) {
return new Promise((resolve, reject) => {
request.get(
url,
{