Merge branch '197-re-make-chart-with-svg-again' into 'master'

Resolve "re-make chart with svg (again)"

Closes #197 and #168

See merge request bloodyhealth/drip!77
This commit is contained in:
Julia Friesel
2018-09-19 13:00:04 +00:00
11 changed files with 156 additions and 103 deletions
+1
View File
@@ -151,6 +151,7 @@ android {
dependencies { dependencies {
compile project(':nodejs-mobile-react-native') compile project(':nodejs-mobile-react-native')
compile project(':react-native-restart') compile project(':react-native-restart')
compile project(':react-native-svg')
compile project(':react-native-push-notification') compile project(':react-native-push-notification')
compile project(':react-native-vector-icons') compile project(':react-native-vector-icons')
compile project(':react-native-fs') compile project(':react-native-fs')
@@ -5,6 +5,7 @@ import android.app.Application;
import com.facebook.react.ReactApplication; import com.facebook.react.ReactApplication;
import com.janeasystems.rn_nodejs_mobile.RNNodeJsMobilePackage; import com.janeasystems.rn_nodejs_mobile.RNNodeJsMobilePackage;
import com.avishayil.rnrestart.ReactNativeRestartPackage; import com.avishayil.rnrestart.ReactNativeRestartPackage;
import com.horcrux.svg.SvgPackage;
import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage;
import com.oblador.vectoricons.VectorIconsPackage; import com.oblador.vectoricons.VectorIconsPackage;
import com.rnfs.RNFSPackage; import com.rnfs.RNFSPackage;
@@ -34,6 +35,7 @@ public class MainApplication extends Application implements ReactApplication, Sh
new MainReactPackage(), new MainReactPackage(),
new RNNodeJsMobilePackage(), new RNNodeJsMobilePackage(),
new ReactNativeRestartPackage(), new ReactNativeRestartPackage(),
new SvgPackage(),
new ReactNativePushNotificationPackage(), new ReactNativePushNotificationPackage(),
new VectorIconsPackage(), new VectorIconsPackage(),
new RNFSPackage(), new RNFSPackage(),
+2
View File
@@ -3,6 +3,8 @@ include ':nodejs-mobile-react-native'
project(':nodejs-mobile-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/nodejs-mobile-react-native/android') project(':nodejs-mobile-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/nodejs-mobile-react-native/android')
include ':react-native-restart' include ':react-native-restart'
project(':react-native-restart').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-restart/android') project(':react-native-restart').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-restart/android')
include ':react-native-svg'
project(':react-native-svg').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-svg/android')
include ':react-native-push-notification' include ':react-native-push-notification'
project(':react-native-push-notification').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-push-notification/android') project(':react-native-push-notification').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-push-notification/android')
include ':react-native-vector-icons' include ':react-native-vector-icons'
+4 -3
View File
@@ -33,7 +33,7 @@ export default class CycleChart extends Component {
const height = nativeEvent.layout.height const height = nativeEvent.layout.height
this.setState({ chartHeight: height }) this.setState({ chartHeight: height })
this.reCalculateChartInfo = () => { this.reCalculateChartInfo = () => {
this.setState({ columns: this.makeColumnInfo(nfpLines(height)) }) this.setState({ columns: this.makeColumnInfo(nfpLines()) })
} }
this.cycleDaysSortedByDate.addListener(this.reCalculateChartInfo) this.cycleDaysSortedByDate.addListener(this.reCalculateChartInfo)
@@ -62,6 +62,7 @@ export default class CycleChart extends Component {
jsDate.getDate() jsDate.getDate()
).toString() ).toString()
}) })
const chartSymptoms = [ const chartSymptoms = [
'bleeding', 'bleeding',
'temperature', 'temperature',
@@ -103,8 +104,8 @@ export default class CycleChart extends Component {
return { return {
dateString, dateString,
y: temp ? normalizeToScale(temp, columnHeight) : null, y: temp ? normalizeToScale(temp, columnHeight) : null,
symptoms, ...symptoms,
...getFhmAndLtlInfo(dateString, temp) ...getFhmAndLtlInfo(dateString, temp, columnHeight)
} }
}) })
+47 -40
View File
@@ -2,6 +2,7 @@ import React, { Component } from 'react'
import { import {
Text, View, TouchableOpacity Text, View, TouchableOpacity
} from 'react-native' } from 'react-native'
import Svg,{ G, Rect, Line } from 'react-native-svg'
import Icon from 'react-native-vector-icons/Entypo' import Icon from 'react-native-vector-icons/Entypo'
import styles from './styles' import styles from './styles'
import config from '../../config' import config from '../../config'
@@ -30,7 +31,6 @@ export default class DayColumn extends Component {
dateString, dateString,
y, y,
temperatureExclude, temperatureExclude,
symptoms,
drawFhmLine, drawFhmLine,
drawLtlAt, drawLtlAt,
rightY, rightY,
@@ -47,16 +47,31 @@ export default class DayColumn extends Component {
const columnElements = [] const columnElements = []
if(drawLtlAt) { if(drawLtlAt) {
const ltlLine = (<View const ltlLine = (<Line
position = 'absolute' x1={0}
width={'100%'} y1={drawLtlAt}
top={drawLtlAt} x2={config.columnWidth}
y2={drawLtlAt}
{...styles.nfpLine} {...styles.nfpLine}
key='ltl' key='ltl'
/>) />)
columnElements.push(ltlLine) columnElements.push(ltlLine)
} }
if (drawFhmLine) {
const x = styles.nfpLine.strokeWidth / 2
const fhmLine = (<Line
x1={x}
y1={x}
x2={x}
y2={columnHeight}
{...styles.nfpLine}
key='fhm'
/>)
columnElements.push(fhmLine)
}
if (y) { if (y) {
columnElements.push( columnElements.push(
<DotAndLine <DotAndLine
@@ -83,64 +98,53 @@ export default class DayColumn extends Component {
</Text> </Text>
) )
// we merge the colors here instead of from the stylesheet because of a RN const column = (
// bug that doesn't apply borderLeftColor otherwise <G>
const potentialCustomStyle = { <Rect
height: columnHeight, height={chartHeight}
borderLeftColor: 'grey', {...styles.column.rect}
} />
{ columnElements }
if (drawFhmLine) { </G>
potentialCustomStyle.borderLeftColor = styles.nfpLine.borderColor
potentialCustomStyle.borderLeftWidth = 3
}
const column = React.createElement(
TouchableOpacity,
{
style: [styles.column.rect, potentialCustomStyle],
key: this.props.index.toString(),
onPress: () => {
this.passDateToDayView(dateString)
},
activeOpacity: 1
},
columnElements
) )
return ( return (
<View> <TouchableOpacity
onPress={() => this.passDateToDayView(dateString)}
activeOpacity={1}
>
<View height={symptomHeight}> <View height={symptomHeight}>
<View style={styles.symptomRow}> <View style={styles.symptomRow}>
{typeof symptoms.bleeding === 'number' && {typeof this.props.bleeding === 'number' &&
<Icon <Icon
name='drop' name='drop'
size={12} size={12}
color={styles.bleedingIconShades[symptoms.bleeding]} color={styles.bleedingIconShades[this.props.bleeding]}
key='bleeding' key='bleeding'
/> />
} }
</View> </View>
<View style={styles.symptomRow}> <View style={styles.symptomRow}>
{typeof symptoms.mucus === 'number' && {typeof this.props.mucus === 'number' &&
<View <View
{...styles.mucusIcon} {...styles.mucusIcon}
backgroundColor={styles.mucusIconShades[symptoms.mucus]} backgroundColor={styles.mucusIconShades[this.props.mucus]}
key='mucus' key='mucus'
/> />
} }
</View> </View>
<View style={styles.symptomRow}> <View style={styles.symptomRow}>
{typeof symptoms.cervix === 'number' && {typeof this.props.cervix === 'number' &&
<View <View
{...styles.mucusIcon} {...styles.mucusIcon}
// cervix is sum of openess and firmness - fertile only when closed and hard (=0) // cervix is sum of openess and firmness - fertile only when closed and hard (=0)
backgroundColor={symptoms.cervix > 0 ? 'blue' : 'green'} backgroundColor={this.props.cervix > 0 ? 'blue' : 'green'}
key='cervix' key='cervix'
/> />
} }
</View> </View>
<View style={styles.symptomRow}> <View style={styles.symptomRow}>
{typeof symptoms.sex === 'number' && {typeof this.props.sex === 'number' &&
<View <View
{...styles.mucusIcon} {...styles.mucusIcon}
backgroundColor='orange' backgroundColor='orange'
@@ -149,7 +153,7 @@ export default class DayColumn extends Component {
} }
</View> </View>
<View style={styles.symptomRow}> <View style={styles.symptomRow}>
{typeof symptoms.desire === 'number' && {typeof this.props.desire === 'number' &&
<View <View
{...styles.mucusIcon} {...styles.mucusIcon}
backgroundColor='red' backgroundColor='red'
@@ -158,7 +162,7 @@ export default class DayColumn extends Component {
} }
</View> </View>
<View style={styles.symptomRow}> <View style={styles.symptomRow}>
{symptoms.pain && {this.props.pain &&
<View <View
{...styles.mucusIcon} {...styles.mucusIcon}
backgroundColor='blue' backgroundColor='blue'
@@ -167,7 +171,7 @@ export default class DayColumn extends Component {
} }
</View> </View>
<View style={styles.symptomRow}> <View style={styles.symptomRow}>
{symptoms.note && {this.props.note &&
<View <View
{...styles.mucusIcon} {...styles.mucusIcon}
backgroundColor='green' backgroundColor='green'
@@ -176,13 +180,16 @@ export default class DayColumn extends Component {
} }
</View> </View>
</View> </View>
{column}
<Svg width={config.columnWidth} height={columnHeight}>
{column}
</Svg>
<View style={{height: xAxisHeight}}> <View style={{height: xAxisHeight}}>
{cycleDayLabel} {cycleDayLabel}
{dateLabel} {dateLabel}
</View> </View>
</View> </TouchableOpacity>
) )
} }
} }
+16 -34
View File
@@ -1,5 +1,6 @@
import React, { Component } from 'react' import React, { Component } from 'react'
import { View } from 'react-native' import { Circle, Line } from 'react-native-svg'
import styles from './styles' import styles from './styles'
import config from '../../config' import config from '../../config'
@@ -17,21 +18,20 @@ export default class DotAndLine extends Component {
if (this.props.leftY) { if (this.props.leftY) {
const middleY = ((this.props.leftY - y) / 2) + y const middleY = ((this.props.leftY - y) / 2) + y
const excludedLine = this.props.leftTemperatureExclude || exclude const excludedLine = this.props.leftTemperatureExclude || exclude
lineToLeft = makeLine(middleY, y, 'left', excludedLine) lineToLeft = makeLine(y, middleY, 0, excludedLine)
} }
if (this.props.rightY) { if (this.props.rightY) {
const middleY = ((y - this.props.rightY) / 2) + this.props.rightY const middleY = ((y - this.props.rightY) / 2) + this.props.rightY
const excludedLine = this.props.rightTemperatureExclude || exclude const excludedLine = this.props.rightTemperatureExclude || exclude
lineToRight = makeLine(y, middleY, 'right', excludedLine) lineToRight = makeLine(y, middleY, config.columnWidth, excludedLine)
} }
const dotStyle = exclude ? styles.curveDotsExcluded : styles.curveDots const dotStyle = exclude ? styles.curveDotsExcluded : styles.curveDots
const dot = ( const dot = (
<View <Circle
position='absolute' cx={config.columnMiddle}
top={y - (dotStyle.height / 2)} cy={y}
left={config.columnMiddle - (dotStyle.width / 2)} {...dotStyle}
style={dotStyle}
key='dot' key='dot'
/> />
) )
@@ -39,33 +39,15 @@ export default class DotAndLine extends Component {
} }
} }
function makeLine(leftY, rightY, direction, excludeLine) { function makeLine(currY, middleY, x, excludeLine) {
const colWidth = config.columnWidth
const heightDiff = -(leftY - rightY)
const angle = Math.atan2(heightDiff, colWidth / 2)
const lineStyle = excludeLine ? styles.curveExcluded : styles.curve const lineStyle = excludeLine ? styles.curveExcluded : styles.curve
// hypotenuse, we add 3px for good measure, because otherwise the lines
// don't quite touch at the day border
const h = (colWidth / 2) / Math.cos(angle) + 10
// the rotation by default rotates from the middle of the line,
// but we want the transform origin to be at its beginning
// react native doesn't have transformOrigin, so we do this manually
// if it's the right line, we put the pivot at 3/4 of the column
// if it's to the left, at 1/4
const pivot = direction === 'right' ? colWidth / 4 : -(colWidth / 4)
const projectedX = -(h - colWidth) / 2 + pivot
return (<View return <Line
width={h} x1={config.columnMiddle}
position='absolute' y1={currY}
top={((leftY + rightY) / 2) - lineStyle.borderWidth / 2} x2={x}
left={projectedX} y2={middleY}
style={{
transform: [
{ rotateZ: `${angle}rad` }
],
}}
{...lineStyle} {...lineStyle}
key ={direction} key={x.toString()}
/>) />
} }
+3 -3
View File
@@ -1,7 +1,7 @@
import { getCycleStatusForDay } from '../../lib/sympto-adapter' import { getCycleStatusForDay } from '../../lib/sympto-adapter'
import { normalizeToScale } from './y-axis' import { normalizeToScale } from './y-axis'
export default function (chartHeight) { export default function () {
const cycle = { const cycle = {
status: null status: null
} }
@@ -49,7 +49,7 @@ export default function (chartHeight) {
) )
} }
return function(dateString, temperature) { return function(dateString, temperature, columnHeight) {
const ret = { const ret = {
drawLtlAt: null, drawLtlAt: null,
drawFhmLine: false drawFhmLine: false
@@ -71,7 +71,7 @@ export default function (chartHeight) {
dateIsInPeriOrPostPhase(dateString) && dateIsInPeriOrPostPhase(dateString) &&
isInTempMeasuringPhase(temperature, dateString) isInTempMeasuringPhase(temperature, dateString)
) { ) {
ret.drawLtlAt = normalizeToScale(tempShift.ltl, chartHeight) ret.drawLtlAt = normalizeToScale(tempShift.ltl, columnHeight)
} }
} }
+21 -23
View File
@@ -3,32 +3,28 @@ import {primaryColor, shadesOfRed} from '../../styles/index'
const colorTemperature = '#765285' const colorTemperature = '#765285'
const colorTemperatureLight = '#a67fb5' const colorTemperatureLight = '#a67fb5'
const dotWidth = 10 const dotRadius = 5
const lineWidth = 2 const lineWidth = 1.5
const colorLtl = '#feb47b' const colorLtl = '#feb47b'
const gridColor = 'lightgrey'
const gridLineWidth = 0.5
const styles = { const styles = {
curve: { curve: {
borderStyle: 'solid', stroke: colorTemperature,
borderColor: colorTemperature, strokeWidth: lineWidth,
borderWidth: lineWidth,
}, },
curveExcluded: { curveExcluded: {
borderColor: colorTemperatureLight, stroke: colorTemperatureLight,
borderWidth: lineWidth, strokeWidth: lineWidth
borderStyle: 'dotted'
}, },
curveDots: { curveDots: {
backgroundColor: colorTemperature, fill: colorTemperature,
width: dotWidth, r: dotRadius
height: dotWidth,
borderRadius: 50
}, },
curveDotsExcluded: { curveDotsExcluded: {
backgroundColor: colorTemperatureLight, fill: colorTemperatureLight,
width: dotWidth, r: dotRadius
height: dotWidth,
borderRadius: 50
}, },
column: { column: {
label: { label: {
@@ -44,9 +40,12 @@ const styles = {
} }
}, },
rect: { rect: {
x:'0',
y:'0',
width: config.columnWidth, width: config.columnWidth,
borderStyle: 'solid', stroke: gridColor,
borderLeftWidth: 0.5, strokeWidth: gridLineWidth,
fill: 'transparent'
} }
}, },
bleedingIcon: { bleedingIcon: {
@@ -83,16 +82,15 @@ const styles = {
}, },
horizontalGrid: { horizontalGrid: {
position:'absolute', position:'absolute',
borderColor: 'lightgrey', borderColor: gridColor,
borderWidth: 0.5, borderWidth: gridLineWidth,
width: '100%', width: '100%',
borderStyle: 'solid', borderStyle: 'solid',
left: config.columnWidth left: config.columnWidth
}, },
nfpLine: { nfpLine: {
borderColor: colorLtl, stroke: colorLtl,
borderWidth: lineWidth, strokeWidth: lineWidth,
borderStyle: 'solid'
}, },
symptomRow: { symptomRow: {
alignItems: 'center', alignItems: 'center',
+16
View File
@@ -64,6 +64,8 @@
8EA186B6112C41D1B206762D /* NodeMobile.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C225FC4966694B9FBD32E946 /* NodeMobile.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; 8EA186B6112C41D1B206762D /* NodeMobile.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = C225FC4966694B9FBD32E946 /* NodeMobile.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; };
E4584E55EEC24302A3E84A23 /* nodejs-project in Resources */ = {isa = PBXBuildFile; fileRef = 6466AE2461BE4FA88B8372F0 /* nodejs-project */; }; E4584E55EEC24302A3E84A23 /* nodejs-project in Resources */ = {isa = PBXBuildFile; fileRef = 6466AE2461BE4FA88B8372F0 /* nodejs-project */; };
A16B351C3F3644CF95F104D2 /* builtin_modules in Resources */ = {isa = PBXBuildFile; fileRef = 36F1B55D0DEE47AA9AF4BBDD /* builtin_modules */; }; A16B351C3F3644CF95F104D2 /* builtin_modules in Resources */ = {isa = PBXBuildFile; fileRef = 36F1B55D0DEE47AA9AF4BBDD /* builtin_modules */; };
45794BEC42E34672A759220F /* libRNSVG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 93C745A8EE95400C96FD5CF7 /* libRNSVG.a */; };
3E63FB3C405F4AF39969C7E3 /* libRNSVG-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AD4FC2FD95A84EFCBB59195F /* libRNSVG-tvOS.a */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */ /* Begin PBXContainerItemProxy section */
@@ -402,6 +404,9 @@
C225FC4966694B9FBD32E946 /* NodeMobile.framework */ = {isa = PBXFileReference; name = "NodeMobile.framework"; path = "../node_modules/nodejs-mobile-react-native/ios/NodeMobile.framework"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.framework; explicitFileType = undefined; includeInIndex = 0; }; C225FC4966694B9FBD32E946 /* NodeMobile.framework */ = {isa = PBXFileReference; name = "NodeMobile.framework"; path = "../node_modules/nodejs-mobile-react-native/ios/NodeMobile.framework"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.framework; explicitFileType = undefined; includeInIndex = 0; };
6466AE2461BE4FA88B8372F0 /* nodejs-project */ = {isa = PBXFileReference; name = "nodejs-project"; path = "../nodejs-assets/nodejs-project"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; 6466AE2461BE4FA88B8372F0 /* nodejs-project */ = {isa = PBXFileReference; name = "nodejs-project"; path = "../nodejs-assets/nodejs-project"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
36F1B55D0DEE47AA9AF4BBDD /* builtin_modules */ = {isa = PBXFileReference; name = "builtin_modules"; path = "../node_modules/nodejs-mobile-react-native/install/resources/nodejs-modules/builtin_modules"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; }; 36F1B55D0DEE47AA9AF4BBDD /* builtin_modules */ = {isa = PBXFileReference; name = "builtin_modules"; path = "../node_modules/nodejs-mobile-react-native/install/resources/nodejs-modules/builtin_modules"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
DEB488BF9A9642508320FB42 /* RNSVG.xcodeproj */ = {isa = PBXFileReference; name = "RNSVG.xcodeproj"; path = "../node_modules/react-native-svg/ios/RNSVG.xcodeproj"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = wrapper.pb-project; explicitFileType = undefined; includeInIndex = 0; };
93C745A8EE95400C96FD5CF7 /* libRNSVG.a */ = {isa = PBXFileReference; name = "libRNSVG.a"; path = "libRNSVG.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
AD4FC2FD95A84EFCBB59195F /* libRNSVG-tvOS.a */ = {isa = PBXFileReference; name = "libRNSVG-tvOS.a"; path = "libRNSVG-tvOS.a"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = archive.ar; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */ /* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */ /* Begin PBXFrameworksBuildPhase section */
@@ -440,6 +445,7 @@
72DA6B4241504DB096AFAD40 /* libRCTRestart.a in Frameworks */, 72DA6B4241504DB096AFAD40 /* libRCTRestart.a in Frameworks */,
E09F3B05A4F84E9883101CC7 /* libRNNodeJsMobile.a in Frameworks */, E09F3B05A4F84E9883101CC7 /* libRNNodeJsMobile.a in Frameworks */,
E43EF009AC8C4698AB322190 /* NodeMobile.framework in Frameworks */, E43EF009AC8C4698AB322190 /* NodeMobile.framework in Frameworks */,
45794BEC42E34672A759220F /* libRNSVG.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -456,6 +462,7 @@
2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */, 2D02E4C71E0B4AEC006451C7 /* libRCTText-tvOS.a in Frameworks */,
2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */, 2D02E4C81E0B4AEC006451C7 /* libRCTWebSocket-tvOS.a in Frameworks */,
934282049FA3497D9062CEC1 /* libRNSVG-tvOS.a in Frameworks */, 934282049FA3497D9062CEC1 /* libRNSVG-tvOS.a in Frameworks */,
3E63FB3C405F4AF39969C7E3 /* libRNSVG-tvOS.a in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -637,6 +644,7 @@
49089E09BFCF4F3DB209B6E9 /* RNFS.xcodeproj */, 49089E09BFCF4F3DB209B6E9 /* RNFS.xcodeproj */,
50DBC4BCDDF74A10AEDC99D5 /* RCTRestart.xcodeproj */, 50DBC4BCDDF74A10AEDC99D5 /* RCTRestart.xcodeproj */,
65F706FAFA1444AE9937D472 /* RNNodeJsMobile.xcodeproj */, 65F706FAFA1444AE9937D472 /* RNNodeJsMobile.xcodeproj */,
DEB488BF9A9642508320FB42 /* RNSVG.xcodeproj */,
); );
name = Libraries; name = Libraries;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -1482,6 +1490,7 @@ fi
"$(inherited)", "$(inherited)",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
}; };
@@ -1523,6 +1532,7 @@ fi
"$(inherited)", "$(inherited)",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
}; };
@@ -1552,6 +1562,7 @@ fi
"$(SRCROOT)/../node_modules/react-native-fs/**", "$(SRCROOT)/../node_modules/react-native-fs/**",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**", "$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**", "$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -1584,6 +1595,7 @@ fi
"$(SRCROOT)/../node_modules/react-native-fs/**", "$(SRCROOT)/../node_modules/react-native-fs/**",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**", "$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**", "$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -1638,6 +1650,7 @@ fi
"$(inherited)", "$(inherited)",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
}; };
@@ -1688,6 +1701,7 @@ fi
"$(inherited)", "$(inherited)",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"\"../node_modules/nodejs-mobile-react-native/ios\"", "\"../node_modules/nodejs-mobile-react-native/ios\"",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
}; };
@@ -1732,6 +1746,7 @@ fi
"$(SRCROOT)/../node_modules/react-native-fs/**", "$(SRCROOT)/../node_modules/react-native-fs/**",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**", "$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**", "$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
@@ -1781,6 +1796,7 @@ fi
"$(SRCROOT)/../node_modules/react-native-fs/**", "$(SRCROOT)/../node_modules/react-native-fs/**",
"$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**", "$(SRCROOT)/../node_modules/react-native-restart/ios/RCTRestart/**",
"$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**", "$(SRCROOT)/../node_modules/nodejs-mobile-react-native/ios/**",
"$(SRCROOT)/../node_modules/react-native-svg/ios/**",
); );
FRAMEWORK_SEARCH_PATHS = ( FRAMEWORK_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
+43
View File
@@ -2566,6 +2566,15 @@
"object-visit": "^1.0.0" "object-visit": "^1.0.0"
} }
}, },
"color": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color/-/color-2.0.1.tgz",
"integrity": "sha512-ubUCVVKfT7r2w2D3qtHakj8mbmKms+tThR8gI8zEYCbUBl8/voqFGt3kgBqGwXAopgXybnkuOq+qMYCRrp4cXw==",
"requires": {
"color-convert": "^1.9.1",
"color-string": "^1.5.2"
}
},
"color-convert": { "color-convert": {
"version": "1.9.2", "version": "1.9.2",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz",
@@ -2579,6 +2588,15 @@
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=" "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok="
}, },
"color-string": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
"integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
}
},
"color-support": { "color-support": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
@@ -6650,6 +6668,16 @@
"resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-1.1.0.tgz", "resolved": "https://registry.npmjs.org/react-native-share/-/react-native-share-1.1.0.tgz",
"integrity": "sha512-uQXo+HzZGUo9VlfgfWwGa9vLrY9OBQOFAsxhH/e3GWAlCxrGGjXNu/La+aJzMJdhoHzzn1+NRWDp1LWvlxJHew==" "integrity": "sha512-uQXo+HzZGUo9VlfgfWwGa9vLrY9OBQOFAsxhH/e3GWAlCxrGGjXNu/La+aJzMJdhoHzzn1+NRWDp1LWvlxJHew=="
}, },
"react-native-svg": {
"version": "7.0.2",
"resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-7.0.2.tgz",
"integrity": "sha512-vDHePF9sSPp3s+AmAkk4HBvgWHdlaH5ns1mCAcrPqTiyF1QsApAtp3/3AHh8G8o57F2eJjEQ7LrRFNYyQPUBEw==",
"requires": {
"color": "^2.0.1",
"lodash": "^4.16.6",
"pegjs": "^0.10.0"
}
},
"react-native-vector-icons": { "react-native-vector-icons": {
"version": "5.0.0", "version": "5.0.0",
"resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-5.0.0.tgz", "resolved": "https://registry.npmjs.org/react-native-vector-icons/-/react-native-vector-icons-5.0.0.tgz",
@@ -7577,6 +7605,21 @@
} }
} }
}, },
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
"integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
"requires": {
"is-arrayish": "^0.3.1"
},
"dependencies": {
"is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
}
}
},
"slash": { "slash": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+1
View File
@@ -35,6 +35,7 @@
"react-native-push-notification": "^3.1.1", "react-native-push-notification": "^3.1.1",
"react-native-restart": "0.0.7", "react-native-restart": "0.0.7",
"react-native-share": "^1.1.0", "react-native-share": "^1.1.0",
"react-native-svg": "^7.0.2",
"react-native-vector-icons": "^5.0.0", "react-native-vector-icons": "^5.0.0",
"realm": "^2.7.1" "realm": "^2.7.1"
}, },