From 1dda41f6b3342f78149f644c7bcc04c831f78c0a Mon Sep 17 00:00:00 2001 From: Jimmy Wei Date: Wed, 10 Jul 2019 16:08:32 +0100 Subject: [PATCH 1/7] Implement label container style --- src/components/dropdown/index.js | 1286 +++++++++++++++--------------- 1 file changed, 644 insertions(+), 642 deletions(-) diff --git a/src/components/dropdown/index.js b/src/components/dropdown/index.js index b1e65a1f..6658292e 100644 --- a/src/components/dropdown/index.js +++ b/src/components/dropdown/index.js @@ -1,16 +1,16 @@ import PropTypes from 'prop-types'; import React, { PureComponent } from 'react'; import { - Text, - View, - FlatList, - Animated, - Modal, - TouchableWithoutFeedback, - Dimensions, - Platform, - ViewPropTypes, - I18nManager, + Text, + View, + FlatList, + Animated, + Modal, + TouchableWithoutFeedback, + Dimensions, + Platform, + ViewPropTypes, + I18nManager, } from 'react-native'; import Ripple from 'react-native-material-ripple'; import { TextField } from 'react-native-material-textfield'; @@ -19,748 +19,750 @@ import DropdownItem from '../item'; import styles from './styles'; export default class Dropdown extends PureComponent { - static defaultProps = { - hitSlop: { top: 6, right: 4, bottom: 6, left: 4 }, + static defaultProps = { + hitSlop: { top: 6, right: 4, bottom: 6, left: 4 }, - disabled: false, + disabled: false, - data: [], + data: [], - valueExtractor: ({ value } = {}, index) => value, - labelExtractor: ({ label } = {}, index) => label, - propsExtractor: () => null, + valueExtractor: ({ value } = {}, index) => value, + labelExtractor: ({ label } = {}, index) => label, + propsExtractor: () => null, - absoluteRTLLayout: false, + absoluteRTLLayout: false, - dropdownOffset: { - top: 32, - left: 0, - }, + dropdownOffset: { + top: 32, + left: 0, + }, - dropdownMargins: { - min: 8, - max: 16, - }, + dropdownMargins: { + min: 8, + max: 16, + }, - rippleCentered: false, - rippleSequential: true, + rippleCentered: false, + rippleSequential: true, - rippleInsets: { - top: 16, - right: 0, - bottom: -8, - left: 0, - }, + rippleInsets: { + top: 16, + right: 0, + bottom: -8, + left: 0, + }, - rippleOpacity: 0.54, - shadeOpacity: 0.12, + rippleOpacity: 0.54, + shadeOpacity: 0.12, - rippleDuration: 400, - animationDuration: 225, + rippleDuration: 400, + animationDuration: 225, - fontSize: 16, + fontSize: 16, - textColor: 'rgba(0, 0, 0, .87)', - itemColor: 'rgba(0, 0, 0, .54)', - baseColor: 'rgba(0, 0, 0, .38)', + textColor: 'rgba(0, 0, 0, .87)', + itemColor: 'rgba(0, 0, 0, .54)', + baseColor: 'rgba(0, 0, 0, .38)', - itemCount: 4, - itemPadding: 8, + itemCount: 4, + itemPadding: 8, - supportedOrientations: [ - 'portrait', - 'portrait-upside-down', - 'landscape', - 'landscape-left', - 'landscape-right', - ], + supportedOrientations: [ + 'portrait', + 'portrait-upside-down', + 'landscape', + 'landscape-left', + 'landscape-right', + ], - useNativeDriver: false, - }; + useNativeDriver: false, + }; - static propTypes = { - ...TouchableWithoutFeedback.propTypes, + static propTypes = { + ...TouchableWithoutFeedback.propTypes, - disabled: PropTypes.bool, + disabled: PropTypes.bool, - value: PropTypes.oneOfType([ - PropTypes.string, - PropTypes.number, - ]), + value: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.number, + ]), - data: PropTypes.arrayOf(PropTypes.object), + data: PropTypes.arrayOf(PropTypes.object), - valueExtractor: PropTypes.func, - labelExtractor: PropTypes.func, - propsExtractor: PropTypes.func, + valueExtractor: PropTypes.func, + labelExtractor: PropTypes.func, + propsExtractor: PropTypes.func, - absoluteRTLLayout: PropTypes.bool, + absoluteRTLLayout: PropTypes.bool, - dropdownOffset: PropTypes.shape({ - top: PropTypes.number.isRequired, - left: PropTypes.number.isRequired, - }), + dropdownOffset: PropTypes.shape({ + top: PropTypes.number.isRequired, + left: PropTypes.number.isRequired, + }), - dropdownMargins: PropTypes.shape({ - min: PropTypes.number.isRequired, - max: PropTypes.number.isRequired, - }), + dropdownMargins: PropTypes.shape({ + min: PropTypes.number.isRequired, + max: PropTypes.number.isRequired, + }), - dropdownPosition: PropTypes.number, + dropdownPosition: PropTypes.number, - rippleColor: PropTypes.string, - rippleCentered: PropTypes.bool, - rippleSequential: PropTypes.bool, + rippleColor: PropTypes.string, + rippleCentered: PropTypes.bool, + rippleSequential: PropTypes.bool, - rippleInsets: PropTypes.shape({ - top: PropTypes.number, - right: PropTypes.number, - bottom: PropTypes.number, - left: PropTypes.number, - }), + rippleInsets: PropTypes.shape({ + top: PropTypes.number, + right: PropTypes.number, + bottom: PropTypes.number, + left: PropTypes.number, + }), - rippleOpacity: PropTypes.number, - shadeOpacity: PropTypes.number, + rippleOpacity: PropTypes.number, + shadeOpacity: PropTypes.number, - rippleDuration: PropTypes.number, - animationDuration: PropTypes.number, + rippleDuration: PropTypes.number, + animationDuration: PropTypes.number, - fontSize: PropTypes.number, + fontSize: PropTypes.number, - textColor: PropTypes.string, - itemColor: PropTypes.string, - selectedItemColor: PropTypes.string, - disabledItemColor: PropTypes.string, - baseColor: PropTypes.string, + textColor: PropTypes.string, + itemColor: PropTypes.string, + selectedItemColor: PropTypes.string, + disabledItemColor: PropTypes.string, + baseColor: PropTypes.string, - itemTextStyle: Text.propTypes.style, + itemTextStyle: Text.propTypes.style, - itemCount: PropTypes.number, - itemPadding: PropTypes.number, + itemCount: PropTypes.number, + itemPadding: PropTypes.number, - onLayout: PropTypes.func, - onFocus: PropTypes.func, - onBlur: PropTypes.func, - onChangeText: PropTypes.func, + onLayout: PropTypes.func, + onFocus: PropTypes.func, + onBlur: PropTypes.func, + onChangeText: PropTypes.func, - renderBase: PropTypes.func, - renderAccessory: PropTypes.func, + renderBase: PropTypes.func, + renderAccessory: PropTypes.func, - containerStyle: (ViewPropTypes || View.propTypes).style, - overlayStyle: (ViewPropTypes || View.propTypes).style, - pickerStyle: (ViewPropTypes || View.propTypes).style, + labelContainerStyle: (ViewPropTypes || View.propTypes).style, + containerStyle: (ViewPropTypes || View.propTypes).style, + overlayStyle: (ViewPropTypes || View.propTypes).style, + pickerStyle: (ViewPropTypes || View.propTypes).style, - supportedOrientations: PropTypes.arrayOf(PropTypes.string), + supportedOrientations: PropTypes.arrayOf(PropTypes.string), - useNativeDriver: PropTypes.bool, - }; + useNativeDriver: PropTypes.bool, + }; - constructor(props) { - super(props); + constructor(props) { + super(props); - this.onPress = this.onPress.bind(this); - this.onClose = this.onClose.bind(this); - this.onSelect = this.onSelect.bind(this); - this.onLayout = this.onLayout.bind(this); + this.onPress = this.onPress.bind(this); + this.onClose = this.onClose.bind(this); + this.onSelect = this.onSelect.bind(this); + this.onLayout = this.onLayout.bind(this); - this.updateRippleRef = this.updateRef.bind(this, 'ripple'); - this.updateContainerRef = this.updateRef.bind(this, 'container'); - this.updateScrollRef = this.updateRef.bind(this, 'scroll'); + this.updateRippleRef = this.updateRef.bind(this, 'ripple'); + this.updateContainerRef = this.updateRef.bind(this, 'container'); + this.updateScrollRef = this.updateRef.bind(this, 'scroll'); - this.renderAccessory = this.renderAccessory.bind(this); - this.renderItem = this.renderItem.bind(this); + this.renderAccessory = this.renderAccessory.bind(this); + this.renderItem = this.renderItem.bind(this); - this.keyExtractor = this.keyExtractor.bind(this); + this.keyExtractor = this.keyExtractor.bind(this); - this.blur = () => this.onClose(); - this.focus = this.onPress; + this.blur = () => this.onClose(); + this.focus = this.onPress; - let { value } = this.props; + let { value } = this.props; - this.mounted = false; - this.focused = false; + this.mounted = false; + this.focused = false; - this.state = { - opacity: new Animated.Value(0), - selected: -1, - modal: false, - value, - }; - } + this.state = { + opacity: new Animated.Value(0), + selected: -1, + modal: false, + value, + }; + } - componentWillReceiveProps({ value }) { - if (value !== this.props.value) { - this.setState({ value }); + componentWillReceiveProps({ value }) { + if (value !== this.props.value) { + this.setState({ value }); + } } - } - - componentDidMount() { - this.mounted = true; - } - - componentWillUnmount() { - this.mounted = false; - } - - onPress(event) { - let { - data, - disabled, - onFocus, - itemPadding, - rippleDuration, - dropdownOffset, - dropdownMargins: { min: minMargin, max: maxMargin }, - animationDuration, - absoluteRTLLayout, - useNativeDriver, - } = this.props; - - if (disabled) { - return; + + componentDidMount() { + this.mounted = true; } - let itemCount = data.length; - let timestamp = Date.now(); + componentWillUnmount() { + this.mounted = false; + } - if (null != event) { - /* Adjust event location */ - event.nativeEvent.locationY -= this.rippleInsets().top; - event.nativeEvent.locationX -= this.rippleInsets().left; + onPress(event) { + let { + data, + disabled, + onFocus, + itemPadding, + rippleDuration, + dropdownOffset, + dropdownMargins: { min: minMargin, max: maxMargin }, + animationDuration, + absoluteRTLLayout, + useNativeDriver, + } = this.props; + + if (disabled) { + return; + } - /* Start ripple directly from event */ - this.ripple.startRipple(event); - } + let itemCount = data.length; + let timestamp = Date.now(); - if (!itemCount) { - return; - } + if (null != event) { + /* Adjust event location */ + event.nativeEvent.locationY -= this.rippleInsets().top; + event.nativeEvent.locationX -= this.rippleInsets().left; + + /* Start ripple directly from event */ + this.ripple.startRipple(event); + } + + if (!itemCount) { + return; + } + + this.focused = true; + + if ('function' === typeof onFocus) { + onFocus(); + } + + let dimensions = Dimensions.get('window'); + + this.container.measureInWindow((x, y, containerWidth, containerHeight) => { + let { opacity } = this.state; - this.focused = true; + /* Adjust coordinates for relative layout in RTL locale */ + if (I18nManager.isRTL && !absoluteRTLLayout) { + x = dimensions.width - (x + containerWidth); + } + + let delay = Math.max(0, rippleDuration - animationDuration - (Date.now() - timestamp)); + let selected = this.selectedIndex(); + + let leftInset; + let left = x + + dropdownOffset.left + - maxMargin; + + if (left > minMargin) { + leftInset = maxMargin; + } else { + left = minMargin; + leftInset = minMargin; + } + + let right = x + containerWidth + maxMargin; + let rightInset; + + if (dimensions.width - right > minMargin) { + rightInset = maxMargin; + } else { + right = dimensions.width - minMargin; + rightInset = minMargin; + } - if ('function' === typeof onFocus) { - onFocus(); + let top = y + + dropdownOffset.top + - itemPadding; + + this.setState({ + modal: true, + width: right - left, + top, + left, + leftInset, + rightInset, + selected, + }); + + setTimeout((() => { + if (this.mounted) { + this.resetScrollOffset(); + + Animated + .timing(opacity, { + duration: animationDuration, + toValue: 1, + useNativeDriver, + }) + .start(() => { + if (this.mounted && 'ios' === Platform.OS) { + let { flashScrollIndicators } = this.scroll || {}; + + if ('function' === typeof flashScrollIndicators) { + flashScrollIndicators.call(this.scroll); + } + } + }); + } + }), delay); + }); } - let dimensions = Dimensions.get('window'); - - this.container.measureInWindow((x, y, containerWidth, containerHeight) => { - let { opacity } = this.state; - - /* Adjust coordinates for relative layout in RTL locale */ - if (I18nManager.isRTL && !absoluteRTLLayout) { - x = dimensions.width - (x + containerWidth); - } - - let delay = Math.max(0, rippleDuration - animationDuration - (Date.now() - timestamp)); - let selected = this.selectedIndex(); - - let leftInset; - let left = x - + dropdownOffset.left - - maxMargin; - - if (left > minMargin) { - leftInset = maxMargin; - } else { - left = minMargin; - leftInset = minMargin; - } - - let right = x + containerWidth + maxMargin; - let rightInset; - - if (dimensions.width - right > minMargin) { - rightInset = maxMargin; - } else { - right = dimensions.width - minMargin; - rightInset = minMargin; - } - - let top = y - + dropdownOffset.top - - itemPadding; - - this.setState({ - modal: true, - width: right - left, - top, - left, - leftInset, - rightInset, - selected, - }); - - setTimeout((() => { - if (this.mounted) { - this.resetScrollOffset(); - - Animated + onClose(value = this.state.value) { + let { onBlur, animationDuration, useNativeDriver } = this.props; + let { opacity } = this.state; + + Animated .timing(opacity, { - duration: animationDuration, - toValue: 1, - useNativeDriver, + duration: animationDuration, + toValue: 0, + useNativeDriver, }) .start(() => { - if (this.mounted && 'ios' === Platform.OS) { - let { flashScrollIndicators } = this.scroll || {}; + this.focused = false; + + if ('function' === typeof onBlur) { + onBlur(); + } - if ('function' === typeof flashScrollIndicators) { - flashScrollIndicators.call(this.scroll); + if (this.mounted) { + this.setState({ value, modal: false }); } - } }); - } - }), delay); - }); - } - - onClose(value = this.state.value) { - let { onBlur, animationDuration, useNativeDriver } = this.props; - let { opacity } = this.state; - - Animated - .timing(opacity, { - duration: animationDuration, - toValue: 0, - useNativeDriver, - }) - .start(() => { - this.focused = false; + } - if ('function' === typeof onBlur) { - onBlur(); - } + onSelect(index) { + let { + data, + valueExtractor, + onChangeText, + animationDuration, + rippleDuration, + } = this.props; - if (this.mounted) { - this.setState({ value, modal: false }); + let value = valueExtractor(data[index], index); + let delay = Math.max(0, rippleDuration - animationDuration); + + if ('function' === typeof onChangeText) { + onChangeText(value, index, data); } - }); - } - - onSelect(index) { - let { - data, - valueExtractor, - onChangeText, - animationDuration, - rippleDuration, - } = this.props; - - let value = valueExtractor(data[index], index); - let delay = Math.max(0, rippleDuration - animationDuration); - - if ('function' === typeof onChangeText) { - onChangeText(value, index, data); - } - setTimeout(() => this.onClose(value), delay); - } + setTimeout(() => this.onClose(value), delay); + } - onLayout(event) { - let { onLayout } = this.props; + onLayout(event) { + let { onLayout } = this.props; - if ('function' === typeof onLayout) { - onLayout(event); + if ('function' === typeof onLayout) { + onLayout(event); + } } - } - - value() { - let { value } = this.state; - return value; - } + value() { + let { value } = this.state; - selectedIndex() { - let { value } = this.state; - let { data, valueExtractor } = this.props; + return value; + } - return data - .findIndex((item, index) => null != item && value === valueExtractor(item, index)); - } + selectedIndex() { + let { value } = this.state; + let { data, valueExtractor } = this.props; - selectedItem() { - let { data } = this.props; + return data + .findIndex((item, index) => null != item && value === valueExtractor(item, index)); + } - return data[this.selectedIndex()]; - } + selectedItem() { + let { data } = this.props; - isFocused() { - return this.focused; - } + return data[this.selectedIndex()]; + } - itemSize() { - let { fontSize, itemPadding } = this.props; + isFocused() { + return this.focused; + } - return Math.ceil(fontSize * 1.5 + itemPadding * 2); - } + itemSize() { + let { fontSize, itemPadding } = this.props; - visibleItemCount() { - let { data, itemCount } = this.props; + return Math.ceil(fontSize * 1.5 + itemPadding * 2); + } - return Math.min(data.length, itemCount); - } + visibleItemCount() { + let { data, itemCount } = this.props; - tailItemCount() { - return Math.max(this.visibleItemCount() - 2, 0); - } + return Math.min(data.length, itemCount); + } - rippleInsets() { - let { - top = 16, - right = 0, - bottom = -8, - left = 0, - } = this.props.rippleInsets || {}; + tailItemCount() { + return Math.max(this.visibleItemCount() - 2, 0); + } - return { top, right, bottom, left }; - } + rippleInsets() { + let { + top = 16, + right = 0, + bottom = -8, + left = 0, + } = this.props.rippleInsets || {}; - resetScrollOffset() { - let { selected } = this.state; - let { data, dropdownPosition } = this.props; + return { top, right, bottom, left }; + } - let offset = 0; - let itemCount = data.length; - let itemSize = this.itemSize(); - let tailItemCount = this.tailItemCount(); - let visibleItemCount = this.visibleItemCount(); + resetScrollOffset() { + let { selected } = this.state; + let { data, dropdownPosition } = this.props; + + let offset = 0; + let itemCount = data.length; + let itemSize = this.itemSize(); + let tailItemCount = this.tailItemCount(); + let visibleItemCount = this.visibleItemCount(); + + if (itemCount > visibleItemCount) { + if (null == dropdownPosition) { + switch (selected) { + case -1: + break; + + case 0: + case 1: + break; + + default: + if (selected >= itemCount - tailItemCount) { + offset = itemSize * (itemCount - visibleItemCount); + } else { + offset = itemSize * (selected - 1); + } + } + } else { + let index = selected - dropdownPosition; - if (itemCount > visibleItemCount) { - if (null == dropdownPosition) { - switch (selected) { - case -1: - break; + if (dropdownPosition < 0) { + index -= visibleItemCount; + } - case 0: - case 1: - break; + index = Math.max(0, index); + index = Math.min(index, itemCount - visibleItemCount); - default: - if (selected >= itemCount - tailItemCount) { - offset = itemSize * (itemCount - visibleItemCount); - } else { - offset = itemSize * (selected - 1); + if (~selected) { + offset = itemSize * index; + } } } - } else { - let index = selected - dropdownPosition; - - if (dropdownPosition < 0) { - index -= visibleItemCount; - } - index = Math.max(0, index); - index = Math.min(index, itemCount - visibleItemCount); - - if (~selected) { - offset = itemSize * index; + if (this.scroll) { + this.scroll.scrollToOffset({ offset, animated: false }); } - } } - if (this.scroll) { - this.scroll.scrollToOffset({ offset, animated: false }); + updateRef(name, ref) { + this[name] = ref; } - } - - updateRef(name, ref) { - this[name] = ref; - } - keyExtractor(item, index) { - let { valueExtractor } = this.props; + keyExtractor(item, index) { + let { valueExtractor } = this.props; - return `${index}-${valueExtractor(item, index)}`; - } + return `${index}-${valueExtractor(item, index)}`; + } - renderBase(props) { - let { value } = this.state; - let { - data, - renderBase, - labelExtractor, - dropdownOffset, - renderAccessory = this.renderAccessory, - } = this.props; + renderBase(props) { + let { value } = this.state; + let { + data, + renderBase, + labelExtractor, + dropdownOffset, + renderAccessory = this.renderAccessory, + } = this.props; + + let index = this.selectedIndex(); + let title; + + if (~index) { + title = labelExtractor(data[index], index); + } - let index = this.selectedIndex(); - let title; + if (null == title) { + title = value; + } - if (~index) { - title = labelExtractor(data[index], index); - } + if ('function' === typeof renderBase) { + return renderBase({ ...props, title, value, renderAccessory }); + } - if (null == title) { - title = value; + title = null == title || 'string' === typeof title ? + title : + String(title); + + return ( + + ); } - if ('function' === typeof renderBase) { - return renderBase({ ...props, title, value, renderAccessory }); + renderRipple() { + let { + baseColor, + rippleColor = baseColor, + rippleOpacity, + rippleDuration, + rippleCentered, + rippleSequential, + } = this.props; + + let { bottom, ...insets } = this.rippleInsets(); + let style = { + ...insets, + + height: this.itemSize() - bottom, + position: 'absolute', + }; + + return ( + + ); } - title = null == title || 'string' === typeof title? - title: - String(title); - - return ( - - ); - } - - renderRipple() { - let { - baseColor, - rippleColor = baseColor, - rippleOpacity, - rippleDuration, - rippleCentered, - rippleSequential, - } = this.props; - - let { bottom, ...insets } = this.rippleInsets(); - let style = { - ...insets, - - height: this.itemSize() - bottom, - position: 'absolute', - }; - - return ( - - ); - } - - renderAccessory() { - let { baseColor: backgroundColor } = this.props; - let triangleStyle = { backgroundColor }; - - return ( - - - - - - ); - } - - renderItem({ item, index }) { - if (null == item) { - return null; - } + renderAccessory() { + let { baseColor: backgroundColor } = this.props; + let triangleStyle = { backgroundColor }; - let { selected, leftInset, rightInset } = this.state; - - let { - valueExtractor, - labelExtractor, - propsExtractor, - textColor, - itemColor, - baseColor, - selectedItemColor = textColor, - disabledItemColor = baseColor, - fontSize, - itemTextStyle, - rippleOpacity, - rippleDuration, - shadeOpacity, - } = this.props; - - let props = propsExtractor(item, index); - - let { style, disabled } - = props - = { - rippleDuration, - rippleOpacity, - rippleColor: baseColor, - - shadeColor: baseColor, - shadeOpacity, - - ...props, - - onPress: this.onSelect, - }; - - let value = valueExtractor(item, index); - let label = labelExtractor(item, index); - - let title = null == label? - value: - label; - - let color = disabled? - disabledItemColor: - ~selected? - index === selected? - selectedItemColor: - itemColor: - selectedItemColor; - - let textStyle = { color, fontSize }; - - props.style = [ - style, - { - height: this.itemSize(), - paddingLeft: leftInset, - paddingRight: rightInset, - }, - ]; - - return ( - - - {title} - - - ); - } - - render() { - let { - renderBase, - renderAccessory, - containerStyle, - overlayStyle: overlayStyleOverrides, - pickerStyle: pickerStyleOverrides, - - rippleInsets, - rippleOpacity, - rippleCentered, - rippleSequential, - - hitSlop, - pressRetentionOffset, - testID, - nativeID, - accessible, - accessibilityLabel, - - supportedOrientations, - - ...props - } = this.props; - - let { - data, - disabled, - itemPadding, - dropdownPosition, - } = props; - - let { left, top, width, opacity, selected, modal } = this.state; - - let itemCount = data.length; - let visibleItemCount = this.visibleItemCount(); - let tailItemCount = this.tailItemCount(); - let itemSize = this.itemSize(); - - let height = 2 * itemPadding + itemSize * visibleItemCount; - let translateY = -itemPadding; - - if (null == dropdownPosition) { - switch (selected) { - case -1: - translateY -= 1 === itemCount? 0 : itemSize; - break; - - case 0: - break; - - default: - if (selected >= itemCount - tailItemCount) { - translateY -= itemSize * (visibleItemCount - (itemCount - selected)); - } else { - translateY -= itemSize; - } - } - } else { - if (dropdownPosition < 0) { - translateY -= itemSize * (visibleItemCount + dropdownPosition); - } else { - translateY -= itemSize * dropdownPosition; - } + return ( + + + + + + ); } - let overlayStyle = { opacity }; + renderItem({ item, index }) { + if (null == item) { + return null; + } - let pickerStyle = { - width, - height, - top, - left, - transform: [{ translateY }], - }; + let { selected, leftInset, rightInset } = this.state; + + let { + valueExtractor, + labelExtractor, + propsExtractor, + textColor, + itemColor, + baseColor, + selectedItemColor = textColor, + disabledItemColor = baseColor, + fontSize, + itemTextStyle, + rippleOpacity, + rippleDuration, + shadeOpacity, + } = this.props; + + let props = propsExtractor(item, index); + + let { style, disabled } + = props + = { + rippleDuration, + rippleOpacity, + rippleColor: baseColor, + + shadeColor: baseColor, + shadeOpacity, + + ...props, + + onPress: this.onSelect, + }; + + let value = valueExtractor(item, index); + let label = labelExtractor(item, index); + + let title = null == label ? + value : + label; + + let color = disabled ? + disabledItemColor : + ~selected ? + index === selected ? + selectedItemColor : + itemColor : + selectedItemColor; + + let textStyle = { color, fontSize }; + + props.style = [ + style, + { + height: this.itemSize(), + paddingLeft: leftInset, + paddingRight: rightInset, + }, + ]; + + return ( + + + {title} + + + ); + } - let touchableProps = { - disabled, - hitSlop, - pressRetentionOffset, - onPress: this.onPress, - testID, - nativeID, - accessible, - accessibilityLabel, - }; + render() { + let { + renderBase, + renderAccessory, + containerStyle, + labelContainerStyle, + overlayStyle: overlayStyleOverrides, + pickerStyle: pickerStyleOverrides, + + rippleInsets, + rippleOpacity, + rippleCentered, + rippleSequential, + + hitSlop, + pressRetentionOffset, + testID, + nativeID, + accessible, + accessibilityLabel, + + supportedOrientations, + + ...props + } = this.props; + + let { + data, + disabled, + itemPadding, + dropdownPosition, + } = props; + + let { left, top, width, opacity, selected, modal } = this.state; + + let itemCount = data.length; + let visibleItemCount = this.visibleItemCount(); + let tailItemCount = this.tailItemCount(); + let itemSize = this.itemSize(); + + let height = 2 * itemPadding + itemSize * visibleItemCount; + let translateY = -itemPadding; + + if (null == dropdownPosition) { + switch (selected) { + case -1: + translateY -= 1 === itemCount ? 0 : itemSize; + break; + + case 0: + break; + + default: + if (selected >= itemCount - tailItemCount) { + translateY -= itemSize * (visibleItemCount - (itemCount - selected)); + } else { + translateY -= itemSize; + } + } + } else { + if (dropdownPosition < 0) { + translateY -= itemSize * (visibleItemCount + dropdownPosition); + } else { + translateY -= itemSize * dropdownPosition; + } + } - return ( - - - - {this.renderBase(props)} - {this.renderRipple()} - - - - - true} - onResponderRelease={this.blur} - > - true} - > - + let overlayStyle = { opacity }; + + let pickerStyle = { + width, + height, + top, + left, + transform: [{ translateY }], + }; + + let touchableProps = { + disabled, + hitSlop, + pressRetentionOffset, + onPress: this.onPress, + testID, + nativeID, + accessible, + accessibilityLabel, + }; + + return ( + + + + {this.renderBase(props)} + {this.renderRipple()} + + + + + true} + onResponderRelease={this.blur} + > + true} + > + + + + - - - - ); - } + ); + } } From b5eaeb6db36339f62a93612d75e937d60cd79ece Mon Sep 17 00:00:00 2001 From: Jimmy Wei Date: Wed, 10 Jul 2019 16:36:09 +0100 Subject: [PATCH 2/7] Strip away textField and use textField for material consistency --- package.json | 13 ++++++++----- src/components/dropdown/index.js | 8 +++----- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 29d2b079..49f2709c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,10 @@ "name": "react-native-material-dropdown", "version": "0.11.1", "license": "BSD-3-Clause", - "author": "Alexander Nazarov ", + "contributors": [ + {"name": "Alexander Nazarov", "email": "n4kz@n4kz.com"}, + {"name": "Jimmy Wei", "email": "ijimmywei@gmail.com"} + ], "description": "Material dropdown", "keywords": [ @@ -21,12 +24,13 @@ "repository": { "type": "git", - "url": "git://github.com/n4kz/react-native-material-dropdown.git" + "url": "git://github.com/iJimmyWei/react-native-material-dropdown.git" }, "peerDependencies": { "react": "*", - "react-native": "*" + "react-native": "*", + "react-native-paper": "*" }, "devDependencies": { @@ -42,7 +46,6 @@ "dependencies": { "prop-types": "^15.5.9", "react-native-material-buttons": "^0.5.0", - "react-native-material-ripple": "^0.8.0", - "react-native-material-textfield": "^0.12.0" + "react-native-material-ripple": "^0.8.0" } } diff --git a/src/components/dropdown/index.js b/src/components/dropdown/index.js index 6658292e..35c35de6 100644 --- a/src/components/dropdown/index.js +++ b/src/components/dropdown/index.js @@ -13,7 +13,7 @@ import { I18nManager, } from 'react-native'; import Ripple from 'react-native-material-ripple'; -import { TextField } from 'react-native-material-textfield'; +import { TextInput } from 'react-native-paper'; import DropdownItem from '../item'; import styles from './styles'; @@ -505,12 +505,10 @@ export default class Dropdown extends PureComponent { String(title); return ( - Date: Wed, 10 Jul 2019 16:42:26 +0100 Subject: [PATCH 3/7] V2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 49f2709c..063f978f 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "react-native-material-dropdown", + "name": "react-native-material-dropdown-v2", "version": "0.11.1", "license": "BSD-3-Clause", "contributors": [ From 6507f7665c188ae5cf5fb7ae82b55686f981ca1a Mon Sep 17 00:00:00 2001 From: Ruyman Rodriguez Martin Date: Sun, 14 Jun 2020 19:46:39 +0100 Subject: [PATCH 4/7] render accessory,delete warnings,update dependencies, create renderPickerItem --- package.json | 11 +++--- readme.md | 14 ++++++-- src/components/dropdown/index.js | 57 +++++++++++++++++++++----------- 3 files changed, 55 insertions(+), 27 deletions(-) diff --git a/package.json b/package.json index 063f978f..377fb898 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,11 @@ { - "name": "react-native-material-dropdown-v2", + "name": "react-native-material-dropdown-v2.1", "version": "0.11.1", "license": "BSD-3-Clause", "contributors": [ {"name": "Alexander Nazarov", "email": "n4kz@n4kz.com"}, - {"name": "Jimmy Wei", "email": "ijimmywei@gmail.com"} + {"name": "Jimmy Wei", "email": "ijimmywei@gmail.com"}, + {"name": "Ruyman Rodriguez Martin", "email": "alu0100845235@ull.edu.es"} ], "description": "Material dropdown", @@ -24,7 +25,7 @@ "repository": { "type": "git", - "url": "git://github.com/iJimmyWei/react-native-material-dropdown.git" + "url": "git://github.com/alu0100845235/react-native-material-dropdown.git" }, "peerDependencies": { @@ -45,7 +46,7 @@ "dependencies": { "prop-types": "^15.5.9", - "react-native-material-buttons": "^0.5.0", - "react-native-material-ripple": "^0.8.0" + "react-native-material-buttons": "^0.6.0", + "react-native-material-ripple": "^0.9.1" } } diff --git a/readme.md b/readme.md index be8f68e4..3c3e8116 100644 --- a/readme.md +++ b/readme.md @@ -32,29 +32,38 @@ Material dropdown with consistent behaviour on iOS and Android ## Installation ```bash -npm install --save react-native-material-dropdown +npm install --save react-native-material-dropdown-v2.1 ``` ## Usage ```javascript import React, { Component } from 'react'; -import { Dropdown } from 'react-native-material-dropdown'; +import { Dropdown } from 'react-native-material-dropdown-v2.1'; class Example extends Component { render() { let data = [{ value: 'Banana', + origin: 'Canary Islands', }, { value: 'Mango', + origin: 'India', }, { value: 'Pear', + origin: 'Greece', }]; return ( ( + + {item.value} + {item.origin} + + )} /> ); } @@ -96,6 +105,7 @@ class Example extends Component { labelExtractor | Extract label from item (args: item, index) | Function | ({ label }) => label propsExtractor | Extract props from item (args: item, index) | Function | () => null onChangeText | Selection callback (args: value, index, data) | Function | - + renderPickerItem | Render picker item (args: item) | Function | - Other [TextField][textfield], [TextInput][textinput] and [TouchableWithoutFeedback][touchable] properties will also work diff --git a/src/components/dropdown/index.js b/src/components/dropdown/index.js index 35c35de6..3767231a 100644 --- a/src/components/dropdown/index.js +++ b/src/components/dropdown/index.js @@ -145,6 +145,7 @@ export default class Dropdown extends PureComponent { renderBase: PropTypes.func, renderAccessory: PropTypes.func, + renderPickerItem: PropTypes.func, labelContainerStyle: (ViewPropTypes || View.propTypes).style, containerStyle: (ViewPropTypes || View.propTypes).style, @@ -173,6 +174,8 @@ export default class Dropdown extends PureComponent { this.keyExtractor = this.keyExtractor.bind(this); + + this.blur = () => this.onClose(); this.focus = this.onPress; @@ -189,10 +192,11 @@ export default class Dropdown extends PureComponent { }; } - componentWillReceiveProps({ value }) { - if (value !== this.props.value) { - this.setState({ value }); - } + static getDerivedStateFromProps(props, state) { + if(props.value !== state.value) { + return {value: props.value}; + } + else return null; } componentDidMount() { @@ -475,7 +479,7 @@ export default class Dropdown extends PureComponent { return `${index}-${valueExtractor(item, index)}`; } - renderBase(props) { + renderizeBase(props) { let { value } = this.state; let { data, @@ -497,7 +501,7 @@ export default class Dropdown extends PureComponent { } if ('function' === typeof renderBase) { - return renderBase({ ...props, title, value, renderAccessory }); + return renderBase({ ...props, title, value }); } title = null == title || 'string' === typeof title ? @@ -505,15 +509,14 @@ export default class Dropdown extends PureComponent { String(title); return ( - + ); } @@ -582,8 +585,8 @@ export default class Dropdown extends PureComponent { rippleOpacity, rippleDuration, shadeOpacity, + renderPickerItem, } = this.props; - let props = propsExtractor(item, index); let { style, disabled } @@ -629,9 +632,13 @@ export default class Dropdown extends PureComponent { return ( - - {title} - + {!renderPickerItem ? + + {title} + + : + renderPickerItem(item) + } ); } @@ -728,7 +735,17 @@ export default class Dropdown extends PureComponent { - {this.renderBase(props)} + + + {this.renderizeBase(props)} + + {this.renderAccessory(props)} + {this.renderRipple()} From adf09c6ba7d477885d4acdfd8347a209b9123f84 Mon Sep 17 00:00:00 2001 From: Ruyman Rodriguez Martin Date: Sun, 14 Jun 2020 20:04:39 +0100 Subject: [PATCH 5/7] Updated readme --- readme.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index 3c3e8116..a3d0434c 100644 --- a/readme.md +++ b/readme.md @@ -60,10 +60,18 @@ class Example extends Component { data={data} renderPickerItem={(item) => ( - {item.value} - {item.origin} + + {item.value} + + {item.origin} )} + itemPadding={12} // increase padding, for the new rendering of the picker item /> ); } From 9cc2b3627b2d6c78c0f42280ec35d230b7295175 Mon Sep 17 00:00:00 2001 From: Ruyman Rodriguez Martin Date: Sun, 14 Jun 2020 20:32:54 +0100 Subject: [PATCH 6/7] Add publishConfig in package.json --- package.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 377fb898..805aa6cc 100644 --- a/package.json +++ b/package.json @@ -48,5 +48,7 @@ "prop-types": "^15.5.9", "react-native-material-buttons": "^0.6.0", "react-native-material-ripple": "^0.9.1" - } + }, + + "publishConfig": { "registry": "https://npm.pkg.github.com/" }, } From ac904a726cb8cdcf2e6f60e6860168ca9ebedf6a Mon Sep 17 00:00:00 2001 From: Ruyman Rodriguez Martin Date: Sun, 14 Jun 2020 20:53:27 +0100 Subject: [PATCH 7/7] Actualizado el nombre del paquete --- package-lock.json | 1575 +++++++++++++++++++++++++++++++++++++++++++++ package.json | 28 +- 2 files changed, 1589 insertions(+), 14 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..34e9cee8 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1575 @@ +{ + "name": "react-native-material-dropdown-v2.1", + "version": "0.11.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0-beta.44.tgz", + "integrity": "sha512-cuAuTTIQ9RqcFRJ/Y8PvTh+paepNcaGxwQwjIDRWPXmzzyAeCO4KqS9ikMvq0MCbRk6GlYKwfzStrcP3/jSL8g==", + "dev": true, + "requires": { + "@babel/highlight": "7.0.0-beta.44" + } + }, + "@babel/generator": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.0.0-beta.44.tgz", + "integrity": "sha512-5xVb7hlhjGcdkKpMXgicAVgx8syK5VJz193k0i/0sLP6DzE6lRrU1K3B/rFefgdo9LPGMAOOOAWW4jycj07ShQ==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44", + "jsesc": "^2.5.1", + "lodash": "^4.2.0", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + } + }, + "@babel/helper-function-name": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.0.0-beta.44.tgz", + "integrity": "sha512-MHRG2qZMKMFaBavX0LWpfZ2e+hLloT++N7rfM3DYOMUOGCD8cVjqZpwiL8a0bOX3IYcQev1ruciT0gdFFRTxzg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "7.0.0-beta.44", + "@babel/template": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0-beta.44.tgz", + "integrity": "sha512-w0YjWVwrM2HwP6/H3sEgrSQdkCaxppqFeJtAnB23pRiJB5E/O9Yp7JAAeWBl+gGEgmBFinnTyOv2RN7rcSmMiw==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.0.0-beta.44.tgz", + "integrity": "sha512-aQ7QowtkgKKzPGf0j6u77kBMdUFVBKNHw2p/3HX/POt5/oz8ec5cs0GwlgM8Hz7ui5EwJnzyfRmkNF1Nx1N7aA==", + "dev": true, + "requires": { + "@babel/types": "7.0.0-beta.44" + } + }, + "@babel/highlight": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0-beta.44.tgz", + "integrity": "sha512-Il19yJvy7vMFm8AVAh6OZzaFoAd0hbkeMZiX3P5HGD+z7dyI7RzndHB0dg6Urh/VAFfHtpOIzDUSxmY6coyZWQ==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^3.0.0" + }, + "dependencies": { + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + } + } + }, + "@babel/runtime-corejs3": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.2.tgz", + "integrity": "sha512-+a2M/u7r15o3dV1NEizr9bRi+KUVnrs/qYxF0Z06DAPx/4VCWaz1WA7EcbE+uqGgt39lp5akWGmHsTseIkHkHg==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.0.0-beta.44.tgz", + "integrity": "sha512-w750Sloq0UNifLx1rUqwfbnC6uSUk0mfwwgGRfdLiaUzfAOiH0tHJE6ILQIUi3KYkjiCDTskoIsnfqZvWLBDng==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "lodash": "^4.2.0" + } + }, + "@babel/traverse": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.0.0-beta.44.tgz", + "integrity": "sha512-UHuDz8ukQkJCDASKHf+oDt3FVUzFd+QYfuBIsiNu/4+/ix6pP/C+uQZJ6K1oEfbCMv/IKWbgDEh7fcsnIE5AtA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/generator": "7.0.0-beta.44", + "@babel/helper-function-name": "7.0.0-beta.44", + "@babel/helper-split-export-declaration": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "debug": "^3.1.0", + "globals": "^11.1.0", + "invariant": "^2.2.0", + "lodash": "^4.2.0" + } + }, + "@babel/types": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.0.0-beta.44.tgz", + "integrity": "sha512-5eTV4WRmqbaFM3v9gHAIljEQJU4Ssc6fxL61JN+Oe2ga/BwyjzjamwkCVVAQjHGuAX8i0BWo42dshL8eO5KfLQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.2.0", + "to-fast-properties": "^2.0.0" + } + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "5.5.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-5.5.2.tgz", + "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=", + "dev": true, + "requires": { + "co": "^4.6.0", + "fast-deep-equal": "^1.0.0", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.3.0" + } + }, + "ajv-keywords": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz", + "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "8.2.6", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-8.2.6.tgz", + "integrity": "sha512-aCdHjhzcILdP8c9lej7hvXKvQieyRt20SF102SIGyY4cUIiw6UaAtK4j2o3dXX74jEmy0TJ0CEhv4fTIM3SzcA==", + "dev": true, + "requires": { + "@babel/code-frame": "7.0.0-beta.44", + "@babel/traverse": "7.0.0-beta.44", + "@babel/types": "7.0.0-beta.44", + "babylon": "7.0.0-beta.44", + "eslint-scope": "3.7.1", + "eslint-visitor-keys": "^1.0.0" + } + }, + "babylon": { + "version": "7.0.0-beta.44", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-7.0.0-beta.44.tgz", + "integrity": "sha512-5Hlm13BJVAioCHpImtFqNOF2H3ieTOHd0fmFGMxOJ9jgeFqeAwsv3u5P5cR7CSeFrkgHsT19DgFJkHV0/Mcd8g==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "es-abstract": { + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", + "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.0", + "is-regex": "^1.1.0", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-4.19.1.tgz", + "integrity": "sha512-bT3/1x1EbZB7phzYu7vCr1v3ONuzDtX8WjuM9c0iYxe+cq+pwcKEoQjl7zd3RpC6YOLgnSy3cTN58M2jcoPDIQ==", + "dev": true, + "requires": { + "ajv": "^5.3.0", + "babel-code-frame": "^6.22.0", + "chalk": "^2.1.0", + "concat-stream": "^1.6.0", + "cross-spawn": "^5.1.0", + "debug": "^3.1.0", + "doctrine": "^2.1.0", + "eslint-scope": "^3.7.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^3.5.4", + "esquery": "^1.0.0", + "esutils": "^2.0.2", + "file-entry-cache": "^2.0.0", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.0.1", + "ignore": "^3.3.3", + "imurmurhash": "^0.1.4", + "inquirer": "^3.0.6", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.9.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.4", + "minimatch": "^3.0.2", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "pluralize": "^7.0.0", + "progress": "^2.0.0", + "regexpp": "^1.0.1", + "require-uncached": "^1.0.3", + "semver": "^5.3.0", + "strip-ansi": "^4.0.0", + "strip-json-comments": "~2.0.1", + "table": "4.0.2", + "text-table": "~0.2.0" + } + }, + "eslint-plugin-react": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz", + "integrity": "sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + } + }, + "eslint-scope": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz", + "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.2.0.tgz", + "integrity": "sha512-WFb4ihckKil6hu3Dp798xdzSfddwKKU3+nGniKF6HfeW6OLd2OUDEPP7TcHtB5+QXOKg2s6B2DaMPE1Nn/kxKQ==", + "dev": true + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "fast-deep-equal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.1.0.tgz", + "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", + "integrity": "sha1-w5KZDD5oR4PYOLjISkXYoEhFg2E=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz", + "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", + "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==", + "dev": true + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.0.tgz", + "integrity": "sha512-iI97M8KTWID2la5uYXlkbSDQIg4F6o1sYboZKKTDpnDQMLtUL86zxhgDet3Q2SriaYsyGqZ6Mn2SjbRKeLHdqw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz", + "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "jsx-ast-utils": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.4.1.tgz", + "integrity": "sha512-z1xSldJ6imESSzOjd3NNkieVJKRlKYSOtMG8SFyCj2FIrvSaSuli/WjpBkEzCBoR9bYYYFgqJw61Xhu7Lcgk+w==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "pluralize": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz", + "integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-native-material-buttons": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/react-native-material-buttons/-/react-native-material-buttons-0.6.0.tgz", + "integrity": "sha512-k/7hqGQJABWvU2wr61aOBuuLp7rrn26a65IUlJU1PPbfVwEJ10v0atxKsY4E0z6VO3m1DAWaAooN82BWmBITGQ==", + "requires": { + "prop-types": "^15.5.9", + "react-native-material-ripple": "^0.9.1" + } + }, + "react-native-material-ripple": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/react-native-material-ripple/-/react-native-material-ripple-0.9.1.tgz", + "integrity": "sha512-dHjARdKoGD3LXwPh2TkURabywM5BfdpKc/AHplJTfBMalhVZ2bc7iJoJmNhNnmT/TZ+B3szL6uV1mO7Pv8zNeA==", + "requires": { + "prop-types": "^15.5.10" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz", + "integrity": "sha512-LOPw8FpgdQF9etWMaAfG/WRthIdXJGYp4mJ2Jgn/2lpkbod9jPn0t9UqN7AxBOKNfzRbYyVfgc7Vk4t/MpnXgw==", + "dev": true + }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "*" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slice-ansi": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-1.0.0.tgz", + "integrity": "sha512-POqxBK6Lb3q6s047D/XsDVNPnF9Dl8JSaqe9h9lURl0OdNqy/ujDrOiIHtsqXMGbWWTIomRzAMaTyawAU//Reg==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz", + "integrity": "sha512-UUkEAPdSGxtRpiV9ozJ5cMTtYiqz7Ni1OGqLXRCynrvzdtR1p+cfOWe2RJLwvUG8hNanaSRjecIqwOjqeatDsA==", + "dev": true, + "requires": { + "ajv": "^5.2.3", + "ajv-keywords": "^2.1.0", + "chalk": "^2.1.0", + "lodash": "^4.17.4", + "slice-ansi": "1.0.0", + "string-width": "^2.1.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } +} diff --git a/package.json b/package.json index 805aa6cc..2a3c02c0 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,21 @@ { - "name": "react-native-material-dropdown-v2.1", + "name": "react-native-material-dropdown-customizable-dropdown-item", "version": "0.11.1", "license": "BSD-3-Clause", "contributors": [ - {"name": "Alexander Nazarov", "email": "n4kz@n4kz.com"}, - {"name": "Jimmy Wei", "email": "ijimmywei@gmail.com"}, - {"name": "Ruyman Rodriguez Martin", "email": "alu0100845235@ull.edu.es"} + { + "name": "Alexander Nazarov", + "email": "n4kz@n4kz.com" + }, + { + "name": "Jimmy Wei", + "email": "ijimmywei@gmail.com" + }, + { + "name": "Ruyman Rodriguez Martin", + "email": "alu0100845235@ull.edu.es" + } ], - "description": "Material dropdown", "keywords": [ "react", @@ -20,35 +28,27 @@ "spinner", "select" ], - "main": "index.js", - "repository": { "type": "git", "url": "git://github.com/alu0100845235/react-native-material-dropdown.git" }, - "peerDependencies": { "react": "*", "react-native": "*", "react-native-paper": "*" }, - "devDependencies": { "babel-eslint": "^8.0.0", "eslint": "^4.5.0", "eslint-plugin-react": "^7.0.0" }, - "scripts": { "lint": "eslint src example/app.js" }, - "dependencies": { "prop-types": "^15.5.9", "react-native-material-buttons": "^0.6.0", "react-native-material-ripple": "^0.9.1" - }, - - "publishConfig": { "registry": "https://npm.pkg.github.com/" }, + } }