diff --git a/Makefile b/Makefile index 5fe98140b93..d9e9ec4b534 100644 --- a/Makefile +++ b/Makefile @@ -272,7 +272,7 @@ run-android: export TARGET := android run-android: ##@run Build Android APK and start it on the device npx react-native run-android --appIdSuffix debug -SIMULATOR=iPhone 11 Pro +SIMULATOR=iPhone 14 Plus run-ios: export TARGET := ios run-ios: ##@run Build iOS app and start it in a simulator/device ifneq ("$(SIMULATOR)", "") diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ac9c9ed2015..21707e014ea 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1,8 +1,9 @@ PODS: + - BigInt (5.2.0) - boost (1.76.0) - - BVLinearGradient (2.5.6): - - React - - CryptoSwift (1.5.1) + - BVLinearGradient (2.8.0): + - React-Core + - CryptoSwift (1.7.1) - DoubleConversion (1.1.6) - FBLazyVector (0.69.10) - FBReactNativeSpec (0.69.10): @@ -16,6 +17,7 @@ PODS: - glog (0.3.5) - HMSegmentedControl (1.5.6) - Keycard (3.0.6): + - BigInt - CryptoSwift - secp256k1 - SSZipArchive @@ -425,8 +427,8 @@ PODS: - React-Core - RNStaticSafeAreaInsets (2.2.0): - React-Core - - RNSVG (9.13.6): - - React + - RNSVG (13.10.0): + - React-Core - SDWebImage (5.11.1): - SDWebImage/Core (= 5.11.1) - SDWebImage/Core (5.11.1) @@ -527,6 +529,7 @@ DEPENDENCIES: SPEC REPOS: trunk: + - BigInt - CryptoSwift - fmt - HMSegmentedControl @@ -692,7 +695,7 @@ EXTERNAL SOURCES: CHECKOUT OPTIONS: Keycard: - :commit: 17381678bb981c3c553bb7202a26e642cecb1817 + :commit: 2cca3b1f0ac03d0300189c92048438861042bf1b :git: https://github.com/status-im/Keycard.swift.git secp256k1: :commit: 46a1fa30d9b8babeae85ff519050f42394ab5fcc @@ -700,16 +703,17 @@ CHECKOUT OPTIONS: :submodules: true SPEC CHECKSUMS: + BigInt: f668a80089607f521586bbe29513d708491ef2f7 boost: a7c83b31436843459a1961bfd74b96033dc77234 - BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872 - CryptoSwift: c4f2debceb38bf44c80659afe009f71e23e4a082 + BVLinearGradient: 612a04ff38e8480291f3379ee5b5a2c571f03fe0 + CryptoSwift: d3d18dc357932f7e6d580689e065cf1f176007c1 DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 FBLazyVector: a8af91c2b5a0029d12ff6b32e428863d63c48991 FBReactNativeSpec: 1b2309b096448a1dc9d0c43999216f8fda809ae8 fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 glog: d93527a855523adb8c113837db4be68fb00e230d HMSegmentedControl: 34c1f54d822d8308e7b24f5d901ec674dfa31352 - Keycard: ac6df4d91525c3c82635ac24d4ddd9a80aca5fc8 + Keycard: 6356090b25a4d0e10ee50ef3075fb2cdfa97f36e libwebp: f62cb61d0a484ba548448a4bd52aabf150ff6eef Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b Permission-Microphone: 0ffabc3fe1c75cfb260525ee3f529383c9f4368c @@ -772,10 +776,10 @@ SPEC CHECKSUMS: RNLanguages: 962e562af0d34ab1958d89bcfdb64fafc37c513e RNPermissions: ad71dd4f767ec254f2cd57592fbee02afee75467 RNReactNativeHapticFeedback: 2566b468cc8d0e7bb2f84b23adc0f4614594d071 - RNReanimated: 43adb0307a62c1ce9694f36f124ca3b51a15272a + RNReanimated: e807e10fd715e909c2088e66fc4f2975d5ad186f RNShare: d82e10f6b7677f4b0048c23709bd04098d5aee6c RNStaticSafeAreaInsets: 055ddbf5e476321720457cdaeec0ff2ba40ec1b8 - RNSVG: 8ba35cbeb385a52fd960fd28db9d7d18b4c2974f + RNSVG: 80584470ff1ffc7994923ea135a3e5ad825546b9 SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d SDWebImageWebPCoder: 908b83b6adda48effe7667cd2b7f78c897e5111d secp256k1: f61d67e6fdcb85fd727acf1bf35ace6036db540c @@ -785,6 +789,6 @@ SPEC CHECKSUMS: TouchID: ba4c656d849cceabc2e4eef722dea5e55959ecf4 Yoga: d24d6184b6b85f742536bd93bd07d69d7b9bb4c1 -PODFILE CHECKSUM: a7c3cb360cf217ab90667d67deeab588677d540a +PODFILE CHECKSUM: 1b60eee24bff3a6287f8b33e57657289b2966342 -COCOAPODS: 1.12.1 +COCOAPODS: 1.12.0 diff --git a/package.json b/package.json index ac2e6d125bc..98d17aade77 100644 --- a/package.json +++ b/package.json @@ -49,6 +49,7 @@ "react-native-fetch-polyfill": "^1.1.2", "react-native-fs": "^2.14.1", "react-native-gesture-handler": "2.6.1", + "react-native-gifted-charts": "^1.3.2", "react-native-haptic-feedback": "^1.9.0", "react-native-hole-view": "git+https://github.com/status-im/react-native-hole-view.git#refs/tags/v2.1.3-status", "react-native-image-crop-picker": "git+https://github.com/status-im/react-native-image-crop-picker.git#refs/tags/v0.36.2-status.0", @@ -56,7 +57,7 @@ "react-native-image-viewing": "git+https://github.com/status-im/react-native-image-viewing.git#refs/tags/v0.2.1.status", "react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#refs/tags/v.3.0.0-5-status", "react-native-languages": "^3.0.2", - "react-native-linear-gradient": "^2.5.6", + "react-native-linear-gradient": "2.8.0", "react-native-lottie-splash-screen": "^1.0.1", "react-native-mail": "git+https://github.com/status-im/react-native-mail.git#refs/tags/v6.1.2-status", "react-native-navigation": "^7.27.1", @@ -65,11 +66,11 @@ "react-native-randombytes": "^3.6.1", "react-native-reanimated": "2.11.0", "react-native-redash": "^16.0.11", + "react-native-svg": "13.10.0", "react-native-shake": "^3.3.1", "react-native-share": "^8.2.2", "react-native-static-safe-area-insets": "^2.2.0", "react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.5.39", - "react-native-svg": "^9.8.4", "react-native-touch-id": "^4.4.1", "react-native-transparent-video": "git+https://github.com/status-im/react-native-transparent-video.git#refs/tags/0.0.9", "react-native-webview": "git+https://github.com/status-im/react-native-webview.git#refs/tags/v11.16.0-status", diff --git a/src/quo2/components/graph/wallet_graph/style.cljs b/src/quo2/components/graph/wallet_graph/style.cljs new file mode 100644 index 00000000000..0042e2e0f15 --- /dev/null +++ b/src/quo2/components/graph/wallet_graph/style.cljs @@ -0,0 +1,10 @@ +(ns quo2.components.graph.wallet-graph.style) + +(def gradient-background + {:height 294 + :justify-content :flex-end}) + +(def x-axis-label-text-style + {:margin-bottom -3 + :padding-top -10 + :height 0}) diff --git a/src/quo2/components/graph/wallet_graph/view.cljs b/src/quo2/components/graph/wallet_graph/view.cljs new file mode 100644 index 00000000000..9ebedd56694 --- /dev/null +++ b/src/quo2/components/graph/wallet_graph/view.cljs @@ -0,0 +1,86 @@ +(ns quo2.components.graph.wallet-graph.view + (:require [quo2.theme :as theme] + [react-native.linear-gradient :as linear-gradient] + [react-native.charts :as charts] + [react-native.core :as rn] + [quo2.components.graph.wallet-graph.style :as style] + [quo2.foundations.colors :as colors])) + +(defn find-highest-value + [maps] + (reduce (fn [max-value map] + (let [value (:value map)] + (if (nil? max-value) ; Check if it's the first element + value + (if (> value max-value) + value + max-value)))) + nil + maps)) + +(defn downsample-data + [data max-array-size] + (let [data-size (count data) + aggregation-interval (max (/ data-size max-array-size) 1)] + (loop [i 0 + aggregated-data [] + current-aggregation [] + num-points 0] + (if (>= i data-size) + (vec (reverse aggregated-data)) + (let [point (nth data i)] + (if (< num-points aggregation-interval) + (recur (inc i) aggregated-data (conj current-aggregation point) (inc num-points)) + (let [aggregated-value (/ (reduce + (map :value current-aggregation)) aggregation-interval)] + (recur (inc i) (conj aggregated-data {:value aggregated-value}) [point] 1)))))))) + +(defn- wallet-graph-internal + [{:keys [data state time-frame theme]}] + (let [max-value (find-highest-value data) + width (:width (rn/get-screen)) + line-color (if (= state :positive) + (colors/theme-colors colors/success-50 colors/success-60 theme) + (colors/theme-colors colors/danger-50 colors/danger-60 theme)) + gradient-colors [(colors/alpha line-color 0.1) (colors/alpha line-color 0)] + fill-color (colors/theme-colors colors/white colors/neutral-95) + max-data-points (case time-frame + :empty 0 + :1-week 7 + :1-month 30 + :3-months 90 + :1-year 365 + 500) + data (if (> (count data) max-data-points) + (downsample-data data max-data-points) + data)] + [linear-gradient/linear-gradient + {:colors gradient-colors + :start {:x 0 :y 1} + :end {:x 0 :y 0} + :style style/gradient-background} + [charts/line-chart + {:height 96 + :width (+ width 1) + :max-value max-value + :min-value 0 + :adjust-to-width true + :data data + :area-chart true + :start-fill-color fill-color + :end-fill-color fill-color + :hide-data-points true + :hide-rules true + :hide-y-axis-text true + :x-axis-indices-height 100 + :thickness 2 + :color line-color + :y-axis-thickness 0 + :x-axis-thickness 0 + :initial-spacing 0 + :end-spacing 0 + :disable-scroll true + :y-axis-label-width 0.01 + :labels-extra-height -36 + :x-axis-label-text-style style/x-axis-label-text-style}]])) + +(def wallet-graph (theme/with-theme wallet-graph-internal)) diff --git a/src/quo2/core.cljs b/src/quo2/core.cljs index a140906ee79..dcd0c3c0180 100644 --- a/src/quo2/core.cljs +++ b/src/quo2/core.cljs @@ -35,6 +35,7 @@ quo2.components.drawers.permission-context.view quo2.components.dropdowns.dropdown quo2.components.empty-state.empty-state.view + quo2.components.graph.wallet-graph.view quo2.components.header quo2.components.icon quo2.components.info.info-message @@ -186,6 +187,9 @@ ;;;; EMPTY STATE (def empty-state quo2.components.empty-state.empty-state.view/empty-state) +;;;; GRAPH +(def wallet-graph quo2.components.graph.wallet-graph.view/wallet-graph) + ;;;; INPUTS (def input quo2.components.inputs.input.view/input) (def profile-input quo2.components.inputs.profile-input.view/profile-input) diff --git a/src/react_native/charts.cljs b/src/react_native/charts.cljs new file mode 100644 index 00000000000..dc58c36c130 --- /dev/null +++ b/src/react_native/charts.cljs @@ -0,0 +1,5 @@ +(ns react-native.charts + (:require ["react-native-gifted-charts" :as gifted-charts] + [reagent.core :as reagent])) + +(def line-chart (reagent/adapt-react-class (.-LineChart gifted-charts))) diff --git a/src/status_im2/contexts/quo_preview/graph/wallet_graph.cljs b/src/status_im2/contexts/quo_preview/graph/wallet_graph.cljs new file mode 100644 index 00000000000..7ee675a2852 --- /dev/null +++ b/src/status_im2/contexts/quo_preview/graph/wallet_graph.cljs @@ -0,0 +1,90 @@ +(ns status-im2.contexts.quo-preview.graph.wallet-graph + (:require [quo2.core :as quo] + [quo2.foundations.colors :as colors] + [react-native.core :as rn] + [reagent.core :as reagent] + [status-im2.contexts.quo-preview.preview :as preview])) + +(defn generate-crypto-token-prices + [num-elements volatility] + (loop [n num-elements + prices [] + prev-price (rand-int 100000) + volatility volatility] + (if (zero? n) + (vec (reverse prices)) + (let [fluctuation (* prev-price volatility) + random-delta (- (rand fluctuation) (/ fluctuation 2)) + new-price (+ prev-price random-delta) + new-price (if (< new-price 1) 1 new-price) + new-prices (conj prices {:value new-price})] + (recur (dec n) new-prices new-price volatility))))) + +(def descriptor + [{:label "State:" + :key :state + :type :select + :options [{:key :positive + :value "Positive"} + {:key :negative + :value "Negative"}]} + {:label "Time frame:" + :key :time-frame + :type :select + :options [{:key :empty + :value "Empty"} + {:key :1-week + :value "1 Week"} + {:key :1-month + :value "1 Month"} + {:key :3-months + :value "3 Months"} + {:key :1-year + :value "1 Year"} + {:key :all-time + :value "All time (500 years data)"}]}]) + +(defn generate-data + [time-frame] + (let [data-points (case time-frame + :empty 0 + :1-week 7 + :1-month 30 + :3-months 90 + :1-year 365 + (* 365 500)) + volatility (case time-frame + :empty 0 + :1-week 2 + :1-month 1 + :3-months 0.5 + :1-year 0.05 + 0.005)] + (generate-crypto-token-prices data-points volatility))) + +(defn cool-preview + [] + (let [state (reagent/atom {:state :positive + :time-frame :1-week})] + (fn [] + [rn/touchable-without-feedback {:on-press rn/dismiss-keyboard!} + [rn/view {:padding-bottom 150} + [preview/customizer state descriptor] + [:<> + [quo/wallet-graph + {:data (generate-data (:time-frame @state)) + :state (:state @state) + :time-frame (:time-frame @state)}]]]]))) + +(defn preview-wallet-graph + [] + [rn/view + {:background-color (colors/theme-colors + colors/white + colors/neutral-95) + :flex 1} + [rn/flat-list + {:flex 1 + :keyboard-should-persist-taps :always + :header [cool-preview] + :key-fn str}]]) diff --git a/src/status_im2/contexts/quo_preview/main.cljs b/src/status_im2/contexts/quo_preview/main.cljs index 1a7bf06cd69..91f456df752 100644 --- a/src/status_im2/contexts/quo_preview/main.cljs +++ b/src/status_im2/contexts/quo_preview/main.cljs @@ -21,6 +21,7 @@ [status-im2.contexts.quo-preview.buttons.predictive-keyboard :as predictive-keyboard] [status-im2.contexts.quo-preview.browser.browser-input :as browser-input] [status-im2.contexts.quo-preview.code.snippet :as code-snippet] + [status-im2.contexts.quo-preview.graph.wallet-graph :as wallet-graph] [status-im2.contexts.quo-preview.colors.color-picker :as color-picker] [status-im2.contexts.quo-preview.community.community-card-view :as community-card] [status-im2.contexts.quo-preview.community.community-membership-list-view :as @@ -203,6 +204,9 @@ :empty-state [{:name :empty-state :options {:topBar {:visible true}} :component empty-state/preview-empty-state}] + :graph [{:name :wallet-graph + :options {:topBar {:visible true}} + :component wallet-graph/preview-wallet-graph}] :info [{:name :info-message :options {:topBar {:visible true}} :component info-message/preview-info-message} diff --git a/yarn.lock b/yarn.lock index e6e8c9cf363..36b2bc1e721 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3384,7 +3384,7 @@ bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.3.tgz#beca005408f642ebebea80b042b4d18d2ac0ee6b" integrity sha512-GkTiFpjFtUzU9CbMeJ5iazkCzGL3jrhzerzZIuqLABjbwRaFt33I9tUdSNryIptM+RxDet6OKm2WnLXzW51KsQ== -boolbase@^1.0.0, boolbase@~1.0.0: +boolbase@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" integrity sha1-aN/1++YMUes3cl6p4+0xDcwed24= @@ -4197,28 +4197,29 @@ crypto-random-string@^2.0.0: resolved "https://registry.yarnpkg.com/crypto-random-string/-/crypto-random-string-2.0.0.tgz#ef2a7a966ec11083388369baa02ebead229b30d5" integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA== -css-select@^2.0.2: - version "2.1.0" - resolved "https://registry.yarnpkg.com/css-select/-/css-select-2.1.0.tgz#6a34653356635934a81baca68d0255432105dbef" - integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ== +css-select@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-5.1.0.tgz#b8ebd6554c3637ccc76688804ad3f6a6fdaea8a6" + integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg== dependencies: boolbase "^1.0.0" - css-what "^3.2.1" - domutils "^1.7.0" - nth-check "^1.0.2" + css-what "^6.1.0" + domhandler "^5.0.2" + domutils "^3.0.1" + nth-check "^2.0.1" -css-tree@^1.0.0-alpha.37: - version "1.0.0-alpha.39" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.0.0-alpha.39.tgz#2bff3ffe1bb3f776cf7eefd91ee5cba77a149eeb" - integrity sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA== +css-tree@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d" + integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q== dependencies: - mdn-data "2.0.6" + mdn-data "2.0.14" source-map "^0.6.1" -css-what@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/css-what/-/css-what-3.2.1.tgz#f4a8f12421064621b456755e34a03a2c22df5da1" - integrity sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw== +css-what@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.1.0.tgz#fb5effcf76f1ddea2c81bdfaa4de44e79bac70f4" + integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw== cssom@^0.4.4: version "0.4.4" @@ -4483,28 +4484,24 @@ dijkstrajs@^1.0.1: resolved "https://registry.yarnpkg.com/dijkstrajs/-/dijkstrajs-1.0.1.tgz#d3cd81221e3ea40742cfcde556d4e99e98ddc71b" integrity sha1-082BIh4+pAdCz83lVtTpnpjdxxs= -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== +dom-serializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-2.0.0.tgz#e41b802e1eedf9f6cae183ce5e622d789d7d8e53" + integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg== dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.2" + entities "^4.2.0" domain-browser@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - -domelementtype@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.1.tgz#1f8bdfe91f5a78063274e803b4bdcedf6e94f94d" - integrity sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ== +domelementtype@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== domexception@^2.0.1: version "2.0.1" @@ -4513,13 +4510,21 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" -domutils@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== +domhandler@^5.0.2, domhandler@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-5.0.3.tgz#cc385f7f751f1d1fc650c21374804254538c7d31" + integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w== dependencies: - dom-serializer "0" - domelementtype "1" + domelementtype "^2.3.0" + +domutils@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-3.1.0.tgz#c47f551278d3dc4b0b1ab8cbb42d751a6f0d824e" + integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA== + dependencies: + dom-serializer "^2.0.0" + domelementtype "^2.3.0" + domhandler "^5.0.3" dot-prop@^5.2.0: version "5.3.0" @@ -4605,10 +4610,10 @@ end-of-stream@^1.1.0, end-of-stream@^1.4.1: dependencies: once "^1.4.0" -entities@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.0.tgz#68d6084cab1b079767540d80e56a39b423e4abf4" - integrity sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw== +entities@^4.2.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== envinfo@^7.7.2: version "7.8.1" @@ -7152,10 +7157,10 @@ md5.js@^1.3.4: inherits "^2.0.1" safe-buffer "^5.1.2" -mdn-data@2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.6.tgz#852dc60fcaa5daa2e8cf6c9189c440ed3e042978" - integrity sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA== +mdn-data@2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" + integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow== memoize-one@^5.0.0: version "5.2.1" @@ -7898,12 +7903,12 @@ npmlog@^5.0.1: gauge "^3.0.0" set-blocking "^2.0.0" -nth-check@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-1.0.2.tgz#b2bd295c37e3dd58a3bf0700376663ba4d9cf05c" - integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg== +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== dependencies: - boolbase "~1.0.0" + boolbase "^1.0.0" nullthrows@^1.1.1: version "1.1.1" @@ -8847,6 +8852,14 @@ react-native-gesture-handler@2.6.1: lodash "^4.17.21" prop-types "^15.7.2" +react-native-gifted-charts@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/react-native-gifted-charts/-/react-native-gifted-charts-1.3.2.tgz#9e2d054b8571026eec5d6a38a7a424da065df726" + integrity sha512-MHWE0A772w57ZKz/r7cWjBFwvRzY3kWDv+PaMBACzNdL13paLl/uOHsKzPP1lZ3Hnj3iICEo7u4aqo0TQ3mGLQ== + dependencies: + react-native-linear-gradient "^2.7.3" + react-native-svg "^13.9.0" + react-native-gradle-plugin@^0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/react-native-gradle-plugin/-/react-native-gradle-plugin-0.0.7.tgz#96602f909745239deab7b589443f14fce5da2056" @@ -8883,10 +8896,15 @@ react-native-languages@^3.0.2: resolved "https://registry.yarnpkg.com/react-native-languages/-/react-native-languages-3.0.2.tgz#c2c4c5050974fe4b50f7372051ca1f9824c1c778" integrity sha512-LGsTfixFM6hXDhcFJI6mrtrNBsGPSvXT9RtZQ0tlqmGFKmMyZW6eQgJ7kLw8lISD2FIGl4jJwY06EAJpbMsNxg== -react-native-linear-gradient@^2.5.6: - version "2.5.6" - resolved "https://registry.yarnpkg.com/react-native-linear-gradient/-/react-native-linear-gradient-2.5.6.tgz#96215cbc5ec7a01247a20890888aa75b834d44a0" - integrity sha512-HDwEaXcQIuXXCV70O+bK1rizFong3wj+5Q/jSyifKFLg0VWF95xh8XQgfzXwtq0NggL9vNjPKXa016KuFu+VFg== +react-native-linear-gradient@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/react-native-linear-gradient/-/react-native-linear-gradient-2.8.0.tgz#767eda0a5c5dbed852f99e4c07fb7d54a8ee3030" + integrity sha512-ZuvNXEB98CMEOAphV/8N9eWrIQTbzUIZD5Tb8IqFoDE8ESERISPT2hTZMvoHTSfjvaB1zge6YpWVg3rpwiTZow== + +react-native-linear-gradient@^2.7.3: + version "2.7.3" + resolved "https://registry.yarnpkg.com/react-native-linear-gradient/-/react-native-linear-gradient-2.7.3.tgz#f77b71ed7c955e033f9cba5fc8478df57953eb27" + integrity sha512-iyJszlZ1Ech2c+2qV+isMvvJKyoctR9ashDkhJg1/cuSF0vQaeLV1FAYTT3qW9doxChJGxVAFfYoxotH0yi3Iw== react-native-lottie-splash-screen@^1.0.1: version "1.0.1" @@ -8979,13 +8997,13 @@ react-native-static-safe-area-insets@^2.2.0: version "2.5.39" resolved "git+https://github.com/status-im/react-native-status-keycard.git#93dd64754e676172310e6ea7187cc49f2dc013c6" -react-native-svg@^9.8.4: - version "9.13.6" - resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-9.13.6.tgz#5365fba2bc460054b90851e71f2a71006a5d373f" - integrity sha512-vjjuJhEhQCwWjqsgWyGy6/C/LIBM2REDxB40FU1PMhi8T3zQUwUHnA6M15pJKlQG8vaZyA+QnLyIVhjtujRgig== +react-native-svg@13.10.0, react-native-svg@^13.9.0: + version "13.10.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-13.10.0.tgz#d3c6222ea9cc1e21e2af0fd59dfbeafe7a3d0dc1" + integrity sha512-D/oYTmUi5nsA/2Nw4WYlF1UUi3vZqhpESpiEhpYCIFB/EMd6vz4A/uq3tIzZFcfa5z2oAdGSxRU1TaYr8IcPlQ== dependencies: - css-select "^2.0.2" - css-tree "^1.0.0-alpha.37" + css-select "^5.1.0" + css-tree "^1.1.3" react-native-touch-id@^4.4.1: version "4.4.1"