export function toArray (children) { const c = [] children.forEach(child => { if (child.data) { c.push(child) } }) return c } export function getActiveIndex (children, activeKey) { const c = toArray(children) for (let i = 0; i < c.length; i++) { if (c[i].key === activeKey) { return i } } return -1 } export function getActiveKey (children, index) { const c = toArray(children) return c[index].key } export function setTransform (style, v) { style.transform = v style.webkitTransform = v style.mozTransform = v } export function isTransformSupported (style) { return 'transform' in style || 'webkitTransform' in style || 'MozTransform' in style } export function setTransition (style, v) { style.transition = v style.webkitTransition = v style.MozTransition = v } export function getTransformPropValue (v) { return { transform: v, WebkitTransform: v, MozTransform: v, } } export function isVertical (tabBarPosition) { return tabBarPosition === 'left' || tabBarPosition === 'right' } export function getTransformByIndex (index, tabBarPosition) { const translate = isVertical(tabBarPosition) ? 'translateY' : 'translateX' return `${translate}(${-index * 100}%) translateZ(0)` } export function getMarginStyle (index, tabBarPosition) { const marginDirection = isVertical(tabBarPosition) ? 'marginTop' : 'marginLeft' return { [marginDirection]: `${-index * 100}%`, } } export function getStyle (el, property) { return +window.getComputedStyle(el).getPropertyValue(property).replace('px', '') } export function setPxStyle (el, value, vertical) { value = vertical ? `0px, ${value}px, 0px` : `${value}px, 0px, 0px` setTransform(el.style, `translate3d(${value})`) } export function getDataAttr (props) { return Object.keys(props).reduce((prev, key) => { if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') { prev[key] = props[key] } return prev }, {}) }