diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 2f92dac1e..f0c7b20d7 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -5,9 +5,9 @@ runs: using: composite steps: - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: - node-version: 16.x + node-version: lts/* - name: Cache dependencies id: yarn-cache @@ -15,13 +15,13 @@ runs: with: path: | **/node_modules - key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + key: ${{ runner.os }}-yarn-v1-${{ hashFiles('**/yarn.lock') }} restore-keys: | - ${{ runner.os }}-yarn- + ${{ runner.os }}-yarn-v1- - name: Install dependencies if: steps.yarn-cache.outputs.cache-hit != 'true' run: | yarn install --cwd example --frozen-lockfile - yarn install --frozen-lockfile + yarn install --frozen-lockfile --ignore-engines shell: bash diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 82df70b16..435f0e87f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,7 +4,7 @@ on: jobs: lint: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v3 @@ -19,7 +19,7 @@ jobs: run: yarn typescript test: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v3 @@ -31,7 +31,7 @@ jobs: run: yarn test --maxWorkers=2 --coverage build: - runs-on: ubuntu-latest + runs-on: macos-latest steps: - name: Checkout uses: actions/checkout@v3 diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 1ac9a4fb2..7357e8a76 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,14 +13,15 @@ env: jobs: publish: name: publish - runs-on: ubuntu-latest + runs-on: macos-latest strategy: fail-fast: false - matrix: - node-version: [16.x] steps: - uses: actions/checkout@v2 + - uses: actions/setup-node@v4 + with: + node-version: lts/* - name : GITHUB CONTEXT env: GITHUB_CONTEXT: ${{ toJson(github) }} @@ -31,11 +32,6 @@ jobs: echo "commitmsg=${COMMIT_MESSAGE}" >> $GITHUB_ENV - name: Show commit message run : echo "$commitmsg" - - name: Setup Node ${{ matrix.node_version }} - uses: actions/setup-node@v1 - with: - node-version: 16 - registry-url: 'https://registry.npmjs.org' - name: npm install, build run: | yarn diff --git a/.gitignore b/.gitignore index 19d0fb364..e659139fc 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,6 @@ lib/ # Docusaurus (when switching from docs branches to code branches) .docusaurus/ + +# jest +coverage/ \ No newline at end of file diff --git a/example/package.json b/example/package.json index 13352a389..b01f04546 100644 --- a/example/package.json +++ b/example/package.json @@ -12,10 +12,10 @@ "@expo/webpack-config": "~19.0.1", "@shopify/react-native-skia": "0.1.221", "echarts": "^5.5.0", - "expo": "^50.0.0", + "expo": "~50.0.7", "react": "18.2.0", "react-dom": "18.2.0", - "react-native": "0.73.2", + "react-native": "0.73.4", "react-native-gesture-handler": "~2.14.0", "react-native-svg": "14.1.0", "react-native-web": "~0.19.6", diff --git a/example/yarn.lock b/example/yarn.lock index 02edb3619..42bc6532a 100644 --- a/example/yarn.lock +++ b/example/yarn.lock @@ -1271,10 +1271,10 @@ mv "~2" safe-json-stringify "~1" -"@expo/cli@0.17.3": - version "0.17.3" - resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.17.3.tgz#0763696671522062e5592411d02952ed905d4838" - integrity sha512-lIK8igsEQxTh4WuDlcEhE0wAJcDrAyjWDF00phdmwuSCpE5SaEXNlddOXvGxEVKPhUxHZUFo9NbfoQC+JVmkfA== +"@expo/cli@0.17.5": + version "0.17.5" + resolved "https://registry.yarnpkg.com/@expo/cli/-/cli-0.17.5.tgz#b409d0ea330b3c1283b9d239bb747de9284d119e" + integrity sha512-9cMquL/5bBfV73CbZcWipk3KZSo8mBqdgvkoWCtEtnnlm/879ayxzMWjVIgT5yV4w+X7+N6KkBSUIIj4t9Xqew== dependencies: "@babel/runtime" "^7.20.0" "@expo/code-signing-certificates" "0.0.5" @@ -1342,6 +1342,7 @@ send "^0.18.0" slugify "^1.3.4" source-map-support "~0.5.21" + stacktrace-parser "^0.1.10" structured-headers "^0.4.1" tar "^6.0.5" temp-dir "^2.0.0" @@ -1499,7 +1500,33 @@ json5 "^2.2.2" write-file-atomic "^2.3.0" -"@expo/metro-config@0.17.3", "@expo/metro-config@~0.17.0": +"@expo/metro-config@0.17.4": + version "0.17.4" + resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.4.tgz#3896d65f779963a8ce7069a4bae4546b6541219c" + integrity sha512-PxqDMuVjXQeboa6Aj8kNj4iTxIpwpfoYlF803qOjf1LE1ePlREnWNwqy65ESCBnCmekYIO5hhm1Nksa+xCvuyg== + dependencies: + "@babel/core" "^7.20.0" + "@babel/generator" "^7.20.5" + "@babel/parser" "^7.20.0" + "@babel/types" "^7.20.0" + "@expo/config" "~8.5.0" + "@expo/env" "~0.2.0" + "@expo/json-file" "~8.3.0" + "@expo/spawn-async" "^1.7.2" + babel-preset-fbjs "^3.4.0" + chalk "^4.1.0" + debug "^4.3.2" + find-yarn-workspace-root "~2.0.0" + fs-extra "^9.1.0" + getenv "^1.0.0" + glob "^7.2.3" + jsc-safe-url "^0.2.4" + lightningcss "~1.19.0" + postcss "~8.4.32" + resolve-from "^5.0.0" + sucrase "3.34.0" + +"@expo/metro-config@~0.17.0": version "0.17.3" resolved "https://registry.yarnpkg.com/@expo/metro-config/-/metro-config-0.17.3.tgz#f06f0929e4ac907517d24794d35021901651da49" integrity sha512-YW8ixbaz6yL7/Mg1rJJejiAAVQQKjGY1wXvT2Dh487r/r9/j1yE1YRS/oRY1yItYzbnHvO0p0jMnEGfiFYL3Tg== @@ -1820,43 +1847,43 @@ mkdirp "^1.0.4" rimraf "^3.0.2" -"@react-native-community/cli-clean@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz#667b32daa58b4d11d5b5ab9eb0a2e216d500c90b" - integrity sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg== +"@react-native-community/cli-clean@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz#d4f1730c3d22d816b4d513d330d5f3896a3f5921" + integrity sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" -"@react-native-community/cli-config@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.0.tgz#255b4e5391878937a25888f452f50a968d053e3e" - integrity sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ== +"@react-native-community/cli-config@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.2.tgz#1a5de302de4d597ff2fc9932a032134b6ec4325f" + integrity sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" glob "^7.1.3" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz#75bbb2082a369b3559e0dffa8bfeebf2a9107e3e" - integrity sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ== +"@react-native-community/cli-debugger-ui@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz#b2743876b03e560fbf5ef516e95387fcb6d91630" + integrity sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz#420eb4e80d482f16d431c4df33fbc203862508af" - integrity sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA== +"@react-native-community/cli-doctor@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz#9e82b49f04ee03872b2975f26c8799cecac021ce" + integrity sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg== dependencies: - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-platform-ios" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" @@ -1871,53 +1898,53 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz#c302acbfb07e1f4e73e76e3150c32f0e4f54e9ed" - integrity sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg== +"@react-native-community/cli-hermes@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz#5f266985fe32a37e9020e881460e9017870be2e5" + integrity sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA== dependencies: - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz#eafa5fb12ebc25f716aea18cd55039c19fbedca6" - integrity sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw== +"@react-native-community/cli-platform-android@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz#de54d89712f8ea95046d798ec274fd6caea70c34" + integrity sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.2.4" glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz#42a9185bb51f35a7eb9c5818b2f0072846945ef5" - integrity sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg== +"@react-native-community/cli-platform-ios@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz#07e298f69761424da85909790a43ec60ebfe6097" + integrity sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.0.12" glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz#b4ea8da691d294aee98ccfcd1162bcd958cae834" - integrity sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA== +"@react-native-community/cli-plugin-metro@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz#7db7dc8939b821b9aeebdd5ee3293f3a0201a2ea" + integrity sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g== -"@react-native-community/cli-server-api@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz#0460472d44c121d1db8a98ad1df811200c074fb3" - integrity sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw== +"@react-native-community/cli-server-api@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz#11df4e20ed72d59cf22adf77bd30aff3d6e70dc9" + integrity sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q== dependencies: - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -1926,10 +1953,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz#d459a116e1a95034d3c9a6385069c9e2049fb2a6" - integrity sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q== +"@react-native-community/cli-tools@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz#d3362b04fba3f73ec82c5a493696b575acfb420c" + integrity sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -1942,27 +1969,27 @@ shell-quote "^1.7.3" sudo-prompt "^9.0.0" -"@react-native-community/cli-types@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.0.tgz#2d21a1f93aefbdb34a04311d68097aef0388704f" - integrity sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw== +"@react-native-community/cli-types@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.2.tgz#0551c553c87701faae580097d7786dfff8ec2ef4" + integrity sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog== dependencies: joi "^17.2.1" -"@react-native-community/cli@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.0.tgz#c89aacc3973943bf24002255d7d0859b511d88a1" - integrity sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg== - dependencies: - "@react-native-community/cli-clean" "12.3.0" - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-doctor" "12.3.0" - "@react-native-community/cli-hermes" "12.3.0" - "@react-native-community/cli-plugin-metro" "12.3.0" - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" - "@react-native-community/cli-types" "12.3.0" +"@react-native-community/cli@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.2.tgz#002ae3683b9fe6b0a83a837f41d9db541ea7667f" + integrity sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ== + dependencies: + "@react-native-community/cli-clean" "12.3.2" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-doctor" "12.3.2" + "@react-native-community/cli-hermes" "12.3.2" + "@react-native-community/cli-plugin-metro" "12.3.2" + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-types" "12.3.2" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -1978,13 +2005,6 @@ resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.73.1.tgz#e2a6b73b16c183a270f338dc69c36039b3946e85" integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== -"@react-native/babel-plugin-codegen@0.73.2": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.2.tgz#447656cde437b71dc3ef0af3f8a5b215653d5d07" - integrity sha512-PadyFZWVaWXIBP7Q5dgEL7eAd7tnsgsLjoHJB1hIRZZuVUg1Zqe3nULwC7RFAqOtr5Qx7KXChkFFcKQ3WnZzGw== - dependencies: - "@react-native/codegen" "0.73.2" - "@react-native/babel-plugin-codegen@0.73.3": version "0.73.3" resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.3.tgz#6bf135322b89264342c80778ee6bb697f968f773" @@ -1992,10 +2012,17 @@ dependencies: "@react-native/codegen" "0.73.2" -"@react-native/babel-preset@0.73.19": - version "0.73.19" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.19.tgz#a6c0587651804f8f01d6f3b7729f1d4a2d469691" - integrity sha512-ujon01uMOREZecIltQxPDmJ6xlVqAUFGI/JCSpeVYdxyXBoBH5dBb0ihj7h6LKH1q1jsnO9z4MxfddtypKkIbg== +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz#8a2037d5585b41877611498ae66adbf1dddfec1b" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + +"@react-native/babel-preset@0.73.21": + version "0.73.21" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.21.tgz#174c16493fa4e311b2f5f0c58d4f3c6a5a68bbea" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== dependencies: "@babel/core" "^7.20.0" "@babel/plugin-proposal-async-generator-functions" "^7.0.0" @@ -2036,7 +2063,7 @@ "@babel/plugin-transform-typescript" "^7.5.0" "@babel/plugin-transform-unicode-regex" "^7.0.0" "@babel/template" "^7.0.0" - "@react-native/babel-plugin-codegen" "0.73.2" + "@react-native/babel-plugin-codegen" "0.73.4" babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" @@ -2101,15 +2128,28 @@ mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/community-cli-plugin@0.73.12": - version "0.73.12" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz#3a72a8cbae839a0382d1a194a7067d4ffa0da04c" - integrity sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw== +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.3.tgz#cc984a8b17334d986cc600254a0d4b7fa7d68a94" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== + dependencies: + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.73.16": + version "0.73.16" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.16.tgz#29dca91aa3e24c8cd534dbf3db5766509da92ea3" + integrity sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ== dependencies: - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" "@react-native/dev-middleware" "0.73.7" - "@react-native/metro-babel-transformer" "0.73.13" + "@react-native/metro-babel-transformer" "0.73.15" chalk "^4.0.0" execa "^5.1.1" metro "^0.80.3" @@ -2149,13 +2189,13 @@ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== -"@react-native/metro-babel-transformer@0.73.13": - version "0.73.13" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz#81cb6dd8d5140c57f5595183fd6857feb8b7f5d7" - integrity sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg== +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz#c516584dde62d65a46668074084359c03e6a50f1" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== dependencies: "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.73.19" + "@react-native/babel-preset" "0.73.21" hermes-parser "0.15.0" nullthrows "^1.1.1" @@ -4043,9 +4083,9 @@ dotenv@~16.0.3: integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== echarts@^5.5.0: - version "5.5.0-rc.1" - resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.5.0-rc.1.tgz#31ee2c4e09da24fe8149bb011c1fbd271a2bf10f" - integrity sha512-Fnfls+zDAg9HLuWK27JakdjLjpkEZsKTk+eeSA6eOqphBNA9iXCI1CvQJZ5xD8WJY40bqdh4zCaE4AxSDjJslw== + version "5.5.0" + resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.5.0.tgz#c13945a7f3acdd67c134d8a9ac67e917830113ac" + integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw== dependencies: tslib "2.3.0" zrender "5.5.0" @@ -4274,15 +4314,20 @@ expo-constants@~15.4.0: dependencies: "@expo/config" "~8.5.0" -expo-file-system@~16.0.0, expo-file-system@~16.0.5: +expo-file-system@~16.0.0: version "16.0.5" resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.5.tgz#7ade3b1295d47a38a2236c5b121069d1bf27a526" integrity sha512-JpKMbKfwTaMCbwUwq7MwcSbPR7r+IqZEL3RFam3ClPHDtKLnlEoywREeaDsWjSZb7dS25hG3WqXspfTuugCDvg== -expo-font@~11.10.2: - version "11.10.2" - resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.10.2.tgz#233195c4fa0321763bd89bd7919bf7271a439c3f" - integrity sha512-AE0Q0LiWiVosQ/jlKUPoWoob7p3GwYM2xmLoUkuopO9RYh9NL1hZKHiMKcWBZyDG8Gww1GtBQwh7ZREST8+jjQ== +expo-file-system@~16.0.6: + version "16.0.6" + resolved "https://registry.yarnpkg.com/expo-file-system/-/expo-file-system-16.0.6.tgz#07a140a7bcb44b42bd3f0b465e7583cc7f7d7078" + integrity sha512-ATCHL7nEg2WwKeamW/SDTR9jBEqM5wncFq594ftKS5QFmhKIrX48d9jyPFGnNq+6h8AGPg4QKh2KCA4OY49L4g== + +expo-font@~11.10.3: + version "11.10.3" + resolved "https://registry.yarnpkg.com/expo-font/-/expo-font-11.10.3.tgz#a3115ebda8e09bd7cb8052619a4bbe606f0c17f4" + integrity sha512-q1Td2zUvmLbCA9GV4OG4nLPw5gJuNY1VrPycsnemN1m8XWTzzs8nyECQQqrcBhgulCgcKZZJJ6U0kC2iuSoQHQ== dependencies: fontfaceobserver "^2.1.0" @@ -4291,10 +4336,10 @@ expo-keep-awake@~12.8.2: resolved "https://registry.yarnpkg.com/expo-keep-awake/-/expo-keep-awake-12.8.2.tgz#6cfdf8ad02b5fa130f99d4a1eb98e459d5b4332e" integrity sha512-uiQdGbSX24Pt8nGbnmBtrKq6xL/Tm3+DuDRGBk/3ZE/HlizzNosGRIufIMJ/4B4FRw4dw8KU81h2RLuTjbay6g== -expo-modules-autolinking@1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.10.2.tgz#a413235941c2f7167f5e5d5b66807f7417a5a8ea" - integrity sha512-OEeoz0+zGx5EJwGtDm9pSywCr+gUCaisZV0mNkK7V3fuRl+EVPBSsI+957JwAc4ZxVps95jy28eLcRRtQ33yVg== +expo-modules-autolinking@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/expo-modules-autolinking/-/expo-modules-autolinking-1.10.3.tgz#19f349884a90f3f27ec9d64e8f2fa6be609558c5" + integrity sha512-pn4n2Dl4iRh/zUeiChjRIe1C7EqOw1qhccr85viQV7W6l5vgRpY0osE51ij5LKg/kJmGRcJfs12+PwbdTplbKw== dependencies: "@expo/config" "~8.5.0" chalk "^4.1.0" @@ -4303,10 +4348,10 @@ expo-modules-autolinking@1.10.2: find-up "^5.0.0" fs-extra "^9.1.0" -expo-modules-core@1.11.8: - version "1.11.8" - resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.11.8.tgz#b0bdb31e70e1e570b70a9613f4b6392306c99a80" - integrity sha512-rlctE3nCNLCGv3LosGQNaTuwGrr2SyQA+hOgci/0l+VRc0gFNtvl0gskph9C0tnN1jzBeb8rRZQYVj5ih1yxcA== +expo-modules-core@1.11.9: + version "1.11.9" + resolved "https://registry.yarnpkg.com/expo-modules-core/-/expo-modules-core-1.11.9.tgz#4b95070390fe7e3418aa84580244bcf0540357ca" + integrity sha512-GTUb81vcPaF+5MtlBI1u9IjrZbGdF1ZUwz3u8Gc+rOLBblkZ7pYsj2mU/tu+k0khTckI9vcH4ZBksXWvE1ncjQ== dependencies: invariant "^2.2.4" @@ -4320,24 +4365,24 @@ expo-pwa@0.0.127: commander "2.20.0" update-check "1.5.3" -expo@^50.0.0: - version "50.0.4" - resolved "https://registry.yarnpkg.com/expo/-/expo-50.0.4.tgz#3ec5349a58b8b3264bc2f218d85b673beb352a99" - integrity sha512-8QWBvYZyKFd7pHxbtri8/ZITBR19QbrW2IkezAhs3ZOHR2kluSgNfyo9ojAe7GnOnE8hCB6Xe83Dbm0R3Ealhw== +expo@~50.0.7: + version "50.0.7" + resolved "https://registry.yarnpkg.com/expo/-/expo-50.0.7.tgz#d32e6f05e03e7b97d53571f5b3a453a1c4d72fde" + integrity sha512-lTqIrKOUTKHLdTuAaJzZihi1v7F8Ix1dOXVWMpToDy9zPC/s+fet0fbyXdFUxYsCUyuEDIB9tvejrTYZk8Hm0Q== dependencies: "@babel/runtime" "^7.20.0" - "@expo/cli" "0.17.3" + "@expo/cli" "0.17.5" "@expo/config" "8.5.4" "@expo/config-plugins" "7.8.4" - "@expo/metro-config" "0.17.3" + "@expo/metro-config" "0.17.4" "@expo/vector-icons" "^14.0.0" babel-preset-expo "~10.0.1" expo-asset "~9.0.2" - expo-file-system "~16.0.5" - expo-font "~11.10.2" + expo-file-system "~16.0.6" + expo-font "~11.10.3" expo-keep-awake "~12.8.2" - expo-modules-autolinking "1.10.2" - expo-modules-core "1.11.8" + expo-modules-autolinking "1.10.3" + expo-modules-core "1.11.9" fbemitter "^3.0.0" whatwg-url-without-unicode "8.0.0-3" @@ -7201,18 +7246,18 @@ react-native-web@~0.19.6: postcss-value-parser "^4.2.0" styleq "^0.1.3" -react-native@0.73.2: - version "0.73.2" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.2.tgz#74ee163c8189660d41d1da6560411da7ce41a608" - integrity sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw== +react-native@0.73.4: + version "0.73.4" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.4.tgz#81e07d4e7b6308c4649d5fa24038c0e87b17f2e1" + integrity sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg== dependencies: "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" + "@react-native-community/cli" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-platform-ios" "12.3.2" "@react-native/assets-registry" "0.73.1" - "@react-native/codegen" "0.73.2" - "@react-native/community-cli-plugin" "0.73.12" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.16" "@react-native/gradle-plugin" "0.73.4" "@react-native/js-polyfills" "0.73.1" "@react-native/normalize-colors" "0.73.2" @@ -7221,6 +7266,7 @@ react-native@0.73.2: anser "^1.4.9" ansi-regex "^5.0.0" base64-js "^1.5.1" + chalk "^4.0.0" deprecated-react-native-prop-types "^5.0.0" event-target-shim "^5.0.1" flow-enums-runtime "^0.0.6" diff --git a/jest.config.js b/jest.config.js index 3572e96ef..9de630da4 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,8 +1,8 @@ module.exports = { - preset: "react-native", + preset: 'react-native', modulePathIgnorePatterns: [ - "/example/node_modules", - "/lib/" + '/example/node_modules', + '/lib/', ], transformIgnorePatterns: [ 'node_modules/(?!(react-native|react-native.*|@react-native.*|@?react-navigation.*|@shopify/react-native-skia|zrender|echarts)/)', @@ -10,7 +10,7 @@ module.exports = { setupFiles: [ '@shopify/react-native-skia/jestSetup.js', 'react-native-gesture-handler/jestSetup.js', - './jestSetup.js' + './jestSetup.js', ], - testTimeout: 30000, -}; \ No newline at end of file + testTimeout: 10000, +}; diff --git a/jestSetup.js b/jestSetup.js index 63877215b..bb618a032 100644 --- a/jestSetup.js +++ b/jestSetup.js @@ -1,6 +1,7 @@ -const { Skia } = require("@shopify/react-native-skia"); +const { Skia } = require('@shopify/react-native-skia'); Skia.SVG.MakeFromString = (svg) => svg; +// eslint-disable-next-line no-undef globalThis.navigator = { - product: "ReactNative", - userAgent: "Node.js", + product: 'ReactNative', + userAgent: 'Node.js', }; diff --git a/package.json b/package.json index b3de0885f..0e16d1fe9 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,7 @@ "@testing-library/react-native": "^12.4.3", "@types/jest": "^29.5.11", "@types/react": "~18.2.14", + "@types/react-test-renderer": "^18.0.7", "commitlint": "^17.0.2", "del-cli": "^5.0.0", "echarts": "^5.5.0", @@ -69,15 +70,17 @@ "eslint-config-prettier": "^8.5.0", "eslint-plugin-prettier": "^4.0.0", "jest": "^29.7.0", + "jest-image-snapshot": "^6.4.0", "pod-install": "^0.1.0", "prettier": "^2.0.5", "react": "18.2.0", - "react-native": "0.73.2", + "react-native": "0.73.4", "react-native-builder-bob": "^0.20.0", "react-native-gesture-handler": "~2.14.0", "react-native-svg": "14.1.0", "react-test-renderer": "^18.2.0", "release-it": "^15.0.0", + "sharp": "^0.33.2", "typescript": "^5.0.4", "zrender": "^5.5.0" }, @@ -136,7 +139,8 @@ }, "eslintIgnore": [ "node_modules/", - "lib/" + "lib/", + "coverage/" ], "prettier": { "quoteProps": "consistent", diff --git a/src/SVGRenderer.ts b/src/SVGRenderer.ts index 74b2a5d71..6863fa060 100644 --- a/src/SVGRenderer.ts +++ b/src/SVGRenderer.ts @@ -5,7 +5,6 @@ import { updateAttrs } from 'zrender/lib/svg/patch'; import type Storage from 'zrender/lib/Storage'; import { DOMParser } from '@xmldom/xmldom'; -const isRn = globalThis.navigator?.product === 'ReactNative'; env.svgSupported = true; interface SVGPainterOption { @@ -29,50 +28,42 @@ class CustomSVGPainter extends SVGPainter { opts: SVGPainterOption, id: number ) { - if (isRn) { - // Prioritize taking the width and height set in the configuration; - // if not available, then take the width and height set in the styles. - const { width, height } = root.getChartSize(); - opts.width = opts.width || width; - opts.height = opts.height || height; - // @ts-ignore - super(null, storage, opts); - // @ts-ignore - this._svgDom = this._oldVNode.elm = root.elm; - // @ts-ignore - this._svgDom.setZrenderId?.(id); - // @ts-ignore - updateAttrs(null, this._oldVNode); - this.root = root; - } else { - super(root, storage, opts); - } + // Prioritize taking the width and height set in the configuration; + // if not available, then take the width and height set in the styles. + const { width, height } = root.getChartSize(); + opts.width = opts.width || width; + opts.height = opts.height || height; + // @ts-ignore + super(null, storage, opts); + // @ts-ignore + this._svgDom = this._oldVNode.elm = root.elm; + // @ts-ignore + this._svgDom.setZrenderId?.(id); + // @ts-ignore + updateAttrs(null, this._oldVNode); + this.root = root; } refresh() { - if (isRn) { - const vnode = this.renderToVNode({ - willUpdate: true, - }); - // Disable user selection. - vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none'; + const vnode = this.renderToVNode({ + willUpdate: true, + }); + // Disable user selection. + vnode.attrs.style = 'position:absolute;left:0;top:0;user-select:none'; + // @ts-ignore + if (this._svgDom.patch) { // @ts-ignore - if (this._svgDom.patch) { - // @ts-ignore - this._svgDom.patch(this._oldVNode, vnode); - // @ts-ignore - } else if (this._svgDom.patchString) { - // @ts-ignore - this._svgDom.patchString(this._oldVNode, vNodeToString(vnode)); - } + this._svgDom.patch(this._oldVNode, vnode); // @ts-ignore - this._oldVNode = vnode; - } else { - super.refresh(); + } else if (this._svgDom.patchString) { + // @ts-ignore + this._svgDom.patchString(this._oldVNode, vNodeToString(vnode)); } + // @ts-ignore + this._oldVNode = vnode; } - toDataURL(base64?: boolean):string { + toDataURL(base64?: boolean): string { // @ts-ignore - if (isRn && this._svgDom.makeImageSnapshot) { + if (this._svgDom.makeImageSnapshot) { // @ts-ignore return this._svgDom.makeImageSnapshot() || super.toDataURL(base64); } else { diff --git a/src/SVGRenderer.web.ts b/src/SVGRenderer.web.ts index fc0600a66..83f369d82 100644 --- a/src/SVGRenderer.web.ts +++ b/src/SVGRenderer.web.ts @@ -1,4 +1,4 @@ -import SVGPainter from 'zrender/lib/svg/Painter.js'; +import SVGPainter from 'zrender/lib/svg/Painter'; export function SVGRenderer(registers: any) { registers.registerPainter('svg', SVGPainter); } diff --git a/src/__tests__/RNSVG.test.tsx b/src/__tests__/RNSVG.test.tsx new file mode 100644 index 000000000..0d73e22f7 --- /dev/null +++ b/src/__tests__/RNSVG.test.tsx @@ -0,0 +1,2 @@ +// tests for RNSVG render +test.todo('should correctly rendered by react native svg'); diff --git a/src/__tests__/RNSkia.test.tsx b/src/__tests__/RNSkia.test.tsx new file mode 100644 index 000000000..2ee6d3047 --- /dev/null +++ b/src/__tests__/RNSkia.test.tsx @@ -0,0 +1,2 @@ +// tests for RNSkia render +test.todo('should correctly rendered by react native skia'); diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-dispatch-events-to-z-render-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-dispatch-events-to-z-render-correctly-1-snap.png new file mode 100644 index 000000000..2f2cc6085 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-dispatch-events-to-z-render-correctly-1-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-dispatch-events-to-z-render-correctly-2-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-dispatch-events-to-z-render-correctly-2-snap.png new file mode 100644 index 000000000..b3fe01f47 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-dispatch-events-to-z-render-correctly-2-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-1-snap.png new file mode 100644 index 000000000..13b62388e Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-1-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-2-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-2-snap.png new file mode 100644 index 000000000..a6cf30134 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-2-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-3-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-3-snap.png new file mode 100644 index 000000000..6279006dd Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-3-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-4-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-4-snap.png new file mode 100644 index 000000000..785f78568 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-4-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-1-snap.png new file mode 100644 index 000000000..b7a5dc448 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-1-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-2-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-2-snap.png new file mode 100644 index 000000000..a0149a42f Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-2-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-3-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-3-snap.png new file mode 100644 index 000000000..5c78fa428 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-3-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-4-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-4-snap.png new file mode 100644 index 000000000..8f37d14e2 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-4-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-renders-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-renders-correctly-1-snap.png new file mode 100644 index 000000000..475b65bde Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-skia-chart-chart-renders-correctly-1-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-dispatch-events-to-z-render-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-dispatch-events-to-z-render-correctly-1-snap.png new file mode 100644 index 000000000..40a27f54f Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-dispatch-events-to-z-render-correctly-1-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-dispatch-events-to-z-render-correctly-2-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-dispatch-events-to-z-render-correctly-2-snap.png new file mode 100644 index 000000000..347b731ee Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-dispatch-events-to-z-render-correctly-2-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-1-snap.png new file mode 100644 index 000000000..745bb0bac Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-1-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-2-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-2-snap.png new file mode 100644 index 000000000..0b26f0b77 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-2-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-3-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-3-snap.png new file mode 100644 index 000000000..8e093c03f Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-3-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-4-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-4-snap.png new file mode 100644 index 000000000..afbad728b Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-pan-responder-tap-drag-pinch-event-correctly-4-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-1-snap.png new file mode 100644 index 000000000..5a9a329b9 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-1-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-2-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-2-snap.png new file mode 100644 index 000000000..0ea677455 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-2-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-3-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-3-snap.png new file mode 100644 index 000000000..c1f5faf2a Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-3-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-4-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-4-snap.png new file mode 100644 index 000000000..faf6d8682 Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-fire-rngh-tap-drag-pinch-event-correctly-4-snap.png differ diff --git a/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-renders-correctly-1-snap.png b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-renders-correctly-1-snap.png new file mode 100644 index 000000000..0cc8c36cb Binary files /dev/null and b/src/__tests__/__image_snapshots__/chart-test-tsx-svg-chart-chart-renders-correctly-1-snap.png differ diff --git a/src/__tests__/__snapshots__/chart.test.tsx.snap b/src/__tests__/__snapshots__/chart.test.tsx.snap index 257a08d4c..d0b7ae453 100644 --- a/src/__tests__/__snapshots__/chart.test.tsx.snap +++ b/src/__tests__/__snapshots__/chart.test.tsx.snap @@ -1,11 +1,11 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`SkiaChart Chart renders correctly 1`] = ` +exports[`SkiaChart Chart fire PanResponder tap & drag & pinch event correctly 5`] = ` `; -exports[`SvgChart Chart renders correctly 1`] = ` +exports[`SkiaChart Chart fire RNGH tap & drag & pinch event correctly 5`] = ` + + + + + +`; + +exports[`SkiaChart Chart fire dispatchEventsToZRender correctly 3`] = ` + + + +`; + +exports[`SkiaChart Chart renders correctly 2`] = ` + + + +`; + +exports[`SvgChart Chart fire PanResponder tap & drag & pinch event correctly 5`] = ` + + + + + + + + + + + + + + + + + + + + + + + + +`; + +exports[`SvgChart Chart fire RNGH tap & drag & pinch event correctly 5`] = ` + + + + + + + + + + + + + + + + + + + + + + + + + + +`; + +exports[`SvgChart Chart fire dispatchEventsToZRender correctly 3`] = ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`; + +exports[`SvgChart Chart renders correctly 2`] = ` @@ -95,7 +1732,7 @@ exports[`SvgChart Chart renders correctly 1`] = ` } > + + + + + + + + { + toMatchImageSnapshot(): R; + } + } +} import React, { useEffect, useRef } from 'react'; -import { Dimensions } from 'react-native'; -import { render } from '@testing-library/react-native'; +import { ReactTestInstance } from 'react-test-renderer'; +import { render, fireEvent, act } from '@testing-library/react-native'; import SkiaComponent from '../skiaChart'; import SVGComponent from '../svgChart'; +import { dispatchEventsToZRender } from '../components/events'; import { SVGRenderer } from '../SVGRenderer'; import * as echarts from 'echarts/core'; -import { BarChart } from 'echarts/charts'; +import { BarChart, LineChart, GraphChart } from 'echarts/charts'; +import { + PanGesture, + Gesture, + PinchGesture, + State, + TapGesture, + gestureHandlerRootHOC, +} from 'react-native-gesture-handler'; +import { + fireGestureHandler, + getByGestureTestId, +} from 'react-native-gesture-handler/jest-utils'; +const sharp = require('sharp'); + +const { toMatchImageSnapshot } = require('jest-image-snapshot'); + +function getSVGImage(svg: string) { + const svgString = decodeURIComponent( + svg.replace('data:image/svg+xml;charset=UTF-8,', '') + ); + return sharp(Buffer.from(svgString)).png().toBuffer(); +} + +expect.extend({ toMatchImageSnapshot }); + import { TitleComponent, TooltipComponent, @@ -20,26 +54,210 @@ echarts.use([ GridComponent, SVGRenderer, BarChart, + LineChart, + GraphChart, ]); + const Components = [SkiaComponent, SVGComponent]; const E_HEIGHT = 250; -const E_WIDTH = Dimensions.get('screen').width;//750 -const option = { - xAxis: { - type: 'category', - data: ['Mon', 'Tue'], - }, - yAxis: { - type: 'value', - }, - series: [ - { - data: [120, 200], - type: 'bar', +const E_WIDTH = 430; +let i = 0; +const rainbow = [ + 'red', + 'orange', + 'yellow', + 'green', + 'blue', + 'indigo', + 'violet', +]; +function getOption(type = 'bar') { + return { + animation: false, + xAxis: { + type: 'category', + data: ['Mon', 'Tue'], }, - ], -}; -function Chart({ option, Component }: any) { + yAxis: { + type: 'value', + }, + series: [ + { + data: [120, 200], + type, + itemStyle: { + color: rainbow[i++ % rainbow.length], + }, + emphasis: { + itemStyle: { + color: 'black', + }, + }, + }, + ], + }; +} + +function sleep(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} + +function getOptionTwo() { + return { + animation: false, + tooltip: {}, + animationDurationUpdate: 1500, + animationEasingUpdate: 'quinticInOut', + series: [ + { + type: 'graph', + layout: 'none', + symbolSize: 50, + roam: true, + label: { + show: true, + }, + edgeSymbol: ['circle', 'arrow'], + edgeSymbolSize: [4, 10], + edgeLabel: { + fontSize: 20, + }, + data: [ + { + name: '1', + x: 300, + y: 300, + itemStyle: { + color: rainbow[i++ % rainbow.length], + }, + emphasis: { + scale: 2, + }, + }, + { + name: '2', + x: 800, + y: 300, + itemStyle: { + color: rainbow[i++ % rainbow.length], + }, + }, + ], + links: [ + { + source: 0, + target: 1, + symbolSize: [5, 20], + label: { + show: true, + }, + lineStyle: { + width: 5, + curveness: 0.2, + }, + }, + ], + }, + ], + }; +} + +function tapElement(pan: ReactTestInstance, x: number, y: number) { + ['startShouldSetResponder', 'responderGrant', 'responderRelease'].forEach( + (event, index) => { + fireEvent(pan, event, { + nativeEvent: { x, y }, + touchHistory: { + mostRecentTimeStamp: index, + touchBank: [], + }, + }); + } + ); +} + +function moveElement(pan: ReactTestInstance, x: number, y: number) { + const scale = 20; + [ + 'startShouldSetResponder', + 'responderGrant', + 'responderMove', + 'responderMove', + 'responderMove', + 'responderRelease', + ].forEach((event, index) => { + const nx = x + index * scale; + fireEvent(pan, event, { + nativeEvent: { + x: nx, + y, + touches: [ + { + locationX: nx, + locationY: y, + }, + ], + }, + touchHistory: { + mostRecentTimeStamp: index, + touchBank: [], + }, + }); + }); +} + +function zoomElement(pan: ReactTestInstance, x: number, y: number) { + const scale = 30; + [ + 'startShouldSetResponder', + 'responderGrant', + 'responderMove', + 'responderMove', + 'responderMove', + 'responderRelease', + ].forEach((event, index) => { + const offset = (index + 1) * scale; + const nx1 = x + offset; + const ny1 = y + offset; + const nx2 = x - offset; + const ny2 = y - offset; + fireEvent(pan, event, { + nativeEvent: { + touches: [ + { + locationX: nx1, + locationY: ny1, + }, + { + locationX: nx2, + locationY: ny2, + }, + ], + }, + touchHistory: { + mostRecentTimeStamp: index, + touchBank: [], + }, + }); + }); +} + +interface ChartCall { + call: (chart: any) => void; + snapshot?: (data: string) => any; +} + +function Chart({ + Component, + calls = [], + useRNGH = false, + gesture, +}: { + Component: React.ComponentType; + calls?: ChartCall[]; + useRNGH?: boolean; + gesture?: any; +}) { const ref = useRef(null); useEffect(() => { let chart: any; @@ -50,20 +268,257 @@ function Chart({ option, Component }: any) { width: E_WIDTH, height: E_HEIGHT, }); - chart.setOption(option); + (async () => { + for (const call of calls) { + call.call(chart); + if (call.snapshot) { + await new Promise((resolve) => + setTimeout(async () => { + const result = call.snapshot?.(chart.getDataURL()); + if (result instanceof Promise) { + await result; + } + resolve(undefined); + }, 0) + ); + } + } + })(); } return () => chart?.dispose(); - }, [option]); + }, [calls]); - return ; + return ; +} +function snapshot(data: string) { + expect(data).toBeDefined(); + return getSVGImage(data).then((d: Buffer) => { + expect(d).toMatchImageSnapshot(); + }); } Components.forEach((Component) => { describe(`${Component.displayName} Chart` || 'unknown', () => { - it('renders correctly', () => { + it('renders correctly', async () => { const { toJSON } = render( - + { + chart.setOption(getOption('line')); + }, + snapshot, + }, + ]} + /> ); + await act(async () => { + await sleep(1000); + }); expect(toJSON()).toMatchSnapshot(); }); + it('fire dispatchEventsToZRender correctly', async () => { + const { toJSON } = render( + { + act(() => chart.setOption(getOption())); + }, + snapshot, + }, + { + call: (chart: any) => { + const id = chart.getZr().id; + act(() => + dispatchEventsToZRender( + id, + ['mousedown', 'mousemove'], + { + locationX: 142, + locationY: 163, + timestamp: 1, + touches: [], + }, + { zrX: 142, zrY: 163 } + ) + ); + }, + snapshot, + }, + ]} + Component={Component} + /> + ); + await act(async () => { + await sleep(1000); + }); + expect(toJSON()).toMatchSnapshot(); + }); + it('fire PanResponder tap & drag & pinch event correctly', async () => { + const { toJSON, getByTestId } = render( + { + chart.setOption(getOptionTwo()); + }, + snapshot, + }, + { + call: () => { + const pan = getByTestId('pan-responder-handler'); + tapElement(pan, 50, 130); + }, + snapshot, + }, + { + call: () => { + const pan = getByTestId('pan-responder-handler'); + moveElement(pan, 50, 130); + }, + snapshot, + }, + { + call: () => { + const pan = getByTestId('pan-responder-handler'); + zoomElement(pan, 200, 125); + }, + snapshot, + }, + ]} + /> + ); + await act(async () => { + await sleep(1000); + }); + expect(toJSON()).toMatchSnapshot(); + }); + it('fire RNGH tap & drag & pinch event correctly', async () => { + const RNGHChart = gestureHandlerRootHOC(Chart); + const { toJSON } = render( + { + chart.setOption(getOptionTwo()); + }, + snapshot, + }, + { + call: () => { + const pan = getByGestureTestId('RNGH-tap-handler'); + const position = { x: 60, y: 140 }; + fireGestureHandler(pan, [ + { state: State.BEGAN, ...position }, + { state: State.ACTIVE, ...position }, + { state: State.END, ...position }, + ]); + }, + snapshot, + }, + { + call: () => { + const pan = getByGestureTestId('RNGH-pan-handler'); + const position = { x: 60, y: 140 }; + fireGestureHandler(pan, [ + { state: State.BEGAN, ...position }, + { state: State.ACTIVE, ...position }, + { x: 60, y: 160 }, + { x: 60, y: 180 }, + { state: State.END, ...position }, + ]); + }, + snapshot, + }, + { + call: () => { + const pinch = getByGestureTestId('RNGH-pinch-handler'); + const position = { x: 200, y: 125, focalX: 200, focalY: 125 }; + fireGestureHandler(pinch, [ + { state: State.BEGAN, ...position }, + { state: State.ACTIVE, ...position }, + { velocity: 30, ...position }, + { velocity: 60, ...position }, // throttled + { state: State.END, ...position }, + ]); + }, + snapshot, + }, + ]} + /> + ); + await act(async () => { + await sleep(1000); + }); + expect(toJSON()).toMatchSnapshot(); + }); + it('support Custom gestures correctly when use RNGH - function', async () => { + const RNGHChart = gestureHandlerRootHOC(Chart); + const gesture = jest.fn(); + render( + { + gesture(...args); + return args[0]; + }} + /> + ); + await act(async () => { + await sleep(1000); + }); + expect(gesture).toHaveBeenCalledTimes(1); + expect(gesture).toHaveBeenCalledWith( + expect.arrayContaining([ + expect.any(Object), + expect.any(Object), + expect.any(Object), + ]), + expect.any(Function) + ); + }); + it('support Custom gestures correctly when use RNGH - gesture', async () => { + const RNGHChart = gestureHandlerRootHOC(Chart); + render( + + ); + await act(async () => { + await sleep(1000); + }); + expect(() => getByGestureTestId('RNGH-pan-handler-test')).not.toThrow(); + expect(() => getByGestureTestId('RNGH-pan-handler')).toThrow(); + }); + it('support Custom gestures correctly when use RNGH - gesture array', async () => { + const RNGHChart = gestureHandlerRootHOC(Chart); + render( + + ); + await act(async () => { + await sleep(1000); + }); + expect(() => + getByGestureTestId('RNGH-pan-handler-test-one') + ).not.toThrow(); + expect(() => + getByGestureTestId('RNGH-pan-handler-test-two') + ).not.toThrow(); + expect(() => getByGestureTestId('RNGH-pan-handler')).toThrow(); + }); }); }); diff --git a/src/__tests__/index.test.tsx b/src/__tests__/index.test.tsx index 041c5ed29..c3c486daa 100644 --- a/src/__tests__/index.test.tsx +++ b/src/__tests__/index.test.tsx @@ -1,6 +1,7 @@ /** * @jest-environment @shopify/react-native-skia/jestEnv.mjs */ +// tests for basic props import React from 'react'; import { render } from '@testing-library/react-native'; import SkiaComponent from '../skiaChart'; diff --git a/src/__tests__/web.test.tsx b/src/__tests__/web.test.tsx new file mode 100644 index 000000000..ab2d71df4 --- /dev/null +++ b/src/__tests__/web.test.tsx @@ -0,0 +1,2 @@ +// tests for web support +test.todo('should correctly rendered in web'); diff --git a/src/components/PanResponderHandler.tsx b/src/components/PanResponderHandler.tsx index c01df88e8..8752759e6 100644 --- a/src/components/PanResponderHandler.tsx +++ b/src/components/PanResponderHandler.tsx @@ -33,7 +33,13 @@ export function PanResponderHandler({ dispatchEvents, }: PanResponderHandlerProps) { const [panResponder] = usePanResponder(dispatchEvents); - return ; + return ( + + ); } export function usePanResponder( diff --git a/src/components/RNGestureHandler.tsx b/src/components/RNGestureHandler.tsx index 5eb702c17..5e1d2c64c 100644 --- a/src/components/RNGestureHandler.tsx +++ b/src/components/RNGestureHandler.tsx @@ -20,6 +20,7 @@ export const getDefaultPanRNGesture = ( ) => { return Gesture.Pan() .runOnJS(true) + .withTestId('RNGH-pan-handler') .maxPointers(1) .onBegin((e) => { dispatchEvents(['mousedown', 'mousemove'], e); @@ -40,6 +41,7 @@ export const getDefaultPinchRNGesture = ( ) => { return Gesture.Pinch() .runOnJS(true) + .withTestId('RNGH-pinch-handler') .onUpdate( throttle((e) => { dispatchEvents(['mousewheel'], e, { @@ -57,6 +59,7 @@ export const getDefaultTapRNGesture = ( ) => { return Gesture.Tap() .runOnJS(true) + .withTestId('RNGH-tap-handler') .onStart((e) => { dispatchEvents(['mousedown', 'mousemove'], e); }) diff --git a/src/skiaChart.tsx b/src/skiaChart.tsx index a7607526b..84f6bc459 100644 --- a/src/skiaChart.tsx +++ b/src/skiaChart.tsx @@ -8,7 +8,13 @@ import React, { useRef, } from 'react'; -import { Canvas, ImageSVG, Skia, SkSVG, useCanvasRef } from '@shopify/react-native-skia'; +import { + Canvas, + ImageSVG, + Skia, + SkSVG, + useCanvasRef, +} from '@shopify/react-native-skia'; import { View } from 'react-native'; @@ -55,7 +61,7 @@ function SkiaComponent( const [width, setWidth] = useState(initialWidth ?? 0); const [height, setHeight] = useState(initialHeight ?? 0); const zrenderId = useRef(); - const canvasRef = useCanvasRef(); + const canvasRef = useCanvasRef?.(); const dispatchEvents = useCallback( (types, nativeEvent, eventArgs) => { @@ -88,9 +94,11 @@ function SkiaComponent( zrenderId.current = id; }, makeImageSnapshot: () => { - const image = canvasRef.current?.makeImageSnapshot(); - return image ? `data:image/png;base64,${image.encodeToBase64()}` : null; - } + const image = canvasRef?.current?.makeImageSnapshot(); + return image + ? `data:image/png;base64,${image.encodeToBase64()}` + : null; + }, }, viewprot: {}, dispatchEvents, @@ -101,12 +109,16 @@ function SkiaComponent( }; }, }), - [dispatchEvents, initialWidth, initialHeight] + [dispatchEvents, initialWidth, initialHeight, canvasRef] ); return svgString ? ( - + {handleGesture ? ( diff --git a/yarn.lock b/yarn.lock index 2573236a0..80855c802 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1366,6 +1366,13 @@ dependencies: "@types/hammerjs" "^2.0.36" +"@emnapi/runtime@^0.45.0": + version "0.45.0" + resolved "https://registry.yarnpkg.com/@emnapi/runtime/-/runtime-0.45.0.tgz#e754de04c683263f34fd0c7f32adfe718bbe4ddd" + integrity sha512-Txumi3td7J4A/xTTwlssKieHKTGl3j4A1tglBx72auZ49YK7ePY6XZricgIg9mnZT4xPfA+UPCUdnhRuEFDL+w== + dependencies: + tslib "^2.4.0" + "@eslint-community/eslint-utils@^4.2.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1439,6 +1446,119 @@ resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c" integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg== +"@img/sharp-darwin-arm64@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.2.tgz#0a52a82c2169112794dac2c71bfba9e90f7c5bd1" + integrity sha512-itHBs1rPmsmGF9p4qRe++CzCgd+kFYktnsoR1sbIAfsRMrJZau0Tt1AH9KVnufc2/tU02Gf6Ibujx+15qRE03w== + optionalDependencies: + "@img/sharp-libvips-darwin-arm64" "1.0.1" + +"@img/sharp-darwin-x64@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.2.tgz#982e26bb9d38a81f75915c4032539aed621d1c21" + integrity sha512-/rK/69Rrp9x5kaWBjVN07KixZanRr+W1OiyKdXcbjQD6KbW+obaTeBBtLUAtbBsnlTTmWthw99xqoOS7SsySDg== + optionalDependencies: + "@img/sharp-libvips-darwin-x64" "1.0.1" + +"@img/sharp-libvips-darwin-arm64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.1.tgz#81e83ffc2c497b3100e2f253766490f8fad479cd" + integrity sha512-kQyrSNd6lmBV7O0BUiyu/OEw9yeNGFbQhbxswS1i6rMDwBBSX+e+rPzu3S+MwAiGU3HdLze3PanQ4Xkfemgzcw== + +"@img/sharp-libvips-darwin-x64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.1.tgz#fc1fcd9d78a178819eefe2c1a1662067a83ab1d6" + integrity sha512-eVU/JYLPVjhhrd8Tk6gosl5pVlvsqiFlt50wotCvdkFGf+mDNBJxMh+bvav+Wt3EBnNZWq8Sp2I7XfSjm8siog== + +"@img/sharp-libvips-linux-arm64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.1.tgz#26eb8c556a9b0db95f343fc444abc3effb67ebcf" + integrity sha512-bnGG+MJjdX70mAQcSLxgeJco11G+MxTz+ebxlz8Y3dxyeb3Nkl7LgLI0mXupoO+u1wRNx/iRj5yHtzA4sde1yA== + +"@img/sharp-libvips-linux-arm@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.1.tgz#2a377b959ff7dd6528deee486c25461296a4fa8b" + integrity sha512-FtdMvR4R99FTsD53IA3LxYGghQ82t3yt0ZQ93WMZ2xV3dqrb0E8zq4VHaTOuLEAuA83oDawHV3fd+BsAPadHIQ== + +"@img/sharp-libvips-linux-s390x@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.1.tgz#af28ac9ba929204467ecdf843330d791e9421e10" + integrity sha512-3+rzfAR1YpMOeA2zZNp+aYEzGNWK4zF3+sdMxuCS3ey9HhDbJ66w6hDSHDMoap32DueFwhhs3vwooAB2MaK4XQ== + +"@img/sharp-libvips-linux-x64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.1.tgz#4273d182aa51912e655e1214ea47983d7c1f7f8d" + integrity sha512-3NR1mxFsaSgMMzz1bAnnKbSAI+lHXVTqAHgc1bgzjHuXjo4hlscpUxc0vFSAPKI3yuzdzcZOkq7nDPrP2F8Jgw== + +"@img/sharp-libvips-linuxmusl-arm64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.1.tgz#d150c92151cea2e8d120ad168b9c358d09c77ce8" + integrity sha512-5aBRcjHDG/T6jwC3Edl3lP8nl9U2Yo8+oTl5drd1dh9Z1EBfzUKAJFUDTDisDjUwc7N4AjnPGfCA3jl3hY8uDg== + +"@img/sharp-libvips-linuxmusl-x64@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.1.tgz#e297c1a4252c670d93b0f9e51fca40a7a5b6acfd" + integrity sha512-dcT7inI9DBFK6ovfeWRe3hG30h51cBAP5JXlZfx6pzc/Mnf9HFCQDLtYf4MCBjxaaTfjCCjkBxcy3XzOAo5txw== + +"@img/sharp-linux-arm64@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.2.tgz#af3409f801a9bee1d11d0c7e971dcd6180f80022" + integrity sha512-pz0NNo882vVfqJ0yNInuG9YH71smP4gRSdeL09ukC2YLE6ZyZePAlWKEHgAzJGTiOh8Qkaov6mMIMlEhmLdKew== + optionalDependencies: + "@img/sharp-libvips-linux-arm64" "1.0.1" + +"@img/sharp-linux-arm@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.2.tgz#181f7466e6ac074042a38bfb679eb82505e17083" + integrity sha512-Fndk/4Zq3vAc4G/qyfXASbS3HBZbKrlnKZLEJzPLrXoJuipFNNwTes71+Ki1hwYW5lch26niRYoZFAtZVf3EGA== + optionalDependencies: + "@img/sharp-libvips-linux-arm" "1.0.1" + +"@img/sharp-linux-s390x@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.2.tgz#9c171f49211f96fba84410b3e237b301286fa00f" + integrity sha512-MBoInDXDppMfhSzbMmOQtGfloVAflS2rP1qPcUIiITMi36Mm5YR7r0ASND99razjQUpHTzjrU1flO76hKvP5RA== + optionalDependencies: + "@img/sharp-libvips-linux-s390x" "1.0.1" + +"@img/sharp-linux-x64@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.2.tgz#b956dfc092adc58c2bf0fae2077e6f01a8b2d5d7" + integrity sha512-xUT82H5IbXewKkeF5aiooajoO1tQV4PnKfS/OZtb5DDdxS/FCI/uXTVZ35GQ97RZXsycojz/AJ0asoz6p2/H/A== + optionalDependencies: + "@img/sharp-libvips-linux-x64" "1.0.1" + +"@img/sharp-linuxmusl-arm64@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.2.tgz#10e0ec5a79d1234c6a71df44c9f3b0bef0bc0f15" + integrity sha512-F+0z8JCu/UnMzg8IYW1TMeiViIWBVg7IWP6nE0p5S5EPQxlLd76c8jYemG21X99UzFwgkRo5yz2DS+zbrnxZeA== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-arm64" "1.0.1" + +"@img/sharp-linuxmusl-x64@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.2.tgz#29e0030c24aa27c38201b1fc84e3d172899fcbe0" + integrity sha512-+ZLE3SQmSL+Fn1gmSaM8uFusW5Y3J9VOf+wMGNnTtJUMUxFhv+P4UPaYEYT8tqnyYVaOVGgMN/zsOxn9pSsO2A== + optionalDependencies: + "@img/sharp-libvips-linuxmusl-x64" "1.0.1" + +"@img/sharp-wasm32@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-wasm32/-/sharp-wasm32-0.33.2.tgz#38d7c740a22de83a60ad1e6bcfce17462b0d4230" + integrity sha512-fLbTaESVKuQcpm8ffgBD7jLb/CQLcATju/jxtTXR1XCLwbOQt+OL5zPHSDMmp2JZIeq82e18yE0Vv7zh6+6BfQ== + dependencies: + "@emnapi/runtime" "^0.45.0" + +"@img/sharp-win32-ia32@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.2.tgz#09456314e223f68e5417c283b45c399635c16202" + integrity sha512-okBpql96hIGuZ4lN3+nsAjGeggxKm7hIRu9zyec0lnfB8E7Z6p95BuRZzDDXZOl2e8UmR4RhYt631i7mfmKU8g== + +"@img/sharp-win32-x64@0.33.2": + version "0.33.2" + resolved "https://registry.yarnpkg.com/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.2.tgz#148e96dfd6e68747da41a311b9ee4559bb1b1471" + integrity sha512-E4magOks77DK47FwHUIGH0RYWSgRBfGdK56kIHSVeB9uIS4pPFr4N2kIVsXdQQo4LzOsENKV5KAhRlRL7eMAdg== + "@isaacs/ttlcache@^1.4.1": version "1.4.1" resolved "https://registry.yarnpkg.com/@isaacs/ttlcache/-/ttlcache-1.4.1.tgz#21fb23db34e9b6220c6ba023a0118a2dd3461ea2" @@ -1878,43 +1998,43 @@ "@pnpm/network.ca-file" "^1.0.1" config-chain "^1.1.11" -"@react-native-community/cli-clean@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.0.tgz#667b32daa58b4d11d5b5ab9eb0a2e216d500c90b" - integrity sha512-iAgLCOWYRGh9ukr+eVQnhkV/OqN3V2EGd/in33Ggn/Mj4uO6+oUncXFwB+yjlyaUNz6FfjudhIz09yYGSF+9sg== +"@react-native-community/cli-clean@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.2.tgz#d4f1730c3d22d816b4d513d330d5f3896a3f5921" + integrity sha512-90k2hCX0ddSFPT7EN7h5SZj0XZPXP0+y/++v262hssoey3nhurwF57NGWN0XAR0o9BSW7+mBfeInfabzDraO6A== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" -"@react-native-community/cli-config@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.0.tgz#255b4e5391878937a25888f452f50a968d053e3e" - integrity sha512-BrTn5ndFD9uOxO8kxBQ32EpbtOvAsQExGPI7SokdI4Zlve70FziLtTq91LTlTUgMq1InVZn/jJb3VIDk6BTInQ== +"@react-native-community/cli-config@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.2.tgz#1a5de302de4d597ff2fc9932a032134b6ec4325f" + integrity sha512-UUCzDjQgvAVL/57rL7eOuFUhd+d+6qfM7V8uOegQFeFEmSmvUUDLYoXpBa5vAK9JgQtSqMBJ1Shmwao+/oElxQ== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" glob "^7.1.3" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.0.tgz#75bbb2082a369b3559e0dffa8bfeebf2a9107e3e" - integrity sha512-w3b0iwjQlk47GhZWHaeTG8kKH09NCMUJO729xSdMBXE8rlbm4kHpKbxQY9qKb6NlfWSJN4noGY+FkNZS2rRwnQ== +"@react-native-community/cli-debugger-ui@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.2.tgz#b2743876b03e560fbf5ef516e95387fcb6d91630" + integrity sha512-nSWQUL+51J682DlfcC1bjkUbQbGvHCC25jpqTwHIjmmVjYCX1uHuhPSqQKgPNdvtfOkrkACxczd7kVMmetxY2Q== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.0.tgz#420eb4e80d482f16d431c4df33fbc203862508af" - integrity sha512-BPCwNNesoQMkKsxB08Ayy6URgGQ8Kndv6mMhIvJSNdST3J1+x3ehBHXzG9B9Vfi+DrTKRb8lmEl/b/7VkDlPkA== +"@react-native-community/cli-doctor@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.2.tgz#9e82b49f04ee03872b2975f26c8799cecac021ce" + integrity sha512-GrAabdY4qtBX49knHFvEAdLtCjkmndjTeqhYO6BhsbAeKOtspcLT/0WRgdLIaKODRa61ADNB3K5Zm4dU0QrZOg== dependencies: - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-platform-ios" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" @@ -1929,53 +2049,53 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.0.tgz#c302acbfb07e1f4e73e76e3150c32f0e4f54e9ed" - integrity sha512-G6FxpeZBO4AimKZwtWR3dpXRqTvsmEqlIkkxgwthdzn3LbVjDVIXKpVYU9PkR5cnT+KuAUxO0WwthrJ6Nmrrlg== +"@react-native-community/cli-hermes@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.2.tgz#5f266985fe32a37e9020e881460e9017870be2e5" + integrity sha512-SL6F9O8ghp4ESBFH2YAPLtIN39jdnvGBKnK4FGKpDCjtB3DnUmDsGFlH46S+GGt5M6VzfG2eeKEOKf3pZ6jUzA== dependencies: - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" ip "^1.1.5" -"@react-native-community/cli-platform-android@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.0.tgz#eafa5fb12ebc25f716aea18cd55039c19fbedca6" - integrity sha512-VU1NZw63+GLU2TnyQ919bEMThpHQ/oMFju9MCfrd3pyPJz4Sn+vc3NfnTDUVA5Z5yfLijFOkHIHr4vo/C9bjnw== +"@react-native-community/cli-platform-android@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.2.tgz#de54d89712f8ea95046d798ec274fd6caea70c34" + integrity sha512-MZ5nO8yi/N+Fj2i9BJcJ9C/ez+9/Ir7lQt49DWRo9YDmzye66mYLr/P2l/qxsixllbbDi7BXrlLpxaEhMrDopg== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.2.4" glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.0.tgz#42a9185bb51f35a7eb9c5818b2f0072846945ef5" - integrity sha512-H95Sgt3wT7L8V75V0syFJDtv4YgqK5zbu69ko4yrXGv8dv2EBi6qZP0VMmkqXDamoPm9/U7tDTdbcf26ctnLfg== +"@react-native-community/cli-platform-ios@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.2.tgz#07e298f69761424da85909790a43ec60ebfe6097" + integrity sha512-OcWEAbkev1IL6SUiQnM6DQdsvfsKZhRZtoBNSj9MfdmwotVZSOEZJ+IjZ1FR9ChvMWayO9ns/o8LgoQxr1ZXeg== dependencies: - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-tools" "12.3.2" chalk "^4.1.2" execa "^5.0.0" fast-xml-parser "^4.0.12" glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.0.tgz#b4ea8da691d294aee98ccfcd1162bcd958cae834" - integrity sha512-tYNHIYnNmxrBcsqbE2dAnLMzlKI3Cp1p1xUgTrNaOMsGPDN1epzNfa34n6Nps3iwKElSL7Js91CzYNqgTalucA== +"@react-native-community/cli-plugin-metro@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.2.tgz#7db7dc8939b821b9aeebdd5ee3293f3a0201a2ea" + integrity sha512-FpFBwu+d2E7KRhYPTkKvQsWb2/JKsJv+t1tcqgQkn+oByhp+qGyXBobFB8/R3yYvRRDCSDhS+atWTJzk9TjM8g== -"@react-native-community/cli-server-api@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.0.tgz#0460472d44c121d1db8a98ad1df811200c074fb3" - integrity sha512-Rode8NrdyByC+lBKHHn+/W8Zu0c+DajJvLmOWbe2WY/ECvnwcd9MHHbu92hlT2EQaJ9LbLhGrSbQE3cQy9EOCw== +"@react-native-community/cli-server-api@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.2.tgz#11df4e20ed72d59cf22adf77bd30aff3d6e70dc9" + integrity sha512-iwa7EO9XFA/OjI5pPLLpI/6mFVqv8L73kNck3CNOJIUCCveGXBKK0VMyOkXaf/BYnihgQrXh+x5cxbDbggr7+Q== dependencies: - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -1984,10 +2104,10 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.0.tgz#d459a116e1a95034d3c9a6385069c9e2049fb2a6" - integrity sha512-2GafnCr8D88VdClwnm9KZfkEb+lzVoFdr/7ybqhdeYM0Vnt/tr2N+fM1EQzwI1DpzXiBzTYemw8GjRq+Utcz2Q== +"@react-native-community/cli-tools@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.2.tgz#d3362b04fba3f73ec82c5a493696b575acfb420c" + integrity sha512-nDH7vuEicHI2TI0jac/DjT3fr977iWXRdgVAqPZFFczlbs7A8GQvEdGnZ1G8dqRUmg+kptw0e4hwczAOG89JzQ== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -2000,27 +2120,27 @@ shell-quote "^1.7.3" sudo-prompt "^9.0.0" -"@react-native-community/cli-types@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.0.tgz#2d21a1f93aefbdb34a04311d68097aef0388704f" - integrity sha512-MgOkmrXH4zsGxhte4YqKL7d+N8ZNEd3w1wo56MZlhu5WabwCJh87wYpU5T8vyfujFLYOFuFK5jjlcbs8F4/WDw== +"@react-native-community/cli-types@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.2.tgz#0551c553c87701faae580097d7786dfff8ec2ef4" + integrity sha512-9D0UEFqLW8JmS16mjHJxUJWX8E+zJddrHILSH8AJHZ0NNHv4u2DXKdb0wFLMobFxGNxPT+VSOjc60fGvXzWHog== dependencies: joi "^17.2.1" -"@react-native-community/cli@12.3.0": - version "12.3.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.0.tgz#c89aacc3973943bf24002255d7d0859b511d88a1" - integrity sha512-XeQohi2E+S2+MMSz97QcEZ/bWpi8sfKiQg35XuYeJkc32Til2g0b97jRpn0/+fV0BInHoG1CQYWwHA7opMsrHg== - dependencies: - "@react-native-community/cli-clean" "12.3.0" - "@react-native-community/cli-config" "12.3.0" - "@react-native-community/cli-debugger-ui" "12.3.0" - "@react-native-community/cli-doctor" "12.3.0" - "@react-native-community/cli-hermes" "12.3.0" - "@react-native-community/cli-plugin-metro" "12.3.0" - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" - "@react-native-community/cli-types" "12.3.0" +"@react-native-community/cli@12.3.2": + version "12.3.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.2.tgz#002ae3683b9fe6b0a83a837f41d9db541ea7667f" + integrity sha512-WgoUWwLDcf/G1Su2COUUVs3RzAwnV/vUTdISSpAUGgSc57mPabaAoUctKTnfYEhCnE3j02k3VtaVPwCAFRO3TQ== + dependencies: + "@react-native-community/cli-clean" "12.3.2" + "@react-native-community/cli-config" "12.3.2" + "@react-native-community/cli-debugger-ui" "12.3.2" + "@react-native-community/cli-doctor" "12.3.2" + "@react-native-community/cli-hermes" "12.3.2" + "@react-native-community/cli-plugin-metro" "12.3.2" + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" + "@react-native-community/cli-types" "12.3.2" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -2067,6 +2187,13 @@ dependencies: "@react-native/codegen" "0.73.2" +"@react-native/babel-plugin-codegen@0.73.4": + version "0.73.4" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.73.4.tgz#8a2037d5585b41877611498ae66adbf1dddfec1b" + integrity sha512-XzRd8MJGo4Zc5KsphDHBYJzS1ryOHg8I2gOZDAUCGcwLFhdyGu1zBNDJYH2GFyDrInn9TzAbRIf3d4O+eltXQQ== + dependencies: + "@react-native/codegen" "0.73.3" + "@react-native/babel-preset@0.73.19": version "0.73.19" resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.19.tgz#a6c0587651804f8f01d6f3b7729f1d4a2d469691" @@ -2115,6 +2242,54 @@ babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" +"@react-native/babel-preset@0.73.21": + version "0.73.21" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.21.tgz#174c16493fa4e311b2f5f0c58d4f3c6a5a68bbea" + integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.73.4" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + "@react-native/codegen@0.73.2": version "0.73.2" resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.2.tgz#58af4e4c3098f0e6338e88ec64412c014dd51519" @@ -2128,15 +2303,28 @@ mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/community-cli-plugin@0.73.12": - version "0.73.12" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.12.tgz#3a72a8cbae839a0382d1a194a7067d4ffa0da04c" - integrity sha512-xWU06OkC1cX++Duh/cD/Wv+oZ0oSY3yqbtxAqQA2H3Q+MQltNNJM6MqIHt1VOZSabRf/LVlR1JL6U9TXJirkaw== +"@react-native/codegen@0.73.3": + version "0.73.3" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.73.3.tgz#cc984a8b17334d986cc600254a0d4b7fa7d68a94" + integrity sha512-sxslCAAb8kM06vGy9Jyh4TtvjhcP36k/rvj2QE2Jdhdm61KvfafCATSIsOfc0QvnduWFcpXUPvAVyYwuv7PYDg== dependencies: - "@react-native-community/cli-server-api" "12.3.0" - "@react-native-community/cli-tools" "12.3.0" + "@babel/parser" "^7.20.0" + flow-parser "^0.206.0" + glob "^7.1.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.73.16": + version "0.73.16" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.16.tgz#29dca91aa3e24c8cd534dbf3db5766509da92ea3" + integrity sha512-eNH3v3qJJF6f0n/Dck90qfC9gVOR4coAXMTdYECO33GfgjTi+73vf/SBqlXw9HICH/RNZYGPM3wca4FRF7TYeQ== + dependencies: + "@react-native-community/cli-server-api" "12.3.2" + "@react-native-community/cli-tools" "12.3.2" "@react-native/dev-middleware" "0.73.7" - "@react-native/metro-babel-transformer" "0.73.13" + "@react-native/metro-babel-transformer" "0.73.15" chalk "^4.0.0" execa "^5.1.1" metro "^0.80.3" @@ -2176,13 +2364,13 @@ resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== -"@react-native/metro-babel-transformer@0.73.13": - version "0.73.13" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.13.tgz#81cb6dd8d5140c57f5595183fd6857feb8b7f5d7" - integrity sha512-k9AQifogQfgUXPlqQSoMtX2KUhniw4XvJl+nZ4hphCH7qiMDAwuP8OmkJbz5E/N+Ro9OFuLE7ax4GlwxaTsAWg== +"@react-native/metro-babel-transformer@0.73.15": + version "0.73.15" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz#c516584dde62d65a46668074084359c03e6a50f1" + integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== dependencies: "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.73.19" + "@react-native/babel-preset" "0.73.21" hermes-parser "0.15.0" nullthrows "^1.1.1" @@ -2408,6 +2596,22 @@ resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.11.tgz#2596fb352ee96a1379c657734d4b913a613ad563" integrity sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng== +"@types/react-test-renderer@^18.0.7": + version "18.0.7" + resolved "https://registry.yarnpkg.com/@types/react-test-renderer/-/react-test-renderer-18.0.7.tgz#2cfe657adb3688cdf543995eceb2e062b5a68728" + integrity sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg== + dependencies: + "@types/react" "*" + +"@types/react@*": + version "18.2.56" + resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.56.tgz#2d3e9021a0b6eb5bfc227761cc61b1c6dc6e0cd8" + integrity sha512-NpwHDMkS/EFZF2dONFQHgkPRwhvgq/OAvIaGQzxGSBmaeR++kTg6njr15Vatz0/2VcCEwJQFi6Jf4Q0qBu0rLA== + dependencies: + "@types/prop-types" "*" + "@types/scheduler" "*" + csstype "^3.0.2" + "@types/react@~18.2.14": version "18.2.50" resolved "https://registry.yarnpkg.com/@types/react/-/react-18.2.50.tgz#f5cf38ed7d6f5b37668e313fea85db51f6b36380" @@ -3389,11 +3593,27 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.9.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/color/-/color-4.2.3.tgz#d781ecb5e57224ee43ea9627560107c0e0c6463a" + integrity sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A== + dependencies: + color-convert "^2.0.1" + color-string "^1.9.0" + colorette@^1.0.7: version "1.4.0" resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.4.0.tgz#5190fbb87276259a86ad700bff2c6d6faa3fca40" @@ -4024,6 +4244,11 @@ destroy@1.2.0: resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== +detect-libc@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-2.0.2.tgz#8ccf2ba9315350e1241b88d0ac3b0e1fbd99605d" + integrity sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw== + detect-newline@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" @@ -4110,9 +4335,9 @@ eastasianwidth@^0.2.0: integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== echarts@^5.5.0: - version "5.5.0-rc.1" - resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.5.0-rc.1.tgz#31ee2c4e09da24fe8149bb011c1fbd271a2bf10f" - integrity sha512-Fnfls+zDAg9HLuWK27JakdjLjpkEZsKTk+eeSA6eOqphBNA9iXCI1CvQJZ5xD8WJY40bqdh4zCaE4AxSDjJslw== + version "5.5.0" + resolved "https://registry.yarnpkg.com/echarts/-/echarts-5.5.0.tgz#c13945a7f3acdd67c134d8a9ac67e917830113ac" + integrity sha512-rNYnNCzqDAPCr4m/fqyUFv7fD9qIsd50S6GDFgO1DxZhncCsNsG7IfUlAlvZe5oSEQxtsjnHiUuppzccry93Xw== dependencies: tslib "2.3.0" zrender "5.5.0" @@ -4904,6 +5129,11 @@ get-pkg-repo@^4.0.0: through2 "^2.0.0" yargs "^16.2.0" +get-stdin@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-5.0.1.tgz#122e161591e21ff4c52530305693f20e6393a398" + integrity sha512-jZV7n6jGE3Gt7fgSTJoz91Ak5MuTLwMwkoYdjxuJ/AmjIsE1UC03y/IWkZCQGEvVNS9qoRNwy5BCqxImv0FVeA== + get-stream@^5.0.0: version "5.2.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" @@ -5087,6 +5317,11 @@ globby@^13.1.2: merge2 "^1.4.1" slash "^4.0.0" +glur@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/glur/-/glur-1.1.2.tgz#f20ea36db103bfc292343921f1f91e83c3467689" + integrity sha512-l+8esYHTKOx2G/Aao4lEQ0bnHWg4fWtJbVoZZT9Knxi01pB8C80BR85nONLFwkkQoFRCmXY+BUcGZN3yZ2QsRA== + gopd@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" @@ -5477,6 +5712,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-async-function@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.0.0.tgz#8e4418efd3e5d3a6ebb0164c05ef5afb69aa9646" @@ -6079,6 +6319,20 @@ jest-haste-map@^29.7.0: optionalDependencies: fsevents "^2.3.2" +jest-image-snapshot@^6.4.0: + version "6.4.0" + resolved "https://registry.yarnpkg.com/jest-image-snapshot/-/jest-image-snapshot-6.4.0.tgz#65831d13beb1680f3bba9fb28230fa53d76939be" + integrity sha512-IWGtSOnelwaVPd09STbJuLmnAwlBC/roJtTLGLb8M3TA0vfku3MRNEXmljTa1EMXqdRbA0oIWiqHFB1ttTGazQ== + dependencies: + chalk "^4.0.0" + get-stdin "^5.0.1" + glur "^1.1.2" + lodash "^4.17.4" + pixelmatch "^5.1.0" + pngjs "^3.4.0" + rimraf "^2.6.2" + ssim.js "^3.1.1" + jest-leak-detector@^29.7.0: version "29.7.0" resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728" @@ -6633,7 +6887,7 @@ lodash.upperfirst@^4.3.1: resolved "https://registry.yarnpkg.com/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz#1365edf431480481ef0d1c68957a5ed99d49f7ce" integrity sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg== -lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21: +lodash@4.17.21, lodash@^4.17.15, lodash@^4.17.21, lodash@^4.17.4: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7664,6 +7918,13 @@ pirates@^4.0.4, pirates@^4.0.6: resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9" integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg== +pixelmatch@^5.1.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-5.3.0.tgz#5e5321a7abedfb7962d60dbf345deda87cb9560a" + integrity sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q== + dependencies: + pngjs "^6.0.0" + pkg-dir@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-3.0.0.tgz#2749020f239ed990881b1f71210d51eb6523bea3" @@ -7678,6 +7939,16 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" +pngjs@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + +pngjs@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-6.0.0.tgz#ca9e5d2aa48db0228a52c419c3308e87720da821" + integrity sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg== + pod-install@^0.1.0: version "0.1.39" resolved "https://registry.yarnpkg.com/pod-install/-/pod-install-0.1.39.tgz#853a0585bafbd332c2ca6543854fd4919958cfb3" @@ -7930,18 +8201,18 @@ react-native-svg@14.1.0: css-select "^5.1.0" css-tree "^1.1.3" -react-native@0.73.2: - version "0.73.2" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.2.tgz#74ee163c8189660d41d1da6560411da7ce41a608" - integrity sha512-7zj9tcUYpJUBdOdXY6cM8RcXYWkyql4kMyGZflW99E5EuFPoC7Ti+ZQSl7LP9ZPzGD0vMfslwyDW0I4tPWUCFw== +react-native@0.73.4: + version "0.73.4" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.4.tgz#81e07d4e7b6308c4649d5fa24038c0e87b17f2e1" + integrity sha512-VtS+Yr6OOTIuJGDECIYWzNU8QpJjASQYvMtfa/Hvm/2/h5GdB6W9H9TOmh13x07Lj4AOhNMx3XSsz6TdrO4jIg== dependencies: "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "12.3.0" - "@react-native-community/cli-platform-android" "12.3.0" - "@react-native-community/cli-platform-ios" "12.3.0" + "@react-native-community/cli" "12.3.2" + "@react-native-community/cli-platform-android" "12.3.2" + "@react-native-community/cli-platform-ios" "12.3.2" "@react-native/assets-registry" "0.73.1" - "@react-native/codegen" "0.73.2" - "@react-native/community-cli-plugin" "0.73.12" + "@react-native/codegen" "0.73.3" + "@react-native/community-cli-plugin" "0.73.16" "@react-native/gradle-plugin" "0.73.4" "@react-native/js-polyfills" "0.73.1" "@react-native/normalize-colors" "0.73.2" @@ -7950,6 +8221,7 @@ react-native@0.73.2: anser "^1.4.9" ansi-regex "^5.0.0" base64-js "^1.5.1" + chalk "^4.0.0" deprecated-react-native-prop-types "^5.0.0" event-target-shim "^5.0.1" flow-enums-runtime "^0.0.6" @@ -8346,6 +8618,13 @@ reusify@^1.0.4: resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== +rimraf@^2.6.2: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" @@ -8550,6 +8829,35 @@ shallow-clone@^3.0.0: dependencies: kind-of "^6.0.2" +sharp@^0.33.2: + version "0.33.2" + resolved "https://registry.yarnpkg.com/sharp/-/sharp-0.33.2.tgz#fcd52f2c70effa8a02160b1bfd989a3de55f2dfb" + integrity sha512-WlYOPyyPDiiM07j/UO+E720ju6gtNtHjEGg5vovUk1Lgxyjm2LFO+37Nt/UI3MMh2l6hxTWQWi7qk3cXJTutcQ== + dependencies: + color "^4.2.3" + detect-libc "^2.0.2" + semver "^7.5.4" + optionalDependencies: + "@img/sharp-darwin-arm64" "0.33.2" + "@img/sharp-darwin-x64" "0.33.2" + "@img/sharp-libvips-darwin-arm64" "1.0.1" + "@img/sharp-libvips-darwin-x64" "1.0.1" + "@img/sharp-libvips-linux-arm" "1.0.1" + "@img/sharp-libvips-linux-arm64" "1.0.1" + "@img/sharp-libvips-linux-s390x" "1.0.1" + "@img/sharp-libvips-linux-x64" "1.0.1" + "@img/sharp-libvips-linuxmusl-arm64" "1.0.1" + "@img/sharp-libvips-linuxmusl-x64" "1.0.1" + "@img/sharp-linux-arm" "0.33.2" + "@img/sharp-linux-arm64" "0.33.2" + "@img/sharp-linux-s390x" "0.33.2" + "@img/sharp-linux-x64" "0.33.2" + "@img/sharp-linuxmusl-arm64" "0.33.2" + "@img/sharp-linuxmusl-x64" "0.33.2" + "@img/sharp-wasm32" "0.33.2" + "@img/sharp-win32-ia32" "0.33.2" + "@img/sharp-win32-x64" "0.33.2" + shebang-command@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" @@ -8590,6 +8898,13 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -8712,6 +9027,11 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== +ssim.js@^3.1.1: + version "3.5.0" + resolved "https://registry.yarnpkg.com/ssim.js/-/ssim.js-3.5.0.tgz#d7276b9ee99b57a5ff0db34035f02f35197e62df" + integrity sha512-Aj6Jl2z6oDmgYFFbQqK7fght19bXdOxY7Tj03nF+03M9gCBAjeIiO8/PlEGMfKDwYpw4q6iBqVq2YuREorGg/g== + stack-utils@^2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" @@ -9087,7 +9407,7 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.1, tslib@^2.1.0: +tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0: version "2.6.2" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae" integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==