Skip to content

Commit dfc8a2e

Browse files
committed
Prepare build for release.
Signed-off-by: Shashank Prabhakar Reddy <pshashank0502@gmail.com>
1 parent d3c846e commit dfc8a2e

File tree

29 files changed

+19881
-224
lines changed

29 files changed

+19881
-224
lines changed

app/(intro)/intro.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const { width, height } = Dimensions.get("window");
2424
const SLIDES = [
2525
{
2626
id: "1",
27-
title: "Hey you!!!!! Yes you.",
27+
title: "Hey you! Yes you.",
2828
description:
2929
"Are you a young professional or just worried about the environment?",
3030
image: require("../../assets/intro/tracking(2).svg"),

app/RewardsPage.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ const RewardsPage = () => {
4646
onClose={() => setShowShareModal(false)}
4747
points={userPoints}
4848
co2SavedKg={estimatedCO2Saved}
49+
personaStage={user?.personaStage}
4950
/>
5051
</View>
5152
);

app/SettingsPage.jsx

Lines changed: 154 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import * as Clipboard from "expo-clipboard";
44
import Constants from "expo-constants";
55
import { LinearGradient } from "expo-linear-gradient";
66
import { useRouter } from "expo-router";
7-
import { useState } from "react";
7+
import { useEffect, useState } from "react";
88
import {
99
Alert,
1010
StyleSheet,
@@ -18,11 +18,15 @@ import LogoutModal from "../components/settings/LogoutModal";
1818
import SettingsCard from "../components/settings/SettingsCard";
1919
import SettingsIcon from "../components/settings/SettingsIcon";
2020
import PrivacyPolicyModal from "../components/settings/PrivacyPolicyModal";
21+
import DevSettingsModal from "../components/settings/DevSettingsModal";
2122
import UserInfoCard from "../components/settings/UserInfoCard";
2223
import { useHaptics } from "../context/HapticsContext";
2324
import { useUser } from "../context/UserContext";
2425
import StorageService from "../services/storage";
2526
import colors from "../theme/colors";
27+
import { showFeedbackToast } from "../utils/toast";
28+
29+
const MORE_SETTINGS_TAPS_REQUIRED = 4;
2630

2731
const SettingsPage = () => {
2832
const version = Constants.expoConfig?.version || "1.0.0";
@@ -31,13 +35,26 @@ const SettingsPage = () => {
3135
const [showEmailInput, setShowEmailInput] = useState(false);
3236
const [email, setEmail] = useState("");
3337
const [privacyVisible, setPrivacyVisible] = useState(false);
38+
const [devModalVisible, setDevModalVisible] = useState(false);
39+
const [showMoreSettings, setShowMoreSettings] = useState(false);
40+
const [moreSettingsUnlocked, setMoreSettingsUnlocked] = useState(false);
41+
const [userInfoTapCount, setUserInfoTapCount] = useState(0);
42+
const [carbonPointsInput, setCarbonPointsInput] = useState("");
3443
const router = useRouter();
3544
const { enabled, toggleHaptics } = useHaptics();
36-
const { user, resetUser, updateUser } = useUser();
45+
const { user, resetUser, updateUser, setCarbonPoints } = useUser();
3746

3847
// Debug toggle
3948
// const [showDebug, setShowDebug] = useState(false);
4049

50+
useEffect(() => {
51+
if (user?.carbonPoints != null) {
52+
setCarbonPointsInput(String(user.carbonPoints));
53+
} else {
54+
setCarbonPointsInput("");
55+
}
56+
}, [user?.carbonPoints]);
57+
4158
const cyclePersonaStage = async () => {
4259
if (!user) return;
4360
const order = ["leaf", "sapling", "tree"];
@@ -75,7 +92,6 @@ const SettingsPage = () => {
7592
const handleLogout = async () => {
7693
try {
7794
await resetUser();
78-
7995
router.replace("/");
8096
} catch (err) {
8197

@@ -87,6 +103,57 @@ const SettingsPage = () => {
87103
setShowEmailInput(false);
88104
};
89105

106+
const handleUserInfoPress = () => {
107+
if (moreSettingsUnlocked) {
108+
return;
109+
}
110+
111+
const nextCount = userInfoTapCount + 1;
112+
setUserInfoTapCount(nextCount);
113+
114+
if (nextCount === MORE_SETTINGS_TAPS_REQUIRED - 2) {
115+
showFeedbackToast({
116+
title: "Almost there",
117+
message: "2 more clicks to go and you have unlocked More Settings.",
118+
});
119+
}
120+
121+
if (nextCount >= MORE_SETTINGS_TAPS_REQUIRED) {
122+
setMoreSettingsUnlocked(true);
123+
setShowMoreSettings(true);
124+
setUserInfoTapCount(0);
125+
showFeedbackToast({
126+
title: "More Settings Unlocked",
127+
message: "Developer settings are now available.",
128+
});
129+
}
130+
};
131+
132+
const handleShowUserContext = () => {
133+
if (!user) {
134+
Alert.alert("User Context", "No user data available.");
135+
return;
136+
}
137+
138+
Alert.alert(
139+
"User Context",
140+
JSON.stringify(user, null, 2),
141+
[{ text: "Close" }],
142+
{ cancelable: true }
143+
);
144+
};
145+
146+
const handleSaveCarbonPoints = async () => {
147+
const parsed = Number(carbonPointsInput);
148+
if (!Number.isFinite(parsed)) {
149+
Alert.alert("Invalid Input", "Please enter a valid number.");
150+
return;
151+
}
152+
153+
await setCarbonPoints(parsed);
154+
Alert.alert("Updated", "Carbon points have been updated.");
155+
};
156+
90157
return (
91158
<View style={styles.container}>
92159
{/* Header */}
@@ -107,7 +174,11 @@ const SettingsPage = () => {
107174
</View>
108175

109176
{/* User Information Card */}
110-
<UserInfoCard ecoId={user?.eco_id} onCopy={copyEcoId} />
177+
<UserInfoCard
178+
ecoId={user?.eco_id}
179+
onCopy={copyEcoId}
180+
onPress={handleUserInfoPress}
181+
/>
111182

112183
{/* Haptics Toggle */}
113184
<SettingsCard
@@ -141,28 +212,55 @@ const SettingsPage = () => {
141212
onPress={() => setPrivacyVisible(true)}
142213
/>
143214

144-
{/* Debug */}
145-
{/* <CTAButton
146-
label="Show User Context"
147-
variant="outlined"
148-
onPress={() => setShowDebug((prev) => !prev)}
149-
style={{ marginTop: 12 }}
150-
/>
151-
152-
{showDebug && (
153-
<Text style={{ color: "red", fontSize: 12, marginTop: 8 }}>
154-
{JSON.stringify(user, null, 2)}
155-
</Text>
215+
{moreSettingsUnlocked && (
216+
<SettingsCard
217+
title="More Settings"
218+
subtitle="Additional configuration options"
219+
icon={
220+
<Ionicons
221+
name="options-outline"
222+
size={20}
223+
color={colors.textPrimary}
224+
/>
225+
}
226+
rightContent={
227+
<Ionicons
228+
name={showMoreSettings ? "chevron-up" : "chevron-down"}
229+
size={18}
230+
color={colors.textSecondary}
231+
/>
232+
}
233+
onPress={() => setShowMoreSettings((prev) => !prev)}
234+
>
235+
{showMoreSettings && (
236+
<View style={styles.moreSettingsList}>
237+
<TouchableOpacity
238+
style={styles.moreSettingsItem}
239+
onPress={() => setDevModalVisible(true)}
240+
activeOpacity={0.7}
241+
>
242+
<View style={styles.moreSettingsLeft}>
243+
<Ionicons
244+
name="construct-outline"
245+
size={18}
246+
color="#000"
247+
style={styles.moreSettingsIcon}
248+
/>
249+
<Text style={styles.moreSettingsLabel}>
250+
Developer Settings
251+
</Text>
252+
</View>
253+
<Ionicons
254+
name="chevron-forward"
255+
size={18}
256+
color={colors.textSecondary}
257+
/>
258+
</TouchableOpacity>
259+
</View>
260+
)}
261+
</SettingsCard>
156262
)}
157263

158-
<CTAButton
159-
label="Cycle Persona Stage"
160-
variant="outlined"
161-
onPress={cyclePersonaStage}
162-
style={{ marginTop: 12 }}
163-
/> */}
164-
{/* End - Debug */}
165-
166264
{/* Logout Button */}
167265
<CTAButton
168266
label="Log Out"
@@ -189,6 +287,14 @@ const SettingsPage = () => {
189287
visible={privacyVisible}
190288
onClose={() => setPrivacyVisible(false)}
191289
/>
290+
<DevSettingsModal
291+
visible={devModalVisible}
292+
onClose={() => setDevModalVisible(false)}
293+
onShowUserContext={handleShowUserContext}
294+
carbonPointsValue={carbonPointsInput}
295+
onChangeCarbonPoints={setCarbonPointsInput}
296+
onSaveCarbonPoints={handleSaveCarbonPoints}
297+
/>
192298
<Text style={styles.versionText}>
193299
{`Version ${version}${buildStage ? ` (${buildStage})` : ""}`}
194300
</Text>
@@ -228,6 +334,30 @@ const styles = StyleSheet.create({
228334
fontSize: 20,
229335
color: colors.textSecondary,
230336
},
337+
moreSettingsList: {
338+
marginTop: 12,
339+
paddingTop: 12,
340+
borderTopWidth: 1,
341+
borderTopColor: colors.neutral.gray100,
342+
},
343+
moreSettingsItem: {
344+
flexDirection: "row",
345+
alignItems: "center",
346+
justifyContent: "space-between",
347+
paddingVertical: 8,
348+
},
349+
moreSettingsLeft: {
350+
flexDirection: "row",
351+
alignItems: "center",
352+
},
353+
moreSettingsIcon: {
354+
marginRight: 12,
355+
},
356+
moreSettingsLabel: {
357+
fontSize: 14,
358+
fontWeight: "500",
359+
color: colors.textPrimary,
360+
},
231361
logoutBtn: {
232362
backgroundColor: "#DC2626",
233363
marginTop: 16,

app/_layout.tsx

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import { StatusBar } from "expo-status-bar";
1111

1212
import { HapticsProvider } from "../context/HapticsContext";
1313
import { TrackingProvider } from "../context/TrackingContext";
14+
import { TrackingDataProvider } from "../context/TrackingDataContext";
1415
import { UserProvider } from "../context/UserContext";
1516
import { getSeenIntro } from "../lib/storage/firstRun";
1617
import colors from "../theme/colors";
@@ -73,13 +74,15 @@ export default function RootLayout() {
7374
/>
7475
<UserProvider>
7576
<HapticsProvider>
76-
<TrackingProvider>
77-
<SafeAreaView style={styles.safeAreaShell} edges={EDGES}>
78-
<View style={styles.container}>
79-
{ready ? <Slot /> : null}
80-
</View>
81-
</SafeAreaView>
82-
</TrackingProvider>
77+
<TrackingDataProvider>
78+
<TrackingProvider>
79+
<SafeAreaView style={styles.safeAreaShell} edges={EDGES}>
80+
<View style={styles.container}>
81+
{ready ? <Slot /> : null}
82+
</View>
83+
</SafeAreaView>
84+
</TrackingProvider>
85+
</TrackingDataProvider>
8386
</HapticsProvider>
8487
</UserProvider>
8588
</SafeAreaProvider>

assets/animations/05.json

Lines changed: 18594 additions & 1 deletion
Large diffs are not rendered by default.

assets/animations/Clover.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"nm":"Clover","ddd":0,"h":140,"w":140,"meta":{"g":"@lottiefiles/toolkit-js 0.33.2"},"layers":[{"ty":4,"nm":"Fold - 4","sr":1,"st":0,"op":97,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-333.402,-125.601,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[5.446,6.268,0],"ix":2},"r":{"a":0,"k":34.029,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Rectangle 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-25.724,-42.112],[34.799,-37.567],[24.095,52.435],[12.305,4.067],[-59.122,-26.03]],"o":[[-27.115,37.876],[-31.831,34.363],[-17.074,-37.157],[-80.095,-26.475],[25.493,11.224]],"v":[[145.5,66],[88.146,132.32],[7.229,107.198],[39.019,51.966],[67.443,-8.206]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"c":{"a":0,"k":[0.4,0.4275,0.5373],"ix":3}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2627,0.6627,0.1216],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[-100.277,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-187.5,-195],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":1,"parent":5},{"ty":4,"nm":"Fold - 3","sr":1,"st":0,"op":97,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-41.258,-129,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-3.258,-1,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Rectangle 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2,-53],[46.124,-13.324],[-50.103,28.631],[6.402,11.268],[-40.552,-50.284]],"o":[[-23,-18],[-45,13],[35,-20],[-32.795,-57.723],[21.34,26.461]],"v":[[145.5,66],[22.5,44],[-16.5,-22],[35.295,-31.277],[125.5,-34]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"c":{"a":0,"k":[0.4,0.4275,0.5373],"ix":3}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.298,0.749,0.1373],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[-92.206,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[98.5,-199],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":2,"parent":5},{"ty":4,"nm":"Fold - 2","sr":1,"st":0,"op":97,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-41.258,-129,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-7.258,3,0],"ix":2},"r":{"a":0,"k":-37.866,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Rectangle 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[-25.724,-42.112],[34.799,-37.567],[24.095,52.435],[12.305,4.067],[-59.122,-26.03]],"o":[[-27.115,37.876],[-31.831,34.363],[-17.074,-37.157],[-80.095,-26.475],[25.493,11.224]],"v":[[145.5,66],[88.146,132.32],[7.229,107.198],[39.019,51.966],[67.443,-8.206]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"c":{"a":0,"k":[0.4,0.4275,0.5373],"ix":3}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2627,0.6627,0.1216],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-187.5,-195],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":3,"parent":5},{"ty":4,"nm":"Fold - 1","sr":1,"st":0,"op":97,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-41.258,-129,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-3.258,-1,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Rectangle 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[2,-53],[46.124,-13.324],[-50.103,28.631],[6.402,11.268],[-40.552,-50.284]],"o":[[-23,-18],[-45,13],[35,-20],[-32.795,-57.723],[21.34,26.461]],"v":[[145.5,66],[22.5,44],[-16.5,-22],[35.295,-31.277],[125.5,-34]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"c":{"a":0,"k":[0.4,0.4275,0.5373],"ix":3}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.298,0.749,0.1373],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[-187.5,-195],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":4,"parent":5},{"ty":3,"nm":"Body: Path 1 [1.1.0]","sr":1,"st":0,"op":97,"ip":0,"hd":false,"cl":"1 0","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[12.96,12.96,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.53,"y":0},"i":{"x":0.47,"y":1},"s":[65.07,53.41,0],"t":0},{"o":{"x":0.53,"y":0},"i":{"x":0.47,"y":1},"s":[75.96,55.61,0],"t":48},{"s":[65.07,53.41,0],"t":96}],"ix":2},"r":{"a":1,"k":[{"o":{"x":0.53,"y":0},"i":{"x":0.47,"y":1},"s":[0],"t":0},{"o":{"x":0.53,"y":0},"i":{"x":0.47,"y":1},"s":[7],"t":48},{"s":[0],"t":96}],"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":0,"ix":11}},"ef":[],"ind":5},{"ty":3,"nm":"Body: Path 1 [1.1.1]","sr":1,"st":0,"op":97,"ip":0,"hd":false,"cl":"1 1","ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[12.96,12.96,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[63,101.11,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":0,"ix":11}},"ef":[],"ind":6},{"ty":4,"nm":"Body","sr":1,"st":0,"op":97,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-43.481,72,0],"ix":1},"s":{"a":0,"k":[12.96,12.96,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[64.36,79.33,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[{"ty":5,"mn":"ADBE Layer Control","nm":"Body: Path 1 [1.1.0]","ix":1,"en":1,"ef":[{"ty":10,"mn":"ADBE Layer Control-0001","nm":"Layer","ix":1,"v":{"a":0,"k":5,"ix":1}}]},{"ty":5,"mn":"ADBE Layer Control","nm":"Body: Path 1 [1.1.1]","ix":2,"en":1,"ef":[{"ty":10,"mn":"ADBE Layer Control-0001","nm":"Layer","ix":1,"v":{"a":0,"k":6,"ix":1}}]}],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":1,"k":[{"o":{"x":0.53,"y":0},"i":{"x":0.47,"y":1},"s":[{"c":false,"i":[[-10,-62],[30,-122]],"o":[[10,62],[-30,122]],"v":[[-38,-128],[-54,240]]}],"t":0},{"o":{"x":0.53,"y":0},"i":{"x":0.47,"y":1},"s":[{"c":false,"i":[[29,-59],[-24,-125]],"o":[[-27.703,56.361],[23.689,123.381]],"v":[[-38,-128],[-54,240]]}],"t":48},{"s":[{"c":false,"i":[[-10,-62],[30,-122]],"o":[[10,62],[-30,122]],"v":[[-38,-128],[-54,240]]}],"t":96}],"ix":2,"x":"var $bm_rt;\nvar nullLayerNames = [\n 'Body: Path 1 [1.1.0]',\n 'Body: Path 1 [1.1.1]'\n ];\nvar origPath = thisProperty;\nvar origPoints = origPath.points();\nvar origInTang = origPath.inTangents();\nvar origOutTang = origPath.outTangents();\nvar getNullLayers = [];\nfor (var i = 0, il = nullLayerNames.length; i < il; i++) {\n try {\n getNullLayers.push(effect(nullLayerNames[i])('ADBE Layer Control-0001'));\n } catch (err) {\n getNullLayers.push(null);\n }\n}\nfor (var i = 0, il = getNullLayers.length; i < il; i++) {\n if (getNullLayers[i] != null && getNullLayers[i].index != thisLayer.index) {\n origPoints[i] = fromCompToSurface(getNullLayers[i].toComp(getNullLayers[i].anchorPoint));\n }\n}\n$bm_rt = createPath(origPoints, origInTang, origOutTang, origPath.isClosed());"}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":2,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":19,"ix":5},"c":{"a":0,"k":[0.298,0.749,0.1373],"ix":3}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":7},{"ty":4,"nm":"Ground","sr":1,"st":0,"op":97,"ip":0,"hd":false,"ddd":0,"bm":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-65.805,272.493,0],"ix":1},"s":{"a":0,"k":[12.96,12.96,100],"ix":6},"sk":{"a":0,"k":0},"p":{"a":0,"k":[59.91,103.25,0],"ix":2},"r":{"a":0,"k":0,"ix":10},"sa":{"a":0,"k":0},"o":{"a":0,"k":100,"ix":11}},"ef":[],"shapes":[{"ty":"gr","bm":0,"hd":false,"mn":"ADBE Vector Group","nm":"Shape 1","ix":1,"cix":2,"np":3,"it":[{"ty":"sh","bm":0,"hd":false,"mn":"ADBE Vector Shape - Group","nm":"Path 1","ix":1,"d":1,"ks":{"a":0,"k":{"c":true,"i":[[96.638,-4.602],[8,-46],[-138,12],[-129.074,0],[148.066,-2.085]],"o":[[-84,4],[-7.229,41.566],[138,-12],[138,0],[-142,2]],"v":[[-120,190],[-272,272],[-74,346],[88,388],[144,226]]},"ix":2}},{"ty":"st","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Stroke","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"c":{"a":0,"k":[0.298,0.749,0.1373],"ix":3}},{"ty":"fl","bm":0,"hd":false,"mn":"ADBE Vector Graphic - Fill","nm":"Fill 1","c":{"a":0,"k":[0.2039,0.3843,0.1333],"ix":4},"r":1,"o":{"a":0,"k":100,"ix":5}},{"ty":"tr","a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"sk":{"a":0,"k":0,"ix":4},"p":{"a":0,"k":[0,0],"ix":2},"r":{"a":0,"k":0,"ix":6},"sa":{"a":0,"k":0,"ix":5},"o":{"a":0,"k":100,"ix":7}}]}],"ind":8}],"v":"5.6.5","fr":24,"op":97,"ip":0,"assets":[]}

assets/animations/tree.json

Lines changed: 1 addition & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)