diff --git a/.eslintignore b/.eslintignore index 7afd21814..d307ae3ee 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,9 +1,9 @@ **/node_modules/ -example/examples/ -example/android/ -example/ios/ -example/windows/ -macos-example/macos/ +apps/**/node_modules/ +apps/**/android/ +apps/**/ios/ +apps/**/windows/ +apps/**/macos/ screenshots/ android/ apple/ diff --git a/.github/workflows/android-build-test.yml b/.github/workflows/android-build-test.yml index df3d6d131..9a5e2d034 100644 --- a/.github/workflows/android-build-test.yml +++ b/.github/workflows/android-build-test.yml @@ -1,83 +1,71 @@ -name: Test Android build +name: Example Android check on: pull_request: paths: - - '.github/workflows/android-build-test.yml' + - .github/workflows/android-build-test.yml - 'android/**' - 'src/fabric/**' - 'package.json' - - 'example/android/**' - - 'example/package.json' - - 'fabric-example/android/**' - - 'fabric-example/package.json' + - 'apps/paper-example/android/**' + - 'apps/paper-example/package.json' + - 'apps/fabric-example/android/**' + - 'apps/fabric-example/package.json' push: branches: - main + workflow_dispatch: jobs: build: runs-on: ubuntu-latest strategy: matrix: - working-directory: [example, fabric-example] + working-directory: [paper-example, fabric-example] + fail-fast: false concurrency: group: android-${{ matrix.working-directory }}-${{ github.ref }} cancel-in-progress: true steps: - - name: Check out Git repository - uses: actions/checkout@v2 + - name: Checkout Git repository + uses: actions/checkout@v4 - name: Set up JDK 17 - uses: actions/setup-java@v1 + uses: actions/setup-java@v4 with: + distribution: 'zulu' java-version: '17' - - name: Accept licenses - run: /bin/bash -c "yes | $ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager --licenses > /dev/null" - - - name: Restore svg node_modules from cache - uses: actions/cache@v2 - id: cache-node-modules-svg + - name: Get react-native-svg node_modules cache + uses: actions/cache@v4 with: - path: | - node_modules + path: node_modules key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} - restore-keys: | - ${{ runner.os }}-node-modules-svg - - name: Install svg node_modules + restore-keys: ${{ runner.os }}-node-modules-svg- + + - name: Install react-native-svg node_modules run: yarn install --frozen-lockfile - - name: Restore app node_modules from cache - uses: actions/cache@v2 - id: cache-node-modules-app + - name: Get app node_modules cache + uses: actions/cache@v4 with: - path: | - ${{ matrix.working-directory }}/node_modules + path: apps/${{ matrix.working-directory }}/node_modules key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/yarn.lock', matrix.working-directory)) }} - restore-keys: | - ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- + restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- + - name: Install app node_modules - working-directory: ${{ matrix.working-directory }} + working-directory: apps/${{ matrix.working-directory }} run: yarn install --frozen-lockfile - - name: Restore build from cache - uses: actions/cache@v3 + - name: Get build cache + uses: actions/cache@v4 with: path: | ~/.gradle/caches ~/.gradle/wrapper - android/build - android/.cxx - ${{ matrix.working-directory }}/android/build - ${{ matrix.working-directory }}/android/.cxx - ${{ matrix.working-directory }}/android/.gradle - ${{ matrix.working-directory }}/android/app/build - ${{ matrix.working-directory }}/android/app/.cxx - ${{ matrix.working-directory }}/node_modules/react-native/ReactAndroid/build - ${{ matrix.working-directory }}/node_modules/react-native/ReactAndroid/hermes-engine/build - ${{ matrix.working-directory }}/node_modules/react-native/ReactAndroid/hermes-engine/.cxx - key: ${{ runner.os }}-build5-${{ matrix.working-directory }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', 'android/build.gradle', format('{0}/node_modules/react-native/sdks/.hermesversion', matrix.working-directory)) }} + key: ${{ runner.os }}-gradle-${{matrix.working-directory}}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle-${{matrix.working-directory}}- - name: Build app - working-directory: ${{ matrix.working-directory }}/android + working-directory: apps/${{ matrix.working-directory }}/android run: ./gradlew assembleDebug --build-cache --console=plain -PreactNativeArchitectures=arm64-v8a diff --git a/.github/workflows/android-e2e.yml b/.github/workflows/e2e-android.yml similarity index 87% rename from .github/workflows/android-e2e.yml rename to .github/workflows/e2e-android.yml index 4f2e2413b..2872c9921 100644 --- a/.github/workflows/android-e2e.yml +++ b/.github/workflows/e2e-android.yml @@ -1,14 +1,13 @@ -name: Test Android e2e +name: E2E Android on: pull_request: paths: - - '.github/workflows/android-e2e-test.yml' - - 'apps/examples/**' - - 'example/**' - - 'android/**' - - 'src/**' - - 'e2e/**' - - 'package.json' + - .github/workflows/e2e-android.yml + - apps/common/example/** + - android/** + - src/** + - e2e/** + - package.json # push: # branches: # - main @@ -18,7 +17,7 @@ jobs: runs-on: macos-12 timeout-minutes: 60 env: - WORKING_DIRECTORY: example + WORKING_DIRECTORY: paper-example API_LEVEL: 34 SYSTEM_IMAGES: system-images;android-34;google_apis;x86_64 AVD_NAME: rn-svg-avd @@ -81,7 +80,7 @@ jobs: timeout-minutes: 10 - name: Reverse TCP - working-directory: ${{ env.WORKING_DIRECTORY }} + working-directory: apps/${{ env.WORKING_DIRECTORY }} run: adb devices | grep '\t' | awk '{print $1}' | sed 's/\\s//g' | xargs -I {} adb -s {} reverse tcp:8081 tcp:8081 - name: Install root node dependencies @@ -89,18 +88,18 @@ jobs: - name: Install example app node dependencies run: yarn - working-directory: ${{ env.WORKING_DIRECTORY }} + working-directory: apps/${{ env.WORKING_DIRECTORY }} - name: Build Android app - working-directory: ${{ env.WORKING_DIRECTORY }}/android + working-directory: apps/${{ env.WORKING_DIRECTORY }}/android run: ./gradlew assembleDebug - name: Start Metro server - working-directory: ${{ env.WORKING_DIRECTORY }} + working-directory: apps/${{ env.WORKING_DIRECTORY }} run: E2E=true yarn start &> output.log & - name: Install APK - run: adb install -r ${{ env.WORKING_DIRECTORY }}/android/app/build/outputs/apk/debug/app-debug.apk + run: adb install -r apps/${{ env.WORKING_DIRECTORY }}/android/app/build/outputs/apk/debug/app-debug.apk - name: Launch APK run: 'while ! (adb shell monkey -p com.example 1 | grep -q "Events injected: 1"); do sleep 1; echo "Retrying due to errors in previous run..."; done' diff --git a/.github/workflows/e2e-ios.yml b/.github/workflows/e2e-ios.yml new file mode 100644 index 000000000..4b0b2e877 --- /dev/null +++ b/.github/workflows/e2e-ios.yml @@ -0,0 +1,93 @@ +name: E2E iOS +on: + pull_request: + paths: + - .github/workflows/ios-e2e.yml + - apps/common/example/** + - apple/** + - src/** + - e2e/** + - package.json + push: + branches: + - main + workflow_dispatch: + +jobs: + test: + runs-on: macos-14 + timeout-minutes: 60 + strategy: + matrix: + working-directory: [paper-example] + fail-fast: false + env: + DEVICE: iPhone 16 Pro + steps: + - name: Checkout Git repository + uses: actions/checkout@v4 + + - name: Use latest stable Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + + - name: Get react-native-svg node_modules cache + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} + restore-keys: ${{ runner.os }}-node-modules-svg- + + - name: Install react-native-svg node_modules + run: yarn install --frozen-lockfile + + - name: Get app node_modules cache + uses: actions/cache@v4 + with: + path: apps/${{ matrix.working-directory }}/node_modules + key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }} + restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- + + - name: Install app node_modules + working-directory: apps/${{ matrix.working-directory }} + run: yarn install --frozen-lockfile + + - name: Get Pods cache + uses: actions/cache@v4 + with: + path: apps/${{ matrix.working-directory }}/ios/Pods + key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }} + restore-keys: | + ${{ runner.os }}-pods-${{ matrix.working-directory }}- + + - name: Install Pods + working-directory: apps/${{ matrix.working-directory }}/ios + run: bundle install && bundle exec pod install + + - name: Get build artifacts cache + uses: actions/cache@v4 + with: + path: ~/Library/Developer/Xcode/DerivedData + key: ${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }} + restore-keys: | + ${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}- + + - name: Start Metro server + working-directory: apps/${{ matrix.working-directory }} + run: E2E=true yarn start &> output.log & + + - name: Build app + working-directory: apps/${{ matrix.working-directory }} + run: E2E=true npx react-native run-ios --simulator="${{ env.DEVICE }}" --mode Debug --verbose + + - name: Run e2e Tests + run: E2E=true yarn e2e + + - name: Upload test report + uses: actions/upload-artifact@v4 + with: + name: report + path: | + report.html + jest-html-reporters-attach/ diff --git a/.github/workflows/ios-build-test.yml b/.github/workflows/ios-build-test.yml index fe4604bdd..fed69061d 100644 --- a/.github/workflows/ios-build-test.yml +++ b/.github/workflows/ios-build-test.yml @@ -1,41 +1,42 @@ -name: Test iOS build +name: Example iOS check on: pull_request: paths: - .github/workflows/ios-build-test.yml - RNSVG.podspec - apple/** - - example/package.json - - example/ios/** - src/fabric/** - - fabric-example/package.json - - fabric-example/ios/** - package.json + - apps/paper-example/package.json + - apps/paper-example/ios/** + - apps/fabric-example/package.json + - apps/fabric-example/ios/** push: branches: - main + workflow_dispatch: jobs: build: runs-on: macos-14 strategy: matrix: - working-directory: [example, fabric-example] + working-directory: [paper-example, fabric-example] fail-fast: false concurrency: group: ios-${{ matrix.working-directory }}-${{ github.ref }} cancel-in-progress: true steps: - - name: Check out Git repository - uses: actions/checkout@v3 + - name: Checkout Git repository + uses: actions/checkout@v4 - name: Use latest stable Xcode uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: latest-stable - - name: Restore react-native-svg node_modules from cache - uses: actions/cache@v3 + - name: Get react-native-svg node_modules cache + uses: actions/cache@v4 with: path: node_modules key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} @@ -44,36 +45,37 @@ jobs: - name: Install react-native-svg node_modules run: yarn install --frozen-lockfile - - name: Restore app node_modules from cache - uses: actions/cache@v3 + - name: Get app node_modules cache + uses: actions/cache@v4 with: - path: ${{ matrix.working-directory }}/node_modules - key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/yarn.lock', matrix.working-directory)) }} + path: apps/${{ matrix.working-directory }}/node_modules + key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }} restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- - name: Install app node_modules - working-directory: ${{ matrix.working-directory }} + working-directory: apps/${{ matrix.working-directory }} run: yarn install --frozen-lockfile - - name: Restore Pods from cache - uses: actions/cache@v3 + - name: Get Pods cache + uses: actions/cache@v4 with: - path: | - ${{ matrix.working-directory }}/ios/Pods - ~/Library/Caches/CocoaPods - ~/.cocoapods - key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/ios/Podfile.lock', matrix.working-directory)) }} + path: apps/${{ matrix.working-directory }}/ios/Pods + key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }} + restore-keys: | + ${{ runner.os }}-pods-${{ matrix.working-directory }}- - name: Install Pods - working-directory: ${{ matrix.working-directory }}/ios + working-directory: apps/${{ matrix.working-directory }}/ios run: bundle install && bundle exec pod install - - name: Restore build artifacts from cache - uses: actions/cache@v3 + - name: Get build artifacts cache + uses: actions/cache@v4 with: path: ~/Library/Developer/Xcode/DerivedData - key: ${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/ios/Podfile.lock', matrix.working-directory)) }} + key: ${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/ios/Podfile.lock', matrix.working-directory)) }} + restore-keys: | + ${{ runner.os }}-ios-derived-data-${{ matrix.working-directory }}- - name: Build app - working-directory: ${{ matrix.working-directory }} - run: npx react-native@latest run-ios --simulator="iPhone 16 Pro" --mode Debug --verbose --terminal /bin/zsh + working-directory: apps/${{ matrix.working-directory }} + run: npx react-native run-ios --simulator="iPhone 15 Pro" --mode Debug --verbose --no-packager diff --git a/.github/workflows/ios-e2e.yml b/.github/workflows/ios-e2e.yml deleted file mode 100644 index a0a05fd46..000000000 --- a/.github/workflows/ios-e2e.yml +++ /dev/null @@ -1,93 +0,0 @@ -name: Test iOS e2e -on: - pull_request: - paths: - - '.github/workflows/android-e2e-test.yml' - - 'apps/examples/**' - - 'example/**' - - 'apple/**' - - 'src/**' - - 'e2e/**' - - 'package.json' - push: - branches: - - main - workflow_dispatch: -jobs: - test: - runs-on: macos-14 - timeout-minutes: 60 - env: - WORKING_DIRECTORY: example - DEVICE: iPhone 16 Pro - XCODE_VERSION: latest-stable - concurrency: - group: ios-e2e-example-${{ github.ref }} - cancel-in-progress: true - steps: - - name: checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - name: Use latest stable Xcode - uses: maxim-lobanov/setup-xcode@v1 - with: - xcode-version: ${{ env.XCODE_VERSION }} - - - name: Restore react-native-svg node_modules from cache - uses: actions/cache@v3 - with: - path: node_modules - key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} - restore-keys: ${{ runner.os }}-node-modules-svg- - - - name: Install react-native-svg node_modules - run: yarn install --frozen-lockfile - - - name: Restore app node_modules from cache - uses: actions/cache@v3 - with: - path: ${{ env.WORKING_DIRECTORY }}/node_modules - key: ${{ runner.os }}-node-modules-${{ env.WORKING_DIRECTORY }}-${{ hashFiles(format('{0}/yarn.lock', env.WORKING_DIRECTORY)) }} - restore-keys: ${{ runner.os }}-node-modules-${{ env.WORKING_DIRECTORY }}- - - - name: Install app node_modules - working-directory: ${{ env.WORKING_DIRECTORY }} - run: yarn install --frozen-lockfile - - - name: Restore Pods from cache - uses: actions/cache@v3 - with: - path: | - ${{ env.WORKING_DIRECTORY }}/ios/Pods - ~/Library/Caches/CocoaPods - ~/.cocoapods - key: ${{ runner.os }}-pods-${{ env.WORKING_DIRECTORY }}-${{ hashFiles(format('{0}/ios/Podfile.lock', env.WORKING_DIRECTORY)) }} - - - name: Install Pods - working-directory: ${{ env.WORKING_DIRECTORY }}/ios - run: bundle install && bundle exec pod install - - - name: Restore build artifacts from cache - uses: actions/cache@v3 - with: - path: ~/Library/Developer/Xcode/DerivedData - key: ${{ runner.os }}-ios-derived-data-${{ env.WORKING_DIRECTORY }}-${{ hashFiles(format('{0}/ios/Podfile.lock', env.WORKING_DIRECTORY)) }} - - name: Start Metro server - working-directory: ${{ env.WORKING_DIRECTORY }} - run: E2E=true yarn start &> output.log & - - - name: Build app - working-directory: ${{ env.WORKING_DIRECTORY }} - run: E2E=true npx react-native@latest run-ios --simulator="${{ env.DEVICE }}" --mode Debug --verbose - - - name: Run e2e Tests - run: E2E=true yarn e2e - - - name: Upload test report - uses: actions/upload-artifact@v4 - with: - name: report - path: | - report.html - jest-html-reporters-attach/ diff --git a/.github/workflows/js-build-test.yml b/.github/workflows/js-build-test.yml index e3bef2a7d..b03b10669 100644 --- a/.github/workflows/js-build-test.yml +++ b/.github/workflows/js-build-test.yml @@ -1,4 +1,7 @@ name: Test JS build +concurrency: + group: js-${{ github.ref }} + cancel-in-progress: true on: pull_request: branches: @@ -9,24 +12,22 @@ on: jobs: build: runs-on: ubuntu-latest - concurrency: - group: js-${{ github.ref }} - cancel-in-progress: true steps: - name: checkout - uses: actions/checkout@v2 - - name: Use Node.js 18 - uses: actions/setup-node@v2 + uses: actions/checkout@v4 + + - name: Get react-native-svg node_modules cache + uses: actions/cache@v4 with: - node-version: 18 - cache: 'yarn' - cache-dependency-path: 'yarn.lock' - - name: Install node dependencies - run: yarn + path: node_modules + key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} + restore-keys: ${{ runner.os }}-node-modules-svg- + + - name: Install react-native-svg node_modules + run: yarn install --frozen-lockfile + - name: Build run: yarn bob + - name: Test and lint run: yarn test - - name: Build Example App - working-directory: example/ - run: yarn && yarn tsc diff --git a/.github/workflows/macos-build-test-fabric.yml b/.github/workflows/macos-build-test-fabric.yml deleted file mode 100644 index 5551bc301..000000000 --- a/.github/workflows/macos-build-test-fabric.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Test fabric macOS build -on: - pull_request: - paths: - - .github/workflows/macos-build-test.yml - - RNSVG.podspec - - apple/** - - macos-example/package.json - - macos-example/macos/** - - src/fabric/** - - package.json - push: - branches: - - main - -jobs: - build: - if: github.repository == 'software-mansion/react-native-svg' - runs-on: macos-14 - strategy: - matrix: - working-directory: [fabric-macos-example] - fail-fast: false - concurrency: - group: macos-${{ matrix.working-directory }}-${{ github.ref }} - cancel-in-progress: true - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Restore react-native-svg node_modules from cache - uses: actions/cache@v3 - with: - path: node_modules - key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} - restore-keys: ${{ runner.os }}-node-modules-svg- - - - name: Install react-native-svg node_modules - run: yarn install --frozen-lockfile - - - name: Restore app node_modules from cache - uses: actions/cache@v3 - with: - path: ${{ matrix.working-directory }}/node_modules - key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/yarn.lock', matrix.working-directory)) }} - restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- - - - name: Install app node_modules - working-directory: ${{ matrix.working-directory }} - run: yarn install --frozen-lockfile - - - name: Restore Pods from cache - uses: actions/cache@v3 - with: - path: | - ${{ matrix.working-directory }}/macos/Pods - ~/Library/Caches/CocoaPods - ~/.cocoapods - key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/macos/Podfile.lock', matrix.working-directory)) }} - - - name: Install Pods - working-directory: ${{ matrix.working-directory }}/macos - run: bundle install && RCT_NEW_ARCH_ENABLED=1 bundle exec pod install - - - name: Restore build artifacts from cache - uses: actions/cache@v3 - with: - path: ~/Library/Developer/Xcode/DerivedData - key: ${{ runner.os }}-macos-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/macos/Podfile.lock', matrix.working-directory)) }} - - - name: Build app - working-directory: ${{ matrix.working-directory }} - run: yarn macos diff --git a/.github/workflows/macos-build-test-paper.yml b/.github/workflows/macos-build-test-paper.yml deleted file mode 100644 index 486a88277..000000000 --- a/.github/workflows/macos-build-test-paper.yml +++ /dev/null @@ -1,73 +0,0 @@ -name: Test paper macOS build -on: - pull_request: - paths: - - .github/workflows/macos-build-test.yml - - RNSVG.podspec - - apple/** - - macos-example/package.json - - macos-example/macos/** - - src/fabric/** - - package.json - push: - branches: - - main - -jobs: - build: - if: github.repository == 'software-mansion/react-native-svg' - runs-on: macos-14 - strategy: - matrix: - working-directory: [paper-macos-example] - fail-fast: false - concurrency: - group: macos-${{ matrix.working-directory }}-${{ github.ref }} - cancel-in-progress: true - steps: - - name: Check out Git repository - uses: actions/checkout@v3 - - - name: Restore react-native-svg node_modules from cache - uses: actions/cache@v3 - with: - path: node_modules - key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} - restore-keys: ${{ runner.os }}-node-modules-svg- - - - name: Install react-native-svg node_modules - run: yarn install --frozen-lockfile - - - name: Restore app node_modules from cache - uses: actions/cache@v3 - with: - path: ${{ matrix.working-directory }}/node_modules - key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/yarn.lock', matrix.working-directory)) }} - restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- - - - name: Install app node_modules - working-directory: ${{ matrix.working-directory }} - run: yarn install --frozen-lockfile - - - name: Restore Pods from cache - uses: actions/cache@v3 - with: - path: | - ${{ matrix.working-directory }}/macos/Pods - ~/Library/Caches/CocoaPods - ~/.cocoapods - key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/macos/Podfile.lock', matrix.working-directory)) }} - - - name: Install Pods - working-directory: ${{ matrix.working-directory }}/macos - run: bundle install && bundle exec pod install - - - name: Restore build artifacts from cache - uses: actions/cache@v3 - with: - path: ~/Library/Developer/Xcode/DerivedData - key: ${{ runner.os }}-macos-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/macos/Podfile.lock', matrix.working-directory)) }} - - - name: Build app - working-directory: ${{ matrix.working-directory }} - run: yarn macos diff --git a/.github/workflows/macos-build-test.yml b/.github/workflows/macos-build-test.yml new file mode 100644 index 000000000..fbbfe5d14 --- /dev/null +++ b/.github/workflows/macos-build-test.yml @@ -0,0 +1,79 @@ +name: Example macOS check +on: + pull_request: + paths: + - .github/workflows/macos-build-test.yml + - RNSVG.podspec + - apple/** + - src/fabric/** + - package.json + - apps/paper-macos-example/package.json + - apps/paper-macos-example/ios/** + - apps/fabric-macos-example/package.json + - apps/fabric-macos-example/ios/** + push: + branches: + - main + +jobs: + build: + if: github.repository == 'software-mansion/react-native-svg' + runs-on: macos-14 + strategy: + matrix: + working-directory: [paper-macos-example, fabric-macos-example] + fail-fast: false + concurrency: + group: macos-${{ matrix.working-directory }}-${{ github.ref }} + cancel-in-progress: true + steps: + - name: Checkout Git repository + uses: actions/checkout@v4 + + - name: Use latest stable Xcode + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: latest-stable + + - name: Get react-native-svg node_modules cache + uses: actions/cache@v4 + with: + path: node_modules + key: ${{ runner.os }}-node-modules-svg-${{ hashFiles('yarn.lock') }} + restore-keys: ${{ runner.os }}-node-modules-svg- + + - name: Install react-native-svg node_modules + run: yarn install --frozen-lockfile + + - name: Get app node_modules cache + uses: actions/cache@v4 + with: + path: apps/${{ matrix.working-directory }}/node_modules + key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }} + restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- + + - name: Install app node_modules + working-directory: apps/${{ matrix.working-directory }} + run: yarn install --frozen-lockfile + + - name: Get Pods cache + uses: actions/cache@v4 + with: + path: apps/${{ matrix.working-directory }}/macos/Pods + key: ${{ runner.os }}-pods-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/macos/Podfile.lock', matrix.working-directory)) }} + restore-keys: | + ${{ runner.os }}-pods-${{ matrix.working-directory }}- + + - name: Install Pods + working-directory: apps/${{ matrix.working-directory }}/macos + run: bundle install && bundle exec pod install + + - name: Get build artifacts cache + uses: actions/cache@v4 + with: + path: ~/Library/Developer/Xcode/DerivedData + key: ${{ runner.os }}-macos-derived-data-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/macos/Podfile.lock', matrix.working-directory)) }} + + - name: Build app + working-directory: apps/${{ matrix.working-directory }} + run: yarn macos diff --git a/.github/workflows/windows-build-test.yml b/.github/workflows/windows-build-test.yml index e0ace47b8..cbafa2120 100644 --- a/.github/workflows/windows-build-test.yml +++ b/.github/workflows/windows-build-test.yml @@ -6,8 +6,10 @@ on: - 'windows/**' - 'src/fabric/**' - 'package.json' - - 'example/windows/**' - - 'example/package.json' + - 'apps/paper-windows-example/windows/**' + - 'apps/paper-windows-example/package.json' + - 'apps/fabric-windows-example/windows/**' + - 'apps/fabric-windows-example/package.json' push: branches: - main @@ -17,7 +19,7 @@ jobs: runs-on: windows-2022 strategy: matrix: - working-directory: [example, fabric-windows-example] + working-directory: [paper-windows-example, fabric-windows-example] concurrency: group: windows-${{ matrix.working-directory }}-${{ github.ref }} cancel-in-progress: true @@ -47,14 +49,14 @@ jobs: - name: Restore app node_modules from cache uses: actions/cache@v3 with: - path: ${{ matrix.working-directory }}/node_modules - key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('{0}/yarn.lock', matrix.working-directory)) }} + path: apps/${{ matrix.working-directory }}/node_modules + key: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}-${{ hashFiles(format('apps/{0}/yarn.lock', matrix.working-directory)) }} restore-keys: ${{ runner.os }}-node-modules-${{ matrix.working-directory }}- - name: Install app node_modules - working-directory: ${{ matrix.working-directory }} + working-directory: apps/${{ matrix.working-directory }} run: yarn --frozen-lockfile - name: Build app - working-directory: ${{ matrix.working-directory }}/windows + working-directory: apps/${{ matrix.working-directory }}/windows run: npx react-native run-windows --logging --no-packager --no-deploy --no-autolink diff --git a/.gitignore b/.gitignore index 984257dbc..e94cd955f 100644 --- a/.gitignore +++ b/.gitignore @@ -51,5 +51,6 @@ experimental/ # VS Code .vscode/ +# E2E reports jest-html-reporters-attach/ report.html diff --git a/.npmignore b/.npmignore index a0727fc55..63e71e27a 100644 --- a/.npmignore +++ b/.npmignore @@ -1,2 +1,2 @@ screenshots/ -idl/ +apps/ \ No newline at end of file diff --git a/README.md b/README.md index e601747b6..644e073a2 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ `react-native-svg` provides SVG support to React Native on iOS, Android, macOS, Windows, and a compatibility layer for the web. -[Check out the Example app](https://github.com/react-native-svg/react-native-svg/tree/main/example) +[Check out the Example app](https://github.com/software-mansion/react-native-svg/tree/main/apps/common/example) - [Features](#features) - [Installation](#installation) @@ -75,6 +75,7 @@ npx expo install react-native-svg | >=9 | >=0.57.4 | | >=12.3.0 | >=0.64.0 | | >=15.0.0 | >=0.70.0 | +| >=15.8.0 | >=0.73.0 | ## Support for Fabric diff --git a/RNSVG.podspec b/RNSVG.podspec index 878dfb426..b3e0ca3a7 100644 --- a/RNSVG.podspec +++ b/RNSVG.podspec @@ -12,13 +12,18 @@ Pod::Spec.new do |s| s.homepage = package['homepage'] s.authors = 'Horcrux Chen' s.source = { :git => 'https://github.com/react-native-community/react-native-svg.git', :tag => "v#{s.version}" } - s.source_files = 'apple/**/*.{h,m,mm}' + s.source_files = 'apple/**/*.{h,m,mm,metal}' s.ios.exclude_files = '**/*.macos.{h,m,mm}' s.tvos.exclude_files = '**/*.macos.{h,m,mm}' s.visionos.exclude_files = '**/*.macos.{h,m,mm}' if s.respond_to?(:visionos) s.osx.exclude_files = '**/*.ios.{h,m,mm}' - s.requires_arc = true + s.requires_arc = true s.platforms = { :osx => "10.14", :ios => "12.4", :tvos => "12.4", :visionos => "1.0" } + + s.osx.resource_bundles = {'RNSVGFilters' => ['apple/**/*.macosx.metallib']} + s.ios.resource_bundles = {'RNSVGFilters' => ['apple/**/*.iphoneos.metallib']} + s.tvos.resource_bundles = {'RNSVGFilters' => ['apple/**/*.appletvos.metallib']} + s.visionos.resource_bundles = {'RNSVGFilters' => ['apple/**/*.xros.metallib']} if fabric_enabled install_modules_dependencies(s) diff --git a/USAGE.md b/USAGE.md index 64cb9b2fa..1306909fc 100644 --- a/USAGE.md +++ b/USAGE.md @@ -1300,21 +1300,21 @@ Filter effects are a way of processing an element’s rendering before it is dis The following filters have been implemented: +- FeBlend +- FeComposite - FeColorMatrix +- FeDropShadow +- FeFlood - FeGaussianBlur - FeMerge - FeOffset Not supported yet: -- FeBlend - FeComponentTransfer -- FeComposite - FeConvolveMatrix - FeDiffuseLighting - FeDisplacementMap -- FeDropShadow -- FeFlood - FeFuncA - FeFuncB - FeFuncG diff --git a/android/build.gradle b/android/build.gradle index 0cada99a9..ff1013c04 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -120,10 +120,8 @@ android { } if (getReactNativeMinorVersion() >= 75) { srcDirs += "src/borderRadiusRn75/java" - } else if (getReactNativeMinorVersion() >= 73) { - srcDirs += "src/transformRn73/java" } else { - srcDirs += "src/deprecated/java" + srcDirs += "src/transformRn73/java" } } } diff --git a/android/src/deprecated/java/com/horcrux/svg/SvgViewManager.java b/android/src/deprecated/java/com/horcrux/svg/SvgViewManager.java deleted file mode 100644 index 39d0af5a8..000000000 --- a/android/src/deprecated/java/com/horcrux/svg/SvgViewManager.java +++ /dev/null @@ -1,392 +0,0 @@ -/* - * this file can be removed when dropping support for react-native 0.72 - */ -/* - * Copyright (c) 2015-present, Horcrux. - * All rights reserved. - * - * This source code is licensed under the MIT-style license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.horcrux.svg; - -import android.graphics.Rect; -import android.util.SparseArray; -import androidx.annotation.NonNull; -import com.facebook.common.logging.FLog; -import com.facebook.react.bridge.Dynamic; -import com.facebook.react.bridge.ReadableArray; -import com.facebook.react.bridge.ReadableMap; -import com.facebook.react.common.ReactConstants; -import com.facebook.react.uimanager.PixelUtil; -import com.facebook.react.uimanager.PointerEvents; -import com.facebook.react.uimanager.ThemedReactContext; -import com.facebook.react.uimanager.ViewManagerDelegate; -import com.facebook.react.uimanager.ViewProps; -import com.facebook.react.uimanager.annotations.ReactProp; -import com.facebook.react.viewmanagers.RNSVGSvgViewAndroidManagerDelegate; -import com.facebook.react.viewmanagers.RNSVGSvgViewAndroidManagerInterface; -import com.facebook.react.views.view.ReactViewGroup; -import com.facebook.react.views.view.ReactViewManager; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Locale; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - -/** - * ViewManager for RNSVGSvgView React views. Renders as a {@link SvgView} and handles invalidating - * the native view on view updates happening in the underlying tree. - */ -class SvgViewManager extends ReactViewManager - implements RNSVGSvgViewAndroidManagerInterface { - - public static final String REACT_CLASS = "RNSVGSvgViewAndroid"; - - private static final SparseArray mTagToSvgView = new SparseArray<>(); - private static final SparseArray mTagToRunnable = new SparseArray<>(); - - private final ViewManagerDelegate mDelegate; - - protected ViewManagerDelegate getDelegate() { - return mDelegate; - } - - public SvgViewManager() { - mDelegate = new RNSVGSvgViewAndroidManagerDelegate(this); - } - - static void setSvgView(int tag, SvgView svg) { - mTagToSvgView.put(tag, svg); - Runnable task = mTagToRunnable.get(tag); - if (task != null) { - task.run(); - mTagToRunnable.delete(tag); - } - } - - static void runWhenViewIsAvailable(int tag, Runnable task) { - mTagToRunnable.put(tag, task); - } - - static @Nullable SvgView getSvgViewByTag(int tag) { - return mTagToSvgView.get(tag); - } - - @Nonnull - @Override - public String getName() { - return REACT_CLASS; - } - - @Nonnull - @Override - public ReactViewGroup createViewInstance(ThemedReactContext reactContext) { - return new SvgView(reactContext); - } - - @Override - public void updateExtraData(ReactViewGroup root, Object extraData) { - super.updateExtraData(root, extraData); - root.invalidate(); - } - - @Override - public void onDropViewInstance(@Nonnull ReactViewGroup view) { - super.onDropViewInstance(view); - mTagToSvgView.remove(view.getId()); - } - - @Override - public boolean needsCustomLayoutForChildren() { - return true; - } - - @ReactProp(name = "color", customType = "Color") - @Override - public void setColor(SvgView node, Integer color) { - node.setCurrentColor(color); - } - - @ReactProp(name = "minX") - @Override - public void setMinX(SvgView node, float minX) { - node.setMinX(minX); - } - - @ReactProp(name = "minY") - @Override - public void setMinY(SvgView node, float minY) { - node.setMinY(minY); - } - - @ReactProp(name = "vbWidth") - @Override - public void setVbWidth(SvgView node, float vbWidth) { - node.setVbWidth(vbWidth); - } - - @ReactProp(name = "vbHeight") - @Override - public void setVbHeight(SvgView node, float vbHeight) { - node.setVbHeight(vbHeight); - } - - @ReactProp(name = "bbWidth") - public void setBbWidth(SvgView node, Dynamic bbWidth) { - node.setBbWidth(bbWidth); - } - - @ReactProp(name = "bbHeight") - public void setBbHeight(SvgView node, Dynamic bbHeight) { - node.setBbHeight(bbHeight); - } - - @ReactProp(name = "align") - @Override - public void setAlign(SvgView node, String align) { - node.setAlign(align); - } - - @ReactProp(name = "meetOrSlice") - @Override - public void setMeetOrSlice(SvgView node, int meetOrSlice) { - node.setMeetOrSlice(meetOrSlice); - } - - @ReactProp(name = ViewProps.POINTER_EVENTS) - public void setPointerEvents(SvgView view, @Nullable String pointerEventsStr) { - try { - Class superclass = view.getClass().getSuperclass(); - if (superclass != null) { - Method method = superclass.getDeclaredMethod("setPointerEvents", PointerEvents.class); - method.setAccessible(true); - method.invoke( - view, PointerEvents.valueOf(pointerEventsStr.toUpperCase(Locale.US).replace("-", "_"))); - } - } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { - e.printStackTrace(); - } - } - - @Override - public void setHasTVPreferredFocus(SvgView view, boolean value) { - super.setTVPreferredFocus(view, value); - } - - @Override - public void setBorderTopEndRadius(SvgView view, float value) { - super.setBorderRadius(view, 6, value); - } - - @Override - public void setBorderBottomStartRadius(SvgView view, float value) { - super.setBorderRadius(view, 7, value); - } - - @Override - public void setBorderBottomColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 4, value); - } - - @Override - public void setNextFocusDown(SvgView view, int value) { - super.nextFocusDown(view, value); - } - - @Override - public void setBorderRightColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 2, value); - } - - @Override - public void setNextFocusRight(SvgView view, int value) { - super.nextFocusRight(view, value); - } - - @Override - public void setBorderLeftColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 1, value); - } - - @Override - public void setBorderColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 0, value); - } - - @Override - public void setRemoveClippedSubviews(SvgView view, boolean value) { - super.setRemoveClippedSubviews(view, value); - } - - @Override - public void setNextFocusForward(SvgView view, int value) { - super.nextFocusForward(view, value); - } - - @Override - public void setNextFocusUp(SvgView view, int value) { - super.nextFocusUp(view, value); - } - - @Override - public void setAccessible(SvgView view, boolean value) { - super.setAccessible(view, value); - } - - @Override - public void setBorderStartColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 5, value); - } - - @Override - public void setBorderBottomEndRadius(SvgView view, float value) { - super.setBorderRadius(view, 8, value); - } - - @Override - public void setBorderEndColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 6, value); - } - - @Override - public void setFocusable(SvgView view, boolean value) { - super.setFocusable(view, value); - } - - @Override - public void setNativeBackgroundAndroid(SvgView view, @Nullable ReadableMap value) { - super.setNativeBackground(view, value); - } - - @Override - public void setBorderTopStartRadius(SvgView view, float value) { - super.setBorderRadius(view, 5, value); - } - - @Override - public void setNativeForegroundAndroid(SvgView view, @Nullable ReadableMap value) { - super.setNativeForeground(view, value); - } - - @Override - public void setBackfaceVisibility(SvgView view, @Nullable String value) { - super.setBackfaceVisibility(view, value); - } - - @Override - public void setBorderStyle(SvgView view, @Nullable String value) { - super.setBorderStyle(view, value); - } - - @Override - public void setNeedsOffscreenAlphaCompositing(SvgView view, boolean value) { - super.setNeedsOffscreenAlphaCompositing(view, value); - } - - @Override - public void setHitSlop(SvgView view, Dynamic hitSlop) { - // we don't call super here since its signature changed in RN 0.69 and we want backwards - // compatibility - switch (hitSlop.getType()) { - case Map: - ReadableMap hitSlopMap = hitSlop.asMap(); - view.setHitSlopRect( - new Rect( - hitSlopMap.hasKey("left") - ? (int) PixelUtil.toPixelFromDIP(hitSlopMap.getDouble("left")) - : 0, - hitSlopMap.hasKey("top") - ? (int) PixelUtil.toPixelFromDIP(hitSlopMap.getDouble("top")) - : 0, - hitSlopMap.hasKey("right") - ? (int) PixelUtil.toPixelFromDIP(hitSlopMap.getDouble("right")) - : 0, - hitSlopMap.hasKey("bottom") - ? (int) PixelUtil.toPixelFromDIP(hitSlopMap.getDouble("bottom")) - : 0)); - break; - case Number: - int hitSlopValue = (int) PixelUtil.toPixelFromDIP(hitSlop.asDouble()); - view.setHitSlopRect(new Rect(hitSlopValue, hitSlopValue, hitSlopValue, hitSlopValue)); - break; - default: - FLog.w(ReactConstants.TAG, "Invalid type for 'hitSlop' value " + hitSlop.getType()); - /* falls through */ - case Null: - view.setHitSlopRect(null); - break; - } - } - - @Override - public void setBorderTopColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 3, value); - } - - @Override - public void setNextFocusLeft(SvgView view, int value) { - super.nextFocusLeft(view, value); - } - - @Override - public void setBorderBlockColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 9, value); - } - - @Override - public void setBorderBlockEndColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 10, value); - } - - @Override - public void setBorderBlockStartColor(SvgView view, @Nullable Integer value) { - super.setBorderColor(view, 11, value); - } - - @Override - public void setBorderRadius(SvgView view, double value) { - super.setBorderRadius(view, 0, (float) value); - } - - @Override - public void setBorderTopLeftRadius(SvgView view, double value) { - super.setBorderRadius(view, 1, (float) value); - } - - @Override - public void setBorderTopRightRadius(SvgView view, double value) { - super.setBorderRadius(view, 2, (float) value); - } - - @Override - public void setBorderBottomRightRadius(SvgView view, double value) { - super.setBorderRadius(view, 3, (float) value); - } - - @Override - public void setBorderBottomLeftRadius(SvgView view, double value) { - super.setBorderRadius(view, 4, (float) value); - } - - @Override - public void setBorderEndEndRadius(SvgView view, double value) { - super.setBorderRadius(view, 9, (float) value); - } - - @Override - public void setBorderEndStartRadius(SvgView view, double value) { - super.setBorderRadius(view, 10, (float) value); - } - - @Override - public void setBorderStartEndRadius(SvgView view, double value) { - super.setBorderRadius(view, 11, (float) value); - } - - @Override - public void setBorderStartStartRadius(SvgView view, double value) { - super.setBorderRadius(view, 12, (float) value); - } -} diff --git a/android/src/main/java/com/horcrux/svg/CustomFilter.java b/android/src/main/java/com/horcrux/svg/CustomFilter.java new file mode 100644 index 000000000..44b9e7a91 --- /dev/null +++ b/android/src/main/java/com/horcrux/svg/CustomFilter.java @@ -0,0 +1,61 @@ +package com.horcrux.svg; + +import android.graphics.Bitmap; + +interface CustomFilterFunction { + float[] execute(float[] src, float[] dst); +} + +public class CustomFilter { + public static Bitmap apply(Bitmap srcBmp, Bitmap dstBmp, CustomFilterFunction func) { + int width = srcBmp.getWidth(); + int height = srcBmp.getHeight(); + int[] srcPixels = new int[width * height]; + int[] dstPixels = new int[width * height]; + int[] resPixels = new int[width * height]; + int srcArgb = 0; + float[] src = new float[] {0, 0, 0, 0}; + int dstArgb = 0; + float[] dst = new float[] {0, 0, 0, 0}; + + try { + srcBmp.getPixels(srcPixels, 0, width, 0, 0, width, height); + dstBmp.getPixels(dstPixels, 0, width, 0, 0, width, height); + } catch (IllegalArgumentException | ArrayIndexOutOfBoundsException ignored) { + } + + for (int y = 0; y < height; y++) { + for (int x = 0; x < width; x++) { + srcArgb = srcPixels[y * width + x]; + src[0] = ((srcArgb >> 24) & 0xff) / 255f; + src[1] = ((srcArgb >> 16) & 0xff) / 255f; + src[2] = ((srcArgb >> 8) & 0xff) / 255f; + src[3] = (srcArgb & 0xff) / 255f; + + dstArgb = dstPixels[y * width + x]; + dst[0] = ((dstArgb >> 24) & 0xff) / 255f; + dst[1] = ((dstArgb >> 16) & 0xff) / 255f; + dst[2] = ((dstArgb >> 8) & 0xff) / 255f; + dst[3] = (dstArgb & 0xff) / 255f; + + resPixels[y * width + x] = normalizeFromFloats(func.execute(src, dst)); + } + } + + return Bitmap.createBitmap(resPixels, width, height, Bitmap.Config.ARGB_8888); + } + + public static int normalizeFromFloat(float c) { + return Math.min(255, Math.max(0, Math.round(c * 255))); + } + + public static int normalizeFromFloats(float[] res) { + if (res.length < 4 || normalizeFromFloat(res[0]) <= 0) { + return 0; + } + return (normalizeFromFloat(res[0]) << 24) + | (normalizeFromFloat(res[1] / res[0]) << 16) + | (normalizeFromFloat(res[2] / res[0]) << 8) + | normalizeFromFloat(res[3] / res[0]); + } +} diff --git a/android/src/main/java/com/horcrux/svg/FeBlendView.java b/android/src/main/java/com/horcrux/svg/FeBlendView.java new file mode 100644 index 000000000..636d0f4e4 --- /dev/null +++ b/android/src/main/java/com/horcrux/svg/FeBlendView.java @@ -0,0 +1,92 @@ +package com.horcrux.svg; + +import android.annotation.SuppressLint; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import com.facebook.react.bridge.ReactContext; +import java.util.HashMap; + +@SuppressLint("ViewConstructor") +class FeBlendView extends FilterPrimitiveView { + String mIn1; + String mIn2; + FilterProperties.FeBlendMode mMode; + + public FeBlendView(ReactContext reactContext) { + super(reactContext); + super.mFilterSubregion.mX = new SVGLength(0); + super.mFilterSubregion.mY = new SVGLength(0); + super.mFilterSubregion.mW = new SVGLength("100%"); + super.mFilterSubregion.mH = new SVGLength("100%"); + } + + public void setIn1(String in1) { + this.mIn1 = in1; + invalidate(); + } + + public void setIn2(String in2) { + this.mIn2 = in2; + invalidate(); + } + + public void setMode(String mode) { + this.mMode = FilterProperties.FeBlendMode.getEnum(mode); + invalidate(); + } + + @Override + public Bitmap applyFilter(HashMap resultsMap, Bitmap prevResult) { + Bitmap in1 = getSource(resultsMap, prevResult, this.mIn1); + Bitmap in2 = getSource(resultsMap, prevResult, this.mIn2); + + if (this.mMode == FilterProperties.FeBlendMode.MULTIPLY) { + CustomFilterFunction multiply = + (src, dst) -> { + float[] res = new float[4]; + res[0] = 1f - (1f - src[0]) * (1f - dst[0]); + res[1] = + src[1] * src[0] * (1f - dst[0]) + + dst[1] * dst[0] * (1f - src[0]) + + src[1] * src[0] * dst[1] * dst[0]; + res[2] = + src[2] * src[0] * (1f - dst[0]) + + dst[2] * dst[0] * (1f - src[0]) + + src[2] * src[0] * dst[2] * dst[0]; + res[3] = + src[3] * src[0] * (1f - dst[0]) + + dst[3] * dst[0] * (1f - src[0]) + + src[3] * src[0] * dst[3] * dst[0]; + return res; + }; + return CustomFilter.apply(in1, in2, multiply); + } + + Bitmap result = Bitmap.createBitmap(in1.getWidth(), in1.getHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(result); + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + canvas.drawBitmap(in1, 0, 0, paint); + + switch (this.mMode) { + case NORMAL -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER)); + } + case SCREEN -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SCREEN)); + } + case LIGHTEN -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.LIGHTEN)); + } + case DARKEN -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN)); + } + case MULTIPLY -> {} + } + canvas.drawBitmap(in2, 0, 0, paint); + + return result; + } +} diff --git a/android/src/main/java/com/horcrux/svg/FeCompositeView.java b/android/src/main/java/com/horcrux/svg/FeCompositeView.java new file mode 100644 index 000000000..987822f48 --- /dev/null +++ b/android/src/main/java/com/horcrux/svg/FeCompositeView.java @@ -0,0 +1,133 @@ +package com.horcrux.svg; + +import android.annotation.SuppressLint; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffXfermode; +import com.facebook.react.bridge.ReactContext; +import java.util.HashMap; + +@SuppressLint("ViewConstructor") +class FeCompositeView extends FilterPrimitiveView { + String mIn1; + String mIn2; + float mK1; + float mK2; + float mK3; + float mK4; + FilterProperties.FeCompositeOperator mOperator; + + public FeCompositeView(ReactContext reactContext) { + super(reactContext); + } + + public void setIn1(String in1) { + this.mIn1 = in1; + invalidate(); + } + + public void setIn2(String in2) { + this.mIn2 = in2; + invalidate(); + } + + public void setK1(Float value) { + this.mK1 = value; + invalidate(); + } + + public void setK2(Float value) { + this.mK2 = value; + invalidate(); + } + + public void setK3(Float value) { + this.mK3 = value; + invalidate(); + } + + public void setK4(Float value) { + this.mK4 = value; + invalidate(); + } + + public void setOperator(String operator) { + this.mOperator = FilterProperties.FeCompositeOperator.getEnum(operator); + invalidate(); + } + + @Override + public Bitmap applyFilter(HashMap resultsMap, Bitmap prevResult) { + Bitmap in1 = getSource(resultsMap, prevResult, this.mIn1); + Bitmap in2 = getSource(resultsMap, prevResult, this.mIn2); + Bitmap result = Bitmap.createBitmap(in1.getWidth(), in1.getHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(result); + Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); + canvas.drawBitmap(in1, 0, 0, paint); + + switch (this.mOperator) { + case OVER -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER)); + } + case IN -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN)); + } + case OUT -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT)); + } + case ATOP -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP)); + } + case XOR -> { + paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.XOR)); + } + case ARITHMETIC -> { + // result = k1*i1*i2 + k2*i1 + k3*i2 + k4 + int nPixels = result.getWidth() * result.getHeight(); + int[] pixels1 = new int[nPixels]; + int[] pixels2 = new int[nPixels]; + result.getPixels( + pixels1, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight()); + in2.getPixels(pixels2, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight()); + + for (int i = 0; i < nPixels; i++) { + int color1 = pixels1[i]; + int color2 = pixels2[i]; + + int r1 = (color1 >> 16) & 0xFF; + int g1 = (color1 >> 8) & 0xFF; + int b1 = color1 & 0xFF; + int a1 = (color1 >>> 24); + int r2 = (color2 >> 16) & 0xFF; + int g2 = (color2 >> 8) & 0xFF; + int b2 = color2 & 0xFF; + int a2 = (color2 >>> 24); + + int rResult = (int) (mK1 * r1 * r2 + mK2 * r1 + mK3 * r2 + mK4); + int gResult = (int) (mK1 * g1 * g2 + mK2 * g1 + mK3 * g2 + mK4); + int bResult = (int) (mK1 * b1 * b2 + mK2 * b1 + mK3 * b2 + mK4); + int aResult = (int) (mK1 * a1 * a2 + mK2 * a1 + mK3 * a2 + mK4); + + rResult = Math.min(255, Math.max(0, rResult)); + gResult = Math.min(255, Math.max(0, gResult)); + bResult = Math.min(255, Math.max(0, bResult)); + aResult = Math.min(255, Math.max(0, aResult)); + + int pixel = (aResult << 24) | (rResult << 16) | (gResult << 8) | bResult; + pixels1[i] = pixel; + } + + result.setPixels( + pixels1, 0, result.getWidth(), 0, 0, result.getWidth(), result.getHeight()); + } + } + + if (this.mOperator != FilterProperties.FeCompositeOperator.ARITHMETIC) { + canvas.drawBitmap(in2, 0, 0, paint); + } + + return result; + } +} diff --git a/android/src/main/java/com/horcrux/svg/FeFloodView.java b/android/src/main/java/com/horcrux/svg/FeFloodView.java new file mode 100644 index 000000000..b6d0f6df8 --- /dev/null +++ b/android/src/main/java/com/horcrux/svg/FeFloodView.java @@ -0,0 +1,130 @@ +package com.horcrux.svg; + +import android.annotation.SuppressLint; +import android.graphics.Bitmap; +import android.graphics.Canvas; +import android.graphics.Paint; +import com.facebook.react.bridge.ColorPropConverter; +import com.facebook.react.bridge.Dynamic; +import com.facebook.react.bridge.JavaOnlyArray; +import com.facebook.react.bridge.ReactContext; +import com.facebook.react.bridge.ReadableArray; +import com.facebook.react.bridge.ReadableMap; +import com.facebook.react.bridge.ReadableType; +import java.util.HashMap; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import javax.annotation.Nullable; + +@SuppressLint("ViewConstructor") +class FeFloodView extends FilterPrimitiveView { + private static final Pattern regex = Pattern.compile("[0-9.-]+"); + + public @Nullable ReadableArray floodColor; + public float floodOpacity = 1; + + public FeFloodView(ReactContext reactContext) { + super(reactContext); + } + + public void setFloodColor(@Nullable Dynamic color) { + if (color == null || color.isNull()) { + floodColor = null; + invalidate(); + return; + } + + ReadableType strokeType = color.getType(); + if (strokeType.equals(ReadableType.Map)) { + ReadableMap colorMap = color.asMap(); + setFloodColor(colorMap); + return; + } + + // This code will probably never be reached with current changes + ReadableType type = color.getType(); + if (type.equals(ReadableType.Number)) { + floodColor = JavaOnlyArray.of(0, color.asInt()); + } else if (type.equals(ReadableType.Array)) { + floodColor = color.asArray(); + } else { + JavaOnlyArray arr = new JavaOnlyArray(); + arr.pushInt(0); + Matcher m = regex.matcher(color.asString()); + int i = 0; + while (m.find()) { + double parsed = Double.parseDouble(m.group()); + arr.pushDouble(i++ < 3 ? parsed / 255 : parsed); + } + floodColor = arr; + } + invalidate(); + } + + public void setFloodColor(@Nullable ReadableMap color) { + if (color == null) { + this.floodColor = null; + invalidate(); + return; + } + int type = color.getInt("type"); + if (type == 0) { + ReadableType payloadType = color.getType("payload"); + if (payloadType.equals(ReadableType.Number)) { + this.floodColor = JavaOnlyArray.of(0, color.getInt("payload")); + } else if (payloadType.equals(ReadableType.Map)) { + this.floodColor = JavaOnlyArray.of(0, color.getMap("payload")); + } + } else if (type == 1) { + this.floodColor = JavaOnlyArray.of(1, color.getString("brushRef")); + } else { + this.floodColor = JavaOnlyArray.of(type); + } + invalidate(); + } + + public void setFloodOpacity(float opacity) { + this.floodOpacity = opacity; + invalidate(); + } + + @Override + public Bitmap applyFilter(HashMap resultsMap, Bitmap prevResult) { + Bitmap floodBitmap = + Bitmap.createBitmap(prevResult.getWidth(), prevResult.getHeight(), Bitmap.Config.ARGB_8888); + Canvas floodCanvas = new Canvas(floodBitmap); + Paint paint = new Paint(); + paint.setFlags(Paint.ANTI_ALIAS_FLAG | Paint.SUBPIXEL_TEXT_FLAG); + paint.setStyle(Paint.Style.FILL); + this.setupPaint(paint, this.floodOpacity, this.floodColor); + floodCanvas.drawPaint(paint); + return floodBitmap; + } + + private void setupPaint(Paint paint, float opacity, @Nullable ReadableArray colors) { + int colorType = colors.getInt(0); + switch (colorType) { + case 0: + if (colors.size() == 2) { + int color; + if (colors.getType(1) == ReadableType.Map) { + color = ColorPropConverter.getColor(colors.getMap(1), getContext()); + } else { + color = colors.getInt(1); + } + int alpha = color >>> 24; + int combined = Math.round((float) alpha * opacity); + paint.setColor(combined << 24 | (color & 0x00ffffff)); + } else { + // solid color + paint.setARGB( + (int) (colors.size() > 4 ? colors.getDouble(4) * opacity * 255 : opacity * 255), + (int) (colors.getDouble(1) * 255), + (int) (colors.getDouble(2) * 255), + (int) (colors.getDouble(3) * 255)); + } + break; + // TODO: handle currentColor + } + } +} diff --git a/android/src/main/java/com/horcrux/svg/FeOffsetView.java b/android/src/main/java/com/horcrux/svg/FeOffsetView.java index 8dac0a37b..5e01b3859 100644 --- a/android/src/main/java/com/horcrux/svg/FeOffsetView.java +++ b/android/src/main/java/com/horcrux/svg/FeOffsetView.java @@ -44,8 +44,10 @@ public Bitmap applyFilter(HashMap resultsMap, Bitmap prevResult) float dy = this.mDy != null ? (float) this.relativeOnHeight(this.mDy) : 0; RectF frame = new RectF(0, 0, dx, dy); this.getSvgView().getCtm().mapRect(frame); + dx = frame.left < 0 ? frame.left : frame.width(); + dy = frame.top < 0 ? frame.top : frame.height(); - canvas.drawBitmap(source, frame.width(), frame.height(), null); + canvas.drawBitmap(source, dx, dy, null); return result; } diff --git a/android/src/main/java/com/horcrux/svg/FilterPrimitiveView.java b/android/src/main/java/com/horcrux/svg/FilterPrimitiveView.java index e4985e8a0..139ab44e0 100644 --- a/android/src/main/java/com/horcrux/svg/FilterPrimitiveView.java +++ b/android/src/main/java/com/horcrux/svg/FilterPrimitiveView.java @@ -9,30 +9,30 @@ @SuppressLint("ViewConstructor") class FilterPrimitiveView extends DefinitionView { private String mResult; - public final FilterRegion mFilterRegion; + public final FilterRegion mFilterSubregion; public FilterPrimitiveView(ReactContext reactContext) { super(reactContext); - mFilterRegion = new FilterRegion(); + mFilterSubregion = new FilterRegion(); } public void setX(Dynamic x) { - mFilterRegion.setX(x); + mFilterSubregion.setX(x); invalidate(); } public void setY(Dynamic y) { - mFilterRegion.setY(y); + mFilterSubregion.setY(y); invalidate(); } public void setWidth(Dynamic width) { - mFilterRegion.setWidth(width); + mFilterSubregion.setWidth(width); invalidate(); } public void setHeight(Dynamic height) { - mFilterRegion.setHeight(height); + mFilterSubregion.setHeight(height); invalidate(); } diff --git a/android/src/main/java/com/horcrux/svg/FilterProperties.java b/android/src/main/java/com/horcrux/svg/FilterProperties.java index 73d3b647b..fbd17c059 100644 --- a/android/src/main/java/com/horcrux/svg/FilterProperties.java +++ b/android/src/main/java/com/horcrux/svg/FilterProperties.java @@ -73,6 +73,43 @@ public String toString() { } } + enum FeBlendMode { + UNKNOWN("unknown"), + NORMAL("normal"), + MULTIPLY("multiply"), + SCREEN("screen"), + DARKEN("darken"), + LIGHTEN("lighten"), + ; + + private final String mode; + + FeBlendMode(String mode) { + this.mode = mode; + } + + static FeBlendMode getEnum(String strVal) { + if (!typeToEnum.containsKey(strVal)) { + throw new IllegalArgumentException("Unknown String Value: " + strVal); + } + return typeToEnum.get(strVal); + } + + private static final Map typeToEnum = new HashMap<>(); + + static { + for (final FeBlendMode en : FeBlendMode.values()) { + typeToEnum.put(en.mode, en); + } + } + + @Nonnull + @Override + public String toString() { + return mode; + } + } + enum FeColorMatrixType { MATRIX("matrix"), SATURATE("saturate"), @@ -107,4 +144,41 @@ public String toString() { return type; } } + + enum FeCompositeOperator { + OVER("over"), + IN("in"), + OUT("out"), + ATOP("atop"), + XOR("xor"), + ARITHMETIC("arithmetic"), + ; + + private final String type; + + FeCompositeOperator(String type) { + this.type = type; + } + + static FeCompositeOperator getEnum(String strVal) { + if (!typeToEnum.containsKey(strVal)) { + throw new IllegalArgumentException("Unknown String Value: " + strVal); + } + return typeToEnum.get(strVal); + } + + private static final Map typeToEnum = new HashMap<>(); + + static { + for (final FeCompositeOperator en : FeCompositeOperator.values()) { + typeToEnum.put(en.type, en); + } + } + + @Nonnull + @Override + public String toString() { + return type; + } + } } diff --git a/android/src/main/java/com/horcrux/svg/FilterRegion.java b/android/src/main/java/com/horcrux/svg/FilterRegion.java index 7c59c9ccb..6b26bc812 100644 --- a/android/src/main/java/com/horcrux/svg/FilterRegion.java +++ b/android/src/main/java/com/horcrux/svg/FilterRegion.java @@ -26,24 +26,32 @@ public void setHeight(Dynamic height) { mH = SVGLength.from(height); } - public Rect getCropRect(VirtualView view, FilterProperties.Units units, RectF renderableBounds) { + private double getRelativeOrDefault( + VirtualView view, SVGLength value, float relativeOn, double defaultValue) { + if (value == null || value.unit == SVGLength.UnitType.UNKNOWN) { + return defaultValue; + } + return view.relativeOn(value, relativeOn); + } + + public Rect getCropRect(VirtualView view, FilterProperties.Units units, RectF bounds) { double x, y, width, height; - if (units == FilterProperties.Units.USER_SPACE_ON_USE) { - x = view.relativeOn(this.mX, view.getSvgView().getCanvasWidth()); - y = view.relativeOn(this.mY, view.getSvgView().getCanvasHeight()); - width = view.relativeOn(this.mW, view.getSvgView().getCanvasWidth()); - height = view.relativeOn(this.mH, view.getSvgView().getCanvasHeight()); - return new Rect((int) x, (int) y, (int) (x + width), (int) (y + height)); - } else { // FilterProperties.Units.OBJECT_BOUNDING_BOX - x = view.relativeOnFraction(this.mX, renderableBounds.width()); - y = view.relativeOnFraction(this.mY, renderableBounds.height()); - width = view.relativeOnFraction(this.mW, renderableBounds.width()); - height = view.relativeOnFraction(this.mH, renderableBounds.height()); - return new Rect( - (int) (renderableBounds.left + x), - (int) (renderableBounds.top + y), - (int) (renderableBounds.left + x + width), - (int) (renderableBounds.top + y + height)); + if (bounds == null) { + return new Rect(0, 0, 0, 0); + } + if (units == FilterProperties.Units.OBJECT_BOUNDING_BOX) { + x = bounds.left + view.relativeOnFraction(this.mX, bounds.width()); + y = bounds.top + view.relativeOnFraction(this.mY, bounds.height()); + width = view.relativeOnFraction(this.mW, bounds.width()); + height = view.relativeOnFraction(this.mH, bounds.height()); + } else { // FilterProperties.Units.USER_SPACE_ON_USE + float canvasWidth = view.getSvgView().getCanvasWidth(); + float canvasHeight = view.getSvgView().getCanvasHeight(); + x = getRelativeOrDefault(view, mX, canvasWidth, bounds.left); + y = getRelativeOrDefault(view, mY, canvasHeight, bounds.top); + width = getRelativeOrDefault(view, mW, canvasWidth, bounds.width()); + height = getRelativeOrDefault(view, mH, canvasHeight, bounds.height()); } + return new Rect((int) x, (int) y, (int) (x + width), (int) (y + height)); } } diff --git a/android/src/main/java/com/horcrux/svg/FilterView.java b/android/src/main/java/com/horcrux/svg/FilterView.java index cb85a5c70..9f74286a0 100644 --- a/android/src/main/java/com/horcrux/svg/FilterView.java +++ b/android/src/main/java/com/horcrux/svg/FilterView.java @@ -55,6 +55,10 @@ public void setPrimitiveUnits(String primitiveUnits) { invalidate(); } + public FilterRegion getFilterRegion() { + return mFilterRegion; + } + @Override void saveDefinition() { if (mName != null) { @@ -75,6 +79,8 @@ public Bitmap applyFilter(Bitmap source, Bitmap background, RectF renderableBoun Bitmap res = source; Bitmap resultBitmap = Bitmap.createBitmap(res.getWidth(), res.getHeight(), res.getConfig()); Canvas canvas = new Canvas(resultBitmap); + Rect filterRegionRect = + this.mFilterRegion.getCropRect(this, this.mFilterUnits, renderableBounds); Rect cropRect; for (int i = 0; i < getChildCount(); i++) { @@ -83,8 +89,12 @@ public Bitmap applyFilter(Bitmap source, Bitmap background, RectF renderableBoun FilterPrimitiveView currentFilter = (FilterPrimitiveView) node; resultBitmap.eraseColor(Color.TRANSPARENT); cropRect = - currentFilter.mFilterRegion.getCropRect( - currentFilter, this.mPrimitiveUnits, renderableBounds); + currentFilter.mFilterSubregion.getCropRect( + currentFilter, + this.mPrimitiveUnits, + this.mPrimitiveUnits == FilterProperties.Units.USER_SPACE_ON_USE + ? new RectF(filterRegionRect) + : renderableBounds); canvas.drawBitmap(currentFilter.applyFilter(mResultsMap, res), cropRect, cropRect, null); res = resultBitmap.copy(Bitmap.Config.ARGB_8888, true); String resultName = currentFilter.getResult(); @@ -98,8 +108,7 @@ public Bitmap applyFilter(Bitmap source, Bitmap background, RectF renderableBoun // crop Bitmap to filter coordinates resultBitmap.eraseColor(Color.TRANSPARENT); - cropRect = this.mFilterRegion.getCropRect(this, this.mFilterUnits, renderableBounds); - canvas.drawBitmap(res, cropRect, cropRect, null); + canvas.drawBitmap(res, filterRegionRect, filterRegionRect, null); return resultBitmap; } } diff --git a/android/src/main/java/com/horcrux/svg/RenderableView.java b/android/src/main/java/com/horcrux/svg/RenderableView.java index cb5750e75..a0b19ea9a 100644 --- a/android/src/main/java/com/horcrux/svg/RenderableView.java +++ b/android/src/main/java/com/horcrux/svg/RenderableView.java @@ -96,6 +96,7 @@ public abstract class RenderableView extends VirtualView implements ReactHitSlop private @Nullable ArrayList mOriginProperties; private @Nullable ArrayList mPropList; private @Nullable ArrayList mAttributeList; + private @Nullable RenderableView mCaller; @Nullable String mFilter; @@ -134,6 +135,9 @@ int getCurrentColor() { if (this.mCurrentColor != 0) { return this.mCurrentColor; } + if (this.mCaller != null) { + return this.mCaller.getCurrentColor(); + } ViewParent parent = this.getParent(); if (parent instanceof VirtualView) { return ((RenderableView) parent).getCurrentColor(); @@ -756,6 +760,7 @@ private ArrayList getAttributeList() { } void mergeProperties(RenderableView target) { + mCaller = target; ArrayList targetAttributeList = target.getAttributeList(); if (targetAttributeList == null || targetAttributeList.size() == 0) { @@ -798,6 +803,7 @@ void resetProperties() { mLastMergedList = null; mOriginProperties = null; mAttributeList = mPropList; + mCaller = null; } } diff --git a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java index 75e95b43d..740f30955 100644 --- a/android/src/main/java/com/horcrux/svg/RenderableViewManager.java +++ b/android/src/main/java/com/horcrux/svg/RenderableViewManager.java @@ -103,8 +103,14 @@ import com.facebook.react.viewmanagers.RNSVGDefsManagerInterface; import com.facebook.react.viewmanagers.RNSVGEllipseManagerDelegate; import com.facebook.react.viewmanagers.RNSVGEllipseManagerInterface; +import com.facebook.react.viewmanagers.RNSVGFeBlendManagerDelegate; +import com.facebook.react.viewmanagers.RNSVGFeBlendManagerInterface; import com.facebook.react.viewmanagers.RNSVGFeColorMatrixManagerDelegate; import com.facebook.react.viewmanagers.RNSVGFeColorMatrixManagerInterface; +import com.facebook.react.viewmanagers.RNSVGFeCompositeManagerDelegate; +import com.facebook.react.viewmanagers.RNSVGFeCompositeManagerInterface; +import com.facebook.react.viewmanagers.RNSVGFeFloodManagerDelegate; +import com.facebook.react.viewmanagers.RNSVGFeFloodManagerInterface; import com.facebook.react.viewmanagers.RNSVGFeGaussianBlurManagerDelegate; import com.facebook.react.viewmanagers.RNSVGFeGaussianBlurManagerInterface; import com.facebook.react.viewmanagers.RNSVGFeMergeManagerDelegate; @@ -589,7 +595,10 @@ protected enum SVGClass { RNSVGPattern, RNSVGMask, RNSVGFilter, + RNSVGFeBlend, RNSVGFeColorMatrix, + RNSVGFeComposite, + RNSVGFeFlood, RNSVGFeGaussianBlur, RNSVGFeMerge, RNSVGFeOffset, @@ -639,8 +648,14 @@ protected VirtualView createViewInstance(@Nonnull ThemedReactContext reactContex return new MaskView(reactContext); case RNSVGFilter: return new FilterView(reactContext); + case RNSVGFeBlend: + return new FeBlendView(reactContext); case RNSVGFeColorMatrix: return new FeColorMatrixView(reactContext); + case RNSVGFeComposite: + return new FeCompositeView(reactContext); + case RNSVGFeFlood: + return new FeFloodView(reactContext); case RNSVGFeGaussianBlur: return new FeGaussianBlurView(reactContext); case RNSVGFeMerge: @@ -1580,6 +1595,31 @@ public void setResult(T node, String result) { } } + static class FeBlendManager extends FilterPrimitiveManager + implements RNSVGFeBlendManagerInterface { + FeBlendManager() { + super(SVGClass.RNSVGFeBlend); + mDelegate = new RNSVGFeBlendManagerDelegate(this); + } + + public static final String REACT_CLASS = "RNSVGFeBlend"; + + @ReactProp(name = "in1") + public void setIn1(FeBlendView node, String in1) { + node.setIn1(in1); + } + + @ReactProp(name = "in2") + public void setIn2(FeBlendView node, String in2) { + node.setIn2(in2); + } + + @ReactProp(name = "mode") + public void setMode(FeBlendView node, String mode) { + node.setMode(mode); + } + } + static class FeColorMatrixManager extends FilterPrimitiveManager implements RNSVGFeColorMatrixManagerInterface { FeColorMatrixManager() { @@ -1605,6 +1645,75 @@ public void setValues(FeColorMatrixView node, @Nullable ReadableArray values) { } } + static class FeCompositeManager extends FilterPrimitiveManager + implements RNSVGFeCompositeManagerInterface { + FeCompositeManager() { + super(SVGClass.RNSVGFeComposite); + mDelegate = new RNSVGFeCompositeManagerDelegate(this); + } + + public static final String REACT_CLASS = "RNSVGFeComposite"; + + @ReactProp(name = "in1") + public void setIn1(FeCompositeView node, String in1) { + node.setIn1(in1); + } + + @ReactProp(name = "in2") + public void setIn2(FeCompositeView node, String in2) { + node.setIn2(in2); + } + + @ReactProp(name = "operator1") + public void setOperator1(FeCompositeView node, String operator) { + node.setOperator(operator); + } + + @ReactProp(name = "k1") + public void setK1(FeCompositeView node, float value) { + node.setK1(value); + } + + @ReactProp(name = "k2") + public void setK2(FeCompositeView node, float value) { + node.setK2(value); + } + + @ReactProp(name = "k3") + public void setK3(FeCompositeView node, float value) { + node.setK3(value); + } + + @ReactProp(name = "k4") + public void setK4(FeCompositeView node, float value) { + node.setK4(value); + } + } + + static class FeFloodManager extends FilterPrimitiveManager + implements RNSVGFeFloodManagerInterface { + FeFloodManager() { + super(SVGClass.RNSVGFeFlood); + mDelegate = new RNSVGFeFloodManagerDelegate(this); + } + + public static final String REACT_CLASS = "RNSVGFeFlood"; + + @ReactProp(name = "floodColor") + public void setFloodColor(FeFloodView node, @Nullable Dynamic strokeColors) { + node.setFloodColor(strokeColors); + } + + public void setFloodColor(FeFloodView view, @Nullable ReadableMap value) { + view.setFloodColor(value); + } + + @ReactProp(name = "floodOpacity", defaultFloat = 1f) + public void setFloodOpacity(FeFloodView node, float strokeOpacity) { + node.setFloodOpacity(strokeOpacity); + } + } + static class FeGaussianBlurManager extends FilterPrimitiveManager implements RNSVGFeGaussianBlurManagerInterface { FeGaussianBlurManager() { diff --git a/android/src/main/java/com/horcrux/svg/SvgPackage.java b/android/src/main/java/com/horcrux/svg/SvgPackage.java index 21cfa39eb..bc116e13d 100644 --- a/android/src/main/java/com/horcrux/svg/SvgPackage.java +++ b/android/src/main/java/com/horcrux/svg/SvgPackage.java @@ -214,6 +214,15 @@ public NativeModule get() { return new FilterManager(); } })); + specs.put( + FeBlendManager.REACT_CLASS, + ModuleSpec.viewManagerSpec( + new Provider() { + @Override + public NativeModule get() { + return new FeBlendManager(); + } + })); specs.put( FeColorMatrixManager.REACT_CLASS, ModuleSpec.viewManagerSpec( @@ -223,6 +232,24 @@ public NativeModule get() { return new FeColorMatrixManager(); } })); + specs.put( + FeCompositeManager.REACT_CLASS, + ModuleSpec.viewManagerSpec( + new Provider() { + @Override + public NativeModule get() { + return new FeCompositeManager(); + } + })); + specs.put( + FeFloodManager.REACT_CLASS, + ModuleSpec.viewManagerSpec( + new Provider() { + @Override + public NativeModule get() { + return new FeFloodManager(); + } + })); specs.put( FeGaussianBlurManager.REACT_CLASS, ModuleSpec.viewManagerSpec( diff --git a/android/src/main/java/com/horcrux/svg/SvgView.java b/android/src/main/java/com/horcrux/svg/SvgView.java index 346873cca..f00d54c18 100644 --- a/android/src/main/java/com/horcrux/svg/SvgView.java +++ b/android/src/main/java/com/horcrux/svg/SvgView.java @@ -11,6 +11,7 @@ import android.annotation.SuppressLint; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Rect; @@ -189,7 +190,7 @@ public int reactTagForTouch(float touchX, float touchY) { final Matrix mInvViewBoxMatrix = new Matrix(); private boolean mInvertible = true; private boolean mRendered = false; - int mCurrentColor = 0; + int mCurrentColor = Color.BLACK; boolean notRendered() { return !mRendered; diff --git a/android/src/main/java/com/horcrux/svg/UseView.java b/android/src/main/java/com/horcrux/svg/UseView.java index c3227caaa..b0cf2b7cd 100644 --- a/android/src/main/java/com/horcrux/svg/UseView.java +++ b/android/src/main/java/com/horcrux/svg/UseView.java @@ -13,6 +13,7 @@ import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Path; +import android.graphics.RectF; import com.facebook.common.logging.FLog; import com.facebook.react.bridge.Dynamic; import com.facebook.react.bridge.ReactContext; @@ -86,7 +87,11 @@ void draw(Canvas canvas, Paint paint, float opacity) { template.draw(canvas, paint, opacity * mOpacity); } - this.setClientRect(template.getClientRect()); + // TODO: replace getMatrix with mCTM when it will be fixed + RectF clientRect = new RectF(); + this.getPath(canvas, paint).computeBounds(clientRect, true); + canvas.getMatrix().mapRect(clientRect); + this.setClientRect(clientRect); template.restoreCanvas(canvas, count); if (template instanceof RenderableView) { diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerDelegate.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerDelegate.java new file mode 100644 index 000000000..3708e5c51 --- /dev/null +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerDelegate.java @@ -0,0 +1,53 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.DynamicFromObject; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.BaseViewManagerInterface; + +public class RNSVGFeBlendManagerDelegate & RNSVGFeBlendManagerInterface> extends BaseViewManagerDelegate { + public RNSVGFeBlendManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case "x": + mViewManager.setX(view, new DynamicFromObject(value)); + break; + case "y": + mViewManager.setY(view, new DynamicFromObject(value)); + break; + case "width": + mViewManager.setWidth(view, new DynamicFromObject(value)); + break; + case "height": + mViewManager.setHeight(view, new DynamicFromObject(value)); + break; + case "result": + mViewManager.setResult(view, value == null ? null : (String) value); + break; + case "in1": + mViewManager.setIn1(view, value == null ? null : (String) value); + break; + case "in2": + mViewManager.setIn2(view, value == null ? null : (String) value); + break; + case "mode": + mViewManager.setMode(view, (String) value); + break; + default: + super.setProperty(view, propName, value); + } + } +} diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerInterface.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerInterface.java new file mode 100644 index 000000000..fb29eedd3 --- /dev/null +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeBlendManagerInterface.java @@ -0,0 +1,25 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.Dynamic; + +public interface RNSVGFeBlendManagerInterface { + void setX(T view, Dynamic value); + void setY(T view, Dynamic value); + void setWidth(T view, Dynamic value); + void setHeight(T view, Dynamic value); + void setResult(T view, @Nullable String value); + void setIn1(T view, @Nullable String value); + void setIn2(T view, @Nullable String value); + void setMode(T view, @Nullable String value); +} diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerDelegate.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerDelegate.java new file mode 100644 index 000000000..d1eb60be1 --- /dev/null +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerDelegate.java @@ -0,0 +1,65 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.DynamicFromObject; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.BaseViewManagerInterface; + +public class RNSVGFeCompositeManagerDelegate & RNSVGFeCompositeManagerInterface> extends BaseViewManagerDelegate { + public RNSVGFeCompositeManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case "x": + mViewManager.setX(view, new DynamicFromObject(value)); + break; + case "y": + mViewManager.setY(view, new DynamicFromObject(value)); + break; + case "width": + mViewManager.setWidth(view, new DynamicFromObject(value)); + break; + case "height": + mViewManager.setHeight(view, new DynamicFromObject(value)); + break; + case "result": + mViewManager.setResult(view, value == null ? null : (String) value); + break; + case "in1": + mViewManager.setIn1(view, value == null ? null : (String) value); + break; + case "in2": + mViewManager.setIn2(view, value == null ? null : (String) value); + break; + case "operator1": + mViewManager.setOperator1(view, (String) value); + break; + case "k1": + mViewManager.setK1(view, value == null ? 0f : ((Double) value).floatValue()); + break; + case "k2": + mViewManager.setK2(view, value == null ? 0f : ((Double) value).floatValue()); + break; + case "k3": + mViewManager.setK3(view, value == null ? 0f : ((Double) value).floatValue()); + break; + case "k4": + mViewManager.setK4(view, value == null ? 0f : ((Double) value).floatValue()); + break; + default: + super.setProperty(view, propName, value); + } + } +} diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerInterface.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerInterface.java new file mode 100644 index 000000000..95c925975 --- /dev/null +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeCompositeManagerInterface.java @@ -0,0 +1,29 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.Dynamic; + +public interface RNSVGFeCompositeManagerInterface { + void setX(T view, Dynamic value); + void setY(T view, Dynamic value); + void setWidth(T view, Dynamic value); + void setHeight(T view, Dynamic value); + void setResult(T view, @Nullable String value); + void setIn1(T view, @Nullable String value); + void setIn2(T view, @Nullable String value); + void setOperator1(T view, @Nullable String value); + void setK1(T view, float value); + void setK2(T view, float value); + void setK3(T view, float value); + void setK4(T view, float value); +} diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerDelegate.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerDelegate.java new file mode 100644 index 000000000..9c57aa21c --- /dev/null +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerDelegate.java @@ -0,0 +1,50 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaDelegate.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.DynamicFromObject; +import com.facebook.react.uimanager.BaseViewManagerDelegate; +import com.facebook.react.uimanager.BaseViewManagerInterface; + +public class RNSVGFeFloodManagerDelegate & RNSVGFeFloodManagerInterface> extends BaseViewManagerDelegate { + public RNSVGFeFloodManagerDelegate(U viewManager) { + super(viewManager); + } + @Override + public void setProperty(T view, String propName, @Nullable Object value) { + switch (propName) { + case "x": + mViewManager.setX(view, new DynamicFromObject(value)); + break; + case "y": + mViewManager.setY(view, new DynamicFromObject(value)); + break; + case "width": + mViewManager.setWidth(view, new DynamicFromObject(value)); + break; + case "height": + mViewManager.setHeight(view, new DynamicFromObject(value)); + break; + case "result": + mViewManager.setResult(view, value == null ? null : (String) value); + break; + case "floodColor": + mViewManager.setFloodColor(view, new DynamicFromObject(value)); + break; + case "floodOpacity": + mViewManager.setFloodOpacity(view, value == null ? 1f : ((Double) value).floatValue()); + break; + default: + super.setProperty(view, propName, value); + } + } +} diff --git a/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerInterface.java b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerInterface.java new file mode 100644 index 000000000..0f9fc0f5e --- /dev/null +++ b/android/src/paper/java/com/facebook/react/viewmanagers/RNSVGFeFloodManagerInterface.java @@ -0,0 +1,24 @@ +/** +* This code was generated by [react-native-codegen](https://www.npmjs.com/package/react-native-codegen). +* +* Do not edit this file as changes may cause incorrect behavior and will be lost +* once the code is regenerated. +* +* @generated by codegen project: GeneratePropsJavaInterface.js +*/ + +package com.facebook.react.viewmanagers; + +import android.view.View; +import androidx.annotation.Nullable; +import com.facebook.react.bridge.Dynamic; + +public interface RNSVGFeFloodManagerInterface { + void setX(T view, Dynamic value); + void setY(T view, Dynamic value); + void setWidth(T view, Dynamic value); + void setHeight(T view, Dynamic value); + void setResult(T view, @Nullable String value); + void setFloodColor(T view, Dynamic value); + void setFloodOpacity(T view, float value); +} diff --git a/apple/Brushes/RNSVGContextBrush.mm b/apple/Brushes/RNSVGContextBrush.mm index 874fe391a..daa92f699 100644 --- a/apple/Brushes/RNSVGContextBrush.mm +++ b/apple/Brushes/RNSVGContextBrush.mm @@ -49,7 +49,7 @@ - (BOOL)applyFillColor:(CGContextRef)context opacity:(CGFloat)opacity BOOL fillColor; if (brush.class == RNSVGBrush.class) { - CGContextSetFillColorWithColor(context, [element.tintColor CGColor]); + CGContextSetFillColorWithColor(context, [element getCurrentColor]); fillColor = YES; } else { fillColor = [brush applyFillColor:context opacity:opacity]; @@ -70,7 +70,7 @@ - (BOOL)applyStrokeColor:(CGContextRef)context opacity:(CGFloat)opacity BOOL strokeColor; if (brush.class == RNSVGBrush.class) { - CGContextSetStrokeColorWithColor(context, [element.tintColor CGColor]); + CGContextSetStrokeColorWithColor(context, [element getCurrentColor]); strokeColor = YES; } else { strokeColor = [brush applyStrokeColor:context opacity:opacity]; diff --git a/apple/Elements/RNSVGGroup.mm b/apple/Elements/RNSVGGroup.mm index df879b0aa..ee56928b5 100644 --- a/apple/Elements/RNSVGGroup.mm +++ b/apple/Elements/RNSVGGroup.mm @@ -156,6 +156,12 @@ - (void)renderGroupTo:(CGContextRef)context rect:(CGRect)rect - (void)setupGlyphContext:(CGContextRef)context { CGRect clipBounds = CGContextGetClipBoundingBox(context); +#if TARGET_OS_OSX // [macOS + RNSVGSvgView *svgView = [self svgView]; + if (svgView != nil && (clipBounds.origin.x < 0 || clipBounds.origin.y < 0)) { + clipBounds = CGRectApplyAffineTransform([svgView boundingBox], [svgView getInvViewBoxTransform]); + } +#endif // macOS] clipBounds = CGRectApplyAffineTransform(clipBounds, self.matrix); clipBounds = CGRectApplyAffineTransform(clipBounds, self.transforms); CGFloat width = CGRectGetWidth(clipBounds); diff --git a/apple/Elements/RNSVGSvgView.h b/apple/Elements/RNSVGSvgView.h index 760c1f0e4..992ad9405 100644 --- a/apple/Elements/RNSVGSvgView.h +++ b/apple/Elements/RNSVGSvgView.h @@ -19,6 +19,7 @@ @interface RNSVGSvgView : RNSVGView +@property (nonatomic, strong) RNSVGColor *color; @property (nonatomic, strong) RNSVGLength *bbWidth; @property (nonatomic, strong) RNSVGLength *bbHeight; @property (nonatomic, assign) CGFloat minX; @@ -72,4 +73,6 @@ - (CGAffineTransform)getViewBoxTransform; +- (CGAffineTransform)getInvViewBoxTransform; + @end diff --git a/apple/Elements/RNSVGSvgView.mm b/apple/Elements/RNSVGSvgView.mm index f5da0cf50..97b4b7269 100644 --- a/apple/Elements/RNSVGSvgView.mm +++ b/apple/Elements/RNSVGSvgView.mm @@ -26,7 +26,7 @@ @implementation RNSVGSvgView { NSMutableDictionary *_markers; NSMutableDictionary *_masks; NSMutableDictionary *_filters; - CGAffineTransform _invviewBoxTransform; + CGAffineTransform _invViewBoxTransform; bool rendered; } @@ -47,8 +47,6 @@ - (instancetype)initWithFrame:(CGRect)frame // This is necessary to ensure that [self setNeedsDisplay] actually triggers // a redraw when our parent transitions between hidden and visible. self.contentMode = UIViewContentModeRedraw; - // We don't want the dimming effect on tint as it's used as currentColor - self.tintAdjustmentMode = UIViewTintAdjustmentModeNormal; #endif // TARGET_OS_OSX rendered = false; #ifdef RCT_NEW_ARCH_ENABLED @@ -90,7 +88,7 @@ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const & self.align = RCTNSStringFromStringNilIfEmpty(newProps.align); self.meetOrSlice = intToRNSVGVBMOS(newProps.meetOrSlice); if (RCTUIColorFromSharedColor(newProps.color)) { - self.tintColor = RCTUIColorFromSharedColor(newProps.color); + self.color = RCTUIColorFromSharedColor(newProps.color); } [super updateProps:props oldProps:oldProps]; } @@ -120,7 +118,7 @@ - (void)prepareForRecycle _markers = nil; _masks = nil; _filters = nil; - _invviewBoxTransform = CGAffineTransformIdentity; + _invViewBoxTransform = CGAffineTransformIdentity; rendered = NO; } @@ -184,10 +182,13 @@ - (void)invalidate [self setNeedsDisplay]; } -- (void)tintColorDidChange +- (void)setColor:(RNSVGColor *)color { + if (color == _color) { + return; + } [self invalidate]; - [self clearChildCache]; + _color = color; } - (void)setMinX:(CGFloat)minX @@ -289,11 +290,11 @@ - (void)drawToContext:(CGContextRef)context withRect:(CGRect)rect if (self.align) { CGRect tRect = CGRectMake(self.minX, self.minY, self.vbWidth, self.vbHeight); _viewBoxTransform = [RNSVGViewBox getTransform:tRect eRect:rect align:self.align meetOrSlice:self.meetOrSlice]; - _invviewBoxTransform = CGAffineTransformInvert(_viewBoxTransform); + _invViewBoxTransform = CGAffineTransformInvert(_viewBoxTransform); CGContextConcatCTM(context, _viewBoxTransform); } else { _viewBoxTransform = CGAffineTransformIdentity; - _invviewBoxTransform = CGAffineTransformIdentity; + _invViewBoxTransform = CGAffineTransformIdentity; } for (RNSVGPlatformView *node in self.subviews) { if ([node isKindOfClass:[RNSVGNode class]]) { @@ -316,7 +317,11 @@ - (void)drawRect:(CGRect)rect if ([parent isKindOfClass:[RNSVGNode class]]) { return; } +#if TARGET_OS_OSX // [macOS + _boundingBox = [self bounds]; +#else // macOS] _boundingBox = rect; +#endif CGContextRef context = UIGraphicsGetCurrentContext(); [self drawToContext:context withRect:[self bounds]]; @@ -335,7 +340,7 @@ - (RNSVGPlatformView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { CGPoint transformed = point; if (self.align) { - transformed = CGPointApplyAffineTransform(transformed, _invviewBoxTransform); + transformed = CGPointApplyAffineTransform(transformed, _invViewBoxTransform); } for (RNSVGNode *node in [self.subviews reverseObjectEnumerator]) { if (![node isKindOfClass:[RNSVGNode class]]) { @@ -476,6 +481,11 @@ - (CGAffineTransform)getViewBoxTransform return _viewBoxTransform; } +- (CGAffineTransform)getInvViewBoxTransform +{ + return _invViewBoxTransform; +} + #if !RCT_NEW_ARCH_ENABLED && TARGET_OS_OSX // [macOS - (void)updateReactTransformInternal:(CATransform3D)transform { diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.appletvos.air b/apple/Filters/MetalCI/RNSVGArithmeticFilter.appletvos.air new file mode 100644 index 000000000..0f89836ee Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.appletvos.air differ diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.appletvos.metallib b/apple/Filters/MetalCI/RNSVGArithmeticFilter.appletvos.metallib new file mode 100644 index 000000000..de067b1c4 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.appletvos.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.h b/apple/Filters/MetalCI/RNSVGArithmeticFilter.h new file mode 100644 index 000000000..7c78724cc --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGArithmeticFilter.h @@ -0,0 +1,11 @@ +#import "RNSVGCustomFilter.h" + +@interface RNSVGArithmeticFilter : RNSVGCustomFilter { + CIImage *inputImage2; + NSNumber *inputK1; + NSNumber *inputK2; + NSNumber *inputK3; + NSNumber *inputK4; +} + +@end diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.iphoneos.air b/apple/Filters/MetalCI/RNSVGArithmeticFilter.iphoneos.air new file mode 100644 index 000000000..abe4386da Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.iphoneos.air differ diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.iphoneos.metallib b/apple/Filters/MetalCI/RNSVGArithmeticFilter.iphoneos.metallib new file mode 100644 index 000000000..47668d1a3 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.iphoneos.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.macosx.air b/apple/Filters/MetalCI/RNSVGArithmeticFilter.macosx.air new file mode 100644 index 000000000..15b5c064d Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.macosx.air differ diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.macosx.metallib b/apple/Filters/MetalCI/RNSVGArithmeticFilter.macosx.metallib new file mode 100644 index 000000000..ef6bbee1b Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.macosx.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.metal b/apple/Filters/MetalCI/RNSVGArithmeticFilter.metal new file mode 100644 index 000000000..0eecde749 --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGArithmeticFilter.metal @@ -0,0 +1,16 @@ +#include +using namespace metal; +#include + + +extern "C" float4 RNSVGArithmeticFilter(coreimage::sample_t in1, coreimage::sample_t in2, float k1, float k2, float k3, float k4) +{ + float4 arithmeticResult; + arithmeticResult.rgb = k1 * in1.rgb * in2.rgb + k2 * in1.rgb + k3 * in2.rgb + k4; + arithmeticResult.a = k1 * in1.a * in2.a + k2 * in1.a + k3 * in2.a + k4; + + arithmeticResult.rgb = clamp(arithmeticResult.rgb, 0.0, 1.0); + arithmeticResult.a = clamp(arithmeticResult.a, 0.0, 1.0); + + return arithmeticResult; +} diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.mm b/apple/Filters/MetalCI/RNSVGArithmeticFilter.mm new file mode 100644 index 000000000..bbc4c15da --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGArithmeticFilter.mm @@ -0,0 +1,66 @@ +#import "RNSVGArithmeticFilter.h" + +static CIColorKernel *arithmeticFilter = nil; + +@implementation RNSVGArithmeticFilter + +- (id)init +{ + if (arithmeticFilter == nil) { + arithmeticFilter = [super getWithName:@"RNSVGArithmeticFilter"]; + } + return [super init]; +} + +- (NSDictionary *)customAttributes +{ + return @{ + @"inputImage1" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"CIImage", + kCIAttributeDisplayName : @"in1", + kCIAttributeType : kCIAttributeTypeImage + }, + @"inputImage2" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"CIImage", + kCIAttributeDisplayName : @"in2", + kCIAttributeType : kCIAttributeTypeImage + }, + @"inputK1" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"NSNumber", + kCIAttributeDisplayName : @"k1", + kCIAttributeType : kCIAttributeTypeScalar + }, + @"inputK2" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"NSNumber", + kCIAttributeDisplayName : @"k2", + kCIAttributeType : kCIAttributeTypeScalar + }, + @"inputK3" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"NSNumber", + kCIAttributeDisplayName : @"k3", + kCIAttributeType : kCIAttributeTypeScalar + }, + @"inputK4" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"NSNumber", + kCIAttributeDisplayName : @"k4", + kCIAttributeType : kCIAttributeTypeScalar + }, + }; +} + +- (CIImage *)outputImage +{ + CISampler *in1 = [CISampler samplerWithImage:inputImage1]; + CISampler *in2 = [CISampler samplerWithImage:inputImage2]; + + return [arithmeticFilter applyWithExtent:inputImage1.extent + arguments:@[ in1, in2, inputK1, inputK2, inputK3, inputK4 ]]; +} + +@end diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.xros.air b/apple/Filters/MetalCI/RNSVGArithmeticFilter.xros.air new file mode 100644 index 000000000..48c39168e Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.xros.air differ diff --git a/apple/Filters/MetalCI/RNSVGArithmeticFilter.xros.metallib b/apple/Filters/MetalCI/RNSVGArithmeticFilter.xros.metallib new file mode 100644 index 000000000..461f55d20 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGArithmeticFilter.xros.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.appletvos.air b/apple/Filters/MetalCI/RNSVGCompositeXor.appletvos.air new file mode 100644 index 000000000..c43b92f81 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.appletvos.air differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.appletvos.metallib b/apple/Filters/MetalCI/RNSVGCompositeXor.appletvos.metallib new file mode 100644 index 000000000..1ef43f414 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.appletvos.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.h b/apple/Filters/MetalCI/RNSVGCompositeXor.h new file mode 100644 index 000000000..33a2fc09c --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGCompositeXor.h @@ -0,0 +1,7 @@ +#import "RNSVGCustomFilter.h" + +@interface RNSVGCompositeXor : RNSVGCustomFilter { + CIImage *inputImage2; +} + +@end diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.iphoneos.air b/apple/Filters/MetalCI/RNSVGCompositeXor.iphoneos.air new file mode 100644 index 000000000..744947f43 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.iphoneos.air differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.iphoneos.metallib b/apple/Filters/MetalCI/RNSVGCompositeXor.iphoneos.metallib new file mode 100644 index 000000000..0d0f40644 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.iphoneos.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.macosx.air b/apple/Filters/MetalCI/RNSVGCompositeXor.macosx.air new file mode 100644 index 000000000..f44e52b1a Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.macosx.air differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.macosx.metallib b/apple/Filters/MetalCI/RNSVGCompositeXor.macosx.metallib new file mode 100644 index 000000000..8819212d9 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.macosx.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.metal b/apple/Filters/MetalCI/RNSVGCompositeXor.metal new file mode 100644 index 000000000..6823054fb --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGCompositeXor.metal @@ -0,0 +1,13 @@ +#include +using namespace metal; +#include + +extern "C" float4 RNSVGCompositeXor(coreimage::sample_t in1, coreimage::sample_t in2) +{ + float4 result; + + result.rgb = in1.rgb * (1.0 - in2.a) + in2.rgb * (1.0 - in1.a); + result.a = in1.a + in2.a - 2.0 * in1.a * in2.a; + + return result; +} diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.mm b/apple/Filters/MetalCI/RNSVGCompositeXor.mm new file mode 100644 index 000000000..486d92afb --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGCompositeXor.mm @@ -0,0 +1,41 @@ +#import "RNSVGCompositeXor.h" + +static CIColorKernel *compositeXor = nil; + +@implementation RNSVGCompositeXor + +- (id)init +{ + if (compositeXor == nil) { + compositeXor = [super getWithName:@"RNSVGCompositeXor"]; + } + return [super init]; +} + +- (NSDictionary *)customAttributes +{ + return @{ + @"inputImage1" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"CIImage", + kCIAttributeDisplayName : @"in1", + kCIAttributeType : kCIAttributeTypeImage + }, + @"inputImage2" : @{ + kCIAttributeIdentity : @0, + kCIAttributeClass : @"CIImage", + kCIAttributeDisplayName : @"in2", + kCIAttributeType : kCIAttributeTypeImage + }, + }; +} + +- (CIImage *)outputImage +{ + CISampler *in1 = [CISampler samplerWithImage:inputImage1]; + CISampler *in2 = [CISampler samplerWithImage:inputImage2]; + + return [compositeXor applyWithExtent:inputImage1.extent arguments:@[ in1, in2 ]]; +} + +@end diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.xros.air b/apple/Filters/MetalCI/RNSVGCompositeXor.xros.air new file mode 100644 index 000000000..cce619766 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.xros.air differ diff --git a/apple/Filters/MetalCI/RNSVGCompositeXor.xros.metallib b/apple/Filters/MetalCI/RNSVGCompositeXor.xros.metallib new file mode 100644 index 000000000..7ea8a3708 Binary files /dev/null and b/apple/Filters/MetalCI/RNSVGCompositeXor.xros.metallib differ diff --git a/apple/Filters/MetalCI/RNSVGCustomFilter.h b/apple/Filters/MetalCI/RNSVGCustomFilter.h new file mode 100644 index 000000000..baf27ad25 --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGCustomFilter.h @@ -0,0 +1,9 @@ +#import + +@interface RNSVGCustomFilter : CIFilter { + CIImage *inputImage1; +} + +- (CIColorKernel *)getWithName:(NSString *)name; + +@end diff --git a/apple/Filters/MetalCI/RNSVGCustomFilter.mm b/apple/Filters/MetalCI/RNSVGCustomFilter.mm new file mode 100644 index 000000000..2f43bcaf0 --- /dev/null +++ b/apple/Filters/MetalCI/RNSVGCustomFilter.mm @@ -0,0 +1,35 @@ +#import "RNSVGCustomFilter.h" + +#if TARGET_OS_OSX +#define extension @"macosx.metallib" +#elif TARGET_OS_IOS +#define extension @"iphoneos.metallib" +#elif TARGET_OS_TV +#define extension @"tvos.metallib" +#elif TARGET_OS_VISION +#define extension @"xros.metallib" +#endif + +@implementation RNSVGCustomFilter + +- (CIColorKernel *)getWithName:(NSString *)name +{ + NSBundle *frameworkBundle = [NSBundle bundleForClass:[self class]]; + NSURL *bundleUrl = [frameworkBundle.resourceURL URLByAppendingPathComponent:@"RNSVGFilters.bundle"]; + NSBundle *bundle = [NSBundle bundleWithURL:bundleUrl]; + NSURL *url = [bundle URLForResource:name withExtension:extension]; + + if (url != nil) { + NSError *error = nil; + NSData *data = [NSData dataWithContentsOfURL:url options:0 error:&error]; + + @try { + return [CIColorKernel kernelWithFunctionName:name fromMetalLibraryData:data error:&error]; + } @catch (NSException *exception) { + NSLog(@"RNSVG CustomFilter exception: %@", exception); + } + } + return nil; +} + +@end diff --git a/apple/Filters/RNSVGBlendMode.h b/apple/Filters/RNSVGBlendMode.h new file mode 100644 index 000000000..9937888d2 --- /dev/null +++ b/apple/Filters/RNSVGBlendMode.h @@ -0,0 +1,8 @@ +typedef CF_ENUM(int32_t, RNSVGBlendMode) { + SVG_FEBLEND_MODE_UNKNOWN, + SVG_FEBLEND_MODE_NORMAL, + SVG_FEBLEND_MODE_MULTIPLY, + SVG_FEBLEND_MODE_SCREEN, + SVG_FEBLEND_MODE_DARKEN, + SVG_FEBLEND_MODE_LIGHTEN, +}; diff --git a/apple/Filters/RNSVGCompositeOperator.h b/apple/Filters/RNSVGCompositeOperator.h new file mode 100644 index 000000000..62f2dc40e --- /dev/null +++ b/apple/Filters/RNSVGCompositeOperator.h @@ -0,0 +1,9 @@ +typedef CF_ENUM(int32_t, RNSVGCompositeOperator) { + SVG_FECOMPOSITE_OPERATOR_UNKNOWN, + SVG_FECOMPOSITE_OPERATOR_OVER, + SVG_FECOMPOSITE_OPERATOR_IN, + SVG_FECOMPOSITE_OPERATOR_OUT, + SVG_FECOMPOSITE_OPERATOR_ATOP, + SVG_FECOMPOSITE_OPERATOR_XOR, + SVG_FECOMPOSITE_OPERATOR_ARITHMETIC +}; diff --git a/apple/Filters/RNSVGFeBlend.h b/apple/Filters/RNSVGFeBlend.h new file mode 100644 index 000000000..3817ada6c --- /dev/null +++ b/apple/Filters/RNSVGFeBlend.h @@ -0,0 +1,10 @@ +#import "RNSVGBlendMode.h" +#import "RNSVGFilterPrimitive.h" + +@interface RNSVGFeBlend : RNSVGFilterPrimitive + +@property (nonatomic, strong) NSString *in1; +@property (nonatomic, strong) NSString *in2; +@property (nonatomic, assign) RNSVGBlendMode mode; + +@end diff --git a/apple/Filters/RNSVGFeBlend.mm b/apple/Filters/RNSVGFeBlend.mm new file mode 100644 index 000000000..00928a402 --- /dev/null +++ b/apple/Filters/RNSVGFeBlend.mm @@ -0,0 +1,132 @@ +#import "RNSVGFeBlend.h" + +#ifdef RCT_NEW_ARCH_ENABLED +#import +#import +#import +#import +#import "RNSVGConvert.h" +#import "RNSVGFabricConversions.h" +#endif // RCT_NEW_ARCH_ENABLED + +@implementation RNSVGFeBlend + +#ifdef RCT_NEW_ARCH_ENABLED +using namespace facebook::react; + +// Needed because of this: https://github.com/facebook/react-native/pull/37274 ++ (void)load +{ + [super load]; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) { + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + } + return self; +} + +#pragma mark - RCTComponentViewProtocol + ++ (ComponentDescriptorProvider)componentDescriptorProvider +{ + return concreteComponentDescriptorProvider(); +} + +- (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps +{ + const auto &newProps = static_cast(*props); + + self.in1 = RCTNSStringFromStringNilIfEmpty(newProps.in1); + self.in2 = RCTNSStringFromStringNilIfEmpty(newProps.in2); + self.mode = [RNSVGConvert RNSVGBlendModeFromCppEquivalent:newProps.mode]; + + setCommonFilterProps(newProps, self); + _props = std::static_pointer_cast(props); +} + +- (void)prepareForRecycle +{ + [super prepareForRecycle]; + _in1 = nil; + _in2 = nil; + _mode = RNSVGBlendMode::SVG_FEBLEND_MODE_NORMAL; +} +#endif // RCT_NEW_ARCH_ENABLED + +- (void)setIn1:(NSString *)in1 +{ + if ([in1 isEqualToString:_in1]) { + return; + } + + _in1 = in1; + [self invalidate]; +} + +- (void)setIn2:(NSString *)in2 +{ + if ([in2 isEqualToString:_in2]) { + return; + } + + _in2 = in2; + [self invalidate]; +} + +- (void)setMode:(RNSVGBlendMode)mode +{ + if (mode == _mode) { + return; + } + _mode = mode; + [self invalidate]; +} + +- (CIImage *)applyFilter:(NSMutableDictionary *)results previousFilterResult:(CIImage *)previous +{ + CIImage *inResults1 = self.in1 ? [results objectForKey:self.in1] : nil; + CIImage *inResults2 = self.in2 ? [results objectForKey:self.in2] : nil; + CIImage *inputImage1 = inResults1 ? inResults1 : previous; + CIImage *inputImage2 = inResults2 ? inResults2 : previous; + + CIFilter *filter = nil; + + switch (self.mode) { + case SVG_FEBLEND_MODE_NORMAL: + filter = [CIFilter filterWithName:@"CISourceOverCompositing"]; + break; + case SVG_FEBLEND_MODE_MULTIPLY: + filter = [CIFilter filterWithName:@"CIMultiplyBlendMode"]; + break; + case SVG_FEBLEND_MODE_SCREEN: + filter = [CIFilter filterWithName:@"CIScreenBlendMode"]; + break; + case SVG_FEBLEND_MODE_DARKEN: + filter = [CIFilter filterWithName:@"CIDarkenBlendMode"]; + break; + case SVG_FEBLEND_MODE_LIGHTEN: + filter = [CIFilter filterWithName:@"CILightenBlendMode"]; + break; + default: + return nil; + } + + [filter setDefaults]; + [filter setValue:inputImage1 forKey:@"inputImage"]; + [filter setValue:inputImage2 forKey:@"inputBackgroundImage"]; + + return [filter valueForKey:@"outputImage"]; +} + +#ifdef RCT_NEW_ARCH_ENABLED +Class RNSVGFeBlendCls(void) +{ + return RNSVGFeBlend.class; +} +#endif // RCT_NEW_ARCH_ENABLED + +@end diff --git a/apple/Filters/RNSVGFeComposite.h b/apple/Filters/RNSVGFeComposite.h new file mode 100644 index 000000000..6b22a51c8 --- /dev/null +++ b/apple/Filters/RNSVGFeComposite.h @@ -0,0 +1,16 @@ +#import "RNSVGArithmeticFilter.h" +#import "RNSVGCompositeOperator.h" +#import "RNSVGCompositeXor.h" +#import "RNSVGFilterPrimitive.h" + +@interface RNSVGFeComposite : RNSVGFilterPrimitive + +@property (nonatomic, strong) NSString *in1; +@property (nonatomic, strong) NSString *in2; +@property (nonatomic, assign) RNSVGCompositeOperator operator1; +@property (nonatomic, strong) NSNumber *k1; +@property (nonatomic, strong) NSNumber *k2; +@property (nonatomic, strong) NSNumber *k3; +@property (nonatomic, strong) NSNumber *k4; + +@end diff --git a/apple/Filters/RNSVGFeComposite.mm b/apple/Filters/RNSVGFeComposite.mm new file mode 100644 index 000000000..4aa9dc1f1 --- /dev/null +++ b/apple/Filters/RNSVGFeComposite.mm @@ -0,0 +1,201 @@ +#import "RNSVGFeComposite.h" +#import "RNSVGArithmeticFilter.h" +#import "RNSVGCompositeXor.h" + +#ifdef RCT_NEW_ARCH_ENABLED +#import +#import +#import +#import +#import "RNSVGConvert.h" +#import "RNSVGFabricConversions.h" +#endif // RCT_NEW_ARCH_ENABLED + +static CIColorKernel *thresholdKernel; + +@implementation RNSVGFeComposite + +#ifdef RCT_NEW_ARCH_ENABLED +using namespace facebook::react; + +// Needed because of this: https://github.com/facebook/react-native/pull/37274 ++ (void)load +{ + [super load]; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) { + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + } + return self; +} + +#pragma mark - RCTComponentViewProtocol + ++ (ComponentDescriptorProvider)componentDescriptorProvider +{ + return concreteComponentDescriptorProvider(); +} + +- (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps +{ + const auto &newProps = static_cast(*props); + + self.in1 = RCTNSStringFromStringNilIfEmpty(newProps.in1); + self.in2 = RCTNSStringFromStringNilIfEmpty(newProps.in2); + self.k1 = [NSNumber numberWithFloat:newProps.k1]; + self.k2 = [NSNumber numberWithFloat:newProps.k2]; + self.k3 = [NSNumber numberWithFloat:newProps.k3]; + self.k4 = [NSNumber numberWithFloat:newProps.k4]; + self.operator1 = [RNSVGConvert RNSVGRNSVGCompositeOperatorFromCppEquivalent:newProps.operator1]; + + setCommonFilterProps(newProps, self); + _props = std::static_pointer_cast(props); +} + +- (void)prepareForRecycle +{ + [super prepareForRecycle]; + _in1 = nil; + _in2 = nil; + _k1 = nil; + _k2 = nil; + _k3 = nil; + _k4 = nil; + _operator1 = RNSVGCompositeOperator::SVG_FECOMPOSITE_OPERATOR_UNKNOWN; +} +#endif // RCT_NEW_ARCH_ENABLED + +- (void)setIn1:(NSString *)in1 +{ + if ([in1 isEqualToString:_in1]) { + return; + } + + _in1 = in1; + [self invalidate]; +} + +- (void)setIn2:(NSString *)in2 +{ + if ([in2 isEqualToString:_in2]) { + return; + } + + _in2 = in2; + [self invalidate]; +} + +- (void)setK1:(NSNumber *)k1 +{ + if (k1 == _k1) { + return; + } + + _k1 = k1; + [self invalidate]; +} + +- (void)setK2:(NSNumber *)k2 +{ + if (k2 == _k2) { + return; + } + + _k2 = k2; + [self invalidate]; +} + +- (void)setK3:(NSNumber *)k3 +{ + if (k3 == _k3) { + return; + } + + _k3 = k3; + [self invalidate]; +} + +- (void)setK4:(NSNumber *)k4 +{ + if (k4 == _k4) { + return; + } + + _k4 = k4; + [self invalidate]; +} + +- (void)setOperator1:(RNSVGCompositeOperator)operator1 +{ + if (operator1 == _operator1) { + return; + } + + _operator1 = operator1; + [self invalidate]; +} + +- (CIImage *)applyFilter:(NSMutableDictionary *)results previousFilterResult:(CIImage *)previous +{ + CIImage *inResults1 = self.in1 ? [results objectForKey:self.in1] : nil; + CIImage *inResults2 = self.in2 ? [results objectForKey:self.in2] : nil; + CIImage *inputImage1 = inResults1 ? inResults1 : previous; + CIImage *inputImage2 = inResults2 ? inResults2 : previous; + + CIFilter *filter = nil; + + switch (self.operator1) { + case SVG_FECOMPOSITE_OPERATOR_OVER: + filter = [CIFilter filterWithName:@"CISourceOverCompositing"]; + break; + case SVG_FECOMPOSITE_OPERATOR_IN: + filter = [CIFilter filterWithName:@"CISourceInCompositing"]; + break; + case SVG_FECOMPOSITE_OPERATOR_OUT: + filter = [CIFilter filterWithName:@"CISourceOutCompositing"]; + break; + case SVG_FECOMPOSITE_OPERATOR_ATOP: + filter = [CIFilter filterWithName:@"CISourceAtopCompositing"]; + break; + case SVG_FECOMPOSITE_OPERATOR_XOR: + filter = [[RNSVGCompositeXor alloc] init]; + break; + case SVG_FECOMPOSITE_OPERATOR_ARITHMETIC: + filter = [[RNSVGArithmeticFilter alloc] init]; + break; + default: + return nil; + } + + [filter setDefaults]; + + if (self.operator1 == SVG_FECOMPOSITE_OPERATOR_XOR) { + [filter setValue:inputImage1 forKey:@"inputImage1"]; + [filter setValue:inputImage2 forKey:@"inputImage2"]; + } else if (self.operator1 == SVG_FECOMPOSITE_OPERATOR_ARITHMETIC) { + [filter setValue:inputImage1 forKey:@"inputImage1"]; + [filter setValue:inputImage2 forKey:@"inputImage2"]; + [filter setValue:(self.k1 != nil ? self.k1 : 0) forKey:@"inputK1"]; + [filter setValue:(self.k2 != nil ? self.k2 : 0) forKey:@"inputK2"]; + [filter setValue:(self.k3 != nil ? self.k3 : 0) forKey:@"inputK3"]; + [filter setValue:(self.k4 != nil ? self.k4 : 0) forKey:@"inputK4"]; + } else { + [filter setValue:inputImage1 forKey:@"inputImage"]; + [filter setValue:inputImage2 forKey:@"inputBackgroundImage"]; + } + + return [filter valueForKey:@"outputImage"]; +} + +#ifdef RCT_NEW_ARCH_ENABLED +Class RNSVGFeCompositeCls(void) +{ + return RNSVGFeComposite.class; +} +#endif // RCT_NEW_ARCH_ENABLED + +@end diff --git a/apple/Filters/RNSVGFeFlood.h b/apple/Filters/RNSVGFeFlood.h new file mode 100644 index 000000000..27da9b1c7 --- /dev/null +++ b/apple/Filters/RNSVGFeFlood.h @@ -0,0 +1,9 @@ +#import "RNSVGBrush.h" +#import "RNSVGFilterPrimitive.h" + +@interface RNSVGFeFlood : RNSVGFilterPrimitive + +@property (nonatomic, strong) RNSVGBrush *floodColor; +@property (nonatomic, assign) CGFloat floodOpacity; + +@end diff --git a/apple/Filters/RNSVGFeFlood.mm b/apple/Filters/RNSVGFeFlood.mm new file mode 100644 index 000000000..75cff49f8 --- /dev/null +++ b/apple/Filters/RNSVGFeFlood.mm @@ -0,0 +1,91 @@ +#import "RNSVGFeFlood.h" + +#ifdef RCT_NEW_ARCH_ENABLED +#import +#import +#import +#import +#import "RNSVGConvert.h" +#import "RNSVGFabricConversions.h" +#endif // RCT_NEW_ARCH_ENABLED + +@implementation RNSVGFeFlood + +#ifdef RCT_NEW_ARCH_ENABLED +using namespace facebook::react; + +// Needed because of this: https://github.com/facebook/react-native/pull/37274 ++ (void)load +{ + [super load]; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]) { + static const auto defaultProps = std::make_shared(); + _props = defaultProps; + } + return self; +} + +#pragma mark - RCTComponentViewProtocol + ++ (ComponentDescriptorProvider)componentDescriptorProvider +{ + return concreteComponentDescriptorProvider(); +} + +- (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const &)oldProps +{ + const auto &newProps = static_cast(*props); + + id floodColor = RNSVGConvertFollyDynamicToId(newProps.floodColor); + if (floodColor != nil) { + self.floodColor = [RCTConvert RNSVGBrush:floodColor]; + } + self.floodOpacity = newProps.floodOpacity; + + setCommonFilterProps(newProps, self); + _props = std::static_pointer_cast(props); +} + +- (void)prepareForRecycle +{ + [super prepareForRecycle]; + _floodColor = nil; + _floodOpacity = 1; +} +#endif // RCT_NEW_ARCH_ENABLED + +- (void)setFloodColor:(RNSVGBrush *)floodColor +{ + if (floodColor == _floodColor) { + return; + } + _floodColor = floodColor; + [self invalidate]; +} + +- (void)setFloodOpacity:(CGFloat)floodOpacity +{ + if (floodOpacity == _floodOpacity) { + return; + } + _floodOpacity = floodOpacity; + [self invalidate]; +} + +- (CIImage *)applyFilter:(NSMutableDictionary *)results previousFilterResult:(CIImage *)previous +{ + return [CIImage imageWithColor:[CIColor colorWithCGColor:[self.floodColor getColorWithOpacity:self.floodOpacity]]]; +} + +#ifdef RCT_NEW_ARCH_ENABLED +Class RNSVGFeFloodCls(void) +{ + return RNSVGFeFlood.class; +} +#endif // RCT_NEW_ARCH_ENABLED + +@end diff --git a/apple/Filters/RNSVGFilter.h b/apple/Filters/RNSVGFilter.h index b9686c31a..dd831494a 100644 --- a/apple/Filters/RNSVGFilter.h +++ b/apple/Filters/RNSVGFilter.h @@ -3,12 +3,9 @@ @interface RNSVGFilter : RNSVGNode -@property (nonatomic, strong) RNSVGLength *x; -@property (nonatomic, strong) RNSVGLength *y; -@property (nonatomic, strong) RNSVGLength *width; -@property (nonatomic, strong) RNSVGLength *height; @property (nonatomic, assign) RNSVGUnits filterUnits; @property (nonatomic, assign) RNSVGUnits primitiveUnits; +@property (nonatomic, strong) RNSVGFilterRegion *filterRegion; - (CIImage *)applyFilter:(CIImage *)img backgroundImg:(CIImage *)backgroundImg @@ -18,5 +15,9 @@ - (CGContext *)openContext:(CGSize)size; - (void)endContext:(CGContext *)context; - (CIImage *)getMaskFromRect:(CGContext *)context rect:(CGRect)rect ctm:(CGAffineTransform)ctm; +- (void)setX:(RNSVGLength *)x; +- (void)setY:(RNSVGLength *)y; +- (void)setWidth:(RNSVGLength *)width; +- (void)setHeight:(RNSVGLength *)height; @end diff --git a/apple/Filters/RNSVGFilter.mm b/apple/Filters/RNSVGFilter.mm index 152e869c8..d36d1d783 100644 --- a/apple/Filters/RNSVGFilter.mm +++ b/apple/Filters/RNSVGFilter.mm @@ -70,12 +70,9 @@ - (void)updateProps:(Props::Shared const &)props oldProps:(Props::Shared const & - (void)prepareForRecycle { [super prepareForRecycle]; - _x = nil; - _y = nil; - _width = nil; - _height = nil; _filterUnits = kRNSVGUnitsObjectBoundingBox; _primitiveUnits = kRNSVGUnitsUserSpaceOnUse; + _filterRegion = [[RNSVGFilterRegion alloc] init]; } #endif // RCT_NEW_ARCH_ENABLED @@ -83,6 +80,7 @@ - (id)init { if (self = [super init]) { resultsMap = [NSMutableDictionary dictionary]; + _filterRegion = [[RNSVGFilterRegion alloc] init]; } return self; } @@ -107,17 +105,16 @@ - (CIImage *)applyFilter:(CIImage *)img CGContext *cropContext = [self openContext:canvasBounds.size]; CIImage *mask; + CGRect filterRegionRect = [self.filterRegion getCropRect:self units:self.filterUnits bounds:renderableBounds]; CIImage *result = img; RNSVGFilterPrimitive *currentFilter; for (RNSVGNode *node in self.subviews) { if ([node isKindOfClass:[RNSVGFilterPrimitive class]]) { currentFilter = (RNSVGFilterPrimitive *)node; - cropRect = [[RNSVGFilterRegion regionWithX:currentFilter.x - y:currentFilter.y - width:currentFilter.width - height:currentFilter.height] getCropRect:currentFilter - units:self.primitiveUnits - renderableBounds:renderableBounds]; + cropRect = [currentFilter.filterSubregion + getCropRect:currentFilter + units:self.primitiveUnits + bounds:self.primitiveUnits == kRNSVGUnitsUserSpaceOnUse ? filterRegionRect : renderableBounds]; mask = [self getMaskFromRect:cropContext rect:cropRect ctm:ctm]; [cropFilter setValue:[currentFilter applyFilter:resultsMap previousFilterResult:result ctm:ctm] forKey:@"inputImage"]; @@ -136,11 +133,7 @@ - (CIImage *)applyFilter:(CIImage *)img } } - cropRect = [[RNSVGFilterRegion regionWithX:self.x y:self.y width:self.width - height:self.height] getCropRect:self - units:self.filterUnits - renderableBounds:renderableBounds]; - mask = [self getMaskFromRect:cropContext rect:cropRect ctm:ctm]; + mask = [self getMaskFromRect:cropContext rect:filterRegionRect ctm:ctm]; [cropFilter setValue:result forKey:@"inputImage"]; [cropFilter setValue:mask forKey:@"inputMaskImage"]; [self endContext:cropContext]; @@ -212,41 +205,41 @@ - (void)parseReference - (void)setX:(RNSVGLength *)x { - if ([x isEqualTo:_x]) { + if ([x isEqualTo:_filterRegion.x]) { return; } - _x = x; + [_filterRegion setX:x]; [self invalidate]; } - (void)setY:(RNSVGLength *)y { - if ([y isEqualTo:_y]) { + if ([y isEqualTo:_filterRegion.y]) { return; } - _y = y; + [_filterRegion setY:y]; [self invalidate]; } - (void)setWidth:(RNSVGLength *)width { - if ([width isEqualTo:_width]) { + if ([width isEqualTo:_filterRegion.width]) { return; } - _width = width; + [_filterRegion setWidth:width]; [self invalidate]; } - (void)setHeight:(RNSVGLength *)height { - if ([height isEqualTo:_height]) { + if ([height isEqualTo:_filterRegion.height]) { return; } - _height = height; + [_filterRegion setHeight:height]; [self invalidate]; } diff --git a/apple/Filters/RNSVGFilterPrimitive.h b/apple/Filters/RNSVGFilterPrimitive.h index 97724a538..91f550ced 100644 --- a/apple/Filters/RNSVGFilterPrimitive.h +++ b/apple/Filters/RNSVGFilterPrimitive.h @@ -3,15 +3,16 @@ @interface RNSVGFilterPrimitive : RNSVGNode -@property (nonatomic, strong) RNSVGLength *x; -@property (nonatomic, strong) RNSVGLength *y; -@property (nonatomic, strong) RNSVGLength *width; -@property (nonatomic, strong) RNSVGLength *height; @property (nonatomic, strong) NSString *result; +@property (nonatomic, strong) RNSVGFilterRegion *filterSubregion; - (CIImage *)applyFilter:(NSMutableDictionary *)results previousFilterResult:(CIImage *)previous; - (CIImage *)applyFilter:(NSMutableDictionary *)results previousFilterResult:(CIImage *)previous ctm:(CGAffineTransform)ctm; +- (void)setX:(RNSVGLength *)x; +- (void)setY:(RNSVGLength *)y; +- (void)setWidth:(RNSVGLength *)width; +- (void)setHeight:(RNSVGLength *)height; @end diff --git a/apple/Filters/RNSVGFilterPrimitive.mm b/apple/Filters/RNSVGFilterPrimitive.mm index 3cf9742cd..195bc48ad 100644 --- a/apple/Filters/RNSVGFilterPrimitive.mm +++ b/apple/Filters/RNSVGFilterPrimitive.mm @@ -1,5 +1,6 @@ #import #import +#import "RNSVGFilter.h" #ifdef RCT_NEW_ARCH_ENABLED #import @@ -15,14 +16,20 @@ @implementation RNSVGFilterPrimitive - (void)prepareForRecycle { [super prepareForRecycle]; - _x = nil; - _y = nil; - _width = nil; - _height = nil; + _filterSubregion = [[RNSVGFilterRegion alloc] init]; _result = nil; } #endif // RCT_NEW_ARCH_ENABLED +- (instancetype)init +{ + self = [super init]; + if (self) { + _filterSubregion = [[RNSVGFilterRegion alloc] init]; + } + return self; +} + - (RNSVGPlatformView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { return nil; @@ -40,41 +47,41 @@ - (void)invalidate - (void)setX:(RNSVGLength *)x { - if ([x isEqualTo:_x]) { + if ([x isEqualTo:_filterSubregion.x]) { return; } - _x = x; + [_filterSubregion setX:x]; [self invalidate]; } - (void)setY:(RNSVGLength *)y { - if ([y isEqualTo:_y]) { + if ([y isEqualTo:_filterSubregion.y]) { return; } - _y = y; + [_filterSubregion setY:y]; [self invalidate]; } - (void)setWidth:(RNSVGLength *)width { - if ([width isEqualTo:_width]) { + if ([width isEqualTo:_filterSubregion.width]) { return; } - _width = width; + [_filterSubregion setWidth:width]; [self invalidate]; } - (void)setHeight:(RNSVGLength *)height { - if ([height isEqualTo:_height]) { + if ([height isEqualTo:_filterSubregion.height]) { return; } - _height = height; + [_filterSubregion setHeight:height]; [self invalidate]; } diff --git a/apple/Filters/RNSVGFilterRegion.h b/apple/Filters/RNSVGFilterRegion.h index 15e55523a..4f2af0081 100644 --- a/apple/Filters/RNSVGFilterRegion.h +++ b/apple/Filters/RNSVGFilterRegion.h @@ -12,7 +12,7 @@ @property (nonatomic, strong) RNSVGLength *height; + (instancetype)regionWithX:(RNSVGLength *)x y:(RNSVGLength *)y width:(RNSVGLength *)width height:(RNSVGLength *)height; -- (CGRect)getCropRect:(RNSVGNode *)node units:(RNSVGUnits)units renderableBounds:(CGRect)renderableBounds; +- (CGRect)getCropRect:(RNSVGNode *)node units:(RNSVGUnits)units bounds:(CGRect)bounds; @end diff --git a/apple/Filters/RNSVGFilterRegion.mm b/apple/Filters/RNSVGFilterRegion.mm index c86f4e674..e58c483e4 100644 --- a/apple/Filters/RNSVGFilterRegion.mm +++ b/apple/Filters/RNSVGFilterRegion.mm @@ -5,12 +5,6 @@ @implementation RNSVGFilterRegion - (instancetype)init { self = [super init]; - if (self) { - _x = [RNSVGLength lengthWithNumber:0]; - _y = [RNSVGLength lengthWithNumber:0]; - _width = [RNSVGLength lengthWithNumber:0]; - _height = [RNSVGLength lengthWithNumber:0]; - } return self; } @@ -44,20 +38,43 @@ - (void)setHeight:(RNSVGLength *)height _height = height; } -- (CGRect)getCropRect:(RNSVGNode *)node units:(RNSVGUnits)units renderableBounds:(CGRect)renderableBounds ++ (CGFloat)getRelativeOrDefault:(RNSVGNode *)node + value:(RNSVGLength *)value + relativeOn:(CGFloat)relativeOn + defaultValue:(CGFloat)defaultValue +{ + if (value == nil || value.unit == SVG_LENGTHTYPE_UNKNOWN) { + return defaultValue; + } + return [node relativeOn:value relative:relativeOn]; +} + +- (CGRect)getCropRect:(RNSVGNode *)node units:(RNSVGUnits)units bounds:(CGRect)bounds { CGFloat x, y, width, height; if (units == kRNSVGUnitsObjectBoundingBox) { - x = [node relativeOnFraction:self.x relative:renderableBounds.size.width]; - y = [node relativeOnFraction:self.y relative:renderableBounds.size.height]; - width = [node relativeOnFraction:self.width relative:renderableBounds.size.width]; - height = [node relativeOnFraction:self.height relative:renderableBounds.size.height]; - return CGRectMake(renderableBounds.origin.x + x, renderableBounds.origin.y + y, width, height); + x = [node relativeOnFraction:self.x relative:bounds.size.width]; + y = [node relativeOnFraction:self.y relative:bounds.size.height]; + width = [node relativeOnFraction:self.width relative:bounds.size.width]; + height = [node relativeOnFraction:self.height relative:bounds.size.height]; + return CGRectMake(bounds.origin.x + x, bounds.origin.y + y, width, height); } else { // kRNSVGUnitsUserSpaceOnUse - x = [node relativeOnWidth:self.x]; - y = [node relativeOnHeight:self.y]; - width = [node relativeOnWidth:self.width]; - height = [node relativeOnHeight:self.height]; + x = [RNSVGFilterRegion getRelativeOrDefault:node + value:self.x + relativeOn:[node getCanvasWidth] + defaultValue:bounds.origin.x]; + y = [RNSVGFilterRegion getRelativeOrDefault:node + value:self.y + relativeOn:[node getCanvasHeight] + defaultValue:bounds.origin.y]; + width = [RNSVGFilterRegion getRelativeOrDefault:node + value:self.width + relativeOn:[node getCanvasWidth] + defaultValue:bounds.size.width]; + height = [RNSVGFilterRegion getRelativeOrDefault:node + value:self.height + relativeOn:[node getCanvasHeight] + defaultValue:bounds.size.height]; return CGRectMake(x, y, width, height); } } diff --git a/apple/RNSVGNode.h b/apple/RNSVGNode.h index 5c2f40a0c..51cb69592 100644 --- a/apple/RNSVGNode.h +++ b/apple/RNSVGNode.h @@ -141,4 +141,11 @@ extern CGFloat const RNSVG_DEFAULT_FONT_SIZE; - (void)clearPath; +/** + * get canvas dimensions + */ +- (CGFloat)getCanvasWidth; + +- (CGFloat)getCanvasHeight; + @end diff --git a/apple/RNSVGRenderable.h b/apple/RNSVGRenderable.h index 82a964a10..7f56488d9 100644 --- a/apple/RNSVGRenderable.h +++ b/apple/RNSVGRenderable.h @@ -19,6 +19,7 @@ @interface RNSVGRenderable : RNSVGNode @property (class) RNSVGRenderable *contextElement; +@property (nonatomic, strong) RNSVGColor *color; @property (nonatomic, strong) RNSVGBrush *fill; @property (nonatomic, assign) CGFloat fillOpacity; @property (nonatomic, assign) RNSVGCGFCRule fillRule; @@ -45,4 +46,6 @@ - (void)resetProperties; +- (CGColor *)getCurrentColor; + @end diff --git a/apple/RNSVGRenderable.mm b/apple/RNSVGRenderable.mm index f9d633ec9..0cc82c095 100644 --- a/apple/RNSVGRenderable.mm +++ b/apple/RNSVGRenderable.mm @@ -25,6 +25,7 @@ @implementation RNSVGRenderable { NSArray *_sourceStrokeDashArray; CGFloat *_strokeDashArrayData; CGPathRef _srcHitPath; + RNSVGRenderable *_caller; } static RNSVGRenderable *_contextElement; @@ -61,11 +62,11 @@ - (void)invalidate - (void)setColor:(RNSVGColor *)color { - if (color == self.tintColor) { + if (color == _color) { return; } [self invalidate]; - self.tintColor = color; + _color = color; } - (void)setFill:(RNSVGBrush *)fill @@ -560,7 +561,7 @@ - (void)renderLayerTo:(CGContextRef)context rect:(CGRect)rect if (self.fill) { if (self.fill.class == RNSVGBrush.class) { - CGContextSetFillColorWithColor(context, [self.tintColor CGColor]); + CGContextSetFillColorWithColor(context, [self getCurrentColor]); fillColor = YES; } else { fillColor = [self.fill applyFillColor:context opacity:self.fillOpacity]; @@ -608,7 +609,7 @@ - (void)renderLayerTo:(CGContextRef)context rect:(CGRect)rect BOOL strokeColor; if (self.stroke.class == RNSVGBrush.class) { - CGContextSetStrokeColorWithColor(context, [self.tintColor CGColor]); + CGContextSetStrokeColorWithColor(context, [self getCurrentColor]); strokeColor = YES; } else { strokeColor = [self.stroke applyStrokeColor:context opacity:self.strokeOpacity]; @@ -724,6 +725,7 @@ - (RNSVGPlatformView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event - (void)mergeProperties:(__kindof RNSVGRenderable *)target { + _caller = target; NSArray *targetAttributeList = [target getAttributeList]; if (targetAttributeList.count == 0) { @@ -754,9 +756,28 @@ - (void)resetProperties [self setValue:[_originProperties valueForKey:key] forKey:key]; } + _caller = nil; _lastMergedList = nil; _attributeList = _propList; self.merging = false; } +- (CGColor *)getCurrentColor +{ + if (self.color != nil) { + return [self.color CGColor]; + } + if (_caller != nil) { + return [_caller getCurrentColor]; + } + RNSVGPlatformView *parentView = [self superview]; + if ([parentView isKindOfClass:[RNSVGRenderable class]]) { + return [(RNSVGRenderable *)parentView getCurrentColor]; + } else if ([parentView isKindOfClass:[RNSVGSvgView class]]) { + return [[(RNSVGSvgView *)parentView color] CGColor]; + } + + return nil; +} + @end diff --git a/apple/RNSVGUIKit.macos.mm b/apple/RNSVGUIKit.macos.mm index c4484ff11..9e1caed80 100644 --- a/apple/RNSVGUIKit.macos.mm +++ b/apple/RNSVGUIKit.macos.mm @@ -1,7 +1,6 @@ #import "RNSVGUIKit.h" @implementation RNSVGView { - NSColor *_tintColor; } - (CGPoint)center @@ -20,29 +19,6 @@ - (void)setCenter:(CGPoint)point self.frame = CGRectMake(xOrigin, yOrigin, frameRect.size.width, frameRect.size.height); } -- (NSColor *)tintColor -{ - if (_tintColor != nil) { - return _tintColor; - } - - // To mimic iOS's tintColor, we crawl up the view hierarchy until either: - // (a) we find a valid color - // (b) we reach a view that isn't an RNSVGView - NSView *parentView = [self superview]; - if ([parentView isKindOfClass:[RNSVGView class]]) { - return [(RNSVGView *)parentView tintColor]; - } else { - return [NSColor controlAccentColor]; - } -} - -- (void)setTintColor:(NSColor *)tintColor -{ - _tintColor = tintColor; - [self setNeedsDisplay:YES]; -} - @end @implementation NSImage (RNSVGMacOSExtensions) diff --git a/apple/Text/RNSVGTSpan.mm b/apple/Text/RNSVGTSpan.mm index 7e00778f4..5f3039eb2 100644 --- a/apple/Text/RNSVGTSpan.mm +++ b/apple/Text/RNSVGTSpan.mm @@ -133,7 +133,7 @@ - (void)renderLayerTo:(CGContextRef)context rect:(CGRect)rect if (self.inlineSize != nil && self.inlineSize.value != 0) { if (self.fill) { if (self.fill.class == RNSVGBrush.class) { - CGColorRef color = [self.tintColor CGColor]; + CGColorRef color = [self getCurrentColor]; [self drawWrappedText:context gc:gc rect:rect color:color]; } else { CGColorRef color = [self.fill getColorWithOpacity:self.fillOpacity]; @@ -143,7 +143,7 @@ - (void)renderLayerTo:(CGContextRef)context rect:(CGRect)rect } if (self.stroke) { if (self.stroke.class == RNSVGBrush.class) { - CGColorRef color = [self.tintColor CGColor]; + CGColorRef color = [self getCurrentColor]; [self drawWrappedText:context gc:gc rect:rect color:color]; } else { CGColorRef color = [self.stroke getColorWithOpacity:self.strokeOpacity]; diff --git a/apple/Utils/RCTConvert+RNSVG.h b/apple/Utils/RCTConvert+RNSVG.h index d0714ac92..5f835292f 100644 --- a/apple/Utils/RCTConvert+RNSVG.h +++ b/apple/Utils/RCTConvert+RNSVG.h @@ -10,8 +10,10 @@ #import #import #import "RCTConvert+RNSVG.h" +#import "RNSVGBlendMode.h" #import "RNSVGCGFCRule.h" #import "RNSVGColorMatrixType.h" +#import "RNSVGCompositeOperator.h" #import "RNSVGEdgeMode.h" #import "RNSVGLength.h" #import "RNSVGMaskType.h" diff --git a/apple/Utils/RCTConvert+RNSVG.mm b/apple/Utils/RCTConvert+RNSVG.mm index 863cb7255..63da345cd 100644 --- a/apple/Utils/RCTConvert+RNSVG.mm +++ b/apple/Utils/RCTConvert+RNSVG.mm @@ -72,6 +72,32 @@ @implementation RCTConvert (RNSVG) SVG_FECOLORMATRIX_TYPE_UNKNOWN, intValue) +RCT_ENUM_CONVERTER( + RNSVGBlendMode, + (@{ + @"unknown" : @(SVG_FEBLEND_MODE_UNKNOWN), + @"normal" : @(SVG_FEBLEND_MODE_NORMAL), + @"multiply" : @(SVG_FEBLEND_MODE_MULTIPLY), + @"screen" : @(SVG_FEBLEND_MODE_SCREEN), + @"darken" : @(SVG_FEBLEND_MODE_DARKEN), + @"lighten" : @(SVG_FEBLEND_MODE_LIGHTEN), + }), + SVG_FEBLEND_MODE_UNKNOWN, + intValue) + +RCT_ENUM_CONVERTER( + RNSVGCompositeOperator, + (@{ + @"over" : @(SVG_FECOMPOSITE_OPERATOR_OVER), + @"in" : @(SVG_FECOMPOSITE_OPERATOR_IN), + @"out" : @(SVG_FECOMPOSITE_OPERATOR_OUT), + @"atop" : @(SVG_FECOMPOSITE_OPERATOR_ATOP), + @"xor" : @(SVG_FECOMPOSITE_OPERATOR_XOR), + @"arithmetic" : @(SVG_FECOMPOSITE_OPERATOR_ARITHMETIC), + }), + SVG_FECOMPOSITE_OPERATOR_UNKNOWN, + intValue) + + (RNSVGBrush *)RNSVGBrush:(id)json { if ([json isKindOfClass:[NSNumber class]]) { diff --git a/apple/Utils/RNSVGConvert.h b/apple/Utils/RNSVGConvert.h index ee83027b4..320007c43 100644 --- a/apple/Utils/RNSVGConvert.h +++ b/apple/Utils/RNSVGConvert.h @@ -1,6 +1,8 @@ #ifdef RCT_NEW_ARCH_ENABLED #import +#import "RNSVGBlendMode.h" #import "RNSVGColorMatrixType.h" +#import "RNSVGCompositeOperator.h" #import "RNSVGEdgeMode.h" #import "RNSVGUnits.h" @@ -10,7 +12,9 @@ namespace react = facebook::react; + (RNSVGUnits)RNSVGUnitsFromFilterUnitsCppEquivalent:(react::RNSVGFilterFilterUnits)svgUnits; + (RNSVGUnits)RNSVGUnitsFromPrimitiveUnitsCppEquivalent:(react::RNSVGFilterPrimitiveUnits)svgUnits; ++ (RNSVGBlendMode)RNSVGBlendModeFromCppEquivalent:(react::RNSVGFeBlendMode)mode; + (RNSVGColorMatrixType)RNSVGColorMatrixTypeFromCppEquivalent:(react::RNSVGFeColorMatrixType)type; ++ (RNSVGCompositeOperator)RNSVGRNSVGCompositeOperatorFromCppEquivalent:(react::RNSVGFeCompositeOperator1)operator1; + (RNSVGEdgeMode)RNSVGEdgeModeFromCppEquivalent:(react::RNSVGFeGaussianBlurEdgeMode)edgeMode; @end diff --git a/apple/Utils/RNSVGConvert.mm b/apple/Utils/RNSVGConvert.mm index b557ff543..967521491 100644 --- a/apple/Utils/RNSVGConvert.mm +++ b/apple/Utils/RNSVGConvert.mm @@ -23,6 +23,24 @@ + (RNSVGUnits)RNSVGUnitsFromPrimitiveUnitsCppEquivalent:(react::RNSVGFilterPrimi } } ++ (RNSVGBlendMode)RNSVGBlendModeFromCppEquivalent:(react::RNSVGFeBlendMode)mode +{ + switch (mode) { + case react::RNSVGFeBlendMode::Unknown: + return SVG_FEBLEND_MODE_UNKNOWN; + case react::RNSVGFeBlendMode::Normal: + return SVG_FEBLEND_MODE_NORMAL; + case react::RNSVGFeBlendMode::Multiply: + return SVG_FEBLEND_MODE_MULTIPLY; + case react::RNSVGFeBlendMode::Screen: + return SVG_FEBLEND_MODE_SCREEN; + case react::RNSVGFeBlendMode::Darken: + return SVG_FEBLEND_MODE_DARKEN; + case react::RNSVGFeBlendMode::Lighten: + return SVG_FEBLEND_MODE_LIGHTEN; + } +} + + (RNSVGColorMatrixType)RNSVGColorMatrixTypeFromCppEquivalent:(react::RNSVGFeColorMatrixType)type { switch (type) { @@ -37,6 +55,24 @@ + (RNSVGColorMatrixType)RNSVGColorMatrixTypeFromCppEquivalent:(react::RNSVGFeCol } } ++ (RNSVGCompositeOperator)RNSVGRNSVGCompositeOperatorFromCppEquivalent:(react::RNSVGFeCompositeOperator1)operator1 +{ + switch (operator1) { + case react::RNSVGFeCompositeOperator1::Over: + return SVG_FECOMPOSITE_OPERATOR_OVER; + case react::RNSVGFeCompositeOperator1::In: + return SVG_FECOMPOSITE_OPERATOR_IN; + case react::RNSVGFeCompositeOperator1::Out: + return SVG_FECOMPOSITE_OPERATOR_OUT; + case react::RNSVGFeCompositeOperator1::Atop: + return SVG_FECOMPOSITE_OPERATOR_ATOP; + case react::RNSVGFeCompositeOperator1::Xor: + return SVG_FECOMPOSITE_OPERATOR_XOR; + case react::RNSVGFeCompositeOperator1::Arithmetic: + return SVG_FECOMPOSITE_OPERATOR_ARITHMETIC; + } +} + + (RNSVGEdgeMode)RNSVGEdgeModeFromCppEquivalent:(react::RNSVGFeGaussianBlurEdgeMode)edgeMode { switch (edgeMode) { diff --git a/apple/ViewManagers/RNSVGFeBlendManager.h b/apple/ViewManagers/RNSVGFeBlendManager.h new file mode 100644 index 000000000..d8cbf7314 --- /dev/null +++ b/apple/ViewManagers/RNSVGFeBlendManager.h @@ -0,0 +1,5 @@ +#import "RNSVGFilterPrimitiveManager.h" + +@interface RNSVGFeBlendManager : RNSVGFilterPrimitiveManager + +@end diff --git a/apple/ViewManagers/RNSVGFeBlendManager.mm b/apple/ViewManagers/RNSVGFeBlendManager.mm new file mode 100644 index 000000000..4ce585b01 --- /dev/null +++ b/apple/ViewManagers/RNSVGFeBlendManager.mm @@ -0,0 +1,18 @@ +#import "RNSVGFeBlendManager.h" +#import "RNSVGBlendMode.h" +#import "RNSVGFeBlend.h" + +@implementation RNSVGFeBlendManager + +RCT_EXPORT_MODULE() + +- (RNSVGFeBlend *)node +{ + return [RNSVGFeBlend new]; +} + +RCT_EXPORT_VIEW_PROPERTY(in1, NSString) +RCT_EXPORT_VIEW_PROPERTY(in2, NSString) +RCT_EXPORT_VIEW_PROPERTY(mode, RNSVGBlendMode) + +@end diff --git a/apple/ViewManagers/RNSVGFeCompositeManager.h b/apple/ViewManagers/RNSVGFeCompositeManager.h new file mode 100644 index 000000000..761115a98 --- /dev/null +++ b/apple/ViewManagers/RNSVGFeCompositeManager.h @@ -0,0 +1,5 @@ +#import "RNSVGFilterPrimitiveManager.h" + +@interface RNSVGFeCompositeManager : RNSVGFilterPrimitiveManager + +@end diff --git a/apple/ViewManagers/RNSVGFeCompositeManager.mm b/apple/ViewManagers/RNSVGFeCompositeManager.mm new file mode 100644 index 000000000..a2d4c96f2 --- /dev/null +++ b/apple/ViewManagers/RNSVGFeCompositeManager.mm @@ -0,0 +1,22 @@ +#import "RNSVGFeCompositeManager.h" +#import "RNSVGCompositeOperator.h" +#import "RNSVGFeComposite.h" + +@implementation RNSVGFeCompositeManager + +RCT_EXPORT_MODULE() + +- (RNSVGFeComposite *)node +{ + return [RNSVGFeComposite new]; +} + +RCT_EXPORT_VIEW_PROPERTY(in1, NSString) +RCT_EXPORT_VIEW_PROPERTY(in2, NSString) +RCT_EXPORT_VIEW_PROPERTY(operator1, RNSVGCompositeOperator) +RCT_EXPORT_VIEW_PROPERTY(k1, NSNumber *) +RCT_EXPORT_VIEW_PROPERTY(k2, NSNumber *) +RCT_EXPORT_VIEW_PROPERTY(k3, NSNumber *) +RCT_EXPORT_VIEW_PROPERTY(k4, NSNumber *) + +@end diff --git a/apple/ViewManagers/RNSVGFeFloodManager.h b/apple/ViewManagers/RNSVGFeFloodManager.h new file mode 100644 index 000000000..2f8be30a2 --- /dev/null +++ b/apple/ViewManagers/RNSVGFeFloodManager.h @@ -0,0 +1,5 @@ +#import "RNSVGFilterPrimitiveManager.h" + +@interface RNSVGFeFloodManager : RNSVGFilterPrimitiveManager + +@end diff --git a/apple/ViewManagers/RNSVGFeFloodManager.mm b/apple/ViewManagers/RNSVGFeFloodManager.mm new file mode 100644 index 000000000..9ee787331 --- /dev/null +++ b/apple/ViewManagers/RNSVGFeFloodManager.mm @@ -0,0 +1,16 @@ +#import "RNSVGFeFloodManager.h" +#import "RNSVGFeFlood.h" + +@implementation RNSVGFeFloodManager + +RCT_EXPORT_MODULE() + +- (RNSVGFeFlood *)node +{ + return [RNSVGFeFlood new]; +} + +RCT_EXPORT_VIEW_PROPERTY(floodColor, RNSVGBrush) +RCT_EXPORT_VIEW_PROPERTY(floodOpacity, CGFloat) + +@end diff --git a/apple/ViewManagers/RNSVGRenderableManager.mm b/apple/ViewManagers/RNSVGRenderableManager.mm index 612de16e3..7beca344f 100644 --- a/apple/ViewManagers/RNSVGRenderableManager.mm +++ b/apple/ViewManagers/RNSVGRenderableManager.mm @@ -24,7 +24,7 @@ - (RNSVGRenderable *)node return [RNSVGRenderable new]; } -RCT_REMAP_VIEW_PROPERTY(color, tintColor, UIColor) +RCT_EXPORT_VIEW_PROPERTY(color, UIColor) RCT_EXPORT_VIEW_PROPERTY(fill, RNSVGBrush) RCT_EXPORT_VIEW_PROPERTY(fillOpacity, CGFloat) RCT_EXPORT_VIEW_PROPERTY(fillRule, RNSVGCGFCRule) diff --git a/apple/ViewManagers/RNSVGSvgViewManager.mm b/apple/ViewManagers/RNSVGSvgViewManager.mm index a9e5bee57..73ebd2407 100644 --- a/apple/ViewManagers/RNSVGSvgViewManager.mm +++ b/apple/ViewManagers/RNSVGSvgViewManager.mm @@ -26,7 +26,7 @@ - (RNSVGPlatformView *)view RCT_EXPORT_VIEW_PROPERTY(vbHeight, CGFloat) RCT_EXPORT_VIEW_PROPERTY(align, NSString) RCT_EXPORT_VIEW_PROPERTY(meetOrSlice, RNSVGVBMOS) -RCT_REMAP_VIEW_PROPERTY(color, tintColor, UIColor) +RCT_EXPORT_VIEW_PROPERTY(color, UIColor) RCT_CUSTOM_VIEW_PROPERTY(hitSlop, UIEdgeInsets, RNSVGSvgView) { if ([view respondsToSelector:@selector(setHitTestEdgeInsets:)]) { diff --git a/apps/.eslintrc.js b/apps/common/.eslintrc.js similarity index 100% rename from apps/.eslintrc.js rename to apps/common/.eslintrc.js diff --git a/apps/.prettierrc.js b/apps/common/.prettierrc.js similarity index 100% rename from apps/.prettierrc.js rename to apps/common/.prettierrc.js diff --git a/apps/common/example/ListScreen.tsx b/apps/common/example/ListScreen.tsx new file mode 100644 index 000000000..053e442f9 --- /dev/null +++ b/apps/common/example/ListScreen.tsx @@ -0,0 +1,66 @@ +import React, {useState} from 'react'; +import { + FlatList, + Platform, + Pressable, + Text, + TouchableOpacity, + View, +} from 'react-native'; +import {commonStyles} from './utils/commonStyles'; +import {Examples, NavigationProp} from './utils/types'; + +export type ListScreenProps = { + navigation: NavigationProp; + examples: Examples; +}; + +export function ListScreen({navigation, examples}: ListScreenProps) { + const [wasClicked, setWasClicked] = useState([]); + + return ( + ( + { + navigation.navigate(name as any); + if (!wasClicked.includes(name)) { + setTimeout(() => setWasClicked([...wasClicked, name]), 500); + } + }} + wasClicked={wasClicked.includes(name)} + /> + )} + ItemSeparatorComponent={ItemSeparator} + /> + ); +} + +function ItemSeparator() { + return ; +} +type ItemProps = { + title: string; + onPress: () => void; + icon?: React.ReactNode; + wasClicked?: boolean; +}; +function Item({icon, title, onPress, wasClicked}: ItemProps) { + const Button = Platform.OS === 'macos' ? Pressable : TouchableOpacity; + return ( + + ); +} diff --git a/apps/examples/src/assets/adaptive-icon.png b/apps/common/example/assets/adaptive-icon.png similarity index 100% rename from apps/examples/src/assets/adaptive-icon.png rename to apps/common/example/assets/adaptive-icon.png diff --git a/apps/examples/src/assets/favicon.png b/apps/common/example/assets/favicon.png similarity index 100% rename from apps/examples/src/assets/favicon.png rename to apps/common/example/assets/favicon.png diff --git a/apps/examples/src/assets/icon.png b/apps/common/example/assets/icon.png similarity index 100% rename from apps/examples/src/assets/icon.png rename to apps/common/example/assets/icon.png diff --git a/apps/examples/src/assets/image.jpg b/apps/common/example/assets/image.jpg similarity index 100% rename from apps/examples/src/assets/image.jpg rename to apps/common/example/assets/image.jpg diff --git a/apps/examples/src/assets/office.jpg b/apps/common/example/assets/office.jpg similarity index 100% rename from apps/examples/src/assets/office.jpg rename to apps/common/example/assets/office.jpg diff --git a/apps/examples/src/assets/splash.png b/apps/common/example/assets/splash.png similarity index 100% rename from apps/examples/src/assets/splash.png rename to apps/common/example/assets/splash.png diff --git a/apps/examples/src/e2e/TestingView.tsx b/apps/common/example/e2e/TestingView.tsx similarity index 88% rename from apps/examples/src/e2e/TestingView.tsx rename to apps/common/example/e2e/TestingView.tsx index 5ca086b8c..cb699fd39 100644 --- a/apps/examples/src/e2e/TestingView.tsx +++ b/apps/common/example/e2e/TestingView.tsx @@ -1,10 +1,4 @@ -import React, { - Component, - useCallback, - useEffect, - useRef, - useState, -} from 'react'; +import React, {useCallback, useEffect, useRef, useState} from 'react'; import {Platform, Text, View} from 'react-native'; import * as RNSVG from 'react-native-svg'; import ViewShot from 'react-native-view-shot'; @@ -12,7 +6,7 @@ import ViewShot from 'react-native-view-shot'; const address = ['ios', 'web'].includes(Platform.OS) ? 'localhost' : '10.0.2.2'; const wsUri = `ws://${address}:7123`; -const TestingView = () => { +export const TestingView = () => { const wrapperRef = useRef(null); const [wsClient, setWsClient] = useState(null); const [renderedContent, setRenderedContent] = @@ -107,35 +101,11 @@ const TestingView = () => { ); }; -class TestingViewWrapper extends Component { - static title = 'E2E Testing'; - - render() { - return ; - } -} - -const samples = [TestingViewWrapper]; -const icon = ( - - - -); - function isFabric(): boolean { // @ts-expect-error nativeFabricUIManager is not yet included in the RN types return !!global?.nativeFabricUIManager; } -export {samples, icon}; - const createElementFromObject = ( element: keyof typeof RNSVG, props: any, diff --git a/apps/common/example/e2e/icon.tsx b/apps/common/example/e2e/icon.tsx new file mode 100644 index 000000000..a1d0be73e --- /dev/null +++ b/apps/common/example/e2e/icon.tsx @@ -0,0 +1,21 @@ +import React from 'react'; +import Svg, {Path, Rect} from 'react-native-svg'; + +export const icon = ( + + + + + + + + + + + +); diff --git a/apps/common/example/e2e/index.macos.tsx b/apps/common/example/e2e/index.macos.tsx new file mode 100644 index 000000000..3ed02637c --- /dev/null +++ b/apps/common/example/e2e/index.macos.tsx @@ -0,0 +1,5 @@ +import React from 'react'; +import {icon} from './icon'; + +const component = () => ; +export {component, icon}; diff --git a/apps/common/example/e2e/index.tsx b/apps/common/example/e2e/index.tsx new file mode 100644 index 000000000..8088e20db --- /dev/null +++ b/apps/common/example/e2e/index.tsx @@ -0,0 +1,5 @@ +import {icon} from './icon'; +import {TestingView} from './TestingView'; + +const component = TestingView; +export {component, icon}; diff --git a/apps/common/example/e2e/index.web.tsx b/apps/common/example/e2e/index.web.tsx new file mode 100644 index 000000000..3ed02637c --- /dev/null +++ b/apps/common/example/e2e/index.web.tsx @@ -0,0 +1,5 @@ +import React from 'react'; +import {icon} from './icon'; + +const component = () => ; +export {component, icon}; diff --git a/apps/common/example/examples/Circle.tsx b/apps/common/example/examples/Circle.tsx new file mode 100644 index 000000000..75f998907 --- /dev/null +++ b/apps/common/example/examples/Circle.tsx @@ -0,0 +1,74 @@ +import React from 'react'; +import {Circle, Svg} from 'react-native-svg'; + +function CircleExample() { + return ( + + + + ); +} + +CircleExample.title = 'Circle'; + +function StrokeCircle() { + return ( + + + + ); +} +StrokeCircle.title = 'Stroke Circle'; + +function StrokeOpacityCircle() { + return ( + + + + ); +} +StrokeOpacityCircle.title = 'Circle with strokeOpacity'; + +function PieCircle() { + return ( + + + + + ); +} +PieCircle.title = 'Draw a Pie shape with circle'; + +const icon = ( + + + +); +const samples = [CircleExample, StrokeCircle, StrokeOpacityCircle, PieCircle]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Clipping.tsx b/apps/common/example/examples/Clipping.tsx new file mode 100644 index 000000000..11c96e67c --- /dev/null +++ b/apps/common/example/examples/Clipping.tsx @@ -0,0 +1,132 @@ +import React from 'react'; +import { + Circle, + ClipPath, + Defs, + Ellipse, + G, + Path, + Polygon, + RadialGradient, + Rect, + Stop, + Svg, + Text, +} from 'react-native-svg'; + +function ClipPathElement() { + return ( + + + + + + + + + + + + + Q + + + + + + ); +} +ClipPathElement.title = 'Clip by set clip-path with a path data'; + +function ClipRule() { + return ( + + + + + + + + + + + + + + ); +} +ClipRule.title = 'Clip a group with clipRule="evenodd"'; + +function TextClipping() { + return ( + + + + + + + + + + + + + + + + + + NOT THE FACE + + + ); +} +TextClipping.title = 'Transform the text'; + +const icon = ( + + + + + + + + + + + + + +); +const samples = [ClipPathElement, ClipRule, TextClipping]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Ellipse.tsx b/apps/common/example/examples/Ellipse.tsx new file mode 100644 index 000000000..05a067bd7 --- /dev/null +++ b/apps/common/example/examples/Ellipse.tsx @@ -0,0 +1,59 @@ +import React from 'react'; +import {Ellipse, Svg} from 'react-native-svg'; + +function EllipseExample() { + return ( + + + + ); +} +EllipseExample.title = 'Ellipse'; + +function PileEllipses() { + return ( + + + + + + ); +} +PileEllipses.title = + 'The following example creates three ellipses on top of each other'; + +function CombinedEllipses() { + return ( + + + + + ); +} +CombinedEllipses.title = + 'The following example combines two ellipses (one yellow and one white)'; + +const icon = ( + + + +); +const samples = [EllipseExample, PileEllipses, CombinedEllipses]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Empty.tsx b/apps/common/example/examples/Empty.tsx new file mode 100644 index 000000000..cb915c0ed --- /dev/null +++ b/apps/common/example/examples/Empty.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import {Rect, Svg} from 'react-native-svg'; + +function EmptyExample() { + return ; +} +EmptyExample.title = ''; + +const icon = ( + + + +); +const samples = [EmptyExample]; + +export {icon, samples}; diff --git a/apps/examples/src/examples/FilterImage/FilterPicker.tsx b/apps/common/example/examples/FilterImage/FilterPicker.tsx similarity index 98% rename from apps/examples/src/examples/FilterImage/FilterPicker.tsx rename to apps/common/example/examples/FilterImage/FilterPicker.tsx index cea428cf5..a812f81ca 100644 --- a/apps/examples/src/examples/FilterImage/FilterPicker.tsx +++ b/apps/common/example/examples/FilterImage/FilterPicker.tsx @@ -69,7 +69,9 @@ type FilterKeys = | 'saturated' | 'boring'; const filterKeys = Object.keys(filters) as FilterKeys[]; -const FilterImagePickerExample = () => { + +FilterImagePickerExample.title = 'Filter picker'; +function FilterImagePickerExample() { const [currentFilter, setCurrentFilter] = useState('normal'); return ( @@ -104,8 +106,7 @@ const FilterImagePickerExample = () => { ); -}; -FilterImagePickerExample.title = 'Filter picker'; +} const styles = StyleSheet.create({ container: { @@ -136,6 +137,6 @@ const icon = ( style={{filter: 'saturate(2.5)'}} /> ); - const samples = [FilterImagePickerExample]; + export {icon, samples}; diff --git a/apps/examples/src/examples/FilterImage/LocalImage.tsx b/apps/common/example/examples/FilterImage/LocalImage.tsx similarity index 100% rename from apps/examples/src/examples/FilterImage/LocalImage.tsx rename to apps/common/example/examples/FilterImage/LocalImage.tsx index 22b45e27f..1fba7c2b3 100644 --- a/apps/examples/src/examples/FilterImage/LocalImage.tsx +++ b/apps/common/example/examples/FilterImage/LocalImage.tsx @@ -47,10 +47,10 @@ const icon = ( style={{filter: 'saturate(0.5)'}} /> ); - const samples = [ FilterImageLocalExampleStyleCSS, FilterImageLocalExampleStyleSVG, FilterImageLocalExamplePropSVG, ]; + export {icon, samples}; diff --git a/apps/examples/src/examples/FilterImage/RemoteImage.tsx b/apps/common/example/examples/FilterImage/RemoteImage.tsx similarity index 100% rename from apps/examples/src/examples/FilterImage/RemoteImage.tsx rename to apps/common/example/examples/FilterImage/RemoteImage.tsx index 02ac5f407..86d4a9e6b 100644 --- a/apps/examples/src/examples/FilterImage/RemoteImage.tsx +++ b/apps/common/example/examples/FilterImage/RemoteImage.tsx @@ -66,10 +66,10 @@ const styles = StyleSheet.create({ height: 200, }, }); - const samples = [ FilterImageRemoteExampleCSS, FilterImageRemoteExample, FilterImageFewFiltersExample, ]; + export {icon, samples}; diff --git a/apps/common/example/examples/FilterImage/index.tsx b/apps/common/example/examples/FilterImage/index.tsx new file mode 100644 index 000000000..5de31015d --- /dev/null +++ b/apps/common/example/examples/FilterImage/index.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import {FilterImage} from 'react-native-svg/filter-image'; +import * as FilterPicker from './FilterPicker'; +import * as LocalImage from './LocalImage'; +import * as RemoteImage from './RemoteImage'; + +const samples = { + LocalImage, + RemoteImage, + FilterPicker, +}; + +const icon = ( + +); + +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeBlend.tsx b/apps/common/example/examples/Filters/FeBlend.tsx new file mode 100644 index 000000000..139976e24 --- /dev/null +++ b/apps/common/example/examples/Filters/FeBlend.tsx @@ -0,0 +1,143 @@ +import React from 'react'; +import { + Circle, + FeBlend, + FeFlood, + Filter, + G, + Image, + LinearGradient, + Rect, + Stop, + Svg, + Text, +} from 'react-native-svg'; + +W3Blend.title = 'W3 FeBlend example'; +function W3Blend() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Normal + + + Multiply + + + Screen + + + Darken + + + Lighten + + + + + ); +} + +SimpleExample.title = 'MDN example'; +function SimpleExample() { + return ( + + + + + + + + + ); +} + +MDNExample.title = 'MDN example'; +function MDNExample() { + return ( + + + + + + + + ); +} + +const icon = ( + + + + + + + + +); +const samples = [W3Blend, SimpleExample, MDNExample]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeColorMatrix.tsx b/apps/common/example/examples/Filters/FeColorMatrix.tsx new file mode 100644 index 000000000..4edb34e58 --- /dev/null +++ b/apps/common/example/examples/Filters/FeColorMatrix.tsx @@ -0,0 +1,121 @@ +import React from 'react'; +import {Circle, FeColorMatrix, Filter, G, Svg} from 'react-native-svg'; + +function ReferenceExample() { + return ( + + + + + + ); +} +ReferenceExample.title = 'Reference'; + +function IdentityExample() { + return ( + + + + + + + + + + + ); +} +IdentityExample.title = 'Identity matrix'; + +function RgbToGreenExample() { + return ( + + + + + + + + + + + ); +} +RgbToGreenExample.title = 'RGB to Green'; + +function SaturateExample() { + return ( + + + + + + + + + + + ); +} +SaturateExample.title = 'Saturate'; + +function HueRotateExample() { + return ( + + + + + + + + + + + ); +} +HueRotateExample.title = 'Hue Rotate'; + +function LuminanceToAlphaExample() { + return ( + + + + + + + + + + + ); +} +LuminanceToAlphaExample.title = 'Luminance to alpha'; + +const icon = ( + + + + + + + + + + +); +const samples = [ + ReferenceExample, + IdentityExample, + RgbToGreenExample, + SaturateExample, + HueRotateExample, + LuminanceToAlphaExample, +]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeComposite.tsx b/apps/common/example/examples/Filters/FeComposite.tsx new file mode 100644 index 000000000..e7485b619 --- /dev/null +++ b/apps/common/example/examples/Filters/FeComposite.tsx @@ -0,0 +1,424 @@ +import {Image, Text as RNText, View} from 'react-native'; +import { + Defs, + FeComposite, + FeFlood, + FeMerge, + FeMergeNode, + Filter, + G, + Path, + Rect, + Svg, + Text, + Use, +} from 'react-native-svg'; + +import React from 'react'; + +QuickTestExample.title = 'Quick Test Example'; +function QuickTestExample() { + return ( + + + + + + + + ); +} + +ReferenceExample.title = 'FeComposite W3 reference'; +function ReferenceExample() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + opacity 1.0 + + + (with FeFlood) + + + opacity 0.5 + + + (with FeFlood) + + + + + + + over + + + + + + + in + + + + + + + out + + + + + + + atop + + + + + + + xor + + + + + + + arithmetic + + + + + + opacity 1.0 + + + (without FeFlood) + + + opacity 0.5 + + + (without FeFlood) + + + + + + + over + + + + + + + in + + + + + + + out + + + + + + + atop + + + + + + + xor + + + + + + + arithmetic + + + + + + W3 Reference + + + ); +} + +const icon = ( + + + + + + + +); +const samples = [QuickTestExample, ReferenceExample]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeDropShadow.tsx b/apps/common/example/examples/Filters/FeDropShadow.tsx new file mode 100644 index 000000000..0f48791ee --- /dev/null +++ b/apps/common/example/examples/Filters/FeDropShadow.tsx @@ -0,0 +1,46 @@ +import React from 'react'; +import {Circle, FeDropShadow, Filter, Svg} from 'react-native-svg'; + +BasicMDN.title = 'Basic MDN example'; +function BasicMDN() { + return ( + + + + + + + + + + + + + + + ); +} + +const icon = ( + + + + + + +); +const samples = [BasicMDN]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeFlood.tsx b/apps/common/example/examples/Filters/FeFlood.tsx new file mode 100644 index 000000000..445f52eb5 --- /dev/null +++ b/apps/common/example/examples/Filters/FeFlood.tsx @@ -0,0 +1,134 @@ +import React from 'react'; +import { + Circle, + FeFlood, + FeMerge, + FeMergeNode, + Filter, + G, + Line, + Rect, + Svg, +} from 'react-native-svg'; + +BasicFlood.title = 'Basic MDN example with Use'; +function BasicFlood() { + return ( + + + + + + + ); +} + +TestCase1.title = 'Custom Test Case 1'; +function TestCase1() { + return ( + + + + + + + + ); +} + +TestCase2.title = 'Custom Test Case 2'; +function TestCase2() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + + + ); +} + +const icon = ( + + + + + + + +); +const samples = [BasicFlood, TestCase1, TestCase2]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeGaussianBlur.tsx b/apps/common/example/examples/Filters/FeGaussianBlur.tsx new file mode 100644 index 000000000..5c294079e --- /dev/null +++ b/apps/common/example/examples/Filters/FeGaussianBlur.tsx @@ -0,0 +1,85 @@ +import React from 'react'; +import {Circle, FeGaussianBlur, Filter, G, Svg} from 'react-native-svg'; + +function StdDeviation3Example() { + return ( + + + + + + + + + + + ); +} +StdDeviation3Example.title = 'stdDeviation="3"'; + +function StdDeviation7Example() { + return ( + + + + + + + + + + + ); +} +StdDeviation7Example.title = 'stdDeviation="7"'; +function StdDeviation150Example() { + return ( + + + + + + + + + + + ); +} +StdDeviation150Example.title = 'stdDeviation="15 0"'; + +function StdDeviation025Example() { + return ( + + + + + + + + + + + ); +} +StdDeviation025Example.title = 'stdDeviation="0 25"'; + +const icon = ( + + + + + + + + + + +); +const samples = [ + StdDeviation3Example, + StdDeviation7Example, + StdDeviation150Example, + StdDeviation025Example, +]; +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeMerge.tsx b/apps/common/example/examples/Filters/FeMerge.tsx new file mode 100644 index 000000000..1d4a424db --- /dev/null +++ b/apps/common/example/examples/Filters/FeMerge.tsx @@ -0,0 +1,86 @@ +import React from 'react'; +import { + Svg, + FeColorMatrix, + Filter, + FeMerge, + FeMergeNode, + Rect, + FeOffset, +} from 'react-native-svg'; + +function WithOffsetsExample() { + return ( + + + + + + + + + + + + + ); +} +WithOffsetsExample.title = 'Merge with SourceGraphic and offsets'; + +function WithHueRotateExample() { + return ( + + + + + + + + + + + + ); +} +WithHueRotateExample.title = 'Merge with SourceGraphic and HueRotate'; + +const icon = ( + + + + + + + + + + +); +const samples = [WithOffsetsExample, WithHueRotateExample]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Filters/FeOffset.tsx b/apps/common/example/examples/Filters/FeOffset.tsx new file mode 100644 index 000000000..a828a60ec --- /dev/null +++ b/apps/common/example/examples/Filters/FeOffset.tsx @@ -0,0 +1,45 @@ +import React from 'react'; +import {FeOffset, Filter, Rect, Svg} from 'react-native-svg'; + +function ReferenceExample() { + return ( + + + + + + + + + + ); +} +ReferenceExample.title = 'Offset'; + +const icon = ( + + + + + + + +); +const samples = [ReferenceExample]; + +export {icon, samples}; diff --git a/apps/examples/src/examples/Filters/ReanimatedFeColorMatrix.tsx b/apps/common/example/examples/Filters/ReanimatedFeColorMatrix.tsx similarity index 100% rename from apps/examples/src/examples/Filters/ReanimatedFeColorMatrix.tsx rename to apps/common/example/examples/Filters/ReanimatedFeColorMatrix.tsx index 27581e8bd..b128fcdb1 100644 --- a/apps/examples/src/examples/Filters/ReanimatedFeColorMatrix.tsx +++ b/apps/common/example/examples/Filters/ReanimatedFeColorMatrix.tsx @@ -51,6 +51,6 @@ const icon = ( ); - const samples = [ReanimatedHueRotateExample]; + export {icon, samples}; diff --git a/apps/common/example/examples/Filters/feComposite.png b/apps/common/example/examples/Filters/feComposite.png new file mode 100644 index 000000000..d1605daf5 Binary files /dev/null and b/apps/common/example/examples/Filters/feComposite.png differ diff --git a/apps/common/example/examples/Filters/index.tsx b/apps/common/example/examples/Filters/index.tsx new file mode 100644 index 000000000..36069573c --- /dev/null +++ b/apps/common/example/examples/Filters/index.tsx @@ -0,0 +1,33 @@ +import React from 'react'; +import Svg, {Circle} from 'react-native-svg'; +import * as FeBlend from './FeBlend'; +import * as FeColorMatrix from './FeColorMatrix'; +import * as FeComposite from './FeComposite'; +import * as FeDropShadow from './FeDropShadow'; +import * as FeFlood from './FeFlood'; +import * as FeGaussianBlur from './FeGaussianBlur'; +import * as FeMerge from './FeMerge'; +import * as FeOffset from './FeOffset'; +import * as ReanimatedFeColorMatrix from './ReanimatedFeColorMatrix'; + +const samples = { + FeBlend, + FeColorMatrix, + FeComposite, + FeDropShadow, + FeFlood, + FeGaussianBlur, + FeMerge, + FeOffset, + ReanimatedFeColorMatrix, +}; + +const icon = ( + + + + + +); + +export {icon, samples}; diff --git a/apps/common/example/examples/G.tsx b/apps/common/example/examples/G.tsx new file mode 100644 index 000000000..d9abc2c7c --- /dev/null +++ b/apps/common/example/examples/G.tsx @@ -0,0 +1,88 @@ +import React, {useEffect, useState} from 'react'; +import {Circle, G, Line, Rect, Svg, Text, Use} from 'react-native-svg'; + +const GExample = () => { + const [fill, setFill] = useState('purple'); + + useEffect(() => { + let mounted = true; + + const timer = setTimeout(() => { + if (mounted) { + setFill('#856'); + } + }, 2000); + + return () => { + mounted = false; + clearTimeout(timer); + }; + }, []); + + return ( + + + + + + + + + + ); +}; + +GExample.title = 'G children props inherit'; + +function GTransform() { + return ( + + + + + + Text grouped with shapes + + + + + ); +} +GTransform.title = 'G transform'; + +const icon = ( + + + + + + + + + +); +const samples = [GExample, GTransform]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Gradients.tsx b/apps/common/example/examples/Gradients.tsx new file mode 100644 index 000000000..3b878ccd2 --- /dev/null +++ b/apps/common/example/examples/Gradients.tsx @@ -0,0 +1,282 @@ +import React from 'react'; +import {View} from 'react-native'; +import { + Circle, + Defs, + Ellipse, + LinearGradient, + RadialGradient, + Rect, + Stop, + Svg, + Text, +} from 'react-native-svg'; + +function LinearGradientHorizontal() { + return ( + + + + + + + + + + ); +} +LinearGradientHorizontal.title = + 'Define an ellipse with a horizontal linear gradient from yellow to red'; + +function LinearGradientHorizontalBug() { + return ( + + + + + + + + + + ); +} +LinearGradientHorizontalBug.title = + 'Define an ellipse with a horizontal linear gradient from transparent yellow to red, buggy on android'; + +function LinearGradientRotated() { + return ( + + + + + + + + + + ); +} +LinearGradientRotated.title = + 'Define an ellipse with a rotated linear gradient from yellow to red'; + +function GradientUnits() { + return ( + + + + + + + + + + + + + + + + + + + + + ); +} +GradientUnits.title = 'Compare gradientUnits="userSpaceOnUse" with default'; + +function LinearGradientPercent() { + return ( + + + + + + + + + x1=0% + + + x2=100% + + + + ); +} +LinearGradientPercent.title = 'Define a linear gradient in percent unit'; + +function RadialGradientExample() { + return ( + + + + + + + + + + + + ); +} +RadialGradientExample.title = + 'Define an ellipse with a radial gradient from yellow to purple'; + +function RadialGradientPercent() { + return ( + + + + + + + + + + ); +} +RadialGradientPercent.title = 'Define a radial gradient in percent unit'; + +function RadialGradientPart() { + return ( + + + + + + + + + + ); +} +RadialGradientPart.title = + 'Define another ellipse with a radial gradient from white to blue'; + +function FillGradientWithOpacity() { + return ( + + + + + + + + + + ); +} +FillGradientWithOpacity.title = 'Fill a radial gradient with fillOpacity prop'; + +function FillGradientInRect() { + return ( + + + + + + + + + + ); +} +FillGradientInRect.title = 'Fill a radial gradient inside a rect and stroke it'; + +const icon = ( + + + + + + + + + +); +const samples = [ + LinearGradientHorizontal, + LinearGradientHorizontalBug, + LinearGradientRotated, + GradientUnits, + LinearGradientPercent, + RadialGradientExample, + RadialGradientPercent, + RadialGradientPart, + FillGradientWithOpacity, + FillGradientInRect, +]; + +export {icon, samples}; diff --git a/apps/examples/src/examples/Image.tsx b/apps/common/example/examples/Image.tsx similarity index 89% rename from apps/examples/src/examples/Image.tsx rename to apps/common/example/examples/Image.tsx index 27f7b701a..92b31c33a 100644 --- a/apps/examples/src/examples/Image.tsx +++ b/apps/common/example/examples/Image.tsx @@ -1,94 +1,88 @@ -import React, {Component} from 'react'; +import React from 'react'; import {Alert, Platform} from 'react-native'; -import {Svg, Circle, Text, Rect, Defs, ClipPath, Image} from 'react-native-svg'; +import {Circle, ClipPath, Defs, Image, Rect, Svg, Text} from 'react-native-svg'; -class ImageExample extends Component { - static title = 'Draw Image with preserveAspectRatio prop'; - render() { - return ( - - - - - - - - - - - HOGWARTS - - - ); - } +function ImageExample() { + return ( + + + + + + + + + + + HOGWARTS + + + ); } +ImageExample.title = 'Draw Image with preserveAspectRatio prop'; -class ClipImage extends Component { - static title = 'Clip Image'; - render() { - return ( - - - - - - - Alert.alert('press on Image')} - x="5%" - y="5%" - width="90%" - height="90%" - href={require('../assets/image.jpg')} - opacity="0.6" - clipPath="url(#clip-image)" - /> - - HOGWARTS - - - ); - } +function ClipImage() { + return ( + + + + + + + Alert.alert('press on Image')} + x="5%" + y="5%" + width="90%" + height="90%" + href={require('../assets/image.jpg')} + opacity="0.6" + clipPath="url(#clip-image)" + /> + + HOGWARTS + + + ); } +ClipImage.title = 'Clip Image'; -class DataURI extends Component { - static title = 'Data URI'; - render() { - return ( - - - - ); - } +function DataURI() { + return ( + + + + ); } +DataURI.title = 'Data URI'; const icon = ( @@ -101,7 +95,6 @@ const icon = ( /> ); - const samples = [ImageExample, ClipImage, DataURI]; export {icon, samples}; diff --git a/apps/common/example/examples/Line.tsx b/apps/common/example/examples/Line.tsx new file mode 100644 index 000000000..cd1b03219 --- /dev/null +++ b/apps/common/example/examples/Line.tsx @@ -0,0 +1,55 @@ +import React from 'react'; +import {Line, Svg} from 'react-native-svg'; + +function LineExample() { + return ( + + + + ); +} +LineExample.title = 'Line'; + +function LineWithStrokeLinecap() { + return ( + + + + + + ); +} +LineWithStrokeLinecap.title = 'Line'; + +const icon = ( + + + +); +const samples = [LineExample, LineWithStrokeLinecap]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Markers.tsx b/apps/common/example/examples/Markers.tsx new file mode 100644 index 000000000..be91eb6db --- /dev/null +++ b/apps/common/example/examples/Markers.tsx @@ -0,0 +1,207 @@ +import React from 'react'; +import { + Circle, + Defs, + Ellipse, + Line, + Marker, + Path, + Polygon, + Rect, + Svg, +} from 'react-native-svg'; + +function EllipseExample() { + return ( + + + + + + + + + ); +} +EllipseExample.title = 'Circle shaped marker on ellipse'; + +function LineExample() { + return ( + + + + + + + + + ); +} +LineExample.title = 'Triangle shaped marker on line'; + +function CircleExample() { + return ( + + + + + + + + + ); +} +CircleExample.title = 'Rect shaped marker on circle'; + +function RectExample() { + return ( + + + + + + + + + ); +} +RectExample.title = 'Ellipse shaped marker on rect'; + +function PathExample() { + return ( + + + + + + + + + ); +} +PathExample.title = 'Path shaped marker on line'; + +const icon = ( + + + + + + + + +); +const samples = [ + EllipseExample, + LineExample, + CircleExample, + RectExample, + PathExample, +]; +export {icon, samples}; diff --git a/apps/common/example/examples/Mask.tsx b/apps/common/example/examples/Mask.tsx new file mode 100644 index 000000000..4837eea80 --- /dev/null +++ b/apps/common/example/examples/Mask.tsx @@ -0,0 +1,137 @@ +import React from 'react'; +import {StyleSheet, View} from 'react-native'; +import { + Circle, + Defs, + LinearGradient, + Mask, + Path, + Polygon, + Rect, + Stop, + Svg, + Text, +} from 'react-native-svg'; + +const styles = StyleSheet.create({ + container: { + flex: 1, + height: 100, + width: 200, + }, +}); + +function SimpleMask() { + return ( + + + + + + + + + + + + ); +} +SimpleMask.title = 'Simple svg with mask'; + +function AnotherMask() { + return ( + + + + + + + + + + + + ); +} +AnotherMask.title = 'Another svg with mask'; + +function MaskWithText() { + return ( + + + + + + + + + + + + + {'This text is under the rectangle'} + + + + + ); +} +MaskWithText.title = 'Svg with with text and a mask with gradient'; + +const icon = ( + + + + + + + + + +); +const samples = [SimpleMask, AnotherMask, MaskWithText]; + +export {icon, samples}; diff --git a/apps/common/example/examples/PanResponder.tsx b/apps/common/example/examples/PanResponder.tsx new file mode 100644 index 000000000..198425920 --- /dev/null +++ b/apps/common/example/examples/PanResponder.tsx @@ -0,0 +1,96 @@ +import React, {useRef} from 'react'; +import { + Animated, + PanResponder, + TouchableWithoutFeedback, + View, +} from 'react-native'; +import {G, Line, Path, Polyline, Svg, Text} from 'react-native-svg'; +const AnimatedSvg = Animated.createAnimatedComponent(Svg); + +const zeroDelta = {x: 0, y: 0}; + +const PanExample = () => { + const xy = useRef(new Animated.ValueXY()).current; + let offset = zeroDelta; + + xy.addListener(flatOffset => { + offset = flatOffset; + }); + + const panResponder = useRef( + PanResponder.create({ + onStartShouldSetPanResponder: () => true, + onMoveShouldSetPanResponderCapture: () => true, + onPanResponderGrant: () => { + xy.setOffset(offset); + xy.setValue(zeroDelta); + }, + onPanResponderMove: Animated.event([null, {dx: xy.x, dy: xy.y}], { + useNativeDriver: false, + }), + onPanResponderRelease: () => { + xy.flattenOffset(); + }, + }), + ).current; + + const panStyle = { + transform: xy.getTranslateTransform(), + }; + + return ( + + + + + + STAR + + + + + ); +}; + +PanExample.title = 'Bind PanResponder on the SVG Shape'; + +const icon = ( + + + + + + + + + + +); +const shouldBeRenderInView = true; +const samples = [PanExample]; + +export {icon, samples, shouldBeRenderInView}; diff --git a/apps/common/example/examples/Path.tsx b/apps/common/example/examples/Path.tsx new file mode 100644 index 000000000..09e21b640 --- /dev/null +++ b/apps/common/example/examples/Path.tsx @@ -0,0 +1,92 @@ +import React from 'react'; +import {Circle, G, Path, Svg, Text} from 'react-native-svg'; + +function PathExample() { + return ( + + + + + + ); +} +PathExample.title = 'Path'; + +function UnclosedPath() { + return ( + + + + ); +} +UnclosedPath.title = 'Unclosed paths'; + +function BezierCurve() { + return ( + + + + + + + + + + + + + + A + + + B + + + C + + + + + ); +} +BezierCurve.title = + 'The following example creates a quadratic Bézier curve, where A and C are the start and end points, B is the control point'; + +const icon = ( + + + +); +const samples = [PathExample, UnclosedPath, BezierCurve]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Polygon.tsx b/apps/common/example/examples/Polygon.tsx new file mode 100644 index 000000000..f0ce1bc34 --- /dev/null +++ b/apps/common/example/examples/Polygon.tsx @@ -0,0 +1,84 @@ +import React from 'react'; +import {G, Path, Polygon, Svg} from 'react-native-svg'; + +function PolygonExample() { + return ( + + + + ); +} +PolygonExample.title = + 'The following example creates a polygon with three sides'; + +function FourSidePolygon() { + return ( + + + + ); +} +FourSidePolygon.title = + 'The following example creates a polygon with four sides'; + +function StarPolygon() { + return ( + + + + + + ); +} +StarPolygon.title = 'Use the element to create a star'; + +function EvenOddPolygon() { + return ( + + + + + + + + + + + + ); +} +EvenOddPolygon.title = 'Change the fill-rule property to "evenodd"'; + +const icon = ( + + + +); +const samples = [PolygonExample, FourSidePolygon, StarPolygon, EvenOddPolygon]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Polyline.tsx b/apps/common/example/examples/Polyline.tsx new file mode 100644 index 000000000..388b2bcfa --- /dev/null +++ b/apps/common/example/examples/Polyline.tsx @@ -0,0 +1,82 @@ +import React from 'react'; +import {Polyline, Svg} from 'react-native-svg'; + +function PolylineExample() { + return ( + + + + ); +} +PolylineExample.title = + 'The element is used to create any shape that consists of only straight lines'; + +function StraightLines() { + return ( + + + + ); +} +StraightLines.title = 'Another example with only straight lines'; + +function PolylineFill() { + return ( + + + + ); +} +PolylineFill.title = 'Fill Polyline'; + +function PolylineFillStroke() { + return ( + + + + ); +} +PolylineFillStroke.title = + 'Stroke Polyline with strokeLinecap and strokeLinejoin'; + +const icon = ( + + + +); + +const samples = [ + PolylineExample, + StraightLines, + PolylineFill, + PolylineFillStroke, +]; + +export {icon, samples}; diff --git a/apps/examples/src/examples/Reanimated.tsx b/apps/common/example/examples/Reanimated.tsx similarity index 94% rename from apps/examples/src/examples/Reanimated.tsx rename to apps/common/example/examples/Reanimated.tsx index 43c8567f7..fedfbc9d1 100644 --- a/apps/examples/src/examples/Reanimated.tsx +++ b/apps/common/example/examples/Reanimated.tsx @@ -3,12 +3,12 @@ import {StyleSheet, Text} from 'react-native'; import Reanimated, { useAnimatedProps, useSharedValue, + withClamp, withRepeat, withSpring, withTiming, - withClamp, } from 'react-native-reanimated'; -import {Svg, Rect} from 'react-native-svg'; +import {Rect, Svg} from 'react-native-svg'; // @ts-ignore broken reanimated types const ReanimatedRect = Reanimated.createAnimatedComponent(Rect); @@ -37,6 +37,7 @@ function ReanimatedRectExample() { } ReanimatedRectExample.title = 'reanimated rectangle'; +const title = 'Reanimated'; const samples = [ReanimatedRectExample]; const style = StyleSheet.create({text: {width: 30, height: 30}}); diff --git a/apps/common/example/examples/Rect.tsx b/apps/common/example/examples/Rect.tsx new file mode 100644 index 000000000..5c3e3d120 --- /dev/null +++ b/apps/common/example/examples/Rect.tsx @@ -0,0 +1,121 @@ +import React from 'react'; +import {ScrollView} from 'react-native'; +import {Rect, Svg} from 'react-native-svg'; + +function RectExample() { + return ( + + + + + + ); +} +RectExample.title = 'Rect'; + +function RectStrokeFill() { + return ( + + + + ); +} +RectStrokeFill.title = '`stroke` and `fill` Rect'; + +function RoundedRect() { + return ( + + + + ); +} +RoundedRect.title = 'A rectangle with rounded corners'; + +function EllipseRect() { + return ( + + + + ); +} +EllipseRect.title = 'Rect with different `rx` and `ry`'; + +function RoundOverflowRect() { + return ( + + + + ); +} +RoundOverflowRect.title = 'Rect with `rx` or `ry` overflowed'; + +const icon = ( + + + +); +const samples = [ + RectExample, + RectStrokeFill, + RoundedRect, + EllipseRect, + RoundOverflowRect, +]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Reusable.tsx b/apps/common/example/examples/Reusable.tsx new file mode 100644 index 000000000..a73ab81ed --- /dev/null +++ b/apps/common/example/examples/Reusable.tsx @@ -0,0 +1,160 @@ +import React from 'react'; +import { + Circle, + ClipPath, + Defs, + G, + LinearGradient, + Path, + RadialGradient, + Rect, + Stop, + Svg, + Symbol, + Use, +} from 'react-native-svg'; + +function UseExample() { + return ( + + + + + + + + + + + + ); +} +UseExample.title = 'Reuse svg code'; + +function UseShapes() { + return ( + + + + + + + + + ); +} +UseShapes.title = 'Using Shapes Outside of a Defs Element'; + +function DefsExample() { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + ); +} +DefsExample.title = 'Basic Defs usage'; + +function SymbolExample() { + return ( + + + + + + + + + + ); +} +SymbolExample.title = 'Symbol example, reuse elements with viewBox prop'; + +const icon = ( + + + + + + + + + + + + +); +const samples = [UseExample, UseShapes, DefsExample, SymbolExample]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Stroking.tsx b/apps/common/example/examples/Stroking.tsx new file mode 100644 index 000000000..3b836bfde --- /dev/null +++ b/apps/common/example/examples/Stroking.tsx @@ -0,0 +1,152 @@ +import React from 'react'; +import { + Circle, + ClipPath, + Defs, + G, + Path, + Polyline, + RadialGradient, + Rect, + Stop, + Svg, + Text, +} from 'react-native-svg'; + +function StrokeExample() { + return ( + + + + + + + + ); +} +StrokeExample.title = + 'The stroke property defines the color of a line, text or outline of an element'; + +function StrokeLinecap() { + return ( + + + + + + + + ); +} +StrokeLinecap.title = + 'The strokeLinecap property defines different types of endings to an open path'; + +function StrokeDasharray() { + return ( + + + + + + + + ); +} +StrokeDasharray.title = 'strokeDasharray'; + +function StrokeDashoffset() { + return ( + + + + STROKE + + + ); +} +StrokeDashoffset.title = + 'the strokeDashoffset attribute specifies the distance into the dash pattern to start the dash.'; + +function StrokePattern() { + return ( + + + + + + + + + + + + + + ); +} +StrokePattern.title = 'Advanced stroke example.'; + +const icon = ( + + + + + +); +const samples = [ + StrokeExample, + StrokeLinecap, + StrokeDasharray, + StrokeDashoffset, + StrokePattern, +]; +export {icon, samples}; diff --git a/apps/common/example/examples/Svg.tsx b/apps/common/example/examples/Svg.tsx new file mode 100644 index 000000000..95891b36a --- /dev/null +++ b/apps/common/example/examples/Svg.tsx @@ -0,0 +1,186 @@ +import React, {useRef, useState} from 'react'; +import {Image, StyleSheet, View} from 'react-native'; +import {Circle, G, Line, Path, Rect, Svg} from 'react-native-svg'; + +const styles = StyleSheet.create({ + container: { + flex: 1, + height: 100, + width: 200, + }, + svg: { + flex: 1, + alignSelf: 'stretch', + }, +}); + +function SvgExample() { + return ( + + + + + ); +} +SvgExample.title = 'SVG'; + +function SvgOpacity() { + return ( + + + + + ); +} +SvgOpacity.title = 'SVG with `opacity` prop'; + +function SvgViewbox() { + return ( + + + + + + + + ); +} +SvgViewbox.title = + 'SVG with `viewBox="40 20 100 40" and preserveAspectRatio="none"'; + +function SvgLayout() { + return ( + + + + + + + + ); +} +SvgLayout.title = 'SVG with flex layout'; + +function SvgNativeMethods() { + const [base64, setBase64] = useState(''); + const rootRef = useRef(null); + const circleRef = useRef(null); + + const alert = () => { + console.log('PRESSED'); + rootRef.current?.toDataURL(data => { + setBase64(data); + }); + + console.log(circleRef.current?.isPointInFill({x: 200, y: 100})); + console.log(circleRef.current?.isPointInStroke({x: 200, y: 100})); + console.log(circleRef.current?.getTotalLength()); + console.log(circleRef.current?.getPointAtLength(25)); + console.log(circleRef.current?.getBBox({fill: true})); + console.log(circleRef.current?.getCTM()); + console.log(circleRef.current?.getScreenCTM()); + }; + return ( + <> + + + + + + + + {base64 && ( + + )} + + + ); +} +SvgNativeMethods.title = + 'Tap the shapes to render the Image below based on the base64-data of the Svg'; + +const icon = ( + + + + +); +const samples = [ + SvgExample, + SvgOpacity, + SvgViewbox, + SvgLayout, + SvgNativeMethods, +]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Text.tsx b/apps/common/example/examples/Text.tsx new file mode 100644 index 000000000..147bd2e58 --- /dev/null +++ b/apps/common/example/examples/Text.tsx @@ -0,0 +1,170 @@ +import React from 'react'; +import {Text as RNText, ScrollView} from 'react-native'; +import { + Defs, + G, + LinearGradient, + Path, + Stop, + Svg, + Text, + TextPath, + TSpan, +} from 'react-native-svg'; + +function TextExample() { + return ( + + Text + + + I love SVG! + + + + ); +} +TextExample.title = 'Text'; + +function TextRotate() { + return ( + + + I love SVG + + + I love SVG + + + I love SVG + + + ); +} +TextRotate.title = 'Transform the text'; + +function TextStroke() { + return ( + + + + + + + + + {['STROKE TEXT']} + + + ); +} +TextStroke.title = 'Stroke the text'; + +function TextFill() { + return ( + + + + + + + + + + FILL TEXT + + + ); +} +TextFill.title = 'Fill the text with LinearGradient'; + +const path = ` +M 10 20 +C 40 10 60 0 80 10 +C 100 20 120 30 140 20 +C 160 10 180 10 180 10 +`; +function TextPathExample() { + return ( + + + + + + + + We go up and down, + + then up again + + + + + + + ); +} +TextPathExample.title = 'Draw text along path'; + +function TSpanExample() { + return ( + + + tspan line 1 + + tspan line 2 + + + tspan line 3 + + + + 12345 + + 6 + 7 + + + 89a + + + + delta on text + + + ); +} +TSpanExample.title = 'TSpan nest'; + +const icon = ( + + + 字 + + +); +const samples = [ + TextExample, + TextRotate, + TextStroke, + TextFill, + TextPathExample, + TSpanExample, +]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Text.windows.tsx b/apps/common/example/examples/Text.windows.tsx new file mode 100644 index 000000000..6ad549c01 --- /dev/null +++ b/apps/common/example/examples/Text.windows.tsx @@ -0,0 +1,157 @@ +import React from 'react'; +import { + Defs, + G, + LinearGradient, + Path, + Stop, + Svg, + Text, + TSpan, +} from 'react-native-svg'; + +function TextExample() { + return ( + + + I love SVG! + + + ); +} +TextExample.title = 'Text'; + +function TextRotate() { + return ( + + + I love SVG + + + I love SVG + + + I love SVG + + + ); +} +TextRotate.title = 'Transform the text'; + +function TextStroke() { + return ( + + + + + + + + + {['STROKE TEXT']} + + + ); +} +TextStroke.title = 'Stroke the text'; + +function TextFill() { + return ( + + + + + + + + + + FILL TEXT + + + ); +} +TextFill.title = 'Fill the text with LinearGradient'; + +const path = ` +M 10 20 +C 40 10 60 0 80 10 +C 100 20 120 30 140 20 +C 160 10 180 10 180 10 +`; +function TextPathExample() { + return ( + + + + + + TextPath not implemented + + + + ); +} + +function TSpanExample() { + return ( + + + tspan line 1 + + tspan line 2 + + + tspan line 3 + + + + 12345 + + 6 + 7 + + + 89a + + + + delta on text + + + ); +} +TSpanExample.title = 'TSpan nest'; + +const icon = ( + + + 字 + + +); +const samples = [ + TextExample, + TextRotate, + TextStroke, + TextFill, + TextPathExample, + TSpanExample, +]; + +export {icon, samples}; diff --git a/apps/common/example/examples/TouchEvents.tsx b/apps/common/example/examples/TouchEvents.tsx new file mode 100644 index 000000000..c822d3a50 --- /dev/null +++ b/apps/common/example/examples/TouchEvents.tsx @@ -0,0 +1,111 @@ +import React, {useState} from 'react'; +import {Alert} from 'react-native'; +import { + Circle, + ClipPath, + Defs, + G, + Path, + Rect, + Svg, + Text, +} from 'react-native-svg'; + +function PressExample() { + return ( + + Alert.alert('Press on Circle')} + /> + Alert.alert('Long press on Rect')} + /> + + + ); +} +PressExample.title = + 'Press on the red circle or long press on the blue rectangle to trigger the events'; + +function HoverExample() { + const [hover, setHover] = useState(false); + + const toggle = () => { + setHover(!hover); + }; + + return ( + + + + + + + + + ); +} + +HoverExample.title = 'Hover the svg path'; + +function GroupExample() { + return ( + + Alert.alert('Pressed on G')} scale="1.4"> + + Alert.alert('Pressed on Text')}> + H + + + + + ); +} +GroupExample.title = 'Bind touch events callback on Group element with viewBox'; + +const icon = ( + + + + +); +const samples = [PressExample, HoverExample, GroupExample]; + +export {icon, samples}; diff --git a/apps/common/example/examples/Transforms.tsx b/apps/common/example/examples/Transforms.tsx new file mode 100644 index 000000000..b4c0b5285 --- /dev/null +++ b/apps/common/example/examples/Transforms.tsx @@ -0,0 +1,147 @@ +import React from 'react'; +import {Platform} from 'react-native'; +import { + Circle, + Defs, + G, + Pattern, + RadialGradient, + Rect, + Stop, + Svg, + SvgXml, +} from 'react-native-svg'; + +const patternXml = ` + + + + + + + + +`; + +function PatternTransformExample() { + return ( + <> + + + + + + + + + + + + + + + + + + + + + + {Platform.OS !== 'web' && ( + + )} + + ); +} +PatternTransformExample.title = 'Pattern transform'; + +function GradientTransformExample() { + return ( + + + + + + + + + + + + + + + + ); +} +GradientTransformExample.title = 'Gradient transform'; + +const icon = ( + + + + + + +); +const samples = [PatternTransformExample, GradientTransformExample]; + +export {icon, samples}; diff --git a/apps/common/example/examples/index.tsx b/apps/common/example/examples/index.tsx new file mode 100644 index 000000000..e2a6c54d5 --- /dev/null +++ b/apps/common/example/examples/index.tsx @@ -0,0 +1,47 @@ +import * as Circle from './Circle'; +import * as Clipping from './Clipping'; +import * as Empty from './Empty'; +import * as Ellipse from './Ellipse'; +import * as G from './G'; +import * as Gradients from './Gradients'; +import * as Image from './Image'; +import * as Line from './Line'; +import * as Markers from './Markers'; +import * as Mask from './Mask'; +import * as PanResponder from './PanResponder'; +import * as Path from './Path'; +import * as Polygon from './Polygon'; +import * as Polyline from './Polyline'; +import * as Reanimated from './Reanimated'; +import * as Rect from './Rect'; +import * as Reusable from './Reusable'; +import * as Stroking from './Stroking'; +import * as Svg from './Svg'; +import * as Text from './Text'; +import * as TouchEvents from './TouchEvents'; +import * as Transforms from './Transforms'; + +export const examples = { + Empty, + Svg, + Rect, + Circle, + Ellipse, + Line, + Polygon, + Polyline, + Path, + Text, + Stroking, + G, + Gradients, + Clipping, + Image, + TouchEvents, + Reusable, + PanResponder, + Reanimated, + Transforms, + Markers, + Mask, +}; diff --git a/apps/common/example/index.tsx b/apps/common/example/index.tsx new file mode 100644 index 000000000..133766d62 --- /dev/null +++ b/apps/common/example/index.tsx @@ -0,0 +1,100 @@ +/** + * Sample React Native App for react-native-svg library + * https://github.com/software-mansion/react-native-svg/tree/main/apps/common/example + */ +'use strict'; + +import {NavigationContainer} from '@react-navigation/native'; +import {createNativeStackNavigator} from '@react-navigation/native-stack'; +import {createStackNavigator} from '@react-navigation/stack'; +import React from 'react'; +import {ActivityIndicator, Platform, View} from 'react-native'; +import {GestureHandlerRootView} from 'react-native-gesture-handler'; +import {ListScreen} from './ListScreen'; +import * as E2e from './e2e/index.macos'; +import {examples} from './examples'; +import * as FilterImage from './examples/FilterImage'; +import * as Filters from './examples/Filters'; +import {commonStyles} from './utils/commonStyles'; +import composeComponents from './utils/composeComponent'; +import { + Example, + Examples, + NavigationProp, + RootStackParamList, +} from './utils/types'; +import {usePersistNavigation} from './utils/usePersistNavigation'; + +export default function App() { + const {isReady, initialState, persistNavigationState} = + usePersistNavigation(); + + if (!isReady) { + return ( + + + + ); + } + if (process.env.E2E) { + console.log('Opening E2E example, as E2E env is set to ' + process.env.E2E); + return ; + } + return ( + + + + + + + {allScreensKeys.map(name => ( + + ))} + {E2e.component} + + + + ); +} + +type ScreenProps = {navigation: NavigationProp}; +const HomeList = (props: ScreenProps) => ( + +); +const FiltersList = (props: ScreenProps) => ( + +); +const FilterImageList = (props: ScreenProps) => ( + +); + +const Stack = + Platform.OS === 'macos' + ? createStackNavigator() + : createNativeStackNavigator(); + +const allScreens = { + ...examples, + ...Filters.samples, + ...FilterImage.samples, +}; + +const allScreensKeys = Object.keys(allScreens) as (keyof typeof allScreens)[]; diff --git a/apps/common/example/utils/commonStyles.ts b/apps/common/example/utils/commonStyles.ts new file mode 100644 index 000000000..ce44b777e --- /dev/null +++ b/apps/common/example/utils/commonStyles.ts @@ -0,0 +1,38 @@ +import {StyleSheet} from 'react-native'; + +export const commonStyles = StyleSheet.create({ + container: { + flex: 1, + }, + center: { + alignItems: 'center', + justifyContent: 'center', + }, + list: { + backgroundColor: '#EFEFF4', + width: '100%', + }, + separator: { + height: 1, + backgroundColor: '#DBDBE0', + }, + button: { + flex: 1, + height: 60, + padding: 15, + flexDirection: 'row', + alignItems: 'center', + backgroundColor: 'white', + }, + disabledButton: { + backgroundColor: 'grey', + opacity: 0.5, + }, + title: { + fontSize: 16, + color: 'black', + }, + visitedItem: { + backgroundColor: '#e6f0f7', + }, +}); diff --git a/apps/common/example/utils/composeComponent.tsx b/apps/common/example/utils/composeComponent.tsx new file mode 100644 index 000000000..8b6e34310 --- /dev/null +++ b/apps/common/example/utils/composeComponent.tsx @@ -0,0 +1,60 @@ +import React, {Fragment} from 'react'; +import {ScrollView, Text, View} from 'react-native'; +import {Examples, Sample} from './types'; + +export default function composeComponents( + components: Sample[] | Examples, + renderInView?: boolean, +) { + const Wrapper = renderInView ? View : ScrollView; + return function ComposedComponent() { + return ( + + {Array.isArray(components) + ? components.map((Component, index) => ( + + + + {index !== components.length - 1 && } + + )) + : null} + + ); + }; +} + +function ComponentTitle({title}: {title?: string}) { + if (!title) return null; + return ( + + {title} + + ); +} + +function Separator() { + return ( + + ); +} diff --git a/apps/common/example/utils/types.ts b/apps/common/example/utils/types.ts new file mode 100644 index 000000000..f8606440e --- /dev/null +++ b/apps/common/example/utils/types.ts @@ -0,0 +1,25 @@ +import {NativeStackNavigationProp} from '@react-navigation/native-stack'; +import {StackNavigationProp} from '@react-navigation/stack'; +import {allScreens} from '../index'; + +export type ExamplesKey = keyof typeof allScreens; + +export interface Example { + samples: Sample[] | Examples; + icon: React.JSX.Element; + shouldBeRenderInView?: boolean; +} + +export type Examples = Record; + +export type NavigationProp = + | NativeStackNavigationProp + | StackNavigationProp; +export type RootStackParamList = {[P in ExamplesKey]: undefined} & { + RNSVG: undefined; + Filters: undefined; + 'Filter Image': undefined; + E2E: undefined; +}; + +export type Sample = React.FC & {title: string}; diff --git a/apps/common/example/utils/usePersistNavigation.ts b/apps/common/example/utils/usePersistNavigation.ts new file mode 100644 index 000000000..6498aedbd --- /dev/null +++ b/apps/common/example/utils/usePersistNavigation.ts @@ -0,0 +1,50 @@ +import AsyncStorage from '@react-native-async-storage/async-storage'; +import {NavigationState} from '@react-navigation/native'; +import {useCallback, useEffect, useState} from 'react'; +import {Linking, Platform} from 'react-native'; + +function noop() {} // do nothing + +// copied from https://reactnavigation.org/docs/state-persistence/ +const PERSISTENCE_KEY = 'NAVIGATION_STATE_V1'; + +export const usePersistNavigation = () => { + const [isReady, setIsReady] = useState(!__DEV__); + const [initialState, setInitialState] = useState(); + + useEffect(() => { + const restoreState = async () => { + try { + const initialUrl = await Linking.getInitialURL(); + + if ( + Platform.OS !== 'web' && + Platform.OS !== 'macos' && + initialUrl == null + ) { + // Only restore state if there's no deep link and we're not on web + const savedStateString = await AsyncStorage.getItem(PERSISTENCE_KEY); + const state = savedStateString + ? JSON.parse(savedStateString) + : undefined; + + if (state !== undefined) { + setInitialState(state); + } + } + } finally { + setIsReady(true); + } + }; + + if (!isReady) { + restoreState().catch(noop); + } + }, [isReady]); + + const persistNavigationState = useCallback((state?: NavigationState) => { + AsyncStorage.setItem(PERSISTENCE_KEY, JSON.stringify(state)).catch(noop); + }, []); + + return {isReady, initialState, persistNavigationState}; +}; diff --git a/apps/common/index.tsx b/apps/common/index.tsx new file mode 100644 index 000000000..fe90837e6 --- /dev/null +++ b/apps/common/index.tsx @@ -0,0 +1,3 @@ +import App from './example'; + +export default App; diff --git a/apps/test-examples/src/ColorTest.tsx b/apps/common/test/ColorTest.tsx similarity index 100% rename from apps/test-examples/src/ColorTest.tsx rename to apps/common/test/ColorTest.tsx diff --git a/apps/test-examples/src/MountUnmount.tsx b/apps/common/test/MountUnmount.tsx similarity index 100% rename from apps/test-examples/src/MountUnmount.tsx rename to apps/common/test/MountUnmount.tsx diff --git a/apps/test-examples/src/PointerEventsBoxNone.tsx b/apps/common/test/PointerEventsBoxNone.tsx similarity index 96% rename from apps/test-examples/src/PointerEventsBoxNone.tsx rename to apps/common/test/PointerEventsBoxNone.tsx index c663fb39f..1123295f6 100644 --- a/apps/test-examples/src/PointerEventsBoxNone.tsx +++ b/apps/common/test/PointerEventsBoxNone.tsx @@ -45,8 +45,7 @@ export default function PointerEventsBoxNone() { top: 150, left: 75, transform: [{scale: 2}], - }} - > + }}> Try to touch the blue shape @@ -61,8 +60,7 @@ export default function PointerEventsBoxNone() { top: 0, left: 0, }} - pointerEvents={pointerEvents} - > + pointerEvents={pointerEvents}> + style={{top: 10, transform: [{scale: 1.5}]}}> + }}> `; -const svgg = ` + const svgg = ` @@ -20,16 +20,22 @@ const svgg = ` return ( - - - - - - + width={100} + height={100} + viewBox="0 0 100 100" + transform={[{scaleX: 1}, {scaleY: -1}]}> + + + + + + ); } diff --git a/apps/test-examples/src/Test1442.tsx b/apps/common/test/Test1442.tsx similarity index 96% rename from apps/test-examples/src/Test1442.tsx rename to apps/common/test/Test1442.tsx index 26b095ed8..47d4ab067 100644 --- a/apps/test-examples/src/Test1442.tsx +++ b/apps/common/test/Test1442.tsx @@ -73,7 +73,7 @@ const PNGImageFromFile = () => { opacity="1" width={100} height={100} - href={require('../assets/arrow.png')} + href={require('./assets/arrow.png')} onLoad={e => console.log(`${Platform.OS} load png image from file`, e.nativeEvent) } @@ -107,7 +107,7 @@ const JPEGImageFromFile = () => { opacity="1" width={'100%'} height={'100%'} - href={require('../assets/earth.jpg')} + href={require('./assets/earth.jpg')} onLoad={e => console.log(`${Platform.OS} load JPEG image from file`, e.nativeEvent) } diff --git a/apps/test-examples/src/Test1451.tsx b/apps/common/test/Test1451.tsx similarity index 100% rename from apps/test-examples/src/Test1451.tsx rename to apps/common/test/Test1451.tsx diff --git a/apps/common/test/Test1718.tsx b/apps/common/test/Test1718.tsx new file mode 100644 index 000000000..748832173 --- /dev/null +++ b/apps/common/test/Test1718.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import {SvgUri} from 'react-native-svg'; + +export default () => { + const [uri, setUri] = React.useState( + 'https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/not_existing.svg', + ); + + return ( + <> + + setUri( + 'https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/ruby.svg', + ) + } + width="100" + height="100" + uri={uri} + /> + + ); +}; diff --git a/apps/test-examples/src/Test1790.tsx b/apps/common/test/Test1790.tsx similarity index 100% rename from apps/test-examples/src/Test1790.tsx rename to apps/common/test/Test1790.tsx diff --git a/apps/test-examples/src/Test1813.tsx b/apps/common/test/Test1813.tsx similarity index 98% rename from apps/test-examples/src/Test1813.tsx rename to apps/common/test/Test1813.tsx index b70e44742..dd78b44f7 100644 --- a/apps/test-examples/src/Test1813.tsx +++ b/apps/common/test/Test1813.tsx @@ -9,7 +9,7 @@ import { LocalSvg, } from 'react-native-svg/css'; -const asset = require('../assets/ruby.svg'); +const asset = require('./assets/ruby.svg'); const normalUri = 'https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/ruby.svg'; const uriWithCss = 'http://thenewcode.com/assets/svg/accessibility.svg'; diff --git a/apps/test-examples/src/Test1845.tsx b/apps/common/test/Test1845.tsx similarity index 100% rename from apps/test-examples/src/Test1845.tsx rename to apps/common/test/Test1845.tsx diff --git a/apps/test-examples/src/Test1986.tsx b/apps/common/test/Test1986.tsx similarity index 100% rename from apps/test-examples/src/Test1986.tsx rename to apps/common/test/Test1986.tsx diff --git a/apps/test-examples/src/Test2071.tsx b/apps/common/test/Test2071.tsx similarity index 100% rename from apps/test-examples/src/Test2071.tsx rename to apps/common/test/Test2071.tsx diff --git a/apps/common/test/Test2080.tsx b/apps/common/test/Test2080.tsx new file mode 100644 index 000000000..e3b05d962 --- /dev/null +++ b/apps/common/test/Test2080.tsx @@ -0,0 +1,32 @@ +import * as React from 'react'; +import {View} from 'react-native'; +import Svg, {Rect} from 'react-native-svg'; + +export default function App() { + return ( + + + + + + + + + ); +} diff --git a/apps/test-examples/src/Test2086.tsx b/apps/common/test/Test2086.tsx similarity index 100% rename from apps/test-examples/src/Test2086.tsx rename to apps/common/test/Test2086.tsx diff --git a/apps/test-examples/src/Test2089.tsx b/apps/common/test/Test2089.tsx similarity index 100% rename from apps/test-examples/src/Test2089.tsx rename to apps/common/test/Test2089.tsx diff --git a/apps/test-examples/src/Test2142.tsx b/apps/common/test/Test2142.tsx similarity index 100% rename from apps/test-examples/src/Test2142.tsx rename to apps/common/test/Test2142.tsx diff --git a/apps/test-examples/src/Test2148.tsx b/apps/common/test/Test2148.tsx similarity index 100% rename from apps/test-examples/src/Test2148.tsx rename to apps/common/test/Test2148.tsx diff --git a/apps/test-examples/src/Test2170.tsx b/apps/common/test/Test2170.tsx similarity index 100% rename from apps/test-examples/src/Test2170.tsx rename to apps/common/test/Test2170.tsx diff --git a/apps/test-examples/src/Test2196.tsx b/apps/common/test/Test2196.tsx similarity index 100% rename from apps/test-examples/src/Test2196.tsx rename to apps/common/test/Test2196.tsx diff --git a/apps/test-examples/src/Test2233.tsx b/apps/common/test/Test2233.tsx similarity index 100% rename from apps/test-examples/src/Test2233.tsx rename to apps/common/test/Test2233.tsx diff --git a/apps/test-examples/src/Test2248.tsx b/apps/common/test/Test2248.tsx similarity index 100% rename from apps/test-examples/src/Test2248.tsx rename to apps/common/test/Test2248.tsx diff --git a/apps/test-examples/src/Test2266.tsx b/apps/common/test/Test2266.tsx similarity index 100% rename from apps/test-examples/src/Test2266.tsx rename to apps/common/test/Test2266.tsx diff --git a/apps/test-examples/src/Test2276.tsx b/apps/common/test/Test2276.tsx similarity index 100% rename from apps/test-examples/src/Test2276.tsx rename to apps/common/test/Test2276.tsx diff --git a/apps/test-examples/src/Test2327.tsx b/apps/common/test/Test2327.tsx similarity index 100% rename from apps/test-examples/src/Test2327.tsx rename to apps/common/test/Test2327.tsx diff --git a/apps/test-examples/src/Test2363.tsx b/apps/common/test/Test2363.tsx similarity index 99% rename from apps/test-examples/src/Test2363.tsx rename to apps/common/test/Test2363.tsx index 20faa14aa..34ef3d29b 100644 --- a/apps/test-examples/src/Test2363.tsx +++ b/apps/common/test/Test2363.tsx @@ -43,7 +43,7 @@ const svgXmlWithRGB = ` -` +`; const svgXmlWithRGBA = ` @@ -86,7 +86,7 @@ const svgXmlWithRGBA = ` -` +`; export default function Test2363() { return ( @@ -97,7 +97,7 @@ export default function Test2363() { justifyContent: 'center', }}> - + ); diff --git a/apps/test-examples/src/Test2366.tsx b/apps/common/test/Test2366.tsx similarity index 100% rename from apps/test-examples/src/Test2366.tsx rename to apps/common/test/Test2366.tsx diff --git a/apps/test-examples/src/Test2380.tsx b/apps/common/test/Test2380.tsx similarity index 100% rename from apps/test-examples/src/Test2380.tsx rename to apps/common/test/Test2380.tsx diff --git a/apps/test-examples/src/Test2397.tsx b/apps/common/test/Test2397.tsx similarity index 100% rename from apps/test-examples/src/Test2397.tsx rename to apps/common/test/Test2397.tsx diff --git a/apps/test-examples/src/Test2403.tsx b/apps/common/test/Test2403.tsx similarity index 100% rename from apps/test-examples/src/Test2403.tsx rename to apps/common/test/Test2403.tsx diff --git a/apps/test-examples/src/Test2407.tsx b/apps/common/test/Test2407.tsx similarity index 100% rename from apps/test-examples/src/Test2407.tsx rename to apps/common/test/Test2407.tsx diff --git a/apps/test-examples/src/Test2417.tsx b/apps/common/test/Test2417.tsx similarity index 100% rename from apps/test-examples/src/Test2417.tsx rename to apps/common/test/Test2417.tsx diff --git a/apps/test-examples/src/Test2455.tsx b/apps/common/test/Test2455.tsx similarity index 100% rename from apps/test-examples/src/Test2455.tsx rename to apps/common/test/Test2455.tsx diff --git a/apps/test-examples/src/Test2471.tsx b/apps/common/test/Test2471.tsx similarity index 100% rename from apps/test-examples/src/Test2471.tsx rename to apps/common/test/Test2471.tsx diff --git a/apps/common/test/Test2520.tsx b/apps/common/test/Test2520.tsx new file mode 100644 index 000000000..97791c5b6 --- /dev/null +++ b/apps/common/test/Test2520.tsx @@ -0,0 +1,32 @@ +import React from 'react'; +import {View} from 'react-native'; +import {Defs, G, Rect, Svg, Use} from 'react-native-svg'; + +export default () => { + return ( + + + {/* @ts-ignore */} + + + + + + + + + + + + + + + ); +}; diff --git a/apps/test-examples/assets/arrow.png b/apps/common/test/assets/arrow.png similarity index 100% rename from apps/test-examples/assets/arrow.png rename to apps/common/test/assets/arrow.png diff --git a/apps/test-examples/assets/earth.jpg b/apps/common/test/assets/earth.jpg similarity index 100% rename from apps/test-examples/assets/earth.jpg rename to apps/common/test/assets/earth.jpg diff --git a/apps/test-examples/assets/ruby.svg b/apps/common/test/assets/ruby.svg similarity index 100% rename from apps/test-examples/assets/ruby.svg rename to apps/common/test/assets/ruby.svg diff --git a/apps/common/test/index.tsx b/apps/common/test/index.tsx new file mode 100644 index 000000000..251336f76 --- /dev/null +++ b/apps/common/test/index.tsx @@ -0,0 +1,41 @@ +/* eslint-disable no-unused-vars */ +import React from 'react'; + +import ColorTest from './ColorTest'; +import PointerEventsBoxNone from './PointerEventsBoxNone'; +import MountUnmount from './MountUnmount'; +import Test1318 from './Test1318'; +import Test1374 from './Test1374'; +import Test1442 from './Test1442'; +import Test1451 from './Test1451'; +import Test1718 from './Test1718'; +import Test1790 from './Test1790'; +import Test1813 from './Test1813'; +import Test1845 from './Test1845'; +import Test1986 from './Test1986'; +import Test2071 from './Test2071'; +import Test2080 from './Test2080'; +import Test2086 from './Test2086'; +import Test2089 from './Test2089'; +import Test2142 from './Test2142'; +import Test2148 from './Test2148'; +import Test2196 from './Test2196'; +import Test2248 from './Test2248'; +import Test2266 from './Test2266'; +import Test2276 from './Test2276'; +import Test2327 from './Test2327'; +import Test2233 from './Test2233'; +import Test2363 from './Test2363'; +import Test2366 from './Test2366'; +import Test2380 from './Test2380'; +import Test2397 from './Test2397'; +import Test2403 from './Test2403'; +import Test2407 from './Test2407'; +import Test2417 from './Test2417'; +import Test2455 from './Test2455'; +import Test2471 from './Test2471'; +import Test2520 from './Test2520'; + +export default function App() { + return ; +} diff --git a/apps/common/tsconfig.json b/apps/common/tsconfig.json new file mode 100644 index 000000000..bcabf0260 --- /dev/null +++ b/apps/common/tsconfig.json @@ -0,0 +1,28 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "moduleSuffixes": [".macos", ""], + "baseUrl": ".", + "paths": { + "react-native-svg": ["../../src"], + "react-native-svg/css": ["../../src/css/index.tsx"], + "react-native-svg/filter-image": ["../../src/filter-image/index.tsx"], + "react-native-reanimated": [ + "../fabric-example/node_modules/react-native-reanimated" + ], + "react-native-view-shot": [ + "../fabric-example/node_modules/react-native-view-shot" + ], + "@react-navigation/*": [ + "../fabric-example/node_modules/@react-navigation/*" + ], + "react-native-gesture-handler": [ + "../fabric-example/node_modules/react-native-gesture-handler" + ], + "@react-native-async-storage/async-storage": [ + "../fabric-example/node_modules/@react-native-async-storage/async-storage" + ] + } + }, + "include": ["**/*.ts", "**/*.tsx", "**/*.js"] +} diff --git a/apps/examples/index.tsx b/apps/examples/index.tsx deleted file mode 100644 index 35ea38141..000000000 --- a/apps/examples/index.tsx +++ /dev/null @@ -1,185 +0,0 @@ -/** - * Sample React Native App for react-native-svg library - * https://github.com/magicismight/react-native-svg/tree/master/Example - */ -'use strict'; - -import React, {Component} from 'react'; -import { - Dimensions, - Modal, - Platform, - SafeAreaView, - ScrollView, - StyleSheet, - Text, - TouchableHighlight, - TouchableOpacity, - View, -} from 'react-native'; -import {Circle, Line, Svg} from 'react-native-svg'; - -import {commonStyles} from './src/commonStyles'; -import E2eTestingView from './src/e2e'; -import * as examples from './src/examples'; -import {names} from './utils/names'; - -const initialState = { - modal: false, - content: null, -}; - -export default class SvgExample extends Component { - state: { - content: React.ReactNode; - modal: boolean; - scroll?: boolean; - } = initialState; - - show = (name: keyof typeof examples) => { - if (this.state.modal) { - return; - } - let example = examples[name]; - if (example) { - let samples = example.samples; - this.setState({ - modal: true, - content: ( - - {samples.map((Sample, i) => ( - - {Sample.title} - - - ))} - - ), - scroll: (example as {scroll?: boolean}).scroll !== false, - }); - } - }; - - hide = () => { - this.setState(initialState); - }; - - getExamples = () => { - return names - .filter(el => { - if (el !== 'E2E') return true; - return Platform.OS === 'android' || Platform.OS === 'ios'; - }) - .map(name => { - var icon; - let example = examples[name as keyof typeof examples]; - if (example) { - icon = example.icon; - } - return ( - this.show(name as keyof typeof examples)}> - - {icon} - {name} - - - ); - }); - }; - - modalContent = () => ( - <> - - - {this.state.content} - - - - - - - - - - - - - ); - - render() { - if (process.env.E2E) { - console.log( - 'Opening E2E example, as E2E env is set to ' + process.env.E2E, - ); - return ; - } - return ( - - SVG library for React Apps - {this.getExamples()} - {(Platform.OS === 'windows' || Platform.OS === 'macos') && - this.state.modal ? ( - {this.modalContent()} - ) : ( - - {this.modalContent()} - - )} - - ); - } -} - -const hairline = StyleSheet.hairlineWidth; - -const styles = StyleSheet.create({ - container: { - flex: 1, - paddingTop: 20, - alignItems: 'center', - overflow: 'hidden', - }, - contentContainer: { - alignSelf: 'stretch', - borderTopWidth: hairline, - borderTopColor: '#ccc', - borderBottomWidth: hairline, - borderBottomColor: '#ccc', - flexWrap: 'wrap', - flexDirection: 'row', - marginHorizontal: 10, - }, - link: { - height: 40, - alignSelf: 'stretch', - width: Dimensions.get('window').width / 2 - 10, - }, - close: { - position: 'absolute', - right: 20, - top: 20, - }, - scroll: { - position: 'absolute', - top: 30, - right: 10, - bottom: 20, - left: 10, - backgroundColor: '#fff', - }, - scrollContent: { - borderTopWidth: hairline, - borderTopColor: '#ccc', - }, -}); diff --git a/apps/examples/src/commonStyles.ts b/apps/examples/src/commonStyles.ts deleted file mode 100644 index 96a756c34..000000000 --- a/apps/examples/src/commonStyles.ts +++ /dev/null @@ -1,41 +0,0 @@ -import {StyleSheet} from 'react-native'; - -const hairline = StyleSheet.hairlineWidth; - -export const commonStyles = StyleSheet.create({ - welcome: { - padding: 10, - color: '#f60', - fontSize: 18, - fontWeight: 'bold', - textAlign: 'center', - }, - link: { - height: 40, - }, - title: { - marginLeft: 10, - }, - cell: { - height: 40, - paddingHorizontal: 10, - alignSelf: 'stretch', - alignItems: 'center', - flexDirection: 'row', - borderTopWidth: hairline, - borderTopColor: '#ccc', - marginTop: -hairline, - }, - example: { - paddingVertical: 25, - alignSelf: 'stretch', - alignItems: 'center', - borderBottomWidth: hairline, - borderBottomColor: '#ccc', - }, - sampleTitle: { - marginHorizontal: 15, - fontSize: 16, - color: '#666', - }, -}); diff --git a/apps/examples/src/e2e/index.macos.tsx b/apps/examples/src/e2e/index.macos.tsx deleted file mode 100644 index dc37d27ed..000000000 --- a/apps/examples/src/e2e/index.macos.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function () { - return null; -} diff --git a/apps/examples/src/e2e/index.tsx b/apps/examples/src/e2e/index.tsx deleted file mode 100644 index 1cfc0097b..000000000 --- a/apps/examples/src/e2e/index.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import React from 'react'; -import {SafeAreaView} from 'react-native'; -import {samples} from './TestingView'; - -export default function () { - const e2eTab = React.createElement(samples[0]); - return {e2eTab}; -} diff --git a/apps/examples/src/e2e/index.web.tsx b/apps/examples/src/e2e/index.web.tsx deleted file mode 100644 index dc37d27ed..000000000 --- a/apps/examples/src/e2e/index.web.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export default function () { - return null; -} diff --git a/apps/examples/src/examples.macos.tsx b/apps/examples/src/examples.macos.tsx deleted file mode 100644 index b5567a9dd..000000000 --- a/apps/examples/src/examples.macos.tsx +++ /dev/null @@ -1,49 +0,0 @@ -import * as Svg from './examples/Svg'; -import * as Rect from './examples/Rect'; -import * as Circle from './examples/Circle'; -import * as Ellipse from './examples/Ellipse'; -import * as Line from './examples/Line'; -import * as Polygon from './examples/Polygon'; -import * as Polyline from './examples/Polyline'; -import * as Path from './examples/Path'; -import * as Text from './examples/Text'; -import * as G from './examples/G'; -import * as Stroking from './examples/Stroking'; -import * as Gradients from './examples/Gradients'; -import * as Clipping from './examples/Clipping'; -import * as Image from './examples/Image'; -import * as Reusable from './examples/Reusable'; -import * as TouchEvents from './examples/TouchEvents'; -import * as PanResponder from './examples/PanResponder'; -import * as Reanimated from './examples/Reanimated'; -import * as Transforms from './examples/Transforms'; -import * as Markers from './examples/Markers'; -import * as Mask from './examples/Mask'; -import * as Filters from './examples/Filters'; -import * as FilterImage from './examples/FilterImage'; - -export { - Svg, - Rect, - Circle, - Ellipse, - Line, - Polygon, - Polyline, - Path, - Text, - Stroking, - G, - Gradients, - Clipping, - Image, - TouchEvents, - Reusable, - PanResponder, - Reanimated, - Transforms, - Markers, - Mask, - Filters, - FilterImage, -}; diff --git a/apps/examples/src/examples.tsx b/apps/examples/src/examples.tsx deleted file mode 100644 index 046e2bb10..000000000 --- a/apps/examples/src/examples.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import * as Svg from './examples/Svg'; -import * as Rect from './examples/Rect'; -import * as Circle from './examples/Circle'; -import * as Ellipse from './examples/Ellipse'; -import * as Line from './examples/Line'; -import * as Polygon from './examples/Polygon'; -import * as Polyline from './examples/Polyline'; -import * as Path from './examples/Path'; -import * as Text from './examples/Text'; -import * as G from './examples/G'; -import * as Stroking from './examples/Stroking'; -import * as Gradients from './examples/Gradients'; -import * as Clipping from './examples/Clipping'; -import * as Image from './examples/Image'; -import * as Reusable from './examples/Reusable'; -import * as TouchEvents from './examples/TouchEvents'; -import * as PanResponder from './examples/PanResponder'; -import * as Reanimated from './examples/Reanimated'; -import * as Transforms from './examples/Transforms'; -import * as Markers from './examples/Markers'; -import * as Mask from './examples/Mask'; -import * as E2E from './e2e/TestingView'; -import * as Filters from './examples/Filters'; -import * as FilterImage from './examples/FilterImage'; - -export { - Svg, - Rect, - Circle, - Ellipse, - Line, - Polygon, - Polyline, - Path, - Text, - Stroking, - G, - Gradients, - Clipping, - Image, - TouchEvents, - Reusable, - PanResponder, - Reanimated, - Transforms, - Markers, - Mask, - E2E, - Filters, - FilterImage, -}; diff --git a/apps/examples/src/examples.windows.tsx b/apps/examples/src/examples.windows.tsx deleted file mode 100644 index 22b7d34c9..000000000 --- a/apps/examples/src/examples.windows.tsx +++ /dev/null @@ -1,45 +0,0 @@ -import * as Svg from './examples/Svg'; -import * as Rect from './examples/Rect'; -import * as Circle from './examples/Circle'; -import * as Ellipse from './examples/Ellipse'; -import * as Line from './examples/Line'; -import * as Polygon from './examples/Polygon'; -import * as Polyline from './examples/Polyline'; -import * as Path from './examples/Path'; -import * as Text from './examples/Text'; -import * as G from './examples/G'; -import * as Stroking from './examples/Stroking'; -import * as Gradients from './examples/Gradients'; -import * as Clipping from './examples/Clipping'; -import * as Image from './examples/Image'; -import * as Reusable from './examples/Reusable'; -import * as TouchEvents from './examples/TouchEvents'; -import * as PanResponder from './examples/PanResponder'; -import * as Reanimated from './examples/Reanimated'; -import * as Transforms from './examples/Transforms'; -import * as Markers from './examples/Markers'; -import * as Mask from './examples/Mask'; - -export { - Svg, - Rect, - Circle, - Ellipse, - Line, - Polygon, - Polyline, - Path, - Text, - Stroking, - G, - Gradients, - Clipping, - Image, - TouchEvents, - Reusable, - PanResponder, - Reanimated, - Transforms, - Markers, - Mask, -}; diff --git a/apps/examples/src/examples/Circle.tsx b/apps/examples/src/examples/Circle.tsx deleted file mode 100644 index fcbead224..000000000 --- a/apps/examples/src/examples/Circle.tsx +++ /dev/null @@ -1,81 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Circle} from 'react-native-svg'; - -class CircleExample extends Component { - static title = 'Circle'; - render() { - return ( - - - - ); - } -} - -class StrokeCircle extends Component { - static title = 'Stroke Circle'; - render() { - return ( - - - - ); - } -} - -class StrokeOpacityCircle extends Component { - static title = 'Circle with strokeOpacity'; - render() { - return ( - - - - ); - } -} - -class PieCircle extends Component { - static title = 'Draw a Pie shape with circle'; - render() { - return ( - - - - - ); - } -} - -const icon = ( - - - -); - -const samples = [CircleExample, StrokeCircle, StrokeOpacityCircle, PieCircle]; -export {icon, samples}; diff --git a/apps/examples/src/examples/Clipping.tsx b/apps/examples/src/examples/Clipping.tsx deleted file mode 100644 index 7a3e6ef4a..000000000 --- a/apps/examples/src/examples/Clipping.tsx +++ /dev/null @@ -1,139 +0,0 @@ -import React, {Component} from 'react'; -import { - Svg, - Circle, - Ellipse, - G, - Text, - Path, - Polygon, - Rect, - Defs, - RadialGradient, - Stop, - ClipPath, -} from 'react-native-svg'; - -class ClipPathElement extends Component { - static title = 'Clip by set clip-path with a path data'; - render() { - return ( - - - - - - - - - - - - - Q - - - - - - ); - } -} - -class ClipRule extends Component { - static title = 'Clip a group with clipRule="evenodd"'; - render() { - return ( - - - - - - - - - - - - - - ); - } -} - -class TextClipping extends Component { - static title = 'Transform the text'; - render() { - return ( - - - - - - - - - - - - - - - - - - NOT THE FACE - - - ); - } -} - -const icon = ( - - - - - - - - - - - - - -); - -const samples = [ClipPathElement, ClipRule, TextClipping]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Ellipse.tsx b/apps/examples/src/examples/Ellipse.tsx deleted file mode 100644 index fc870803f..000000000 --- a/apps/examples/src/examples/Ellipse.tsx +++ /dev/null @@ -1,66 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Ellipse} from 'react-native-svg'; - -class EllipseExample extends Component { - static title = 'Ellipse'; - render() { - return ( - - - - ); - } -} - -class PileEllipses extends Component { - static title = - 'The following example creates three ellipses on top of each other'; - render() { - return ( - - - - - - ); - } -} - -class CombinedEllipses extends Component { - static title = - 'The following example combines two ellipses (one yellow and one white)'; - render() { - return ( - - - - - ); - } -} - -const icon = ( - - - -); - -const samples = [EllipseExample, PileEllipses, CombinedEllipses]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/FilterImage/examples.tsx b/apps/examples/src/examples/FilterImage/examples.tsx deleted file mode 100644 index 7aaf1c8ac..000000000 --- a/apps/examples/src/examples/FilterImage/examples.tsx +++ /dev/null @@ -1,4 +0,0 @@ -import * as LocalImage from './LocalImage'; -import * as RemoteImage from './RemoteImage'; -import * as FilterPicker from './FilterPicker'; -export {LocalImage, RemoteImage, FilterPicker}; diff --git a/apps/examples/src/examples/FilterImage/index.tsx b/apps/examples/src/examples/FilterImage/index.tsx deleted file mode 100644 index 2717da827..000000000 --- a/apps/examples/src/examples/FilterImage/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React from 'react'; -import {StyleSheet, Text, TouchableHighlight, View} from 'react-native'; - -import {FilterImage} from 'react-native-svg/filter-image'; -import {commonStyles} from '../../commonStyles'; -import * as examples from './examples'; - -const FilterImageList = () => { - const [example, setExample] = React.useState( - null, - ); - - if (example) { - return ( - <> - {examples[example].samples.map((Sample, i) => ( - - {Sample.title} - - - ))} - - ); - } - - return ( - - Filter Image - {Object.keys(examples).map((element, i) => { - const name = element as keyof typeof examples; - return ( - setExample(name)}> - - {examples[name].icon} - {name} - - - ); - })} - - ); -}; -FilterImageList.title = ''; - -const styles = StyleSheet.create({ - container: {width: '100%'}, - link: {height: 40}, -}); - -const icon = ( - -); - -const samples = [FilterImageList]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Filters/FeColorMatrix.tsx b/apps/examples/src/examples/Filters/FeColorMatrix.tsx deleted file mode 100644 index 5e9052ddf..000000000 --- a/apps/examples/src/examples/Filters/FeColorMatrix.tsx +++ /dev/null @@ -1,130 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Circle, FeColorMatrix, Filter, G} from 'react-native-svg'; - -class ReferenceExample extends Component { - static title = 'Reference'; - render() { - return ( - - - - - - ); - } -} -class IdentityExample extends Component { - static title = 'Identity matrix'; - render() { - return ( - - - - - - - - - - - ); - } -} -class RgbToGreenExample extends Component { - static title = 'RGB to Green'; - render() { - return ( - - - - - - - - - - - ); - } -} -class SaturateExample extends Component { - static title = 'Saturate'; - render() { - return ( - - - - - - - - - - - ); - } -} - -class HueRotateExample extends Component { - static title = 'Hue Rotate'; - render() { - return ( - - - - - - - - - - - ); - } -} - -class LuminanceToAlphaExample extends Component { - static title = 'Luminance to alpha'; - render() { - return ( - - - - - - - - - - - ); - } -} - -const icon = ( - - - - - - - - - - -); - -const samples = [ - ReferenceExample, - IdentityExample, - RgbToGreenExample, - SaturateExample, - HueRotateExample, - LuminanceToAlphaExample, -]; -export {icon, samples}; diff --git a/apps/examples/src/examples/Filters/FeGaussianBlur.tsx b/apps/examples/src/examples/Filters/FeGaussianBlur.tsx deleted file mode 100644 index 0659c0e3c..000000000 --- a/apps/examples/src/examples/Filters/FeGaussianBlur.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import React, {Component} from 'react'; -import {Circle, FeGaussianBlur, Filter, G, Svg} from 'react-native-svg'; - -class StdDeviation3Example extends Component { - static title = 'stdDeviation="3"'; - render() { - return ( - - - - - - - - - - - ); - } -} -class StdDeviation7Example extends Component { - static title = 'stdDeviation="7"'; - render() { - return ( - - - - - - - - - - - ); - } -} -class StdDeviation150Example extends Component { - static title = 'stdDeviation="15 0"'; - render() { - return ( - - - - - - - - - - - ); - } -} -class StdDeviation025Example extends Component { - static title = 'stdDeviation="0 25"'; - render() { - return ( - - - - - - - - - - - ); - } -} - -const icon = ( - - - - - - - - - - -); - -const samples = [ - StdDeviation3Example, - StdDeviation7Example, - StdDeviation150Example, - StdDeviation025Example, -]; -export {icon, samples}; diff --git a/apps/examples/src/examples/Filters/FeMerge.tsx b/apps/examples/src/examples/Filters/FeMerge.tsx deleted file mode 100644 index 02a428d30..000000000 --- a/apps/examples/src/examples/Filters/FeMerge.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import React, {Component} from 'react'; -import { - Svg, - Circle, - FeColorMatrix, - Filter, - G, - FeMerge, - FeMergeNode, - Rect, - FeOffset, -} from 'react-native-svg'; - -class WithOffsetsExample extends Component { - static title = 'Merge with SourceGraphic and offsets'; - render() { - return ( - - - - - - - - - - - - - ); - } -} - -class WithHueRotateExample extends Component { - static title = 'Merge with SourceGraphic and HueRotate'; - render() { - return ( - - - - - - - - - - - - ); - } -} - -const icon = ( - - - - - - - - - - -); - -const samples = [WithOffsetsExample, WithHueRotateExample]; -export {icon, samples}; diff --git a/apps/examples/src/examples/Filters/FeOffset.tsx b/apps/examples/src/examples/Filters/FeOffset.tsx deleted file mode 100644 index 20e07c3ed..000000000 --- a/apps/examples/src/examples/Filters/FeOffset.tsx +++ /dev/null @@ -1,47 +0,0 @@ -import React, {Component} from 'react'; -import {FeOffset, Filter, Rect, Svg} from 'react-native-svg'; - -class ReferenceExample extends Component { - static title = 'Offset'; - render() { - return ( - - - - - - - - - - ); - } -} - -const icon = ( - - - - - - - -); - -const samples = [ReferenceExample]; -export {icon, samples}; diff --git a/apps/examples/src/examples/Filters/examples.tsx b/apps/examples/src/examples/Filters/examples.tsx deleted file mode 100644 index e71d053ec..000000000 --- a/apps/examples/src/examples/Filters/examples.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import * as FeColorMatrix from './FeColorMatrix'; -import * as FeGaussianBlur from './FeGaussianBlur'; -import * as FeMerge from './FeMerge'; -import * as FeOffset from './FeOffset'; -import * as ReanimatedFeColorMatrix from './ReanimatedFeColorMatrix'; -export { - FeColorMatrix, - FeGaussianBlur, - FeMerge, - FeOffset, - ReanimatedFeColorMatrix, -}; diff --git a/apps/examples/src/examples/Filters/index.tsx b/apps/examples/src/examples/Filters/index.tsx deleted file mode 100644 index 67526a5dc..000000000 --- a/apps/examples/src/examples/Filters/index.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import {StyleSheet, Text, TouchableHighlight, View} from 'react-native'; -import {Circle, Svg} from 'react-native-svg'; - -import * as examples from './examples'; -import {commonStyles} from '../../commonStyles'; - -const FiltersList = () => { - const [example, setExample] = React.useState( - null, - ); - - if (example) { - return ( - <> - {examples[example].samples.map((Sample, i) => ( - - {Sample.title} - - - ))} - - ); - } - - return ( - - SVG Filters - {Object.keys(examples).map((element, i) => { - const name = element as keyof typeof examples; - return ( - setExample(name)}> - - {examples[name].icon} - {name} - - - ); - })} - - ); -}; -FiltersList.title = ''; - -const styles = StyleSheet.create({ - container: {width: '100%'}, - link: {height: 40}, -}); - -const icon = ( - - - - - -); - -const samples = [FiltersList]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/G.tsx b/apps/examples/src/examples/G.tsx deleted file mode 100644 index 9561a996d..000000000 --- a/apps/examples/src/examples/G.tsx +++ /dev/null @@ -1,98 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Circle, G, Text, Line, Rect, Use} from 'react-native-svg'; - -class GExample extends Component { - static title = 'G children props inherit'; - state = { - fill: 'purple', - }; - componentDidMount = () => { - setTimeout(() => { - if (!this._unmounted) { - this.setState({ - fill: '#856', - }); - } - }, 2000); - }; - componentWillUnmount = () => { - this._unmounted = true; - }; - private _unmounted: any; - render() { - return ( - - - - - - - - - - ); - } -} - -class GTransform extends Component { - static title = 'G transform'; - render() { - return ( - - - - - - Text grouped with shapes - - - - - ); - } -} - -const icon = ( - - - - - - - - - -); - -const samples = [GExample, GTransform]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Gradients.tsx b/apps/examples/src/examples/Gradients.tsx deleted file mode 100644 index 4f01975bf..000000000 --- a/apps/examples/src/examples/Gradients.tsx +++ /dev/null @@ -1,321 +0,0 @@ -import React, {Component} from 'react'; -import {View} from 'react-native'; -import { - Svg, - Circle, - Ellipse, - Text, - Rect, - Defs, - LinearGradient, - RadialGradient, - Stop, -} from 'react-native-svg'; - -class LinearGradientHorizontal extends Component { - static title = - 'Define an ellipse with a horizontal linear gradient from yellow to red'; - render() { - return ( - - - - - - - - - - ); - } -} - -class LinearGradientHorizontalBug extends Component { - static title = - 'Define an ellipse with a horizontal linear gradient from transparent yellow to red, buggy on android'; - render() { - return ( - - - - - - - - - - ); - } -} - -class LinearGradientRotated extends Component { - static title = - 'Define an ellipse with a rotated linear gradient from yellow to red'; - render() { - return ( - - - - - - - - - - ); - } -} - -class GradientUnits extends Component { - static title = 'Compare gradientUnits="userSpaceOnUse" with default'; - render() { - return ( - - - - - - - - - - - - - - - - - - - - - ); - } -} - -class LinearGradientPercent extends Component { - static title = 'Define a linear gradient in percent unit'; - render() { - return ( - - - - - - - - - x1=0% - - - x2=100% - - - - ); - } -} - -class RadialGradientExample extends Component { - static title = - 'Define an ellipse with a radial gradient from yellow to purple'; - render() { - return ( - - - - - - - - - - - - ); - } -} - -class RadialGradientPercent extends Component { - static title = 'Define a radial gradient in percent unit'; - render() { - return ( - - - - - - - - - - ); - } -} - -class RadialGradientPart extends Component { - static title = - 'Define another ellipse with a radial gradient from white to blue'; - render() { - return ( - - - - - - - - - - ); - } -} - -class FillGradientWithOpacity extends Component { - static title = 'Fill a radial gradient with fillOpacity prop'; - render() { - return ( - - - - - - - - - - ); - } -} - -class FillGradientInRect extends Component { - static title = 'Fill a radial gradient inside a rect and stroke it'; - render() { - return ( - - - - - - - - - - ); - } -} - -const icon = ( - - - - - - - - - -); - -const samples = [ - LinearGradientHorizontal, - LinearGradientHorizontalBug, - LinearGradientRotated, - GradientUnits, - LinearGradientPercent, - RadialGradientExample, - RadialGradientPercent, - RadialGradientPart, - FillGradientWithOpacity, - FillGradientInRect, -]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Line.tsx b/apps/examples/src/examples/Line.tsx deleted file mode 100644 index 910aeb078..000000000 --- a/apps/examples/src/examples/Line.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Line} from 'react-native-svg'; - -class LineExample extends Component { - static title = 'Line'; - render() { - return ( - - - - ); - } -} - -class LineWithStrokeLinecap extends Component { - static title = 'Line'; - render() { - return ( - - - - - - ); - } -} - -const icon = ( - - - -); - -const samples = [LineExample, LineWithStrokeLinecap]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Markers.tsx b/apps/examples/src/examples/Markers.tsx deleted file mode 100644 index 95447d47d..000000000 --- a/apps/examples/src/examples/Markers.tsx +++ /dev/null @@ -1,218 +0,0 @@ -import React, {Component} from 'react'; -import { - Svg, - Circle, - Defs, - Marker, - Rect, - Ellipse, - Line, - Polygon, - Path, -} from 'react-native-svg'; - -class EllipseExample extends Component { - static title = 'Circle shaped marker on ellipse'; - render() { - return ( - - - - - - - - - ); - } -} - -class LineExample extends Component { - static title = 'Triangle shaped marker on line'; - render() { - return ( - - - - - - - - - ); - } -} - -class CircleExample extends Component { - static title = 'Rect shaped marker on circle'; - render() { - return ( - - - - - - - - - ); - } -} - -class RectExample extends Component { - static title = 'Ellipse shaped marker on rect'; - render() { - return ( - - - - - - - - - ); - } -} - -class PathExample extends Component { - static title = 'Path shaped marker on line'; - render() { - return ( - - - - - - - - - ); - } -} - -const icon = ( - - - - - - - - -); - -const samples = [ - EllipseExample, - LineExample, - CircleExample, - RectExample, - PathExample, -]; -export {icon, samples}; diff --git a/apps/examples/src/examples/Mask.tsx b/apps/examples/src/examples/Mask.tsx deleted file mode 100644 index a8ca125df..000000000 --- a/apps/examples/src/examples/Mask.tsx +++ /dev/null @@ -1,148 +0,0 @@ -import React, {Component} from 'react'; -import {StyleSheet, View} from 'react-native'; -import { - Svg, - Circle, - Path, - Rect, - Mask, - Polygon, - Defs, - LinearGradient, - Stop, - Text, -} from 'react-native-svg'; - -const styles = StyleSheet.create({ - container: { - flex: 1, - height: 100, - width: 200, - }, - svg: { - flex: 1, - alignSelf: 'stretch', - }, -}); - -class SimpleMask extends Component { - static title = 'Simple svg with mask'; - render() { - return ( - - - - - - - - - - - - ); - } -} - -class AnotherMask extends Component { - static title = 'Another svg with mask'; - render() { - return ( - - - - - - - - - - - - ); - } -} - -class MaskWithText extends Component { - static title = 'Svg with with text and a mask with gradient'; - render() { - return ( - - - - - - - - - - - - - {'This text is under the rectangle'} - - - - - ); - } -} - -const icon = ( - - - - - - - - - -); - -const samples = [SimpleMask, AnotherMask, MaskWithText]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/PanResponder.tsx b/apps/examples/src/examples/PanResponder.tsx deleted file mode 100644 index 37ab36d55..000000000 --- a/apps/examples/src/examples/PanResponder.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React, {Component} from 'react'; -import {Animated, PanResponder, View} from 'react-native'; -import {G, Line, Path, Polyline, Text, Svg} from 'react-native-svg'; - -const AnimatedSvg = Animated.createAnimatedComponent(Svg as any); - -class PanExample extends Component { - static title = 'Bind PanResponder on the SVG Shape'; - pan: Animated.ValueXY; - panResponder: any; - constructor(props: {}) { - super(props); - - this.pan = new Animated.ValueXY(); - - this.panResponder = PanResponder.create({ - onMoveShouldSetPanResponder: () => true, - onPanResponderMove: Animated.event( - [null, {dx: this.pan.x, dy: this.pan.y}], - {useNativeDriver: false}, - ), - onPanResponderRelease: () => { - this.pan.extractOffset(); - }, - }); - } - render() { - return ( - - - - - STAR - - - - ); - } -} - -const icon = ( - - - - - - - - - - -); - -const samples = [PanExample]; - -const scroll = false; - -export {icon, samples, scroll}; diff --git a/apps/examples/src/examples/Path.tsx b/apps/examples/src/examples/Path.tsx deleted file mode 100644 index 927c96372..000000000 --- a/apps/examples/src/examples/Path.tsx +++ /dev/null @@ -1,103 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Circle, G, Text, Path} from 'react-native-svg'; - -class PathExample extends Component { - static title = 'Path'; - render() { - return ( - - - - - - ); - } -} - -class UnclosedPath extends Component { - static title = 'Unclosed paths'; - render() { - return ( - - - - ); - } -} - -class BezierCurve extends Component { - static title = - 'The following example creates a quadratic Bézier curve, where A and C are the start and end points, B is the control point'; - render() { - return ( - - - - - - - - - - - - - - A - - - B - - - C - - - - - ); - } -} -const icon = ( - - - -); - -const samples = [PathExample, UnclosedPath, BezierCurve]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Polygon.tsx b/apps/examples/src/examples/Polygon.tsx deleted file mode 100644 index d4e4ed3e7..000000000 --- a/apps/examples/src/examples/Polygon.tsx +++ /dev/null @@ -1,91 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, G, Path, Polygon} from 'react-native-svg'; - -class PolygonExample extends Component { - static title = 'The following example creates a polygon with three sides'; - render() { - return ( - - - - ); - } -} - -class FourSidePolygon extends Component { - static title = 'The following example creates a polygon with four sides'; - render() { - return ( - - - - ); - } -} - -class StarPolygon extends Component { - static title = 'Use the element to create a star'; - render() { - return ( - - - - - - ); - } -} - -class EvenOddPolygon extends Component { - static title = 'Change the fill-rule property to "evenodd"'; - render() { - return ( - - - - - - - - - - - - ); - } -} - -const icon = ( - - - -); - -const samples = [PolygonExample, FourSidePolygon, StarPolygon, EvenOddPolygon]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Polyline.tsx b/apps/examples/src/examples/Polyline.tsx deleted file mode 100644 index 10cbfd4e5..000000000 --- a/apps/examples/src/examples/Polyline.tsx +++ /dev/null @@ -1,89 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Polyline} from 'react-native-svg'; - -class PolylineExample extends Component { - static title = - 'The element is used to create any shape that consists of only straight lines'; - render() { - return ( - - - - ); - } -} - -class StraightLines extends Component { - static title = 'Another example with only straight lines'; - render() { - return ( - - - - ); - } -} - -class PolylineFill extends Component { - static title = 'Fill Polyline'; - render() { - return ( - - - - ); - } -} - -class PolylineFillStroke extends Component { - static title = 'Stroke Polyline with strokeLinecap and strokeLinejoin'; - render() { - return ( - - - - ); - } -} - -const icon = ( - - - -); - -const samples = [ - PolylineExample, - StraightLines, - PolylineFill, - PolylineFillStroke, -]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Rect.tsx b/apps/examples/src/examples/Rect.tsx deleted file mode 100644 index 79c104032..000000000 --- a/apps/examples/src/examples/Rect.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import React, {Component} from 'react'; -import {Svg, Rect} from 'react-native-svg'; - -class RectExample extends Component { - static title = 'Rect'; - render() { - return ( - - - - ); - } -} - -class RectStrokeFill extends Component { - static title = '`stroke` and `fill` Rect'; - render() { - return ( - - - - ); - } -} - -class RoundedRect extends Component { - static title = 'A rectangle with rounded corners'; - render() { - return ( - - - - ); - } -} - -class EllipseRect extends Component { - static title = 'Rect with different `rx` and `ry`'; - render() { - return ( - - - - ); - } -} - -class RoundOverflowRect extends Component { - static title = 'Rect with `rx` or `ry` overflowed'; - render() { - return ( - - - - ); - } -} - -const icon = ( - - - -); - -const samples = [ - RectExample, - RectStrokeFill, - RoundedRect, - EllipseRect, - RoundOverflowRect, -]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Reusable.tsx b/apps/examples/src/examples/Reusable.tsx deleted file mode 100644 index 09346d1e7..000000000 --- a/apps/examples/src/examples/Reusable.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import React, {Component} from 'react'; -import { - Svg, - Circle, - G, - Path, - Rect, - Use, - Symbol, - Defs, - LinearGradient, - RadialGradient, - Stop, - ClipPath, -} from 'react-native-svg'; - -class UseExample extends Component { - static title = 'Reuse svg code'; - render() { - return ( - - - - - - - - - - - - ); - } -} - -class UseShapes extends Component { - static title = 'Using Shapes Outside of a Defs Element'; - render() { - return ( - - - - - - - - - ); - } -} - -class DefsExample extends Component { - static title = 'Basic Defs usage'; - render() { - return ( - - - - - - - - - - - - - - - - - - - - - - - - - ); - } -} - -class SymbolExample extends Component { - static title = 'Symbol example, reuse elements with viewBox prop'; - render() { - return ( - - - - - - - - - - ); - } -} - -const icon = ( - - - - - - - - - - - - -); - -const samples = [UseExample, UseShapes, DefsExample, SymbolExample]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Stroking.tsx b/apps/examples/src/examples/Stroking.tsx deleted file mode 100644 index 53e716511..000000000 --- a/apps/examples/src/examples/Stroking.tsx +++ /dev/null @@ -1,163 +0,0 @@ -import React, {Component} from 'react'; -import { - Svg, - Circle, - G, - Text, - Path, - Polyline, - Rect, - Defs, - RadialGradient, - Stop, - ClipPath, -} from 'react-native-svg'; - -class StrokeExample extends Component { - static title = - 'The stroke property defines the color of a line, text or outline of an element'; - render() { - return ( - - - - - - - - ); - } -} - -class StrokeLinecap extends Component { - static title = - 'The strokeLinecap property defines different types of endings to an open path'; - render() { - return ( - - - - - - - - ); - } -} - -class StrokeDasharray extends Component { - static title = 'strokeDasharray'; - render() { - return ( - - - - - - - - ); - } -} - -class StrokeDashoffset extends Component { - static title = - 'the strokeDashoffset attribute specifies the distance into the dash pattern to start the dash.'; - render() { - return ( - - - - STROKE - - - ); - } -} - -class StrokePattern extends Component { - static title = 'Advanced stroke example.'; - render() { - return ( - - - - - - - - - - - - - - ); - } -} - -const icon = ( - - - - - -); - -const samples = [ - StrokeExample, - StrokeLinecap, - StrokeDasharray, - StrokeDashoffset, - StrokePattern, -]; -export {icon, samples}; diff --git a/apps/examples/src/examples/Svg.tsx b/apps/examples/src/examples/Svg.tsx deleted file mode 100644 index 02ff95635..000000000 --- a/apps/examples/src/examples/Svg.tsx +++ /dev/null @@ -1,214 +0,0 @@ -import React, {Component} from 'react'; -import {StyleSheet, View, Image} from 'react-native'; -import {Svg, Circle, G, Path, Line, Rect} from 'react-native-svg'; - -const styles = StyleSheet.create({ - container: { - flex: 1, - height: 100, - width: 200, - }, - svg: { - flex: 1, - alignSelf: 'stretch', - }, -}); - -class SvgExample extends Component { - static title = 'SVG'; - render() { - return ( - - - - - ); - } -} - -class SvgOpacity extends Component { - static title = 'SVG with `opacity` prop'; - render() { - return ( - - - - - ); - } -} - -class SvgViewbox extends Component { - static title = - 'SVG with `viewBox="40 20 100 40" and preserveAspectRatio="none"`'; - render() { - return ( - - - - - - - - ); - } -} - -class SvgLayout extends Component { - static title = 'SVG with flex layout'; - render() { - return ( - - - - - - - - ); - } -} - -class SvgNativeMethods extends Component { - static title = - 'Tap the shapes to render the Image below based on the base64-data of the Svg'; - state = { - base64: null, - }; - alert = () => { - console.log('PRESSED'); - this.root?.toDataURL((base64: string) => { - this.setState({ - base64, - }); - }); - - console.log(this.circle?.isPointInFill({x: 200, y: 100})); - console.log(this.circle?.isPointInStroke({x: 200, y: 100})); - console.log(this.circle?.getTotalLength()); - console.log(this.circle?.getPointAtLength(25)); - console.log(this.circle?.getBBox({fill: true})); - console.log(this.circle?.getCTM()); - console.log(this.circle?.getScreenCTM()); - }; - root?: Svg | null; - circle?: Circle | null; - - render() { - return ( - - { - this.root = ele; - }}> - - { - this.circle = ele; - }} - /> - - - - - {this.state.base64 && ( - - )} - - - ); - } -} - -const icon = ( - - - - -); - -const samples = [ - SvgExample, - SvgOpacity, - SvgViewbox, - SvgLayout, - SvgNativeMethods, -]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Text.tsx b/apps/examples/src/examples/Text.tsx deleted file mode 100644 index 0223f948e..000000000 --- a/apps/examples/src/examples/Text.tsx +++ /dev/null @@ -1,191 +0,0 @@ -import React, {Component} from 'react'; - -import { - Svg, - G, - Text, - TSpan, - TextPath, - Path, - Defs, - LinearGradient, - Stop, -} from 'react-native-svg'; - -class TextExample extends Component { - static title = 'Text'; - render() { - return ( - - - I love SVG! - - - ); - } -} - -class TextRotate extends Component { - static title = 'Transform the text'; - render() { - return ( - - - I love SVG - - - I love SVG - - - I love SVG - - - ); - } -} - -class TextStroke extends Component { - static title = 'Stroke the text'; - render() { - return ( - - - - - - - - - {['STROKE TEXT']} - - - ); - } -} - -class TextFill extends Component { - static title = 'Fill the text with LinearGradient'; - render() { - return ( - - - - - - - - - - FILL TEXT - - - ); - } -} - -const path = ` -M 10 20 -C 40 10 60 0 80 10 -C 100 20 120 30 140 20 -C 160 10 180 10 180 10 -`; -class TextPathExample extends Component { - static title = 'Draw text along path'; - render() { - return ( - - - - - - - - We go up and down, - - then up again - - - - - - - ); - } -} - -class TSpanExample extends Component { - static title = 'TSpan nest'; - render() { - return ( - - - tspan line 1 - - tspan line 2 - - - tspan line 3 - - - - 12345 - - 6 - 7 - - - 89a - - - - delta on text - - - ); - } -} - -const icon = ( - - - 字 - - -); - -const samples = [ - TextExample, - TextRotate, - TextStroke, - TextFill, - TextPathExample, - TSpanExample, -]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Text.windows.tsx b/apps/examples/src/examples/Text.windows.tsx deleted file mode 100644 index 311ee142d..000000000 --- a/apps/examples/src/examples/Text.windows.tsx +++ /dev/null @@ -1,183 +0,0 @@ -import React, {Component} from 'react'; - -import { - Svg, - G, - Text, - TSpan, - Path, - Defs, - LinearGradient, - Stop, -} from 'react-native-svg'; - -class TextExample extends Component { - static title = 'Text'; - render() { - return ( - - - I love SVG! - - - ); - } -} - -class TextRotate extends Component { - static title = 'Transform the text'; - render() { - return ( - - - I love SVG - - - I love SVG - - - I love SVG - - - ); - } -} - -class TextStroke extends Component { - static title = 'Stroke the text'; - render() { - return ( - - - - - - - - - {['STROKE TEXT']} - - - ); - } -} - -class TextFill extends Component { - static title = 'Fill the text with LinearGradient'; - render() { - return ( - - - - - - - - - - FILL TEXT - - - ); - } -} - -const path = ` -M 10 20 -C 40 10 60 0 80 10 -C 100 20 120 30 140 20 -C 160 10 180 10 180 10 -`; -class TextPathExample extends Component { - static title = 'Draw text along path'; - render() { - return ( - - - - - - TextPath not implemented - - - - ); - } -} - -class TSpanExample extends Component { - static title = 'TSpan nest'; - render() { - return ( - - - tspan line 1 - - tspan line 2 - - - tspan line 3 - - - - 12345 - - 6 - 7 - - - 89a - - - - delta on text - - - ); - } -} - -const icon = ( - - - 字 - - -); - -const samples = [ - TextExample, - TextRotate, - TextStroke, - TextFill, - TextPathExample, - TSpanExample, -]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/TouchEvents.tsx b/apps/examples/src/examples/TouchEvents.tsx deleted file mode 100644 index f8b707930..000000000 --- a/apps/examples/src/examples/TouchEvents.tsx +++ /dev/null @@ -1,118 +0,0 @@ -import React, {Component} from 'react'; - -import { - Svg, - Circle, - G, - Text, - Path, - Rect, - Defs, - ClipPath, -} from 'react-native-svg'; -import {Alert} from 'react-native'; - -class PressExample extends Component { - static title = - 'Press on the red circle or long press on the blue rectangle to trigger the events'; - render() { - return ( - - Alert.alert('Press on Circle')} - /> - Alert.alert('Long press on Rect')} - /> - - - ); - } -} - -class HoverExample extends Component { - static title = 'Hover the svg path'; - state = { - hover: false, - }; - toggle = () => { - this.setState({hover: !this.state.hover}); - }; - render() { - return ( - - - - - - - - - ); - } -} - -class GroupExample extends Component { - static title = 'Bind touch events callback on Group element with viewBox'; - render() { - return ( - - Alert.alert('Pressed on G')} scale="1.4"> - - Alert.alert('Pressed on Text')}> - H - - - - - ); - } -} - -const icon = ( - - - - -); - -const samples = [PressExample, HoverExample, GroupExample]; - -export {icon, samples}; diff --git a/apps/examples/src/examples/Transforms.tsx b/apps/examples/src/examples/Transforms.tsx deleted file mode 100644 index c8e5e8318..000000000 --- a/apps/examples/src/examples/Transforms.tsx +++ /dev/null @@ -1,158 +0,0 @@ -import React, {Component} from 'react'; -import {Platform} from 'react-native'; - -import { - Svg, - Circle, - Rect, - Pattern, - RadialGradient, - Stop, - SvgXml, - Defs, - G, -} from 'react-native-svg'; - -const patternXml = ` - - - - - - - - -`; - -class PatternTransformExample extends Component { - static title = 'Pattern transform'; - render() { - return ( - <> - - - - - - - - - - - - - - - - - - - - - - {Platform.OS !== 'web' && ( - - )} - - ); - } -} - -class GradientTransformExample extends Component { - static title = 'Gradient transform'; - render() { - return ( - - - - - - - - - - - - - - - - ); - } -} - -const icon = ( - - - - - - -); - -const samples = [PatternTransformExample, GradientTransformExample]; - -export {icon, samples}; diff --git a/apps/examples/utils/names.ts b/apps/examples/utils/names.ts deleted file mode 100644 index 9380caaa1..000000000 --- a/apps/examples/utils/names.ts +++ /dev/null @@ -1,28 +0,0 @@ -import {ExamplesKey} from './type'; - -export const names: ExamplesKey[] = [ - 'Svg', - 'Stroking', - 'Path', - 'Line', - 'Rect', - 'Polygon', - 'Polyline', - 'Circle', - 'Ellipse', - 'G', - 'Text', - 'Gradients', - 'Clipping', - 'Image', - 'TouchEvents', - 'PanResponder', - 'Reusable', - 'Reanimated', - 'Transforms', - 'Markers', - 'Mask', - 'E2E', - 'Filters', - 'FilterImage', -]; diff --git a/apps/examples/utils/type.ts b/apps/examples/utils/type.ts deleted file mode 100644 index 98a1f7b69..000000000 --- a/apps/examples/utils/type.ts +++ /dev/null @@ -1,3 +0,0 @@ -import * as examples from '../src/examples'; - -export type ExamplesKey = keyof typeof examples | 'E2E'; diff --git a/example/.bundle/config b/apps/fabric-example/.bundle/config similarity index 100% rename from example/.bundle/config rename to apps/fabric-example/.bundle/config diff --git a/example/.gitignore b/apps/fabric-example/.gitignore similarity index 100% rename from example/.gitignore rename to apps/fabric-example/.gitignore diff --git a/example/.watchmanconfig b/apps/fabric-example/.watchmanconfig similarity index 100% rename from example/.watchmanconfig rename to apps/fabric-example/.watchmanconfig diff --git a/fabric-example/Gemfile b/apps/fabric-example/Gemfile similarity index 100% rename from fabric-example/Gemfile rename to apps/fabric-example/Gemfile diff --git a/tests-example/Gemfile.lock b/apps/fabric-example/Gemfile.lock similarity index 99% rename from tests-example/Gemfile.lock rename to apps/fabric-example/Gemfile.lock index 7c5899f8f..192246f7b 100644 --- a/tests-example/Gemfile.lock +++ b/apps/fabric-example/Gemfile.lock @@ -109,4 +109,4 @@ RUBY VERSION ruby 3.2.1p31 BUNDLED WITH - 2.4.19 + 2.5.22 diff --git a/fabric-example/android/app/build.gradle b/apps/fabric-example/android/app/build.gradle similarity index 100% rename from fabric-example/android/app/build.gradle rename to apps/fabric-example/android/app/build.gradle diff --git a/example/android/app/debug.keystore b/apps/fabric-example/android/app/debug.keystore similarity index 100% rename from example/android/app/debug.keystore rename to apps/fabric-example/android/app/debug.keystore diff --git a/example/android/app/proguard-rules.pro b/apps/fabric-example/android/app/proguard-rules.pro similarity index 100% rename from example/android/app/proguard-rules.pro rename to apps/fabric-example/android/app/proguard-rules.pro diff --git a/example/android/app/src/debug/AndroidManifest.xml b/apps/fabric-example/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from example/android/app/src/debug/AndroidManifest.xml rename to apps/fabric-example/android/app/src/debug/AndroidManifest.xml diff --git a/fabric-example/android/app/src/main/AndroidManifest.xml b/apps/fabric-example/android/app/src/main/AndroidManifest.xml similarity index 100% rename from fabric-example/android/app/src/main/AndroidManifest.xml rename to apps/fabric-example/android/app/src/main/AndroidManifest.xml diff --git a/fabric-example/android/app/src/main/java/com/fabricexample/MainActivity.kt b/apps/fabric-example/android/app/src/main/java/com/fabricexample/MainActivity.kt similarity index 88% rename from fabric-example/android/app/src/main/java/com/fabricexample/MainActivity.kt rename to apps/fabric-example/android/app/src/main/java/com/fabricexample/MainActivity.kt index 235fa3d48..fde18b932 100644 --- a/fabric-example/android/app/src/main/java/com/fabricexample/MainActivity.kt +++ b/apps/fabric-example/android/app/src/main/java/com/fabricexample/MainActivity.kt @@ -1,5 +1,6 @@ package com.fabricexample +import android.os.Bundle; import com.facebook.react.ReactActivity import com.facebook.react.ReactActivityDelegate import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled @@ -12,7 +13,10 @@ class MainActivity : ReactActivity() { * rendering of the component. */ override fun getMainComponentName(): String = "FabricExample" - + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(null) + } /** * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] diff --git a/fabric-example/android/app/src/main/java/com/fabricexample/MainApplication.kt b/apps/fabric-example/android/app/src/main/java/com/fabricexample/MainApplication.kt similarity index 93% rename from fabric-example/android/app/src/main/java/com/fabricexample/MainApplication.kt rename to apps/fabric-example/android/app/src/main/java/com/fabricexample/MainApplication.kt index d691571d7..8bd7b9f87 100644 --- a/fabric-example/android/app/src/main/java/com/fabricexample/MainApplication.kt +++ b/apps/fabric-example/android/app/src/main/java/com/fabricexample/MainApplication.kt @@ -9,6 +9,7 @@ import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.soloader.OpenSourceMergedSoMapping import com.facebook.soloader.SoLoader class MainApplication : Application(), ReactApplication { @@ -34,7 +35,7 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() - SoLoader.init(this, false) + SoLoader.init(this, OpenSourceMergedSoMapping) if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // If you opted-in for the New Architecture, we load the native entry point for this app. load() diff --git a/example/android/app/src/main/res/drawable/rn_edit_text_material.xml b/apps/fabric-example/android/app/src/main/res/drawable/rn_edit_text_material.xml similarity index 100% rename from example/android/app/src/main/res/drawable/rn_edit_text_material.xml rename to apps/fabric-example/android/app/src/main/res/drawable/rn_edit_text_material.xml diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to apps/fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/apps/fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to apps/fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to apps/fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/apps/fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to apps/fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to apps/fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/apps/fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to apps/fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to apps/fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/apps/fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to apps/fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to apps/fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/apps/fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to apps/fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/fabric-example/android/app/src/main/res/values/strings.xml b/apps/fabric-example/android/app/src/main/res/values/strings.xml similarity index 100% rename from fabric-example/android/app/src/main/res/values/strings.xml rename to apps/fabric-example/android/app/src/main/res/values/strings.xml diff --git a/example/android/app/src/main/res/values/styles.xml b/apps/fabric-example/android/app/src/main/res/values/styles.xml similarity index 100% rename from example/android/app/src/main/res/values/styles.xml rename to apps/fabric-example/android/app/src/main/res/values/styles.xml diff --git a/tests-example/android/build.gradle b/apps/fabric-example/android/build.gradle similarity index 100% rename from tests-example/android/build.gradle rename to apps/fabric-example/android/build.gradle diff --git a/fabric-example/android/gradle.properties b/apps/fabric-example/android/gradle.properties similarity index 100% rename from fabric-example/android/gradle.properties rename to apps/fabric-example/android/gradle.properties diff --git a/tests-example/android/gradle/wrapper/gradle-wrapper.jar b/apps/fabric-example/android/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from tests-example/android/gradle/wrapper/gradle-wrapper.jar rename to apps/fabric-example/android/gradle/wrapper/gradle-wrapper.jar diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/apps/fabric-example/android/gradle/wrapper/gradle-wrapper.properties similarity index 93% rename from example/android/gradle/wrapper/gradle-wrapper.properties rename to apps/fabric-example/android/gradle/wrapper/gradle-wrapper.properties index 2ea3535dc..79eb9d003 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/apps/fabric-example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/tests-example/android/gradlew b/apps/fabric-example/android/gradlew similarity index 100% rename from tests-example/android/gradlew rename to apps/fabric-example/android/gradlew diff --git a/tests-example/android/gradlew.bat b/apps/fabric-example/android/gradlew.bat similarity index 100% rename from tests-example/android/gradlew.bat rename to apps/fabric-example/android/gradlew.bat diff --git a/fabric-example/android/settings.gradle b/apps/fabric-example/android/settings.gradle similarity index 100% rename from fabric-example/android/settings.gradle rename to apps/fabric-example/android/settings.gradle diff --git a/fabric-example/app.json b/apps/fabric-example/app.json similarity index 100% rename from fabric-example/app.json rename to apps/fabric-example/app.json diff --git a/fabric-example/babel.config.js b/apps/fabric-example/babel.config.js similarity index 100% rename from fabric-example/babel.config.js rename to apps/fabric-example/babel.config.js diff --git a/apps/fabric-example/common b/apps/fabric-example/common new file mode 120000 index 000000000..83323993b --- /dev/null +++ b/apps/fabric-example/common @@ -0,0 +1 @@ +../common/ \ No newline at end of file diff --git a/example/index.js b/apps/fabric-example/index.js similarity index 84% rename from example/index.js rename to apps/fabric-example/index.js index d60a80149..a7ab94e96 100644 --- a/example/index.js +++ b/apps/fabric-example/index.js @@ -3,7 +3,7 @@ */ import { AppRegistry } from 'react-native'; -import App from '../apps'; +import App from '../common'; import { name as appName } from './app.json'; AppRegistry.registerComponent(appName, () => App); diff --git a/example/ios/.xcode.env b/apps/fabric-example/ios/.xcode.env similarity index 100% rename from example/ios/.xcode.env rename to apps/fabric-example/ios/.xcode.env diff --git a/fabric-example/ios/FabricExample.xcodeproj/project.pbxproj b/apps/fabric-example/ios/FabricExample.xcodeproj/project.pbxproj similarity index 91% rename from fabric-example/ios/FabricExample.xcodeproj/project.pbxproj rename to apps/fabric-example/ios/FabricExample.xcodeproj/project.pbxproj index 7f086bbf6..0c557a8f3 100644 --- a/fabric-example/ios/FabricExample.xcodeproj/project.pbxproj +++ b/apps/fabric-example/ios/FabricExample.xcodeproj/project.pbxproj @@ -8,11 +8,11 @@ /* Begin PBXBuildFile section */ 00E356F31AD99517003FC87E /* FabricExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* FabricExampleTests.m */; }; - 0C80B921A6F3F58F76C31292 /* libPods-FabricExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-FabricExample.a */; }; + 01B38C96ACD796505CB33B37 /* libPods-FabricExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 27127EB7979A1F14DA4CA0D9 /* libPods-FabricExample.a */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 7699B88040F8A987B510C191 /* libPods-FabricExample-FabricExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-FabricExample-FabricExampleTests.a */; }; + 80376A6499F4F7B00E5841F0 /* libPods-FabricExample-FabricExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 9059F2AA052C80EE55BA94D0 /* libPods-FabricExample-FabricExampleTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; BC9D115E75DB3354094D0D0B /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 0F99413463AD4F477353716A /* PrivacyInfo.xcprivacy */; }; /* End PBXBuildFile section */ @@ -32,6 +32,7 @@ 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 00E356F21AD99517003FC87E /* FabricExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FabricExampleTests.m; sourceTree = ""; }; 0F99413463AD4F477353716A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = FabricExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 120F97EA92375979DDC8566B /* Pods-FabricExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample.debug.xcconfig"; path = "Target Support Files/Pods-FabricExample/Pods-FabricExample.debug.xcconfig"; sourceTree = ""; }; 13B07F961A680F5B00A75B9A /* FabricExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FabricExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = FabricExample/AppDelegate.h; sourceTree = ""; }; 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = FabricExample/AppDelegate.mm; sourceTree = ""; }; @@ -39,13 +40,12 @@ 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = FabricExample/Info.plist; sourceTree = ""; }; 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = FabricExample/main.m; sourceTree = ""; }; 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = FabricExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-FabricExample-FabricExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FabricExample-FabricExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B4392A12AC88292D35C810B /* Pods-FabricExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample.debug.xcconfig"; path = "Target Support Files/Pods-FabricExample/Pods-FabricExample.debug.xcconfig"; sourceTree = ""; }; - 5709B34CF0A7D63546082F79 /* Pods-FabricExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample.release.xcconfig"; path = "Target Support Files/Pods-FabricExample/Pods-FabricExample.release.xcconfig"; sourceTree = ""; }; - 5B7EB9410499542E8C5724F5 /* Pods-FabricExample-FabricExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample-FabricExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-FabricExample-FabricExampleTests/Pods-FabricExample-FabricExampleTests.debug.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-FabricExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FabricExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 27127EB7979A1F14DA4CA0D9 /* libPods-FabricExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FabricExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3BBA0209D5210E069643A0C3 /* Pods-FabricExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample.release.xcconfig"; path = "Target Support Files/Pods-FabricExample/Pods-FabricExample.release.xcconfig"; sourceTree = ""; }; + 3E6E8CE81F5837D1FDB02A9F /* Pods-FabricExample-FabricExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample-FabricExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-FabricExample-FabricExampleTests/Pods-FabricExample-FabricExampleTests.debug.xcconfig"; sourceTree = ""; }; + 5E0813EBB665E39231C8BDF1 /* Pods-FabricExample-FabricExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample-FabricExampleTests.release.xcconfig"; path = "Target Support Files/Pods-FabricExample-FabricExampleTests/Pods-FabricExample-FabricExampleTests.release.xcconfig"; sourceTree = ""; }; 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = FabricExample/LaunchScreen.storyboard; sourceTree = ""; }; - 89C6BE57DB24E9ADA2F236DE /* Pods-FabricExample-FabricExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricExample-FabricExampleTests.release.xcconfig"; path = "Target Support Files/Pods-FabricExample-FabricExampleTests/Pods-FabricExample-FabricExampleTests.release.xcconfig"; sourceTree = ""; }; + 9059F2AA052C80EE55BA94D0 /* libPods-FabricExample-FabricExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FabricExample-FabricExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -54,7 +54,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7699B88040F8A987B510C191 /* libPods-FabricExample-FabricExampleTests.a in Frameworks */, + 80376A6499F4F7B00E5841F0 /* libPods-FabricExample-FabricExampleTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -62,7 +62,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0C80B921A6F3F58F76C31292 /* libPods-FabricExample.a in Frameworks */, + 01B38C96ACD796505CB33B37 /* libPods-FabricExample.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -105,8 +105,8 @@ isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-FabricExample.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-FabricExample-FabricExampleTests.a */, + 27127EB7979A1F14DA4CA0D9 /* libPods-FabricExample.a */, + 9059F2AA052C80EE55BA94D0 /* libPods-FabricExample-FabricExampleTests.a */, ); name = Frameworks; sourceTree = ""; @@ -145,10 +145,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 3B4392A12AC88292D35C810B /* Pods-FabricExample.debug.xcconfig */, - 5709B34CF0A7D63546082F79 /* Pods-FabricExample.release.xcconfig */, - 5B7EB9410499542E8C5724F5 /* Pods-FabricExample-FabricExampleTests.debug.xcconfig */, - 89C6BE57DB24E9ADA2F236DE /* Pods-FabricExample-FabricExampleTests.release.xcconfig */, + 120F97EA92375979DDC8566B /* Pods-FabricExample.debug.xcconfig */, + 3BBA0209D5210E069643A0C3 /* Pods-FabricExample.release.xcconfig */, + 3E6E8CE81F5837D1FDB02A9F /* Pods-FabricExample-FabricExampleTests.debug.xcconfig */, + 5E0813EBB665E39231C8BDF1 /* Pods-FabricExample-FabricExampleTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -160,12 +160,12 @@ isa = PBXNativeTarget; buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "FabricExampleTests" */; buildPhases = ( - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, + 2D584F2074AC8F73333E3CB8 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, 00E356EB1AD99517003FC87E /* Frameworks */, 00E356EC1AD99517003FC87E /* Resources */, - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */, - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */, + 969D46DA6F6E504A009BF7D0 /* [CP] Embed Pods Frameworks */, + DACC03DDCDA776AA588FBD6F /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -181,13 +181,13 @@ isa = PBXNativeTarget; buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "FabricExample" */; buildPhases = ( - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, + F343498CC263272627D0B211 /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, 13B07F8C1A680F5B00A75B9A /* Frameworks */, 13B07F8E1A680F5B00A75B9A /* Resources */, 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */, - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */, + 4DD254F1B550FB0D886E98F2 /* [CP] Embed Pods Frameworks */, + C9CE7CE93A4D2EFAFF7241D5 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -271,24 +271,7 @@ shellPath = /bin/sh; shellScript = "set -e\n\nWITH_ENVIRONMENT=\"$REACT_NATIVE_PATH/scripts/xcode/with-environment.sh\"\nREACT_NATIVE_XCODE=\"$REACT_NATIVE_PATH/scripts/react-native-xcode.sh\"\n\n/bin/sh -c \"$WITH_ENVIRONMENT $REACT_NATIVE_XCODE\"\n"; }; - 00EEFC60759A1932668264C0 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-FabricExample/Pods-FabricExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-FabricExample/Pods-FabricExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FabricExample/Pods-FabricExample-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; - A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { + 2D584F2074AC8F73333E3CB8 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -310,29 +293,24 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */ = { + 4DD254F1B550FB0D886E98F2 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-FabricExample/Pods-FabricExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-FabricExample-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-FabricExample/Pods-FabricExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FabricExample/Pods-FabricExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - C59DA0FBD6956966B86A3779 /* [CP] Embed Pods Frameworks */ = { + 969D46DA6F6E504A009BF7D0 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -349,7 +327,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FabricExample-FabricExampleTests/Pods-FabricExample-FabricExampleTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { + C9CE7CE93A4D2EFAFF7241D5 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -366,7 +344,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FabricExample/Pods-FabricExample-resources.sh\"\n"; showEnvVarsInLog = 0; }; - F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { + DACC03DDCDA776AA588FBD6F /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,6 +361,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-FabricExample-FabricExampleTests/Pods-FabricExample-FabricExampleTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; + F343498CC263272627D0B211 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-FabricExample-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -416,7 +416,7 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-FabricExample-FabricExampleTests.debug.xcconfig */; + baseConfigurationReference = 3E6E8CE81F5837D1FDB02A9F /* Pods-FabricExample-FabricExampleTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -424,7 +424,7 @@ "$(inherited)", ); INFOPLIST_FILE = FabricExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -443,12 +443,12 @@ }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-FabricExample-FabricExampleTests.release.xcconfig */; + baseConfigurationReference = 5E0813EBB665E39231C8BDF1 /* Pods-FabricExample-FabricExampleTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; INFOPLIST_FILE = FabricExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -467,7 +467,7 @@ }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-FabricExample.debug.xcconfig */; + baseConfigurationReference = 120F97EA92375979DDC8566B /* Pods-FabricExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -494,7 +494,7 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-FabricExample.release.xcconfig */; + baseConfigurationReference = 3BBA0209D5210E069643A0C3 /* Pods-FabricExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -568,7 +568,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD = ""; LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( @@ -645,7 +645,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD = ""; LDPLUSPLUS = ""; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/fabric-example/ios/FabricExample.xcodeproj/xcshareddata/xcschemes/FabricExample.xcscheme b/apps/fabric-example/ios/FabricExample.xcodeproj/xcshareddata/xcschemes/FabricExample.xcscheme similarity index 100% rename from fabric-example/ios/FabricExample.xcodeproj/xcshareddata/xcschemes/FabricExample.xcscheme rename to apps/fabric-example/ios/FabricExample.xcodeproj/xcshareddata/xcschemes/FabricExample.xcscheme diff --git a/fabric-example/ios/FabricExample.xcworkspace/contents.xcworkspacedata b/apps/fabric-example/ios/FabricExample.xcworkspace/contents.xcworkspacedata similarity index 100% rename from fabric-example/ios/FabricExample.xcworkspace/contents.xcworkspacedata rename to apps/fabric-example/ios/FabricExample.xcworkspace/contents.xcworkspacedata diff --git a/example/ios/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/apps/fabric-example/ios/FabricExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from example/ios/Example.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to apps/fabric-example/ios/FabricExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/example/ios/Example/AppDelegate.h b/apps/fabric-example/ios/FabricExample/AppDelegate.h similarity index 100% rename from example/ios/Example/AppDelegate.h rename to apps/fabric-example/ios/FabricExample/AppDelegate.h diff --git a/fabric-example/ios/FabricExample/AppDelegate.mm b/apps/fabric-example/ios/FabricExample/AppDelegate.mm similarity index 100% rename from fabric-example/ios/FabricExample/AppDelegate.mm rename to apps/fabric-example/ios/FabricExample/AppDelegate.mm diff --git a/example/ios/Example/Images.xcassets/AppIcon.appiconset/Contents.json b/apps/fabric-example/ios/FabricExample/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from example/ios/Example/Images.xcassets/AppIcon.appiconset/Contents.json rename to apps/fabric-example/ios/FabricExample/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/example/ios/Example/Images.xcassets/Contents.json b/apps/fabric-example/ios/FabricExample/Images.xcassets/Contents.json similarity index 100% rename from example/ios/Example/Images.xcassets/Contents.json rename to apps/fabric-example/ios/FabricExample/Images.xcassets/Contents.json diff --git a/fabric-example/ios/FabricExample/Info.plist b/apps/fabric-example/ios/FabricExample/Info.plist similarity index 100% rename from fabric-example/ios/FabricExample/Info.plist rename to apps/fabric-example/ios/FabricExample/Info.plist diff --git a/fabric-example/ios/FabricExample/LaunchScreen.storyboard b/apps/fabric-example/ios/FabricExample/LaunchScreen.storyboard similarity index 100% rename from fabric-example/ios/FabricExample/LaunchScreen.storyboard rename to apps/fabric-example/ios/FabricExample/LaunchScreen.storyboard diff --git a/example/ios/Example/PrivacyInfo.xcprivacy b/apps/fabric-example/ios/FabricExample/PrivacyInfo.xcprivacy similarity index 100% rename from example/ios/Example/PrivacyInfo.xcprivacy rename to apps/fabric-example/ios/FabricExample/PrivacyInfo.xcprivacy diff --git a/example/ios/Example/main.m b/apps/fabric-example/ios/FabricExample/main.m similarity index 100% rename from example/ios/Example/main.m rename to apps/fabric-example/ios/FabricExample/main.m diff --git a/fabric-example/ios/FabricExampleTests/FabricExampleTests.m b/apps/fabric-example/ios/FabricExampleTests/FabricExampleTests.m similarity index 100% rename from fabric-example/ios/FabricExampleTests/FabricExampleTests.m rename to apps/fabric-example/ios/FabricExampleTests/FabricExampleTests.m diff --git a/example/ios/ExampleTests/Info.plist b/apps/fabric-example/ios/FabricExampleTests/Info.plist similarity index 100% rename from example/ios/ExampleTests/Info.plist rename to apps/fabric-example/ios/FabricExampleTests/Info.plist diff --git a/fabric-example/ios/Podfile b/apps/fabric-example/ios/Podfile similarity index 99% rename from fabric-example/ios/Podfile rename to apps/fabric-example/ios/Podfile index fadf4c642..4456be799 100644 --- a/fabric-example/ios/Podfile +++ b/apps/fabric-example/ios/Podfile @@ -1,3 +1,5 @@ +ENV['RCT_NEW_ARCH_ENABLED'] = '1' + # Resolve react_native_pods.rb with node to allow for hoisting require Pod::Executable.execute_command('node', ['-p', 'require.resolve( @@ -13,7 +15,6 @@ if linkage != nil Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green use_frameworks! :linkage => linkage.to_sym end -ENV['RCT_NEW_ARCH_ENABLED'] = '1' target 'FabricExample' do config = use_native_modules! diff --git a/example/ios/Podfile.lock b/apps/fabric-example/ios/Podfile.lock similarity index 51% rename from example/ios/Podfile.lock rename to apps/fabric-example/ios/Podfile.lock index ccbb79253..ea760c651 100644 --- a/example/ios/Podfile.lock +++ b/apps/fabric-example/ios/Podfile.lock @@ -1,12 +1,12 @@ PODS: - - boost (1.83.0) + - boost (1.84.0) - DoubleConversion (1.1.6) - - FBLazyVector (0.74.2) + - FBLazyVector (0.76.0) - fmt (9.1.0) - glog (0.3.5) - - hermes-engine (0.74.2): - - hermes-engine/Pre-built (= 0.74.2) - - hermes-engine/Pre-built (0.74.2) + - hermes-engine (0.76.0): + - hermes-engine/Pre-built (= 0.76.0) + - hermes-engine/Pre-built (0.76.0) - RCT-Folly (2024.01.01.00): - boost - DoubleConversion @@ -23,52 +23,32 @@ PODS: - DoubleConversion - fmt (= 9.1.0) - glog - - RCTDeprecation (0.74.2) - - RCTRequired (0.74.2) - - RCTTypeSafety (0.74.2): - - FBLazyVector (= 0.74.2) - - RCTRequired (= 0.74.2) - - React-Core (= 0.74.2) - - React (0.74.2): - - React-Core (= 0.74.2) - - React-Core/DevSupport (= 0.74.2) - - React-Core/RCTWebSocket (= 0.74.2) - - React-RCTActionSheet (= 0.74.2) - - React-RCTAnimation (= 0.74.2) - - React-RCTBlob (= 0.74.2) - - React-RCTImage (= 0.74.2) - - React-RCTLinking (= 0.74.2) - - React-RCTNetwork (= 0.74.2) - - React-RCTSettings (= 0.74.2) - - React-RCTText (= 0.74.2) - - React-RCTVibration (= 0.74.2) - - React-callinvoker (0.74.2) - - React-Codegen (0.74.2): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly - - RCTRequired - - RCTTypeSafety - - React-Core - - React-debug - - React-Fabric - - React-FabricImage - - React-featureflags - - React-graphics - - React-jsi - - React-jsiexecutor - - React-NativeModulesApple - - React-rendererdebug - - React-utils - - ReactCommon/turbomodule/bridging - - ReactCommon/turbomodule/core - - React-Core (0.74.2): + - RCTDeprecation (0.76.0) + - RCTRequired (0.76.0) + - RCTTypeSafety (0.76.0): + - FBLazyVector (= 0.76.0) + - RCTRequired (= 0.76.0) + - React-Core (= 0.76.0) + - React (0.76.0): + - React-Core (= 0.76.0) + - React-Core/DevSupport (= 0.76.0) + - React-Core/RCTWebSocket (= 0.76.0) + - React-RCTActionSheet (= 0.76.0) + - React-RCTAnimation (= 0.76.0) + - React-RCTBlob (= 0.76.0) + - React-RCTImage (= 0.76.0) + - React-RCTLinking (= 0.76.0) + - React-RCTNetwork (= 0.76.0) + - React-RCTSettings (= 0.76.0) + - React-RCTText (= 0.76.0) + - React-RCTVibration (= 0.76.0) + - React-callinvoker (0.76.0) + - React-Core (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - RCTDeprecation - - React-Core/Default (= 0.74.2) + - React-Core/Default (= 0.76.0) - React-cxxreact - React-featureflags - React-hermes @@ -78,9 +58,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/CoreModulesHeaders (0.74.2): + - React-Core/CoreModulesHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -95,9 +75,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/Default (0.74.2): + - React-Core/Default (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -111,15 +91,15 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/DevSupport (0.74.2): + - React-Core/DevSupport (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - RCTDeprecation - - React-Core/Default (= 0.74.2) - - React-Core/RCTWebSocket (= 0.74.2) + - React-Core/Default (= 0.76.0) + - React-Core/RCTWebSocket (= 0.76.0) - React-cxxreact - React-featureflags - React-hermes @@ -129,9 +109,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTActionSheetHeaders (0.74.2): + - React-Core/RCTActionSheetHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -146,9 +126,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTAnimationHeaders (0.74.2): + - React-Core/RCTAnimationHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -163,9 +143,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTBlobHeaders (0.74.2): + - React-Core/RCTBlobHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -180,9 +160,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTImageHeaders (0.74.2): + - React-Core/RCTImageHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -197,9 +177,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTLinkingHeaders (0.74.2): + - React-Core/RCTLinkingHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -214,9 +194,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTNetworkHeaders (0.74.2): + - React-Core/RCTNetworkHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -231,9 +211,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTSettingsHeaders (0.74.2): + - React-Core/RCTSettingsHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -248,9 +228,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTTextHeaders (0.74.2): + - React-Core/RCTTextHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -265,9 +245,9 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTVibrationHeaders (0.74.2): + - React-Core/RCTVibrationHeaders (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -282,14 +262,14 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-Core/RCTWebSocket (0.74.2): + - React-Core/RCTWebSocket (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - RCTDeprecation - - React-Core/Default (= 0.74.2) + - React-Core/Default (= 0.76.0) - React-cxxreact - React-featureflags - React-hermes @@ -299,38 +279,86 @@ PODS: - React-perflogger - React-runtimescheduler - React-utils - - SocketRocket (= 0.7.0) + - SocketRocket (= 0.7.1) - Yoga - - React-CoreModules (0.74.2): + - React-CoreModules (0.76.0): - DoubleConversion - fmt (= 9.1.0) - RCT-Folly (= 2024.01.01.00) - - RCTTypeSafety (= 0.74.2) - - React-Codegen - - React-Core/CoreModulesHeaders (= 0.74.2) - - React-jsi (= 0.74.2) + - RCTTypeSafety (= 0.76.0) + - React-Core/CoreModulesHeaders (= 0.76.0) + - React-jsi (= 0.76.0) - React-jsinspector - React-NativeModulesApple - React-RCTBlob - - React-RCTImage (= 0.74.2) + - React-RCTImage (= 0.76.0) + - ReactCodegen - ReactCommon - - SocketRocket (= 0.7.0) - - React-cxxreact (0.74.2): - - boost (= 1.83.0) + - SocketRocket (= 0.7.1) + - React-cxxreact (0.76.0): + - boost - DoubleConversion - fmt (= 9.1.0) - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.74.2) - - React-debug (= 0.74.2) - - React-jsi (= 0.74.2) + - React-callinvoker (= 0.76.0) + - React-debug (= 0.76.0) + - React-jsi (= 0.76.0) - React-jsinspector - - React-logger (= 0.74.2) - - React-perflogger (= 0.74.2) - - React-runtimeexecutor (= 0.74.2) - - React-debug (0.74.2) - - React-Fabric (0.74.2): + - React-logger (= 0.76.0) + - React-perflogger (= 0.76.0) + - React-runtimeexecutor (= 0.76.0) + - React-timing (= 0.76.0) + - React-debug (0.76.0) + - React-defaultsnativemodule (0.76.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-domnativemodule + - React-Fabric + - React-featureflags + - React-featureflagsnativemodule + - React-graphics + - React-idlecallbacksnativemodule + - React-ImageManager + - React-microtasksnativemodule + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-domnativemodule (0.76.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-Fabric (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -341,20 +369,22 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.74.2) - - React-Fabric/attributedstring (= 0.74.2) - - React-Fabric/componentregistry (= 0.74.2) - - React-Fabric/componentregistrynative (= 0.74.2) - - React-Fabric/components (= 0.74.2) - - React-Fabric/core (= 0.74.2) - - React-Fabric/imagemanager (= 0.74.2) - - React-Fabric/leakchecker (= 0.74.2) - - React-Fabric/mounting (= 0.74.2) - - React-Fabric/scheduler (= 0.74.2) - - React-Fabric/telemetry (= 0.74.2) - - React-Fabric/templateprocessor (= 0.74.2) - - React-Fabric/textlayoutmanager (= 0.74.2) - - React-Fabric/uimanager (= 0.74.2) + - React-Fabric/animations (= 0.76.0) + - React-Fabric/attributedstring (= 0.76.0) + - React-Fabric/componentregistry (= 0.76.0) + - React-Fabric/componentregistrynative (= 0.76.0) + - React-Fabric/components (= 0.76.0) + - React-Fabric/core (= 0.76.0) + - React-Fabric/dom (= 0.76.0) + - React-Fabric/imagemanager (= 0.76.0) + - React-Fabric/leakchecker (= 0.76.0) + - React-Fabric/mounting (= 0.76.0) + - React-Fabric/observers (= 0.76.0) + - React-Fabric/scheduler (= 0.76.0) + - React-Fabric/telemetry (= 0.76.0) + - React-Fabric/templateprocessor (= 0.76.0) + - React-Fabric/uimanager (= 0.76.0) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -363,7 +393,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/animations (0.74.2): + - React-Fabric/animations (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -374,6 +404,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -382,7 +413,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/attributedstring (0.74.2): + - React-Fabric/attributedstring (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -393,6 +424,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -401,7 +433,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistry (0.74.2): + - React-Fabric/componentregistry (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -412,6 +444,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -420,7 +453,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/componentregistrynative (0.74.2): + - React-Fabric/componentregistrynative (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -431,6 +464,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -439,7 +473,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components (0.74.2): + - React-Fabric/components (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -450,17 +484,10 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/inputaccessory (= 0.74.2) - - React-Fabric/components/legacyviewmanagerinterop (= 0.74.2) - - React-Fabric/components/modal (= 0.74.2) - - React-Fabric/components/rncore (= 0.74.2) - - React-Fabric/components/root (= 0.74.2) - - React-Fabric/components/safeareaview (= 0.74.2) - - React-Fabric/components/scrollview (= 0.74.2) - - React-Fabric/components/text (= 0.74.2) - - React-Fabric/components/textinput (= 0.74.2) - - React-Fabric/components/unimplementedview (= 0.74.2) - - React-Fabric/components/view (= 0.74.2) + - React-Fabric/components/legacyviewmanagerinterop (= 0.76.0) + - React-Fabric/components/root (= 0.76.0) + - React-Fabric/components/view (= 0.76.0) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -469,7 +496,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/inputaccessory (0.74.2): + - React-Fabric/components/legacyviewmanagerinterop (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -480,6 +507,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -488,7 +516,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/legacyviewmanagerinterop (0.74.2): + - React-Fabric/components/root (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -499,6 +527,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -507,7 +536,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/modal (0.74.2): + - React-Fabric/components/view (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -518,6 +547,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -526,7 +556,8 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/rncore (0.74.2): + - Yoga + - React-Fabric/core (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -537,6 +568,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -545,7 +577,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/root (0.74.2): + - React-Fabric/dom (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -556,6 +588,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -564,7 +597,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/safeareaview (0.74.2): + - React-Fabric/imagemanager (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -575,6 +608,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -583,7 +617,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/scrollview (0.74.2): + - React-Fabric/leakchecker (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -594,6 +628,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -602,7 +637,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/text (0.74.2): + - React-Fabric/mounting (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -613,6 +648,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -621,7 +657,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/textinput (0.74.2): + - React-Fabric/observers (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -632,6 +668,8 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric/observers/events (= 0.76.0) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -640,7 +678,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/unimplementedview (0.74.2): + - React-Fabric/observers/events (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -651,6 +689,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -659,7 +698,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/components/view (0.74.2): + - React-Fabric/scheduler (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -670,16 +709,18 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric/observers/events + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor - React-logger + - React-performancetimeline - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - Yoga - - React-Fabric/core (0.74.2): + - React-Fabric/telemetry (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -690,6 +731,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -698,7 +740,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/imagemanager (0.74.2): + - React-Fabric/templateprocessor (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -709,6 +751,7 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -717,7 +760,7 @@ PODS: - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/leakchecker (0.74.2): + - React-Fabric/uimanager (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -728,15 +771,18 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric/uimanager/consistency (= 0.76.0) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor - React-logger + - React-rendererconsistency - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/mounting (0.74.2): + - React-Fabric/uimanager/consistency (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -747,15 +793,17 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor - React-logger + - React-rendererconsistency - React-rendererdebug - React-runtimescheduler - React-utils - ReactCommon/turbomodule/core - - React-Fabric/scheduler (0.74.2): + - React-FabricComponents (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -766,6 +814,10 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-FabricComponents/components (= 0.76.0) + - React-FabricComponents/textlayoutmanager (= 0.76.0) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -773,8 +825,10 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/telemetry (0.74.2): + - Yoga + - React-FabricComponents/components (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -785,6 +839,17 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-FabricComponents/components/inputaccessory (= 0.76.0) + - React-FabricComponents/components/iostextinput (= 0.76.0) + - React-FabricComponents/components/modal (= 0.76.0) + - React-FabricComponents/components/rncore (= 0.76.0) + - React-FabricComponents/components/safeareaview (= 0.76.0) + - React-FabricComponents/components/scrollview (= 0.76.0) + - React-FabricComponents/components/text (= 0.76.0) + - React-FabricComponents/components/textinput (= 0.76.0) + - React-FabricComponents/components/unimplementedview (= 0.76.0) + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -792,8 +857,10 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/templateprocessor (0.74.2): + - Yoga + - React-FabricComponents/components/inputaccessory (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -804,6 +871,8 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -811,8 +880,10 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/textlayoutmanager (0.74.2): + - Yoga + - React-FabricComponents/components/iostextinput (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -823,7 +894,8 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -831,8 +903,10 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-Fabric/uimanager (0.74.2): + - Yoga + - React-FabricComponents/components/modal (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog @@ -843,6 +917,8 @@ PODS: - React-Core - React-cxxreact - React-debug + - React-Fabric + - React-featureflags - React-graphics - React-jsi - React-jsiexecutor @@ -850,222 +926,530 @@ PODS: - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-FabricImage (0.74.2): + - Yoga + - React-FabricComponents/components/rncore (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog - hermes-engine - RCT-Folly/Fabric (= 2024.01.01.00) - - RCTRequired (= 0.74.2) - - RCTTypeSafety (= 0.74.2) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug - React-Fabric + - React-featureflags - React-graphics - - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.74.2) + - React-jsiexecutor - React-logger - React-rendererdebug + - React-runtimescheduler - React-utils - - ReactCommon + - ReactCodegen + - ReactCommon/turbomodule/core - Yoga - - React-featureflags (0.74.2) - - React-graphics (0.74.2): + - React-FabricComponents/components/safeareaview (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog + - hermes-engine - RCT-Folly/Fabric (= 2024.01.01.00) - - React-Core/Default (= 0.74.2) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler - React-utils - - React-hermes (0.74.2): + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/scrollview (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-cxxreact (= 0.74.2) - - React-jsi - - React-jsiexecutor (= 0.74.2) - - React-jsinspector - - React-perflogger (= 0.74.2) - - React-runtimeexecutor - - React-ImageManager (0.74.2): - - glog - - RCT-Folly/Fabric - - React-Core/Default + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact - React-debug - React-Fabric + - React-featureflags - React-graphics + - React-jsi + - React-jsiexecutor + - React-logger - React-rendererdebug + - React-runtimescheduler - React-utils - - React-jserrorhandler (0.74.2): - - RCT-Folly/Fabric (= 2024.01.01.00) - - React-debug - - React-jsi - - React-Mapbuffer - - React-jsi (0.74.2): - - boost (= 1.83.0) - - DoubleConversion - - fmt (= 9.1.0) - - glog - - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-jsiexecutor (0.74.2): + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/text (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-cxxreact (= 0.74.2) - - React-jsi (= 0.74.2) - - React-jsinspector - - React-perflogger (= 0.74.2) - - React-jsinspector (0.74.2): - - DoubleConversion - - glog - - hermes-engine - - RCT-Folly (= 2024.01.01.00) + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-cxxreact + - React-debug + - React-Fabric - React-featureflags + - React-graphics - React-jsi - - React-runtimeexecutor (= 0.74.2) - - React-jsitracing (0.74.2): - - React-jsi - - React-logger (0.74.2): - - glog - - React-Mapbuffer (0.74.2): - - glog - - React-debug - - react-native-view-shot (4.0.0-alpha.2): - - React-Core - - React-nativeconfig (0.74.2) - - React-NativeModulesApple (0.74.2): + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/components/textinput (0.76.0): + - DoubleConversion + - fmt (= 9.1.0) - glog - hermes-engine - - React-callinvoker + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core - React-cxxreact + - React-debug + - React-Fabric + - React-featureflags + - React-graphics - React-jsi - - React-jsinspector - - React-runtimeexecutor - - ReactCommon/turbomodule/bridging + - React-jsiexecutor + - React-logger + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen - ReactCommon/turbomodule/core - - React-perflogger (0.74.2) - - React-RCTActionSheet (0.74.2): - - React-Core/RCTActionSheetHeaders (= 0.74.2) - - React-RCTAnimation (0.74.2): - - RCT-Folly (= 2024.01.01.00) - - RCTTypeSafety - - React-Codegen - - React-Core/RCTAnimationHeaders - - React-jsi - - React-NativeModulesApple - - ReactCommon - - React-RCTAppDelegate (0.74.2): - - RCT-Folly (= 2024.01.01.00) + - Yoga + - React-FabricComponents/components/unimplementedview (0.76.0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - - React-CoreModules + - React-cxxreact - React-debug - React-Fabric - React-featureflags - React-graphics - - React-hermes - - React-nativeconfig - - React-NativeModulesApple - - React-RCTFabric - - React-RCTImage - - React-RCTNetwork + - React-jsi + - React-jsiexecutor + - React-logger - React-rendererdebug - - React-RuntimeApple - - React-RuntimeCore - - React-RuntimeHermes - React-runtimescheduler - React-utils - - ReactCommon - - React-RCTBlob (0.74.2): + - ReactCodegen + - ReactCommon/turbomodule/core + - Yoga + - React-FabricComponents/textlayoutmanager (0.76.0): - DoubleConversion - fmt (= 9.1.0) - - hermes-engine - - RCT-Folly (= 2024.01.01.00) - - React-Codegen - - React-Core/RCTBlobHeaders - - React-Core/RCTWebSocket - - React-jsi - - React-jsinspector - - React-NativeModulesApple - - React-RCTNetwork - - ReactCommon - - React-RCTFabric (0.74.2): - glog - hermes-engine - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core + - React-cxxreact - React-debug - React-Fabric - - React-FabricImage - React-featureflags - React-graphics - - React-ImageManager - React-jsi - - React-jsinspector - - React-nativeconfig - - React-RCTImage - - React-RCTText + - React-jsiexecutor + - React-logger - React-rendererdebug - React-runtimescheduler - React-utils + - ReactCodegen + - ReactCommon/turbomodule/core - Yoga - - React-RCTImage (0.74.2): - - RCT-Folly (= 2024.01.01.00) - - RCTTypeSafety - - React-Codegen - - React-Core/RCTImageHeaders - - React-jsi - - React-NativeModulesApple - - React-RCTNetwork - - ReactCommon - - React-RCTLinking (0.74.2): - - React-Codegen - - React-Core/RCTLinkingHeaders (= 0.74.2) - - React-jsi (= 0.74.2) - - React-NativeModulesApple - - ReactCommon - - ReactCommon/turbomodule/core (= 0.74.2) - - React-RCTNetwork (0.74.2): + - React-FabricImage (0.76.0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - RCTRequired (= 0.76.0) + - RCTTypeSafety (= 0.76.0) + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-jsiexecutor (= 0.76.0) + - React-logger + - React-rendererdebug + - React-utils + - ReactCommon + - Yoga + - React-featureflags (0.76.0) + - React-featureflagsnativemodule (0.76.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-graphics (0.76.0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-jsi + - React-jsiexecutor + - React-utils + - React-hermes (0.76.0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.76.0) + - React-jsi + - React-jsiexecutor (= 0.76.0) + - React-jsinspector + - React-perflogger (= 0.76.0) + - React-runtimeexecutor + - React-idlecallbacksnativemodule (0.76.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - React-ImageManager (0.76.0): + - glog + - RCT-Folly/Fabric + - React-Core/Default + - React-debug + - React-Fabric + - React-graphics + - React-rendererdebug + - React-utils + - React-jserrorhandler (0.76.0): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-cxxreact + - React-debug + - React-jsi + - React-jsi (0.76.0): + - boost + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-jsiexecutor (0.76.0): + - DoubleConversion + - fmt (= 9.1.0) + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact (= 0.76.0) + - React-jsi (= 0.76.0) + - React-jsinspector + - React-perflogger (= 0.76.0) + - React-jsinspector (0.76.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-featureflags + - React-jsi + - React-perflogger (= 0.76.0) + - React-runtimeexecutor (= 0.76.0) + - React-jsitracing (0.76.0): + - React-jsi + - React-logger (0.76.0): + - glog + - React-Mapbuffer (0.76.0): + - glog + - React-debug + - React-microtasksnativemodule (0.76.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-safe-area-context (4.11.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - react-native-safe-area-context/common (= 4.11.1) + - react-native-safe-area-context/fabric (= 4.11.1) + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-safe-area-context/common (4.11.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-safe-area-context/fabric (4.11.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - react-native-safe-area-context/common + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - react-native-view-shot (4.0.0-alpha.2): + - React-Core + - React-nativeconfig (0.76.0) + - React-NativeModulesApple (0.76.0): + - glog + - hermes-engine + - React-callinvoker + - React-Core + - React-cxxreact + - React-jsi + - React-jsinspector + - React-runtimeexecutor + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - React-perflogger (0.76.0): + - DoubleConversion + - RCT-Folly (= 2024.01.01.00) + - React-performancetimeline (0.76.0): + - RCT-Folly (= 2024.01.01.00) + - React-cxxreact + - React-timing + - React-RCTActionSheet (0.76.0): + - React-Core/RCTActionSheetHeaders (= 0.76.0) + - React-RCTAnimation (0.76.0): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Core/RCTAnimationHeaders + - React-jsi + - React-NativeModulesApple + - ReactCodegen + - ReactCommon + - React-RCTAppDelegate (0.76.0): + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-CoreModules + - React-debug + - React-defaultsnativemodule + - React-Fabric + - React-featureflags + - React-graphics + - React-hermes + - React-nativeconfig + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-RCTNetwork + - React-rendererdebug + - React-RuntimeApple + - React-RuntimeCore + - React-RuntimeHermes + - React-runtimescheduler + - React-utils + - ReactCodegen + - ReactCommon + - React-RCTBlob (0.76.0): + - DoubleConversion + - fmt (= 9.1.0) + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - React-Core/RCTBlobHeaders + - React-Core/RCTWebSocket + - React-jsi + - React-jsinspector + - React-NativeModulesApple + - React-RCTNetwork + - ReactCodegen + - ReactCommon + - React-RCTFabric (0.76.0): + - glog + - hermes-engine + - RCT-Folly/Fabric (= 2024.01.01.00) + - React-Core + - React-debug + - React-Fabric + - React-FabricComponents + - React-FabricImage + - React-featureflags + - React-graphics + - React-ImageManager + - React-jsi + - React-jsinspector + - React-nativeconfig + - React-performancetimeline + - React-RCTImage + - React-RCTText + - React-rendererconsistency + - React-rendererdebug + - React-runtimescheduler + - React-utils + - Yoga + - React-RCTImage (0.76.0): + - RCT-Folly (= 2024.01.01.00) + - RCTTypeSafety + - React-Core/RCTImageHeaders + - React-jsi + - React-NativeModulesApple + - React-RCTNetwork + - ReactCodegen + - ReactCommon + - React-RCTLinking (0.76.0): + - React-Core/RCTLinkingHeaders (= 0.76.0) + - React-jsi (= 0.76.0) + - React-NativeModulesApple + - ReactCodegen + - ReactCommon + - ReactCommon/turbomodule/core (= 0.76.0) + - React-RCTNetwork (0.76.0): - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - - React-Codegen - React-Core/RCTNetworkHeaders - React-jsi - React-NativeModulesApple + - ReactCodegen - ReactCommon - - React-RCTSettings (0.74.2): + - React-RCTSettings (0.76.0): - RCT-Folly (= 2024.01.01.00) - RCTTypeSafety - - React-Codegen - React-Core/RCTSettingsHeaders - React-jsi - React-NativeModulesApple + - ReactCodegen - ReactCommon - - React-RCTText (0.74.2): - - React-Core/RCTTextHeaders (= 0.74.2) + - React-RCTText (0.76.0): + - React-Core/RCTTextHeaders (= 0.76.0) - Yoga - - React-RCTVibration (0.74.2): + - React-RCTVibration (0.76.0): - RCT-Folly (= 2024.01.01.00) - - React-Codegen - React-Core/RCTVibrationHeaders - React-jsi - React-NativeModulesApple + - ReactCodegen - ReactCommon - - React-rendererdebug (0.74.2): + - React-rendererconsistency (0.76.0) + - React-rendererdebug (0.76.0): - DoubleConversion - fmt (= 9.1.0) - RCT-Folly (= 2024.01.01.00) - React-debug - - React-rncore (0.74.2) - - React-RuntimeApple (0.74.2): + - React-rncore (0.76.0) + - React-RuntimeApple (0.76.0): - hermes-engine - RCT-Folly/Fabric (= 2024.01.01.00) - React-callinvoker @@ -1082,8 +1466,9 @@ PODS: - React-RuntimeCore - React-runtimeexecutor - React-RuntimeHermes + - React-runtimescheduler - React-utils - - React-RuntimeCore (0.74.2): + - React-RuntimeCore (0.76.0): - glog - hermes-engine - RCT-Folly/Fabric (= 2024.01.01.00) @@ -1093,12 +1478,13 @@ PODS: - React-jsi - React-jsiexecutor - React-jsinspector + - React-performancetimeline - React-runtimeexecutor - React-runtimescheduler - React-utils - - React-runtimeexecutor (0.74.2): - - React-jsi (= 0.74.2) - - React-RuntimeHermes (0.74.2): + - React-runtimeexecutor (0.76.0): + - React-jsi (= 0.76.0) + - React-RuntimeHermes (0.76.0): - hermes-engine - RCT-Folly/Fabric (= 2024.01.01.00) - React-featureflags @@ -1109,7 +1495,7 @@ PODS: - React-nativeconfig - React-RuntimeCore - React-utils - - React-runtimescheduler (0.74.2): + - React-runtimescheduler (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) @@ -1118,62 +1504,86 @@ PODS: - React-debug - React-featureflags - React-jsi + - React-performancetimeline + - React-rendererconsistency - React-rendererdebug - React-runtimeexecutor + - React-timing - React-utils - - React-utils (0.74.2): + - React-timing (0.76.0) + - React-utils (0.76.0): - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - React-debug - - React-jsi (= 0.74.2) - - ReactCommon (0.74.2): - - ReactCommon/turbomodule (= 0.74.2) - - ReactCommon/turbomodule (0.74.2): + - React-jsi (= 0.76.0) + - ReactCodegen (0.76.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-FabricImage + - React-featureflags + - React-graphics + - React-jsi + - React-jsiexecutor + - React-NativeModulesApple + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - ReactCommon (0.76.0): + - ReactCommon/turbomodule (= 0.76.0) + - ReactCommon/turbomodule (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.74.2) - - React-cxxreact (= 0.74.2) - - React-jsi (= 0.74.2) - - React-logger (= 0.74.2) - - React-perflogger (= 0.74.2) - - ReactCommon/turbomodule/bridging (= 0.74.2) - - ReactCommon/turbomodule/core (= 0.74.2) - - ReactCommon/turbomodule/bridging (0.74.2): + - React-callinvoker (= 0.76.0) + - React-cxxreact (= 0.76.0) + - React-jsi (= 0.76.0) + - React-logger (= 0.76.0) + - React-perflogger (= 0.76.0) + - ReactCommon/turbomodule/bridging (= 0.76.0) + - ReactCommon/turbomodule/core (= 0.76.0) + - ReactCommon/turbomodule/bridging (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.74.2) - - React-cxxreact (= 0.74.2) - - React-jsi (= 0.74.2) - - React-logger (= 0.74.2) - - React-perflogger (= 0.74.2) - - ReactCommon/turbomodule/core (0.74.2): + - React-callinvoker (= 0.76.0) + - React-cxxreact (= 0.76.0) + - React-jsi (= 0.76.0) + - React-logger (= 0.76.0) + - React-perflogger (= 0.76.0) + - ReactCommon/turbomodule/core (0.76.0): - DoubleConversion - fmt (= 9.1.0) - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - - React-callinvoker (= 0.74.2) - - React-cxxreact (= 0.74.2) - - React-debug (= 0.74.2) - - React-jsi (= 0.74.2) - - React-logger (= 0.74.2) - - React-perflogger (= 0.74.2) - - React-utils (= 0.74.2) - - RNReanimated (3.13.0): + - React-callinvoker (= 0.76.0) + - React-cxxreact (= 0.76.0) + - React-debug (= 0.76.0) + - React-featureflags (= 0.76.0) + - React-jsi (= 0.76.0) + - React-logger (= 0.76.0) + - React-perflogger (= 0.76.0) + - React-utils (= 0.76.0) + - RNCAsyncStorage (2.0.0): - DoubleConversion - glog - hermes-engine - RCT-Folly (= 2024.01.01.00) - RCTRequired - RCTTypeSafety - - React-Codegen - React-Core - React-debug - React-Fabric @@ -1184,12 +1594,207 @@ PODS: - React-RCTFabric - React-rendererdebug - React-utils + - ReactCodegen - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNSVG (15.6.0): + - RNGestureHandler (2.20.2): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety - React-Core - - SocketRocket (0.7.0) + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNReanimated (3.16.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNReanimated/reanimated (= 3.16.1) + - RNReanimated/worklets (= 3.16.1) + - Yoga + - RNReanimated/reanimated (3.16.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNReanimated/reanimated/apple (= 3.16.1) + - Yoga + - RNReanimated/reanimated/apple (3.16.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNReanimated/worklets (3.16.1): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNScreens (3.35.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNScreens/common (= 3.35.0) + - Yoga + - RNScreens/common (3.35.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-RCTImage + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNSVG (15.8.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - RNSVG/common (= 15.8.0) + - Yoga + - RNSVG/common (15.8.0): + - DoubleConversion + - glog + - hermes-engine + - RCT-Folly (= 2024.01.01.00) + - RCTRequired + - RCTTypeSafety + - React-Core + - React-debug + - React-Fabric + - React-featureflags + - React-graphics + - React-ImageManager + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCodegen + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - SocketRocket (0.7.1) - Yoga (0.0.0) DEPENDENCIES: @@ -1206,17 +1811,21 @@ DEPENDENCIES: - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) - React (from `../node_modules/react-native/`) - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) - - React-Codegen (from `build/generated/ios`) - React-Core (from `../node_modules/react-native/`) - React-Core/RCTWebSocket (from `../node_modules/react-native/`) - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) + - React-defaultsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/defaults`) + - React-domnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/dom`) - React-Fabric (from `../node_modules/react-native/ReactCommon`) + - React-FabricComponents (from `../node_modules/react-native/ReactCommon`) - React-FabricImage (from `../node_modules/react-native/ReactCommon`) - React-featureflags (from `../node_modules/react-native/ReactCommon/react/featureflags`) + - React-featureflagsnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/featureflags`) - React-graphics (from `../node_modules/react-native/ReactCommon/react/renderer/graphics`) - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) + - React-idlecallbacksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks`) - React-ImageManager (from `../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios`) - React-jserrorhandler (from `../node_modules/react-native/ReactCommon/jserrorhandler`) - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) @@ -1225,10 +1834,13 @@ DEPENDENCIES: - React-jsitracing (from `../node_modules/react-native/ReactCommon/hermes/executor/`) - React-logger (from `../node_modules/react-native/ReactCommon/logger`) - React-Mapbuffer (from `../node_modules/react-native/ReactCommon`) + - React-microtasksnativemodule (from `../node_modules/react-native/ReactCommon/react/nativemodule/microtasks`) + - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) - react-native-view-shot (from `../node_modules/react-native-view-shot`) - React-nativeconfig (from `../node_modules/react-native/ReactCommon`) - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) + - React-performancetimeline (from `../node_modules/react-native/ReactCommon/react/performance/timeline`) - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) @@ -1240,6 +1852,7 @@ DEPENDENCIES: - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) - React-RCTText (from `../node_modules/react-native/Libraries/Text`) - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) + - React-rendererconsistency (from `../node_modules/react-native/ReactCommon/react/renderer/consistency`) - React-rendererdebug (from `../node_modules/react-native/ReactCommon/react/renderer/debug`) - React-rncore (from `../node_modules/react-native/ReactCommon`) - React-RuntimeApple (from `../node_modules/react-native/ReactCommon/react/runtime/platform/ios`) @@ -1247,9 +1860,14 @@ DEPENDENCIES: - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) - React-RuntimeHermes (from `../node_modules/react-native/ReactCommon/react/runtime`) - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) + - React-timing (from `../node_modules/react-native/ReactCommon/react/timing`) - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) + - ReactCodegen (from `build/generated/ios`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) + - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNReanimated (from `../node_modules/react-native-reanimated`) + - RNScreens (from `../node_modules/react-native-screens`) - RNSVG (from `../node_modules/react-native-svg`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) @@ -1270,7 +1888,7 @@ EXTERNAL SOURCES: :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" hermes-engine: :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" - :tag: hermes-2024-06-03-RNv0.74.2-bb1e74fe1e95c2b5a2f4f9311152da052badc2bc + :tag: hermes-2024-09-09-RNv0.76.0-db6d12e202e15f7a446d8848d6ca8f7abb3cfb32 RCT-Folly: :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" RCTDeprecation: @@ -1283,8 +1901,6 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/" React-callinvoker: :path: "../node_modules/react-native/ReactCommon/callinvoker" - React-Codegen: - :path: build/generated/ios React-Core: :path: "../node_modules/react-native/" React-CoreModules: @@ -1293,16 +1909,26 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/cxxreact" React-debug: :path: "../node_modules/react-native/ReactCommon/react/debug" + React-defaultsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/defaults" + React-domnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/dom" React-Fabric: :path: "../node_modules/react-native/ReactCommon" + React-FabricComponents: + :path: "../node_modules/react-native/ReactCommon" React-FabricImage: :path: "../node_modules/react-native/ReactCommon" React-featureflags: :path: "../node_modules/react-native/ReactCommon/react/featureflags" + React-featureflagsnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/featureflags" React-graphics: :path: "../node_modules/react-native/ReactCommon/react/renderer/graphics" React-hermes: :path: "../node_modules/react-native/ReactCommon/hermes" + React-idlecallbacksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/idlecallbacks" React-ImageManager: :path: "../node_modules/react-native/ReactCommon/react/renderer/imagemanager/platform/ios" React-jserrorhandler: @@ -1319,6 +1945,10 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/logger" React-Mapbuffer: :path: "../node_modules/react-native/ReactCommon" + React-microtasksnativemodule: + :path: "../node_modules/react-native/ReactCommon/react/nativemodule/microtasks" + react-native-safe-area-context: + :path: "../node_modules/react-native-safe-area-context" react-native-view-shot: :path: "../node_modules/react-native-view-shot" React-nativeconfig: @@ -1327,6 +1957,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" React-perflogger: :path: "../node_modules/react-native/ReactCommon/reactperflogger" + React-performancetimeline: + :path: "../node_modules/react-native/ReactCommon/react/performance/timeline" React-RCTActionSheet: :path: "../node_modules/react-native/Libraries/ActionSheetIOS" React-RCTAnimation: @@ -1349,6 +1981,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Text" React-RCTVibration: :path: "../node_modules/react-native/Libraries/Vibration" + React-rendererconsistency: + :path: "../node_modules/react-native/ReactCommon/react/renderer/consistency" React-rendererdebug: :path: "../node_modules/react-native/ReactCommon/react/renderer/debug" React-rncore: @@ -1363,77 +1997,100 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/ReactCommon/react/runtime" React-runtimescheduler: :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" + React-timing: + :path: "../node_modules/react-native/ReactCommon/react/timing" React-utils: :path: "../node_modules/react-native/ReactCommon/react/utils" + ReactCodegen: + :path: build/generated/ios ReactCommon: :path: "../node_modules/react-native/ReactCommon" + RNCAsyncStorage: + :path: "../node_modules/@react-native-async-storage/async-storage" + RNGestureHandler: + :path: "../node_modules/react-native-gesture-handler" RNReanimated: :path: "../node_modules/react-native-reanimated" + RNScreens: + :path: "../node_modules/react-native-screens" RNSVG: :path: "../node_modules/react-native-svg" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" SPEC CHECKSUMS: - boost: d3f49c53809116a5d38da093a8aa78bf551aed09 - DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5 - FBLazyVector: 4bc164e5b5e6cfc288d2b5ff28643ea15fa1a589 - fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 - glog: fdfdfe5479092de0c4bdbebedd9056951f092c4f - hermes-engine: 01d3e052018c2a13937aca1860fbedbccd4a41b7 - RCT-Folly: 02617c592a293bd6d418e0a88ff4ee1f88329b47 - RCTDeprecation: b03c35057846b685b3ccadc9bfe43e349989cdb2 - RCTRequired: 194626909cfa8d39ca6663138c417bc6c431648c - RCTTypeSafety: 552aff5b8e8341660594db00e53ac889682bc120 - React: a57fe42044fe6ed3e828f8867ce070a6c5872754 - React-callinvoker: 6bedefb354a8848b534752417954caa3a5cf34f9 - React-Codegen: 0952549a095f8f8cb2fb5def1733b6b232769b1c - React-Core: 289ee3dfc1639bb9058c1e77427bb48169c26d7a - React-CoreModules: eda5ce541a1f552158317abd90a5a0f6a4f8d6f7 - React-cxxreact: 56bd17ccc6d4248116f7f95884ddb8c528379fb6 - React-debug: 164b8e302404d92d4bec39778a5e03bcb1b6eb08 - React-Fabric: 05620c36074e3ab397dd8f9db0deb6d3c38b4efa - React-FabricImage: 2a8a7f5729f5c44e32e6f58f7225ee1017ed0704 - React-featureflags: d97a6393993052e951e16a3b81206e22110be8d2 - React-graphics: ef07d701f4eb72ae6fca6ed0a7260a04f2a58dec - React-hermes: 6ccc301ababfa17a9aad25a7e33faf325fd024b4 - React-ImageManager: 00404bfe122626bc6493621f2a31ce802115a9b3 - React-jserrorhandler: 5e2632590a84363855b2083e6b3d501e93bc3f04 - React-jsi: 828703c235f4eea1647897ee8030efdc6e8e9f14 - React-jsiexecutor: 713d7bbef0a410cee5b3b78f73ed1fc16e177ba7 - React-jsinspector: e1fa5325a47f34645195c63e3312ddb6a2efef5d - React-jsitracing: 0fa7f78d8fdda794667cb2e6f19c874c1cf31d7e - React-logger: 29fa3e048f5f67fe396bc08af7606426d9bd7b5d - React-Mapbuffer: bf56147c9775491e53122a94c423ac201417e326 + boost: 1dca942403ed9342f98334bf4c3621f011aa7946 + DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385 + FBLazyVector: aa59bef5c46e93168bffcf3dc37ee1e176de799a + fmt: 10c6e61f4be25dc963c36bd73fc7b1705fe975be + glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a + hermes-engine: 9de51d2f67336348a6cd5b686330e436d1dbd522 + RCT-Folly: bf5c0376ffe4dd2cf438dcf86db385df9fdce648 + RCTDeprecation: 4c2c4a088b6f0ccfcbd53c9d5614b0238ad57909 + RCTRequired: 2d8a683a7848bc0baf5883f0792c1ac43f6267b5 + RCTTypeSafety: 23df4344c69c602e1c5a8053a93c633af1bee825 + React: cf99f97aa57ce39ab4d3d4f396e01a3f30f3c8ad + React-callinvoker: bec5283f86b784de5a1ba807e31cb4f177765507 + React-Core: 3b131c387be8d45565fc32c6c08df7a450d8d5a8 + React-CoreModules: ac0a55891bcb72a9f8c6631128e7cbbf9ce06b65 + React-cxxreact: fec14d0078f627985b2cce98f90458e969a848ae + React-debug: c185808d0674717d0d408d7ce45a7343f0072199 + React-defaultsnativemodule: 5dc781a1e3274cbb6d6d3e91f5bf9914a258115d + React-domnativemodule: f81f69be048840a0efcf0add685ad0cf5583fb5f + React-Fabric: 8de8a37b62f81d264302462cf33c69b97faf9979 + React-FabricComponents: 777f5e4fdc39355fa0275412a3b8f2430a7bef1d + React-FabricImage: 9202f25c36040de738cd486ea6b8480f2d62b05f + React-featureflags: 51f1373ac42cefac4936c62be46dbe2a1f9f1f7d + React-featureflagsnativemodule: 59083d49f82a50aecba32e1cddb791ca362df198 + React-graphics: 4508c3473dd97c76d627938bfa0c304abc37e3b0 + React-hermes: 9d2b208eb88bfd4eb156064a831bec2f01e8165d + React-idlecallbacksnativemodule: fc31bde9dc276e78d4289b4fd209b5fbe762600b + React-ImageManager: f046a503ff853fc5aec31db274c03cea239e5de4 + React-jserrorhandler: a03ee04881559e8a0cdcd0cb7dbbc4d1c78edc9d + React-jsi: b7efc160dd211f6a3999cdc4a2c9fc2bbcda05db + React-jsiexecutor: 4ec7211a13582bd954c79590996260afffb64b30 + React-jsinspector: d913f0d6c32cca8f090cc0c1dfc3c95ec65970b8 + React-jsitracing: 043658000ac681e8aa5f3ee61690e0686da01bfe + React-logger: d1a89c7d9b3c847eb63eb85724c54b06cae2c939 + React-Mapbuffer: b0b4ace5b62b269f3838df26ba2d8b4f39f90783 + React-microtasksnativemodule: 0b7db04c18f6bb01ef5b1f9007c3229abecc35dd + react-native-safe-area-context: 2279fe040bc93af8624f7d034806180fdbe5fa02 react-native-view-shot: 8ffbe24e3b5207d66816afb5b3c2ca82731ab636 - React-nativeconfig: 9f223cd321823afdecf59ed00861ab2d69ee0fc1 - React-NativeModulesApple: ff7efaff7098639db5631236cfd91d60abff04c0 - React-perflogger: 32ed45d9cee02cf6639acae34251590dccd30994 - React-RCTActionSheet: 19f967ddaea258182b56ef11437133b056ba2adf - React-RCTAnimation: d7f4137fc44a08bba465267ea7cb1dbdb7c4ec87 - React-RCTAppDelegate: 2b3f4d8009796af209a0d496e73276b743acee08 - React-RCTBlob: c6c3e1e0251700b7bea036b893913f22e2b9cb47 - React-RCTFabric: 93a3ea55169d19294f07092013c1c9ea7a015c9b - React-RCTImage: 40528ab74a4fef0f0e2ee797a074b26d120b6cc6 - React-RCTLinking: 385b5beb96749aae9ae1606746e883e1c9f8a6a7 - React-RCTNetwork: ffc9f05bd8fa5b3bce562199ba41235ad0af645c - React-RCTSettings: 21914178bb65cb2c20c655ae1fb401617ae74618 - React-RCTText: 7f8dba1a311e99f4de15bbace2350e805f33f024 - React-RCTVibration: e4ccf673579d0d94a96b3a0b64492db08f8324d5 - React-rendererdebug: ac70f40de137ce7bdbc55eaee60c467a215d9923 - React-rncore: edfff7a3f7f82ca1e0ba26978c6d84c7a8970dac - React-RuntimeApple: a0c98b75571aa5f44ddc7c6e9fd55803fa4db00f - React-RuntimeCore: 4b8db1fe2f3f4a3a5ecb22e1a419824e3e2cd7ef - React-runtimeexecutor: 5961acc7a77b69f964e1645a5d6069e124ce6b37 - React-RuntimeHermes: c5825bfae4815fdf4e9e639340c3a986a491884c - React-runtimescheduler: 56b642bf605ba5afa500d35790928fc1d51565ad - React-utils: 4476b7fcbbd95cfd002f3e778616155241d86e31 - ReactCommon: ecad995f26e0d1e24061f60f4e5d74782f003f12 - RNReanimated: 9c213184c27dc4a2ed7e9ff41a4b0b9258bb54f0 - RNSVG: 5da7a24f31968ec74f0b091e3440080f347e279b - SocketRocket: abac6f5de4d4d62d24e11868d7a2f427e0ef940d - Yoga: 2f71ecf38d934aecb366e686278102a51679c308 + React-nativeconfig: 72c10ff34863148ef90df9c9c8eacba99d2faaaa + React-NativeModulesApple: 5ec49182fa000b2215ee1bed03e2867f8323ccf5 + React-perflogger: 073c7a8a436b3fe724f1df34e9d1f3db1d25fe74 + React-performancetimeline: 52f8e3b73b98dad5d5ba360035ad0be294087bd8 + React-RCTActionSheet: 96cf4d93fccb7a96ba1867e173c586e7ad9cd5cc + React-RCTAnimation: bcd2356245abffd232ea8d4d5b64ae0bf93c7ef0 + React-RCTAppDelegate: 20242d0ddf9348f8de10e5750d8c0844e222b0e3 + React-RCTBlob: 7fadfb83ce2bb5580b73368384fe242aaa6ddbc6 + React-RCTFabric: 504fe0307b1e72d093aa84e1c5ccb26d1bca66e3 + React-RCTImage: fdf95e50ad94842fd9c508ed36d9bfd6e1ffa8ef + React-RCTLinking: 76a398421d9a26422e5733439e2a9d13f19e5a99 + React-RCTNetwork: 2bf6ca74a1a14648f6985cfbfc4f8813fa66e6a4 + React-RCTSettings: 3cd121542bb87d318df5102bffdfd85899896187 + React-RCTText: 78b41d87d44c07ac8b2c47172da28a85446d254b + React-RCTVibration: 245a4a1b33f1c2c9622d4480cf5bb4362096214d + React-rendererconsistency: db2497919f3ab2543e3af19fbcef384ddfeb97ad + React-rendererdebug: ae62b22e402083d1a23539b90873f0513eaa1fec + React-rncore: 5c0cefbd816edc0438f9f0782c3fd4a4b4ef5770 + React-RuntimeApple: 82c8072c3b35aead653f9abe66397f678a92764f + React-RuntimeCore: 286b297ab0c5905c9fa83afe1a2df5bfe5edb5a7 + React-runtimeexecutor: 79e15d2c4b261925ea52261f69cac6318db5ab91 + React-RuntimeHermes: 0d4d9a9dae3be2de2df8ec9da2390b3c7097e115 + React-runtimescheduler: b11553b58430aa51b1558ffa93073257dadb00ef + React-timing: 8458b1f6741bfa16c78aa0a39fde969c6b843e23 + React-utils: d9624101245ebaab39c9f1bd786132da0b4f27ff + ReactCodegen: dbfef1fef26f42c900bb1884fa149d49d501d64d + ReactCommon: 429ca28cd813c31359c73ffac6dc24f93347d522 + RNCAsyncStorage: 597673c6086d359029afefef8fd5859f1f35ab87 + RNGestureHandler: fc5ce5bf284640d3af6431c3a5c3bc121e98d045 + RNReanimated: 77242c6d67416988a2fd9f5cf574bb3e60016362 + RNScreens: e389d6a6a66a4f0d3662924ecae803073ccce8ec + RNSVG: f3ee2fbdad893cd14986a1c5fbcdde4ff61e6d26 + SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 + Yoga: f8ec45ce98bba1bc93dd28f2ee37215180e6d2b6 -PODFILE CHECKSUM: 1db1bb5b37b884512b54b2c75095b3e51c78e6ad +PODFILE CHECKSUM: 82e0019f1976ca4a480b333a287913fd3dff239b COCOAPODS: 1.15.2 diff --git a/example/jest.config.js b/apps/fabric-example/jest.config.js similarity index 100% rename from example/jest.config.js rename to apps/fabric-example/jest.config.js diff --git a/fabric-example/metro.config.js b/apps/fabric-example/metro.config.js similarity index 87% rename from fabric-example/metro.config.js rename to apps/fabric-example/metro.config.js index f71cdbe26..d227bdba5 100644 --- a/fabric-example/metro.config.js +++ b/apps/fabric-example/metro.config.js @@ -2,19 +2,16 @@ const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); /** * Metro configuration - * https://facebook.github.io/metro/docs/configuration + * https://reactnative.dev/docs/metro * * @type {import('metro-config').MetroConfig} */ - -/* eslint-disable import/no-commonjs */ - const path = require('path'); const exclusionList = require('metro-config/src/defaults/exclusionList'); const escape = require('escape-string-regexp'); -const pack = require('../package.json'); +const pack = require('../../package.json'); -const root = path.resolve(__dirname, '..'); +const root = path.resolve(__dirname, '../..'); const projectNodeModules = path.join(__dirname, 'node_modules'); const modules = [...Object.keys(pack.peerDependencies)]; diff --git a/apps/fabric-example/package.json b/apps/fabric-example/package.json new file mode 100644 index 000000000..85265d03a --- /dev/null +++ b/apps/fabric-example/package.json @@ -0,0 +1,51 @@ +{ + "name": "FabricExample", + "version": "0.0.1", + "private": true, + "scripts": { + "android": "react-native run-android", + "ios": "react-native run-ios", + "lint": "eslint .", + "start": "react-native start", + "test": "jest", + "postinstall": "patch-package" + }, + "dependencies": { + "@react-native-async-storage/async-storage": "^2.0.0", + "@react-navigation/native": "^6.1.18", + "@react-navigation/native-stack": "^6.11.0", + "@react-navigation/stack": "^6.4.1", + "react": "18.3.1", + "react-native": "0.76.0", + "react-native-gesture-handler": "^2.20.2", + "react-native-reanimated": "3.16.1", + "react-native-safe-area-context": "^4.11.1", + "react-native-screens": "3.35.0", + "react-native-svg": "link:../../", + "react-native-view-shot": "4.0.0-alpha.2" + }, + "devDependencies": { + "@babel/core": "^7.25.2", + "@babel/preset-env": "^7.25.3", + "@babel/runtime": "^7.25.0", + "@react-native-community/cli": "15.0.0-alpha.2", + "@react-native-community/cli-platform-android": "15.0.0-alpha.2", + "@react-native-community/cli-platform-ios": "15.0.0-alpha.2", + "@react-native/babel-preset": "0.76.0", + "@react-native/eslint-config": "0.76.0", + "@react-native/metro-config": "0.76.0", + "@react-native/typescript-config": "0.76.0", + "@types/react": "^18.2.6", + "@types/react-test-renderer": "^18.0.0", + "babel-jest": "^29.6.3", + "eslint": "^8.19.0", + "jest": "^29.6.3", + "patch-package": "^8.0.0", + "prettier": "2.8.8", + "react-test-renderer": "18.3.1", + "typescript": "5.0.4" + }, + "engines": { + "node": ">=18" + } +} diff --git a/apps/fabric-example/patches/react-native-safe-area-context+4.11.1.patch b/apps/fabric-example/patches/react-native-safe-area-context+4.11.1.patch new file mode 100644 index 000000000..f736ae20b --- /dev/null +++ b/apps/fabric-example/patches/react-native-safe-area-context+4.11.1.patch @@ -0,0 +1,30 @@ +diff --git a/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt b/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt +index 4ee1c8f..3f63637 100644 +--- a/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt ++++ b/node_modules/react-native-safe-area-context/android/src/main/jni/CMakeLists.txt +@@ -39,22 +39,9 @@ target_include_directories( + + target_link_libraries( + ${LIB_TARGET_NAME} +- fbjni +- folly_runtime +- glog +- jsi +- react_codegen_rncore +- react_debug +- react_nativemodule_core +- react_render_core +- react_render_debug +- react_render_graphics +- react_render_mapbuffer +- react_render_componentregistry +- react_utils +- rrc_view +- turbomodulejsijni +- yoga ++ fbjni::fbjni ++ ReactAndroid::jsi ++ ReactAndroid::reactnative + ) + + target_compile_options( diff --git a/example/patches/react-native-view-shot+4.0.0-alpha.2.patch b/apps/fabric-example/patches/react-native-view-shot+4.0.0-alpha.2.patch similarity index 100% rename from example/patches/react-native-view-shot+4.0.0-alpha.2.patch rename to apps/fabric-example/patches/react-native-view-shot+4.0.0-alpha.2.patch diff --git a/fabric-example/yarn.lock b/apps/fabric-example/yarn.lock similarity index 79% rename from fabric-example/yarn.lock rename to apps/fabric-example/yarn.lock index 134c97d18..013106287 100644 --- a/fabric-example/yarn.lock +++ b/apps/fabric-example/yarn.lock @@ -31,22 +31,30 @@ "@babel/highlight" "^7.24.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5", "@babel/compat-data@^7.24.4": +"@babel/code-frame@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.25.9.tgz#895b6c7e04a7271a0cbfd575d2e8131751914cc7" + integrity sha512-z88xeGxnzehn2sqZ8UdGQEvYErF1odv2CftxInpSYJt6uHuPe9YjahKZITGs3l5LeI9d2ROG+obuDAoSlqbNfQ== + dependencies: + "@babel/highlight" "^7.25.9" + picocolors "^1.0.0" + +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.23.5": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== -"@babel/compat-data@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.7.tgz#d23bbea508c3883ba8251fb4164982c36ea577ed" - integrity sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw== - "@babel/compat-data@^7.25.2": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.2.tgz#e41928bd33475305c586f6acbbb7e3ade7a6f7f5" integrity sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ== -"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.20.0", "@babel/core@^7.23.9": +"@babel/compat-data@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.25.9.tgz#24b01c5db6a3ebf85661b4fb4a946a9bccc72ac8" + integrity sha512-yD+hEuJ/+wAJ4Ox2/rpNv5HIuPG82x3ZlQvYVn8iYCprdxzE7P1udpGF1jyjQVBU4dgznN+k2h103vxZ7NdPyw== + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.13.16", "@babel/core@^7.23.9": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== @@ -67,16 +75,37 @@ json5 "^2.2.3" semver "^6.3.1" -"@babel/eslint-parser@^7.20.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.24.1.tgz#e27eee93ed1d271637165ef3a86e2b9332395c32" - integrity sha512-d5guuzMlPeDfZIbpQ8+g1NaCNuAGBBGNECh0HVqz1sjOeVLh2CEaifuOysCH18URW6R7pqXINvf5PaR/dC6jLQ== +"@babel/core@^7.25.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.25.9.tgz#855a4cddcec4158f3f7afadacdab2a7de8af7434" + integrity sha512-WYvQviPw+Qyib0v92AwNIrdLISTp7RfDkM7bPqBvpbnhY4wq8HvHBZREVdYDXk98C8BkOIVnHAY3yvj7AVISxQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helpers" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/eslint-parser@^7.25.1": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.25.9.tgz#603c68a63078796527bc9d0833f5e52dd5f9224c" + integrity sha512-5UXfgpK0j0Xr/xIdgdLEhOFxaDZ0bRPWJJchRpqOSur/3rZoPbqqki5mm0p4NE2cs28krBEiSM2MB7//afRSQQ== dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" eslint-visitor-keys "^2.1.0" semver "^6.3.1" -"@babel/generator@^7.20.0", "@babel/generator@^7.24.1", "@babel/generator@^7.24.4", "@babel/generator@^7.7.2": +"@babel/generator@^7.24.1", "@babel/generator@^7.24.4", "@babel/generator@^7.7.2": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== @@ -106,6 +135,16 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" +"@babel/generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.25.9.tgz#c7e828ebe0c2baba103b712924699c9e8a6e32f0" + integrity sha512-omlUGkr5EaoIJrhLf9CJ0TvjBRpd9+AXRG//0GEQ9THSo8wPiTlbpy1/Ow8ZTrbXpjd9FHXfbFQx32I04ht0FA== + dependencies: + "@babel/types" "^7.25.9" + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + jsesc "^3.0.2" + "@babel/helper-annotate-as-pure@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz#e7f06737b197d580a01edf75d97e2c8be99d3882" @@ -120,12 +159,20 @@ dependencies: "@babel/types" "^7.24.7" -"@babel/helper-builder-binary-assignment-operator-visitor@^7.22.15": - version "7.22.15" - resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz#5426b109cf3ad47b91120f8328d8ab1be8b0b956" - integrity sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw== +"@babel/helper-annotate-as-pure@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz#d8eac4d2dc0d7b6e11fa6e535332e0d3184f06b4" + integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-builder-binary-assignment-operator-visitor@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.9.tgz#f41752fe772a578e67286e6779a68a5a92de1ee9" + integrity sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g== dependencies: - "@babel/types" "^7.22.15" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" "@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.23.6": version "7.23.6" @@ -138,17 +185,6 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-compilation-targets@^7.24.7": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz#4eb6c4a80d6ffeac25ab8cd9a21b5dfa48d503a9" - integrity sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg== - dependencies: - "@babel/compat-data" "^7.24.7" - "@babel/helper-validator-option" "^7.24.7" - browserslist "^4.22.2" - lru-cache "^5.1.1" - semver "^6.3.1" - "@babel/helper-compilation-targets@^7.24.8": version "7.25.2" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz#e1d9410a90974a3a5a66e84ff55ef62e3c02d06c" @@ -160,7 +196,18 @@ lru-cache "^5.1.1" semver "^6.3.1" -"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4": +"@babel/helper-compilation-targets@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz#55af025ce365be3cdc0c1c1e56c6af617ce88875" + integrity sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz#c806f73788a6800a5cfbbc04d2df7ee4d927cce3" integrity sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ== @@ -190,7 +237,20 @@ "@babel/helper-split-export-declaration" "^7.24.7" semver "^6.3.1" -"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": +"@babel/helper-create-class-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz#7644147706bb90ff613297d49ed5266bde729f83" + integrity sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/traverse" "^7.25.9" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" integrity sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w== @@ -208,6 +268,15 @@ regexpu-core "^5.3.1" semver "^6.3.1" +"@babel/helper-create-regexp-features-plugin@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.9.tgz#3e8999db94728ad2b2458d7a470e7770b7764e26" + integrity sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.25.9" + regexpu-core "^6.1.1" + semver "^6.3.1" + "@babel/helper-define-polyfill-provider@^0.6.1": version "0.6.1" resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz#fadc63f0c2ff3c8d02ed905dcea747c5b0fb74fd" @@ -219,6 +288,17 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" @@ -231,7 +311,7 @@ dependencies: "@babel/types" "^7.24.7" -"@babel/helper-function-name@^7.22.5", "@babel/helper-function-name@^7.23.0": +"@babel/helper-function-name@^7.23.0": version "7.23.0" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz#1f9a3cdbd5b2698a670c30d2735f9af95ed52759" integrity sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw== @@ -284,7 +364,15 @@ "@babel/traverse" "^7.24.8" "@babel/types" "^7.24.8" -"@babel/helper-module-imports@^7.22.15", "@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": +"@babel/helper-member-expression-to-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz#9dfffe46f727005a5ea29051ac835fb735e4c1a3" + integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/helper-module-imports@^7.22.15": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== @@ -299,6 +387,14 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helper-module-imports@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz#e7f8d20602ebdbf9ebbea0a0751fb0f2a4141715" + integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-module-transforms@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" @@ -321,6 +417,16 @@ "@babel/helper-split-export-declaration" "^7.24.7" "@babel/helper-validator-identifier" "^7.24.7" +"@babel/helper-module-transforms@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.25.9.tgz#12e4fb2969197ef6d78ea8a2f24375ce85b425fb" + integrity sha512-TvLZY/F3+GvdRYFZFyxMvnsKi+4oJdgZzU3BoGN9Uc2d9C6zfNwJcKKhjqLAhK8i46mv93jsO74fDh3ih6rpHA== + dependencies: + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-optimise-call-expression@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz#f21531a9ccbff644fdd156b4077c16ff0c3f609e" @@ -335,7 +441,14 @@ dependencies: "@babel/types" "^7.24.7" -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-optimise-call-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz#3324ae50bae7e2ab3c33f60c9a877b6a0146b54e" + integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ== + dependencies: + "@babel/types" "^7.25.9" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== @@ -350,14 +463,19 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz#94ee67e8ec0e5d44ea7baeb51e571bd26af07878" integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg== -"@babel/helper-remap-async-to-generator@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" - integrity sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw== +"@babel/helper-plugin-utils@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz#9cbdd63a9443a2c92a725cca7ebca12cc8dd9f46" + integrity sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw== + +"@babel/helper-remap-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz#e53956ab3d5b9fb88be04b3e2f31b523afd34b92" + integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-wrap-function" "^7.22.20" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-wrap-function" "^7.25.9" + "@babel/traverse" "^7.25.9" "@babel/helper-replace-supers@^7.24.1": version "7.24.1" @@ -386,6 +504,15 @@ "@babel/helper-optimise-call-expression" "^7.24.7" "@babel/traverse" "^7.25.0" +"@babel/helper-replace-supers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.25.9.tgz#ba447224798c3da3f8713fc272b145e33da6a5c5" + integrity sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.25.9" + "@babel/helper-optimise-call-expression" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/helper-simple-access@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" @@ -401,6 +528,14 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helper-simple-access@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.25.9.tgz#6d51783299884a2c74618d6ef0f86820ec2e7739" + integrity sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz#007f15240b5751c537c40e77abb4e89eeaaa8847" @@ -416,6 +551,14 @@ "@babel/traverse" "^7.24.7" "@babel/types" "^7.24.7" +"@babel/helper-skip-transparent-expression-wrappers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz#0b2e1b62d560d6b1954893fd2b705dc17c91f0c9" + integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA== + dependencies: + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/helper-split-export-declaration@^7.22.6": version "7.22.6" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" @@ -445,6 +588,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== +"@babel/helper-string-parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz#1aabb72ee72ed35789b4bbcad3ca2862ce614e8c" + integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA== + "@babel/helper-validator-identifier@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" @@ -455,6 +603,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== +"@babel/helper-validator-identifier@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz#24b64e2c3ec7cd3b3c547729b8d16871f22cbdc7" + integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ== + "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" @@ -470,14 +623,19 @@ resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz#3725cdeea8b480e86d34df15304806a06975e33d" integrity sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q== -"@babel/helper-wrap-function@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz#15352b0b9bfb10fc9c76f79f6342c00e3411a569" - integrity sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw== +"@babel/helper-validator-option@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz#86e45bd8a49ab7e03f276577f96179653d41da72" + integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw== + +"@babel/helper-wrap-function@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz#d99dfd595312e6c894bd7d237470025c85eea9d0" + integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g== dependencies: - "@babel/helper-function-name" "^7.22.5" - "@babel/template" "^7.22.15" - "@babel/types" "^7.22.19" + "@babel/template" "^7.25.9" + "@babel/traverse" "^7.25.9" + "@babel/types" "^7.25.9" "@babel/helpers@^7.24.4": version "7.24.4" @@ -488,6 +646,14 @@ "@babel/traverse" "^7.24.1" "@babel/types" "^7.24.0" +"@babel/helpers@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.25.9.tgz#9e26aa6fbefdbca4f8c8a1d66dc6f1c00ddadb0a" + integrity sha512-oKWp3+usOJSzDZOucZUAMayhPz/xVjzymyDzUN8dk0Wd3RWMlGLXi07UCQ/CgQVb8LvXx3XBajJH4XGgkt7H7g== + dependencies: + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + "@babel/highlight@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" @@ -508,7 +674,17 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.0", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": +"@babel/highlight@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.25.9.tgz#8141ce68fc73757946f983b343f1231f4691acc6" + integrity sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw== + dependencies: + "@babel/helper-validator-identifier" "^7.25.9" + chalk "^2.4.2" + js-tokens "^4.0.0" + picocolors "^1.0.0" + +"@babel/parser@^7.1.0", "@babel/parser@^7.13.16", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== @@ -525,37 +701,51 @@ dependencies: "@babel/types" "^7.25.2" -"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz#6125f0158543fb4edf1c22f322f3db67f21cb3e1" - integrity sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA== +"@babel/parser@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.9.tgz#8fcaa079ac7458facfddc5cd705cc8005e4d3817" + integrity sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/types" "^7.25.9" -"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" - integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz#cc2e53ebf0a0340777fff5ed521943e253b4d8fe" + integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" - integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== +"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz#af9e4fb63ccb8abcb92375b2fcfe36b60c774d30" + integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" - integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz#e8dc26fcd616e6c5bf2bd0d5a2c151d4f92a9137" + integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz#807a667f9158acac6f6164b4beb85ad9ebc9e1d1" + integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz#de7093f1e7deaf68eadd7cc6b07f2ab82543269e" + integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" "@babel/plugin-proposal-class-properties@^7.13.0": version "7.18.6" @@ -565,13 +755,12 @@ "@babel/helper-create-class-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-proposal-export-default-from@^7.0.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.1.tgz#d242019488277c9a5a8035e5b70de54402644b89" - integrity sha512-+0hrgGGV3xyYIjOrD/bUZk/iUwOIGuoANfRfVg1cPhYBxF+TIXSEcc42DqzBICmWsnAQ+SfKedY0bj8QD+LuMg== +"@babel/plugin-proposal-export-default-from@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz#52702be6ef8367fc8f18b8438278332beeb8f87c" + integrity sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-default-from" "^7.24.1" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8": version "7.18.6" @@ -609,63 +798,56 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-class-properties@^7.12.13", "@babel/plugin-syntax-class-properties@^7.8.3": +"@babel/plugin-syntax-class-properties@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-syntax-class-static-block@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" - integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-dynamic-import@^7.8.0", "@babel/plugin-syntax-dynamic-import@^7.8.3": +"@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-export-default-from@^7.0.0", "@babel/plugin-syntax-export-default-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.1.tgz#a92852e694910ae4295e6e51e87b83507ed5e6e8" - integrity sha512-cNXSxv9eTkGUtd0PsNMK8Yx5xeScxfpWOUAxE+ZPAXXEcAMOC3fk7LRdXq5fvpra2pLx2p1YtkAhpUbB2SwaRA== +"@babel/plugin-syntax-export-default-from@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.25.9.tgz#86614767a9ff140366f0c3766ef218beb32a730a" + integrity sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-export-namespace-from@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" - integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== - dependencies: - "@babel/helper-plugin-utils" "^7.8.3" - -"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.18.0", "@babel/plugin-syntax-flow@^7.24.1": +"@babel/plugin-syntax-flow@^7.12.1", "@babel/plugin-syntax-flow@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz#875c25e3428d7896c87589765fc8b9d32f24bd8d" integrity sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA== dependencies: "@babel/helper-plugin-utils" "^7.24.0" -"@babel/plugin-syntax-import-assertions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" - integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== +"@babel/plugin-syntax-flow@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.25.9.tgz#30ddd09b4ad822f291efbbeb3bc4c5d3027af61d" + integrity sha512-F3FVgxwamIRS3+kfjNaPARX0DSAiH1exrQUVajXiR34hkdA9eyK+8rJbnu55DQjKL/ayuXqjNr2HDXwBEMEtFQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-attributes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" - integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== +"@babel/plugin-syntax-import-assertions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.9.tgz#631686872fac3d4d1f1ae9a406a8fd1c482c7b2a" + integrity sha512-4GHX5uzr5QMOOuzV0an9MFju4hKlm0OyePl/lHhcsTVae5t/IKVHnb8W67Vr6FuLlk5lPqLB7n7O+K5R46emYg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": +"@babel/plugin-syntax-import-attributes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.9.tgz#29c9643445deea4533c05e6ac6c39d15424bbe78" + integrity sha512-u3EN9ub8LyYvgTnrgp8gboElouayiwPdnM7x5tcnW3iSt09/lQYPwMNK40I9IUxo7QOZhAsPHCmmuO7EPdruqg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== @@ -679,7 +861,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-jsx@^7.23.3", "@babel/plugin-syntax-jsx@^7.24.1", "@babel/plugin-syntax-jsx@^7.7.2": +"@babel/plugin-syntax-jsx@^7.24.1", "@babel/plugin-syntax-jsx@^7.7.2": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== @@ -693,21 +875,28 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": +"@babel/plugin-syntax-jsx@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz#a34313a178ea56f1951599b929c1ceacee719290" + integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-numeric-separator@^7.10.4", "@babel/plugin-syntax-numeric-separator@^7.8.3": +"@babel/plugin-syntax-numeric-separator@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== @@ -728,21 +917,14 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3": +"@babel/plugin-syntax-optional-chaining@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/plugin-syntax-private-property-in-object@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" - integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== - dependencies: - "@babel/helper-plugin-utils" "^7.14.5" - -"@babel/plugin-syntax-top-level-await@^7.14.5", "@babel/plugin-syntax-top-level-await@^7.8.3": +"@babel/plugin-syntax-top-level-await@^7.8.3": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== @@ -763,6 +945,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" +"@babel/plugin-syntax-typescript@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz#67dda2b74da43727cf21d46cf9afef23f4365399" + integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-unicode-sets-regex@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz#d49a3b3e6b52e5be6740022317580234a6a47357" @@ -771,13 +960,6 @@ "@babel/helper-create-regexp-features-plugin" "^7.18.6" "@babel/helper-plugin-utils" "^7.18.6" -"@babel/plugin-transform-arrow-functions@^7.0.0", "@babel/plugin-transform-arrow-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" - integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-transform-arrow-functions@^7.0.0-0": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz#4f6886c11e423bd69f3ce51dbf42424a5f275514" @@ -785,38 +967,44 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-async-generator-functions@^7.24.3": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" - integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== +"@babel/plugin-transform-arrow-functions@^7.24.7", "@babel/plugin-transform-arrow-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz#7821d4410bee5daaadbb4cdd9a6649704e176845" + integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg== dependencies: - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" - "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-async-to-generator@^7.20.0", "@babel/plugin-transform-async-to-generator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" - integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== +"@babel/plugin-transform-async-generator-functions@^7.25.4", "@babel/plugin-transform-async-generator-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz#1b18530b077d18a407c494eb3d1d72da505283a2" + integrity sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw== dependencies: - "@babel/helper-module-imports" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-block-scoped-functions@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" - integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== +"@babel/plugin-transform-async-to-generator@^7.24.7", "@babel/plugin-transform-async-to-generator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz#c80008dacae51482793e5a9c08b39a5be7e12d71" + integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-remap-async-to-generator" "^7.25.9" -"@babel/plugin-transform-block-scoping@^7.0.0", "@babel/plugin-transform-block-scoping@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz#28f5c010b66fbb8ccdeef853bef1935c434d7012" - integrity sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g== +"@babel/plugin-transform-block-scoped-functions@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.9.tgz#5700691dbd7abb93de300ca7be94203764fce458" + integrity sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-block-scoping@^7.25.0", "@babel/plugin-transform-block-scoping@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz#c33665e46b06759c93687ca0f84395b80c0473a1" + integrity sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-class-properties@^7.0.0-0": version "7.24.7" @@ -826,36 +1014,21 @@ "@babel/helper-create-class-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-class-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" - integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== - dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/plugin-transform-class-static-block@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" - integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== +"@babel/plugin-transform-class-properties@^7.25.4", "@babel/plugin-transform-class-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz#a8ce84fedb9ad512549984101fa84080a9f5f51f" + integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.4" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-classes@^7.0.0", "@babel/plugin-transform-classes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz#5bc8fc160ed96378184bc10042af47f50884dcb1" - integrity sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q== +"@babel/plugin-transform-class-static-block@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.9.tgz#1cab37c4278a563409d74c1e4f08fb77de5d7a5c" + integrity sha512-UIf+72C7YJ+PJ685/PpATbCz00XqiFEzHX5iysRwfvNT0Ko+FaXSvRgLytFSp8xUItrG9pFM/KoBBZDrY/cYyg== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - "@babel/helper-split-export-declaration" "^7.22.6" - globals "^11.1.0" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-classes@^7.0.0-0": version "7.25.0" @@ -869,61 +1042,79 @@ "@babel/traverse" "^7.25.0" globals "^11.1.0" -"@babel/plugin-transform-computed-properties@^7.0.0", "@babel/plugin-transform-computed-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" - integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== +"@babel/plugin-transform-classes@^7.25.4", "@babel/plugin-transform-classes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz#7152457f7880b593a63ade8a861e6e26a4469f52" + integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/template" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" + "@babel/traverse" "^7.25.9" + globals "^11.1.0" -"@babel/plugin-transform-destructuring@^7.20.0", "@babel/plugin-transform-destructuring@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz#b1e8243af4a0206841973786292b8c8dd8447345" - integrity sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw== +"@babel/plugin-transform-computed-properties@^7.24.7", "@babel/plugin-transform-computed-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz#db36492c78460e534b8852b1d5befe3c923ef10b" + integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/template" "^7.25.9" -"@babel/plugin-transform-dotall-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" - integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== +"@babel/plugin-transform-destructuring@^7.24.8", "@babel/plugin-transform-destructuring@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz#966ea2595c498224340883602d3cfd7a0c79cea1" + integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-duplicate-keys@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" - integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== +"@babel/plugin-transform-dotall-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz#bad7945dd07734ca52fe3ad4e872b40ed09bb09a" + integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-dynamic-import@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" - integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== +"@babel/plugin-transform-duplicate-keys@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz#8850ddf57dce2aebb4394bb434a7598031059e6d" + integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-exponentiation-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" - integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== +"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz#6f7259b4de127721a08f1e5165b852fcaa696d31" + integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog== dependencies: - "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-export-namespace-from@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" - integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== +"@babel/plugin-transform-dynamic-import@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz#23e917de63ed23c6600c5dd06d94669dce79f7b8" + integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-exponentiation-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.9.tgz#ece47b70d236c1d99c263a1e22b62dc20a4c8b0f" + integrity sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-export-namespace-from@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz#90745fe55053394f554e40584cda81f2c8a402a2" + integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-flow-strip-types@^7.20.0", "@babel/plugin-transform-flow-strip-types@^7.24.1": +"@babel/plugin-transform-flow-strip-types@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz#fa8d0a146506ea195da1671d38eed459242b2dcc" integrity sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ== @@ -931,70 +1122,68 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-flow" "^7.24.1" -"@babel/plugin-transform-for-of@^7.0.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz#f25b33f72df1d8be76399e1b8f3f9d366eb5bc70" - integrity sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g== +"@babel/plugin-transform-flow-strip-types@^7.25.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.9.tgz#85879b42a8f5948fd6317069978e98f23ef8aec1" + integrity sha512-/VVukELzPDdci7UUsWQaSkhgnjIWXnIyRpM02ldxaVoFK96c41So8JcKT3m0gYjyv7j5FNPGS5vfELrWalkbDA== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-flow" "^7.25.9" -"@babel/plugin-transform-for-of@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" - integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== +"@babel/plugin-transform-for-of@^7.24.7", "@babel/plugin-transform-for-of@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz#4bdc7d42a213397905d89f02350c5267866d5755" + integrity sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" -"@babel/plugin-transform-function-name@^7.0.0", "@babel/plugin-transform-function-name@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" - integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== +"@babel/plugin-transform-function-name@^7.25.1", "@babel/plugin-transform-function-name@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz#939d956e68a606661005bfd550c4fc2ef95f7b97" + integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-json-strings@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" - integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== +"@babel/plugin-transform-json-strings@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz#c86db407cb827cded902a90c707d2781aaa89660" + integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-literals@^7.0.0", "@babel/plugin-transform-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" - integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== +"@babel/plugin-transform-literals@^7.25.2", "@babel/plugin-transform-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz#1a1c6b4d4aa59bc4cad5b6b3a223a0abd685c9de" + integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-logical-assignment-operators@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" - integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== +"@babel/plugin-transform-logical-assignment-operators@^7.24.7", "@babel/plugin-transform-logical-assignment-operators@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz#b19441a8c39a2fda0902900b306ea05ae1055db7" + integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-member-expression-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" - integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== +"@babel/plugin-transform-member-expression-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz#63dff19763ea64a31f5e6c20957e6a25e41ed5de" + integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-amd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" - integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== +"@babel/plugin-transform-modules-amd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz#49ba478f2295101544abd794486cd3088dddb6c5" + integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.1": +"@babel/plugin-transform-modules-commonjs@^7.13.8", "@babel/plugin-transform-modules-commonjs@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== @@ -1012,38 +1201,47 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/helper-simple-access" "^7.24.7" -"@babel/plugin-transform-modules-systemjs@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" - integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== +"@babel/plugin-transform-modules-commonjs@^7.24.8", "@babel/plugin-transform-modules-commonjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.9.tgz#d165c8c569a080baf5467bda88df6425fc060686" + integrity sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg== dependencies: - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-simple-access" "^7.25.9" -"@babel/plugin-transform-modules-umd@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" - integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== +"@babel/plugin-transform-modules-systemjs@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz#8bd1b43836269e3d33307151a114bcf3ba6793f8" + integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA== dependencies: - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@babel/traverse" "^7.25.9" -"@babel/plugin-transform-named-capturing-groups-regex@^7.0.0", "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" - integrity sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ== +"@babel/plugin-transform-modules-umd@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz#6710079cdd7c694db36529a1e8411e49fcbf14c9" + integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.5" - "@babel/helper-plugin-utils" "^7.22.5" + "@babel/helper-module-transforms" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-new-target@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" - integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== +"@babel/plugin-transform-named-capturing-groups-regex@^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz#454990ae6cc22fd2a0fa60b3a2c6f63a38064e6a" + integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-new-target@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz#42e61711294b105c248336dcb04b77054ea8becd" + integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-nullish-coalescing-operator@^7.0.0-0": version "7.24.7" @@ -1053,59 +1251,45 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" -"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" - integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.7", "@babel/plugin-transform-nullish-coalescing-operator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.9.tgz#bcb1b0d9e948168102d5f7104375ca21c3266949" + integrity sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-numeric-separator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" - integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== +"@babel/plugin-transform-numeric-separator@^7.24.7", "@babel/plugin-transform-numeric-separator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz#bfed75866261a8b643468b0ccfd275f2033214a1" + integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz#5a3ce73caf0e7871a02e1c31e8b473093af241ff" - integrity sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA== +"@babel/plugin-transform-object-rest-spread@^7.24.7", "@babel/plugin-transform-object-rest-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz#0203725025074164808bcf1a2cfa90c652c99f18" + integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg== dependencies: - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.1" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" -"@babel/plugin-transform-object-rest-spread@^7.24.5": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz#d13a2b93435aeb8a197e115221cab266ba6e55d6" - integrity sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q== +"@babel/plugin-transform-object-super@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz#385d5de135162933beb4a3d227a2b7e52bb4cf03" + integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A== dependencies: - "@babel/helper-compilation-targets" "^7.24.7" - "@babel/helper-plugin-utils" "^7.24.7" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-replace-supers" "^7.25.9" -"@babel/plugin-transform-object-super@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" - integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== +"@babel/plugin-transform-optional-catch-binding@^7.24.7", "@babel/plugin-transform-optional-catch-binding@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz#10e70d96d52bb1f10c5caaac59ac545ea2ba7ff3" + integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-replace-supers" "^7.24.1" - -"@babel/plugin-transform-optional-catch-binding@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" - integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-optional-chaining@^7.0.0-0", "@babel/plugin-transform-optional-chaining@^7.24.5": +"@babel/plugin-transform-optional-chaining@^7.0.0-0": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.7.tgz#b8f6848a80cf2da98a8a204429bec04756c6d454" integrity sha512-tK+0N9yd4j+x/4hxF3F0e0fu/VdcxU18y5SevtyM/PCFlQvXbR0Zmlo2eBrKtVipGNFzpq56o8WsIIKcJFUCRQ== @@ -1114,21 +1298,13 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.24.7" "@babel/plugin-syntax-optional-chaining" "^7.8.3" -"@babel/plugin-transform-optional-chaining@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz#26e588acbedce1ab3519ac40cc748e380c5291e6" - integrity sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - -"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz#983c15d114da190506c75b616ceb0f817afcc510" - integrity sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg== +"@babel/plugin-transform-optional-chaining@^7.24.8", "@babel/plugin-transform-optional-chaining@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz#e142eb899d26ef715435f201ab6e139541eee7dd" + integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" "@babel/plugin-transform-parameters@^7.24.7": version "7.24.7" @@ -1137,105 +1313,96 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" - integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== +"@babel/plugin-transform-parameters@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz#b856842205b3e77e18b7a7a1b94958069c7ba257" + integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g== dependencies: - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-private-property-in-object@^7.22.11", "@babel/plugin-transform-private-property-in-object@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz#756443d400274f8fb7896742962cc1b9f25c1f6a" - integrity sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg== +"@babel/plugin-transform-private-methods@^7.24.7", "@babel/plugin-transform-private-methods@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz#847f4139263577526455d7d3223cd8bda51e3b57" + integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-create-class-features-plugin" "^7.24.1" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-property-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" - integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== +"@babel/plugin-transform-private-property-in-object@^7.24.7", "@babel/plugin-transform-private-property-in-object@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz#9c8b73e64e6cc3cbb2743633885a7dd2c385fe33" + integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-display-name@^7.0.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" - integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== +"@babel/plugin-transform-property-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz#d72d588bd88b0dec8b62e36f6fda91cedfe28e3f" + integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx-self@^7.0.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz#a21d866d8167e752c6a7c4555dba8afcdfce6268" - integrity sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w== +"@babel/plugin-transform-react-display-name@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz#4b79746b59efa1f38c8695065a92a9f5afb24f7d" + integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx-source@^7.0.0": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz#a2dedb12b09532846721b5df99e52ef8dc3351d0" - integrity sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA== +"@babel/plugin-transform-react-jsx-self@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz#c0b6cae9c1b73967f7f9eb2fca9536ba2fad2858" + integrity sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-react-jsx@^7.0.0": - version "7.23.4" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" - integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== +"@babel/plugin-transform-react-jsx-source@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz#4c6b8daa520b5f155b5fb55547d7c9fa91417503" + integrity sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg== dependencies: - "@babel/helper-annotate-as-pure" "^7.22.5" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-plugin-utils" "^7.22.5" - "@babel/plugin-syntax-jsx" "^7.23.3" - "@babel/types" "^7.23.4" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.20.0": - version "7.24.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz#021562de4534d8b4b1851759fd7af4e05d2c47f8" - integrity sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA== +"@babel/plugin-transform-react-jsx@^7.25.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz#06367940d8325b36edff5e2b9cbe782947ca4166" + integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw== dependencies: - "@babel/helper-plugin-utils" "^7.24.7" - regenerator-transform "^0.15.2" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/plugin-syntax-jsx" "^7.25.9" + "@babel/types" "^7.25.9" -"@babel/plugin-transform-regenerator@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" - integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== +"@babel/plugin-transform-regenerator@^7.24.7", "@babel/plugin-transform-regenerator@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz#03a8a4670d6cebae95305ac6defac81ece77740b" + integrity sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" regenerator-transform "^0.15.2" -"@babel/plugin-transform-reserved-words@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" - integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== +"@babel/plugin-transform-reserved-words@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz#0398aed2f1f10ba3f78a93db219b27ef417fb9ce" + integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-runtime@^7.0.0": - version "7.24.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" - integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== +"@babel/plugin-transform-runtime@^7.24.7": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz#62723ea3f5b31ffbe676da9d6dae17138ae580ea" + integrity sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ== dependencies: - "@babel/helper-module-imports" "^7.24.3" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-module-imports" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" semver "^6.3.1" -"@babel/plugin-transform-shorthand-properties@^7.0.0", "@babel/plugin-transform-shorthand-properties@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" - integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== - dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/plugin-transform-shorthand-properties@^7.0.0-0": version "7.24.7" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz#85448c6b996e122fa9e289746140aaa99da64e73" @@ -1243,20 +1410,27 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-spread@^7.0.0", "@babel/plugin-transform-spread@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" - integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== +"@babel/plugin-transform-shorthand-properties@^7.24.7", "@babel/plugin-transform-shorthand-properties@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz#bb785e6091f99f826a95f9894fc16fde61c163f2" + integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-sticky-regex@^7.0.0", "@babel/plugin-transform-sticky-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" - integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== +"@babel/plugin-transform-spread@^7.24.7", "@babel/plugin-transform-spread@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz#24a35153931b4ba3d13cec4a7748c21ab5514ef9" + integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + +"@babel/plugin-transform-sticky-regex@^7.24.7", "@babel/plugin-transform-sticky-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz#c7f02b944e986a417817b20ba2c504dfc1453d32" + integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA== + dependencies: + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-template-literals@^7.0.0-0": version "7.24.7" @@ -1265,21 +1439,21 @@ dependencies: "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-template-literals@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" - integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== +"@babel/plugin-transform-template-literals@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz#6dbd4a24e8fad024df76d1fac6a03cf413f60fe1" + integrity sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typeof-symbol@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz#6831f78647080dec044f7e9f68003d99424f94c7" - integrity sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA== +"@babel/plugin-transform-typeof-symbol@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz#224ba48a92869ddbf81f9b4a5f1204bbf5a2bc4b" + integrity sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-typescript@^7.24.1", "@babel/plugin-transform-typescript@^7.5.0": +"@babel/plugin-transform-typescript@^7.24.1": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz#03e0492537a4b953e491f53f2bc88245574ebd15" integrity sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g== @@ -1299,28 +1473,31 @@ "@babel/helper-plugin-utils" "^7.24.7" "@babel/plugin-syntax-typescript" "^7.24.7" -"@babel/plugin-transform-unicode-escapes@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" - integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== +"@babel/plugin-transform-typescript@^7.25.2": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.9.tgz#69267905c2b33c2ac6d8fe765e9dc2ddc9df3849" + integrity sha512-7PbZQZP50tzv2KGGnhh82GSyMB01yKY9scIjf1a+GfZCtInOWqUH5+1EBU4t9fyR5Oykkkc9vFTs4OHrhHXljQ== dependencies: - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-annotate-as-pure" "^7.25.9" + "@babel/helper-create-class-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-skip-transparent-expression-wrappers" "^7.25.9" + "@babel/plugin-syntax-typescript" "^7.25.9" -"@babel/plugin-transform-unicode-property-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" - integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== +"@babel/plugin-transform-unicode-escapes@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz#a75ef3947ce15363fccaa38e2dd9bc70b2788b82" + integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-plugin-utils" "^7.25.9" -"@babel/plugin-transform-unicode-regex@^7.0.0", "@babel/plugin-transform-unicode-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" - integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== +"@babel/plugin-transform-unicode-property-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz#a901e96f2c1d071b0d1bb5dc0d3c880ce8f53dd3" + integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg== dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" "@babel/plugin-transform-unicode-regex@^7.0.0-0": version "7.24.7" @@ -1330,99 +1507,94 @@ "@babel/helper-create-regexp-features-plugin" "^7.24.7" "@babel/helper-plugin-utils" "^7.24.7" -"@babel/plugin-transform-unicode-sets-regex@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" - integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== - dependencies: - "@babel/helper-create-regexp-features-plugin" "^7.22.15" - "@babel/helper-plugin-utils" "^7.24.0" - -"@babel/preset-env@^7.20.0": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.4.tgz#46dbbcd608771373b88f956ffb67d471dce0d23b" - integrity sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A== - dependencies: - "@babel/compat-data" "^7.24.4" - "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-plugin-utils" "^7.24.0" - "@babel/helper-validator-option" "^7.23.5" - "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.4" - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" +"@babel/plugin-transform-unicode-regex@^7.24.7", "@babel/plugin-transform-unicode-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz#5eae747fe39eacf13a8bd006a4fb0b5d1fa5e9b1" + integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/plugin-transform-unicode-sets-regex@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz#65114c17b4ffc20fa5b163c63c70c0d25621fabe" + integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + +"@babel/preset-env@^7.25.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.25.9.tgz#fc8a68705e02553cdeeeb5477bf241e12b9c3cd9" + integrity sha512-XqDEt+hfsQukahSX9JOBDHhpUHDhj2zGSxoqWQFCMajOSBnbhBdgON/bU/5PkBA1yX5tqW6tTzuIPVsZTQ7h5Q== + dependencies: + "@babel/compat-data" "^7.25.9" + "@babel/helper-compilation-targets" "^7.25.9" + "@babel/helper-plugin-utils" "^7.25.9" + "@babel/helper-validator-option" "^7.25.9" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9" + "@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9" "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" - "@babel/plugin-syntax-async-generators" "^7.8.4" - "@babel/plugin-syntax-class-properties" "^7.12.13" - "@babel/plugin-syntax-class-static-block" "^7.14.5" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-export-namespace-from" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.24.1" - "@babel/plugin-syntax-import-attributes" "^7.24.1" - "@babel/plugin-syntax-import-meta" "^7.10.4" - "@babel/plugin-syntax-json-strings" "^7.8.3" - "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" - "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" - "@babel/plugin-syntax-numeric-separator" "^7.10.4" - "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" - "@babel/plugin-syntax-optional-chaining" "^7.8.3" - "@babel/plugin-syntax-private-property-in-object" "^7.14.5" - "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-import-assertions" "^7.25.9" + "@babel/plugin-syntax-import-attributes" "^7.25.9" "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" - "@babel/plugin-transform-arrow-functions" "^7.24.1" - "@babel/plugin-transform-async-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.24.1" - "@babel/plugin-transform-block-scoped-functions" "^7.24.1" - "@babel/plugin-transform-block-scoping" "^7.24.4" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@babel/plugin-transform-class-static-block" "^7.24.4" - "@babel/plugin-transform-classes" "^7.24.1" - "@babel/plugin-transform-computed-properties" "^7.24.1" - "@babel/plugin-transform-destructuring" "^7.24.1" - "@babel/plugin-transform-dotall-regex" "^7.24.1" - "@babel/plugin-transform-duplicate-keys" "^7.24.1" - "@babel/plugin-transform-dynamic-import" "^7.24.1" - "@babel/plugin-transform-exponentiation-operator" "^7.24.1" - "@babel/plugin-transform-export-namespace-from" "^7.24.1" - "@babel/plugin-transform-for-of" "^7.24.1" - "@babel/plugin-transform-function-name" "^7.24.1" - "@babel/plugin-transform-json-strings" "^7.24.1" - "@babel/plugin-transform-literals" "^7.24.1" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-member-expression-literals" "^7.24.1" - "@babel/plugin-transform-modules-amd" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.24.1" - "@babel/plugin-transform-modules-systemjs" "^7.24.1" - "@babel/plugin-transform-modules-umd" "^7.24.1" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" - "@babel/plugin-transform-new-target" "^7.24.1" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.1" - "@babel/plugin-transform-object-super" "^7.24.1" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.1" - "@babel/plugin-transform-parameters" "^7.24.1" - "@babel/plugin-transform-private-methods" "^7.24.1" - "@babel/plugin-transform-private-property-in-object" "^7.24.1" - "@babel/plugin-transform-property-literals" "^7.24.1" - "@babel/plugin-transform-regenerator" "^7.24.1" - "@babel/plugin-transform-reserved-words" "^7.24.1" - "@babel/plugin-transform-shorthand-properties" "^7.24.1" - "@babel/plugin-transform-spread" "^7.24.1" - "@babel/plugin-transform-sticky-regex" "^7.24.1" - "@babel/plugin-transform-template-literals" "^7.24.1" - "@babel/plugin-transform-typeof-symbol" "^7.24.1" - "@babel/plugin-transform-unicode-escapes" "^7.24.1" - "@babel/plugin-transform-unicode-property-regex" "^7.24.1" - "@babel/plugin-transform-unicode-regex" "^7.24.1" - "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/plugin-transform-arrow-functions" "^7.25.9" + "@babel/plugin-transform-async-generator-functions" "^7.25.9" + "@babel/plugin-transform-async-to-generator" "^7.25.9" + "@babel/plugin-transform-block-scoped-functions" "^7.25.9" + "@babel/plugin-transform-block-scoping" "^7.25.9" + "@babel/plugin-transform-class-properties" "^7.25.9" + "@babel/plugin-transform-class-static-block" "^7.25.9" + "@babel/plugin-transform-classes" "^7.25.9" + "@babel/plugin-transform-computed-properties" "^7.25.9" + "@babel/plugin-transform-destructuring" "^7.25.9" + "@babel/plugin-transform-dotall-regex" "^7.25.9" + "@babel/plugin-transform-duplicate-keys" "^7.25.9" + "@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-dynamic-import" "^7.25.9" + "@babel/plugin-transform-exponentiation-operator" "^7.25.9" + "@babel/plugin-transform-export-namespace-from" "^7.25.9" + "@babel/plugin-transform-for-of" "^7.25.9" + "@babel/plugin-transform-function-name" "^7.25.9" + "@babel/plugin-transform-json-strings" "^7.25.9" + "@babel/plugin-transform-literals" "^7.25.9" + "@babel/plugin-transform-logical-assignment-operators" "^7.25.9" + "@babel/plugin-transform-member-expression-literals" "^7.25.9" + "@babel/plugin-transform-modules-amd" "^7.25.9" + "@babel/plugin-transform-modules-commonjs" "^7.25.9" + "@babel/plugin-transform-modules-systemjs" "^7.25.9" + "@babel/plugin-transform-modules-umd" "^7.25.9" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9" + "@babel/plugin-transform-new-target" "^7.25.9" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.25.9" + "@babel/plugin-transform-numeric-separator" "^7.25.9" + "@babel/plugin-transform-object-rest-spread" "^7.25.9" + "@babel/plugin-transform-object-super" "^7.25.9" + "@babel/plugin-transform-optional-catch-binding" "^7.25.9" + "@babel/plugin-transform-optional-chaining" "^7.25.9" + "@babel/plugin-transform-parameters" "^7.25.9" + "@babel/plugin-transform-private-methods" "^7.25.9" + "@babel/plugin-transform-private-property-in-object" "^7.25.9" + "@babel/plugin-transform-property-literals" "^7.25.9" + "@babel/plugin-transform-regenerator" "^7.25.9" + "@babel/plugin-transform-reserved-words" "^7.25.9" + "@babel/plugin-transform-shorthand-properties" "^7.25.9" + "@babel/plugin-transform-spread" "^7.25.9" + "@babel/plugin-transform-sticky-regex" "^7.25.9" + "@babel/plugin-transform-template-literals" "^7.25.9" + "@babel/plugin-transform-typeof-symbol" "^7.25.9" + "@babel/plugin-transform-unicode-escapes" "^7.25.9" + "@babel/plugin-transform-unicode-property-regex" "^7.25.9" + "@babel/plugin-transform-unicode-regex" "^7.25.9" + "@babel/plugin-transform-unicode-sets-regex" "^7.25.9" "@babel/preset-modules" "0.1.6-no-external-plugins" babel-plugin-polyfill-corejs2 "^0.4.10" - babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-corejs3 "^0.10.6" babel-plugin-polyfill-regenerator "^0.6.1" - core-js-compat "^3.31.0" + core-js-compat "^3.38.1" semver "^6.3.1" "@babel/preset-flow@^7.13.13": @@ -1481,14 +1653,21 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.20.0", "@babel/runtime@^7.8.4": +"@babel/runtime@^7.25.0": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.9.tgz#65884fd6dc255a775402cc1d9811082918f4bf00" + integrity sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg== + dependencies: + regenerator-runtime "^0.14.0" + +"@babel/runtime@^7.8.4": version "7.24.4" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.4.tgz#de795accd698007a66ba44add6cc86542aff1edd" integrity sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA== dependencies: regenerator-runtime "^0.14.0" -"@babel/template@^7.0.0", "@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": +"@babel/template@^7.22.15", "@babel/template@^7.24.0", "@babel/template@^7.3.3": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.24.0.tgz#c6a524aa93a4a05d66aaf31654258fae69d87d50" integrity sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA== @@ -1515,7 +1694,29 @@ "@babel/parser" "^7.25.0" "@babel/types" "^7.25.0" -"@babel/traverse@^7.20.0", "@babel/traverse@^7.24.1": +"@babel/template@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.25.9.tgz#ecb62d81a8a6f5dc5fe8abfc3901fc52ddf15016" + integrity sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/types" "^7.25.9" + +"@babel/traverse--for-generate-function-map@npm:@babel/traverse@^7.25.3": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/traverse@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== @@ -1560,7 +1761,20 @@ debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.0", "@babel/types@^7.20.7", "@babel/types@^7.22.15", "@babel/types@^7.22.19", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.23.4", "@babel/types@^7.24.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": +"@babel/traverse@^7.25.3", "@babel/traverse@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" + integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + dependencies: + "@babel/code-frame" "^7.25.9" + "@babel/generator" "^7.25.9" + "@babel/parser" "^7.25.9" + "@babel/template" "^7.25.9" + "@babel/types" "^7.25.9" + debug "^4.3.1" + globals "^11.1.0" + +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== @@ -1587,11 +1801,26 @@ "@babel/helper-validator-identifier" "^7.24.7" to-fast-properties "^2.0.0" +"@babel/types@^7.25.9": + version "7.25.9" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.9.tgz#620f35ea1f4233df529ec9a2668d2db26574deee" + integrity sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0": version "4.4.0" resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59" @@ -1959,52 +2188,52 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@react-native-community/cli-clean@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-14.0.0.tgz#37b53762e5f3d02f452a44fc32a7f88a7419ccad" - integrity sha512-kvHthZTNur/wLLx8WL5Oh+r04zzzFAX16r8xuaLhu9qGTE6Th1JevbsIuiQb5IJqD8G/uZDKgIZ2a0/lONcbJg== +"@react-native-async-storage/async-storage@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-2.0.0.tgz#22373f7f83132547701637fc574ddb83b83b384e" + integrity sha512-af6H9JjfL6G/PktBfUivvexoiFKQTJGQCtSWxMdivLzNIY94mu9DdiY0JqCSg/LyPCLGKhHPUlRQhNvpu3/KVA== dependencies: - "@react-native-community/cli-tools" "14.0.0" + merge-options "^3.0.4" + +"@react-native-community/cli-clean@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-15.0.0-alpha.2.tgz#c6598086cd1432deaa2bed82f6d2833feb112091" + integrity sha512-QNq5lZpoxGHIneKBB1S8hSpvgFYGST7CP1GWrgrmOaIieNFsh2oWhTePzGyxUgxr0i0qzolmWwuwqqyIPMUSyQ== + dependencies: + "@react-native-community/cli-tools" "15.0.0-alpha.2" chalk "^4.1.2" execa "^5.0.0" fast-glob "^3.3.2" -"@react-native-community/cli-config@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-14.0.0.tgz#641ec08ddb44c90ceb947d8fc8e35de1a4bcf4a4" - integrity sha512-2Nr8KR+dgn1z+HLxT8piguQ1SoEzgKJnOPQKE1uakxWaRFcQ4LOXgzpIAscYwDW6jmQxdNqqbg2cRUoOS7IMtQ== +"@react-native-community/cli-config@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-15.0.0-alpha.2.tgz#fe535e9174593041ec0c8e6abbb9cb4127195315" + integrity sha512-gkmVP7s5sR74HOz2unPsRdNTEmwQyzpeEcB2OI3g35WAyccpYO7OpmpE1PlQ0O9qKdQlQJKbL7fq2DhqswVAdg== dependencies: - "@react-native-community/cli-tools" "14.0.0" + "@react-native-community/cli-tools" "15.0.0-alpha.2" chalk "^4.1.2" cosmiconfig "^9.0.0" deepmerge "^4.3.0" fast-glob "^3.3.2" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-14.0.0.tgz#ef02d531e70b86265d39773abc3b58ab5cb8f4b8" - integrity sha512-JpfzILfU7eKE9+7AMCAwNJv70H4tJGVv3ZGFqSVoK1YHg5QkVEGsHtoNW8AsqZRS6Fj4os+Fmh+r+z1L36sPmg== - dependencies: - serve-static "^1.13.1" - -"@react-native-community/cli-debugger-ui@14.0.0-alpha.11": - version "14.0.0-alpha.11" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-14.0.0-alpha.11.tgz#952bb7c162e136ebff1950e7e80706eb3155fe21" - integrity sha512-0wCNQxhCniyjyMXgR1qXliY180y/2QbvoiYpp2MleGQADr5M1b8lgI4GoyADh5kE+kX3VL0ssjgyxpmbpCD86A== +"@react-native-community/cli-debugger-ui@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-15.0.0-alpha.2.tgz#8ee14142c270c83fb5072050cad4f97e99ec5e5a" + integrity sha512-odOFpsOgbCc2si2+D16eyeY4h4u3qu12XssRGV8VqvhKLh0khQ/wA6y01/1ghy1sA0Pus1LyBwFEix6X3epXBw== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-14.0.0.tgz#f6855495d5a53e9a2c206949958a8291ac3e326e" - integrity sha512-in6jylHjaPUaDzV+JtUblh8m9JYIHGjHOf6Xn57hrmE5Zwzwuueoe9rSMHF1P0mtDgRKrWPzAJVejElddfptWA== +"@react-native-community/cli-doctor@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-15.0.0-alpha.2.tgz#d83c4146111c5f3c2e2468d6cdcb4e76ed0e4e37" + integrity sha512-kcBwSUMmD0AGP+kvlxTkzGlMLxOqCZIJ6pBbpnTPAhSjYrvYzHNZTTYqeggcACR7mlERot0t6tJvXeGHP1s59g== dependencies: - "@react-native-community/cli-config" "14.0.0" - "@react-native-community/cli-platform-android" "14.0.0" - "@react-native-community/cli-platform-apple" "14.0.0" - "@react-native-community/cli-platform-ios" "14.0.0" - "@react-native-community/cli-tools" "14.0.0" + "@react-native-community/cli-config" "15.0.0-alpha.2" + "@react-native-community/cli-platform-android" "15.0.0-alpha.2" + "@react-native-community/cli-platform-apple" "15.0.0-alpha.2" + "@react-native-community/cli-platform-ios" "15.0.0-alpha.2" + "@react-native-community/cli-tools" "15.0.0-alpha.2" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" @@ -2017,44 +2246,44 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-platform-android@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-14.0.0.tgz#36f47999af9b386aaa8f8286923edd9a65101f28" - integrity sha512-nt7yVz3pGKQXnVa5MAk7zR+1n41kNKD3Hi2OgybH5tVShMBo7JQoL2ZVVH6/y/9wAwI/s7hXJgzf1OIP3sMq+Q== +"@react-native-community/cli-platform-android@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-15.0.0-alpha.2.tgz#479f743086fb3c853d9a8038e26035d25776db7c" + integrity sha512-cKHbENaYreKCRtF8cSgTX3mn8XeupTVNzF57tWtOq6Prs+9Bd8ZsOylFZEvkyb3wY1S+BFDAXebAGzbL9ZlY3w== dependencies: - "@react-native-community/cli-tools" "14.0.0" + "@react-native-community/cli-tools" "15.0.0-alpha.2" chalk "^4.1.2" execa "^5.0.0" fast-glob "^3.3.2" - fast-xml-parser "^4.2.4" + fast-xml-parser "^4.4.1" logkitty "^0.7.1" -"@react-native-community/cli-platform-apple@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-14.0.0.tgz#7050af6fbc01b4ebe72e1bdcb48d188cbbf1b9ef" - integrity sha512-WniJL8vR4MeIsjqio2hiWWuUYUJEL3/9TDL5aXNwG68hH3tYgK3742+X9C+vRzdjTmf5IKc/a6PwLsdplFeiwQ== +"@react-native-community/cli-platform-apple@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-15.0.0-alpha.2.tgz#561272ec7bf6cbedf8737cf1b71566b63e9b704b" + integrity sha512-eXE6KES4mNWQA1c/d+aWQnNsgjD7rdrsMAH4t0xOhXn4XWCw1FF6Y7PjUY8fi784RFIzEYB2xiVMvWQsC6BmAQ== dependencies: - "@react-native-community/cli-tools" "14.0.0" + "@react-native-community/cli-tools" "15.0.0-alpha.2" chalk "^4.1.2" execa "^5.0.0" fast-glob "^3.3.2" - fast-xml-parser "^4.2.4" + fast-xml-parser "^4.4.1" ora "^5.4.1" -"@react-native-community/cli-platform-ios@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-14.0.0.tgz#7c7c393a13415bf61aaad82f1a3583c30afb110e" - integrity sha512-8kxGv7mZ5nGMtueQDq+ndu08f0ikf3Zsqm3Ix8FY5KCXpSgP14uZloO2GlOImq/zFESij+oMhCkZJGggpWpfAw== +"@react-native-community/cli-platform-ios@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-15.0.0-alpha.2.tgz#c237e561d60d3aa463d51327b37e6943910f7bb5" + integrity sha512-7teqYOMf7SnBmUbSeGklDS2lJCpAa1LKzmy/L8vFiayWImUTJHKzkJyZNzhmiLSImcibFYVH7uaD2DWuFNcrOQ== dependencies: - "@react-native-community/cli-platform-apple" "14.0.0" + "@react-native-community/cli-platform-apple" "15.0.0-alpha.2" -"@react-native-community/cli-server-api@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-14.0.0.tgz#1b62b78e5ea7dead0ae4590465c977bc4af880fc" - integrity sha512-A0FIsj0QCcDl1rswaVlChICoNbfN+mkrKB5e1ab5tOYeZMMyCHqvU+eFvAvXjHUlIvVI+LbqCkf4IEdQ6H/2AQ== +"@react-native-community/cli-server-api@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-15.0.0-alpha.2.tgz#37dcfe41cc7204e01290c616c9262e5e71f70424" + integrity sha512-e4bHsl/J006+coMTOpj6i44QPDat/X2s1sc3rqQkFL5vHIduB+Z6IyDI+W9F5uHrJhtQukE5NdajkjcXyjGLVA== dependencies: - "@react-native-community/cli-debugger-ui" "14.0.0" - "@react-native-community/cli-tools" "14.0.0" + "@react-native-community/cli-debugger-ui" "15.0.0-alpha.2" + "@react-native-community/cli-tools" "15.0.0-alpha.2" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -2063,25 +2292,10 @@ serve-static "^1.13.1" ws "^6.2.3" -"@react-native-community/cli-server-api@14.0.0-alpha.11": - version "14.0.0-alpha.11" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-14.0.0-alpha.11.tgz#505163e11d3a30ebc874950956f72f5b3b6c5fc1" - integrity sha512-I7YeYI7S5wSxnQAqeG8LNqhT99FojiGIk87DU0vTp6U8hIMLcA90fUuBAyJY38AuQZ12ZJpGa8ObkhIhWzGkvg== - dependencies: - "@react-native-community/cli-debugger-ui" "14.0.0-alpha.11" - "@react-native-community/cli-tools" "14.0.0-alpha.11" - compression "^1.7.1" - connect "^3.6.5" - errorhandler "^1.5.1" - nocache "^3.0.1" - pretty-format "^26.6.2" - serve-static "^1.13.1" - ws "^6.2.3" - -"@react-native-community/cli-tools@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-14.0.0.tgz#07b57a8942a131618c198e3b64fb1ec846cd631d" - integrity sha512-L7GX5hyYYv0ZWbAyIQKzhHuShnwDqlKYB0tqn57wa5riGCaxYuRPTK+u4qy+WRCye7+i8M4Xj6oQtSd4z0T9cA== +"@react-native-community/cli-tools@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-15.0.0-alpha.2.tgz#0c02c61a30730814925d6c1e08d43b57ec083f24" + integrity sha512-XzjIFizlqLtwHqhFJHbYfedFOIebFEt1bdLSsHi2HSiZQlltW8KTwWiHC1VHfoEpePErvP2/jsx/dZtX7wNNSw== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" @@ -2094,41 +2308,25 @@ shell-quote "^1.7.3" sudo-prompt "^9.0.0" -"@react-native-community/cli-tools@14.0.0-alpha.11": - version "14.0.0-alpha.11" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-14.0.0-alpha.11.tgz#95b148a3e65a4c2519af608b27ed7091e7e8b78a" - integrity sha512-HQCfVnX9aqRdKdLxmQy4fUAUo+YhNGlBV7ZjOayPbuEGWJ4RN+vSy0Cawk7epo7hXd6vKzc7P7y3HlU6Kxs7+w== - dependencies: - appdirsjs "^1.2.4" - chalk "^4.1.2" - execa "^5.0.0" - find-up "^5.0.0" - mime "^2.4.1" - open "^6.2.0" - ora "^5.4.1" - semver "^7.5.2" - shell-quote "^1.7.3" - sudo-prompt "^9.0.0" - -"@react-native-community/cli-types@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-14.0.0.tgz#6cde2d2a93edd9b13238171edef30352d37e8dd2" - integrity sha512-CMUevd1pOWqvmvutkUiyQT2lNmMHUzSW7NKc1xvHgg39NjbS58Eh2pMzIUP85IwbYNeocfYc3PH19vA/8LnQtg== +"@react-native-community/cli-types@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-15.0.0-alpha.2.tgz#12d62c7e928115758bbb7de6ded3d21a57dbb7b9" + integrity sha512-5gLZKQLG4ejrMEzdBw0KaGcX7jTTpWoGypxqL+8sQ7Pkenklfsr1RJRFxv+hzO/yX9psMFMgZUXluLajWwuvcg== dependencies: joi "^17.2.1" -"@react-native-community/cli@14.0.0": - version "14.0.0" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-14.0.0.tgz#0c98d75ac55515d07972682c1053f46bfee93863" - integrity sha512-KwMKJB5jsDxqOhT8CGJ55BADDAYxlYDHv5R/ASQlEcdBEZxT0zZmnL0iiq2VqzETUy+Y/Nop+XDFgqyoQm0C2w== - dependencies: - "@react-native-community/cli-clean" "14.0.0" - "@react-native-community/cli-config" "14.0.0" - "@react-native-community/cli-debugger-ui" "14.0.0" - "@react-native-community/cli-doctor" "14.0.0" - "@react-native-community/cli-server-api" "14.0.0" - "@react-native-community/cli-tools" "14.0.0" - "@react-native-community/cli-types" "14.0.0" +"@react-native-community/cli@15.0.0-alpha.2": + version "15.0.0-alpha.2" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-15.0.0-alpha.2.tgz#e465127a176a9eac3f0c1e4a16bd1830627fbbfb" + integrity sha512-Yf7kupKmEuytelafCNeNug4ZAC0i7GPgKVyXfRhwVtVp5ykXtWcng2bqPa4YRl4fgWgu5JhoOQhVMEV1cUDzAA== + dependencies: + "@react-native-community/cli-clean" "15.0.0-alpha.2" + "@react-native-community/cli-config" "15.0.0-alpha.2" + "@react-native-community/cli-debugger-ui" "15.0.0-alpha.2" + "@react-native-community/cli-doctor" "15.0.0-alpha.2" + "@react-native-community/cli-server-api" "15.0.0-alpha.2" + "@react-native-community/cli-tools" "15.0.0-alpha.2" + "@react-native-community/cli-types" "15.0.0-alpha.2" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -2139,131 +2337,129 @@ prompts "^2.4.2" semver "^7.5.2" -"@react-native/assets-registry@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.75.1.tgz#a180635222164c770348192c7db909af0c197425" - integrity sha512-mrW6dvueJgP5v5mR/dxvW9v+t9AmzR5OMDMq94reT04QarREGGDHEOW5sLzj4uT6Xhqtda2+ZQOaEZ6PPcv+QA== - -"@react-native/babel-plugin-codegen@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.75.1.tgz#80185ab985b30e103cff4774f271022beab6a0e7" - integrity sha512-M7CxPAYZVDeBCCyC4BToEf6vPFtZ5EAA5F2fcm0RuErWMNiB2ycD7nCSVpZtQXOxgNItNi+7mRFTLKTNb7AFrQ== - dependencies: - "@react-native/codegen" "0.75.1" - -"@react-native/babel-preset@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.75.1.tgz#b9547a19bc1e2d508a7b2051040cce7d2845a31d" - integrity sha512-u5+7PCkz9J5XKhUwDSJCxLyt49L9qirlBvOR8IwztWVhrf+gd/iIgQLZm9vf/j9tfLhEsgvMup6FMha2/u1cQw== - dependencies: - "@babel/core" "^7.20.0" - "@babel/plugin-proposal-export-default-from" "^7.0.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-generator-functions" "^7.24.3" - "@babel/plugin-transform-async-to-generator" "^7.20.0" - "@babel/plugin-transform-block-scoping" "^7.0.0" - "@babel/plugin-transform-class-properties" "^7.24.1" - "@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-for-of" "^7.0.0" - "@babel/plugin-transform-function-name" "^7.0.0" - "@babel/plugin-transform-literals" "^7.0.0" - "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" - "@babel/plugin-transform-modules-commonjs" "^7.0.0" - "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" - "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" - "@babel/plugin-transform-numeric-separator" "^7.24.1" - "@babel/plugin-transform-object-rest-spread" "^7.24.5" - "@babel/plugin-transform-optional-catch-binding" "^7.24.1" - "@babel/plugin-transform-optional-chaining" "^7.24.5" - "@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-regenerator" "^7.20.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.75.1" +"@react-native/assets-registry@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.76.0.tgz#5f89935801ab294ee732d47b5efbc05d4b4511bd" + integrity sha512-U8KLV+PC/cRIiDpb1VbeGuEfKq2riZZtNVLp1UOyKWfPbWWu8j6Fr95w7j+nglp41z70iBeF2OmCiVnRvtNklA== + +"@react-native/babel-plugin-codegen@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.0.tgz#0e9e5dc221db351b050bde3c834d806d3935b7ea" + integrity sha512-HOi45pqlZnCTeR4jJ/zK0FB12r08CI9O70uBjVUqmzvHIrWmL5FaEFp6BPVFOjjXtUsl3JZ2Mle7WpsAP2PQBA== + dependencies: + "@react-native/codegen" "0.76.0" + +"@react-native/babel-preset@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.76.0.tgz#0a6805222c9b69a91673cf2a5763c90bb627cc32" + integrity sha512-HgQt4MyuWLcnrIglXn7GNPPVwtzZ4ffX+SUisdhmPtJCHuP8AOU3HsgOKLhqVfEGWTBlE4kbWoTmmLU87IJaOw== + dependencies: + "@babel/core" "^7.25.2" + "@babel/plugin-proposal-export-default-from" "^7.24.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-default-from" "^7.24.7" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-arrow-functions" "^7.24.7" + "@babel/plugin-transform-async-generator-functions" "^7.25.4" + "@babel/plugin-transform-async-to-generator" "^7.24.7" + "@babel/plugin-transform-block-scoping" "^7.25.0" + "@babel/plugin-transform-class-properties" "^7.25.4" + "@babel/plugin-transform-classes" "^7.25.4" + "@babel/plugin-transform-computed-properties" "^7.24.7" + "@babel/plugin-transform-destructuring" "^7.24.8" + "@babel/plugin-transform-flow-strip-types" "^7.25.2" + "@babel/plugin-transform-for-of" "^7.24.7" + "@babel/plugin-transform-function-name" "^7.25.1" + "@babel/plugin-transform-literals" "^7.25.2" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.7" + "@babel/plugin-transform-modules-commonjs" "^7.24.8" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.24.7" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.7" + "@babel/plugin-transform-numeric-separator" "^7.24.7" + "@babel/plugin-transform-object-rest-spread" "^7.24.7" + "@babel/plugin-transform-optional-catch-binding" "^7.24.7" + "@babel/plugin-transform-optional-chaining" "^7.24.8" + "@babel/plugin-transform-parameters" "^7.24.7" + "@babel/plugin-transform-private-methods" "^7.24.7" + "@babel/plugin-transform-private-property-in-object" "^7.24.7" + "@babel/plugin-transform-react-display-name" "^7.24.7" + "@babel/plugin-transform-react-jsx" "^7.25.2" + "@babel/plugin-transform-react-jsx-self" "^7.24.7" + "@babel/plugin-transform-react-jsx-source" "^7.24.7" + "@babel/plugin-transform-regenerator" "^7.24.7" + "@babel/plugin-transform-runtime" "^7.24.7" + "@babel/plugin-transform-shorthand-properties" "^7.24.7" + "@babel/plugin-transform-spread" "^7.24.7" + "@babel/plugin-transform-sticky-regex" "^7.24.7" + "@babel/plugin-transform-typescript" "^7.25.2" + "@babel/plugin-transform-unicode-regex" "^7.24.7" + "@babel/template" "^7.25.0" + "@react-native/babel-plugin-codegen" "0.76.0" + babel-plugin-syntax-hermes-parser "^0.23.1" babel-plugin-transform-flow-enums "^0.0.2" react-refresh "^0.14.0" -"@react-native/codegen@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.75.1.tgz#c2420236ffc0b6d1d00627bdf7f6635d78e36d28" - integrity sha512-nO5CQuXTPL8iou9EzkUjOrGsiano3hGC80AwFlFt8h7q8Bked293YaB3qRQRwN4gmedR8ZKVZGI/pyuvuOWLfQ== +"@react-native/codegen@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.76.0.tgz#32a33bea09946fb59e8459e9359b45515c0f1a93" + integrity sha512-x0zzK1rb7ZSIAeHRcRSjRo+VtLROjln1IKnQSPLEZEdyQfWNXqgiMk59E5hW7KE6I05upqfbf85PRAb5WndXdw== dependencies: - "@babel/parser" "^7.20.0" + "@babel/parser" "^7.25.3" glob "^7.1.1" - hermes-parser "0.22.0" + hermes-parser "0.23.1" invariant "^2.2.4" jscodeshift "^0.14.0" mkdirp "^0.5.1" nullthrows "^1.1.1" + yargs "^17.6.2" -"@react-native/community-cli-plugin@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.75.1.tgz#6e415d3268e631c1f973182000bf456c67caa7fe" - integrity sha512-G0GPvFAVrC9k0MfwnKXimaYKqOlEzXFMZ6DmZi2zxSGPFt/MV3sSRjbv3yb8q0mLcK78/J7w1DyImcSQopOCLg== +"@react-native/community-cli-plugin@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.76.0.tgz#60d9e2f0e0d67b32cb575c43aa8504d10cd0723d" + integrity sha512-JFU5kmo+lUf5vOsieJ/dGS71Z2+qV3leXbKW6p8cn5aVfupVmtz/uYcFVdGzEGIGJ3juorYOZjpG8Qz91FrUZw== dependencies: - "@react-native-community/cli-server-api" "14.0.0-alpha.11" - "@react-native-community/cli-tools" "14.0.0-alpha.11" - "@react-native/dev-middleware" "0.75.1" - "@react-native/metro-babel-transformer" "0.75.1" + "@react-native/dev-middleware" "0.76.0" + "@react-native/metro-babel-transformer" "0.76.0" chalk "^4.0.0" execa "^5.1.1" - metro "^0.80.3" - metro-config "^0.80.3" - metro-core "^0.80.3" + invariant "^2.2.4" + metro "^0.81.0" + metro-config "^0.81.0" + metro-core "^0.81.0" node-fetch "^2.2.0" - querystring "^0.2.1" readline "^1.3.0" -"@react-native/debugger-frontend@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.75.1.tgz#c0e0ef235f61b5f8488b3651d6c1ed0e0dda6ea7" - integrity sha512-N+awwEYZHj9lR4hieBK2oFB6C0qa4/6NPpzeqvtLnZddr38H6Wv9CHxSFA8pqIBu4qmn4JcRjOjVD6pXCcLohA== +"@react-native/debugger-frontend@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.76.0.tgz#73a5b2b42cfbb4dd0e53f848be34304a13bf04e1" + integrity sha512-v4J22ZN1/7BQYhYvnZYi2pzd87MmTCEnxtTiktaUOhmx3YSF47LGo1Q2UfUE5YOzoRftiJTXDKvzDbI/hqAzgg== -"@react-native/dev-middleware@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.75.1.tgz#37c7f37307fc90b078f9a67df140a972bf57b562" - integrity sha512-2vBIqNe5p/j3ZfDtV3R74OlwoGTgJVDhx9bMIK1U8ODqic+8OVjqvQKGNB+KUb/+HiPkKAhpAIsgcEmL/Nq1sg== +"@react-native/dev-middleware@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.76.0.tgz#85d3e65b35a581fe4c5338af085bbc1e2cf25eb6" + integrity sha512-XvSnCDwCghWCVNtGpoF30xgA1EzxvlGsEyhJCUe0uLMDaaVxr/ZkgD3nZ+/l4cEm1qlrlcAZoGctnUgrzHiTaA== dependencies: "@isaacs/ttlcache" "^1.4.1" - "@react-native/debugger-frontend" "0.75.1" + "@react-native/debugger-frontend" "0.76.0" chrome-launcher "^0.15.2" chromium-edge-launcher "^0.2.0" connect "^3.6.5" debug "^2.2.0" - node-fetch "^2.2.0" nullthrows "^1.1.1" open "^7.0.3" selfsigned "^2.4.1" serve-static "^1.13.1" - ws "^6.2.2" + ws "^6.2.3" -"@react-native/eslint-config@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.75.1.tgz#f68b99b09c4fb65481efc038834d6ff0834b259c" - integrity sha512-f69WsbWJFwYLpZfQy4HDIteN0Fozf8rscD6IfI7ICUqMmAKAMJx+e568Z3ikktu15do2ovNgeJzrFA/dLb5wQA== +"@react-native/eslint-config@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/eslint-config/-/eslint-config-0.76.0.tgz#7ff8e30215d4f14f9dc3ed4fe66d08c5e77ab5d0" + integrity sha512-YY/YkW6FO00pdPDf1pCzF5yIslOU8YBZ+2Hd+ICNg3pPOuHvtPq9bWXJpZyi1vnWyVrDbCGHXkVPAFMi5sii6A== dependencies: - "@babel/core" "^7.20.0" - "@babel/eslint-parser" "^7.20.0" - "@react-native/eslint-plugin" "0.75.1" + "@babel/core" "^7.25.2" + "@babel/eslint-parser" "^7.25.1" + "@react-native/eslint-plugin" "0.76.0" "@typescript-eslint/eslint-plugin" "^7.1.1" "@typescript-eslint/parser" "^7.1.1" eslint-config-prettier "^8.5.0" @@ -2273,60 +2469,112 @@ eslint-plugin-react "^7.30.1" eslint-plugin-react-hooks "^4.6.0" eslint-plugin-react-native "^4.0.0" - -"@react-native/eslint-plugin@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.75.1.tgz#c5e1f929d09da4da69fd87f1f1ee8681c9115bc1" - integrity sha512-RmUTmsUxWWr1FwRPA95rtsix7Ppoey+MejWT/G0MJoRtBN5UM2qmI03Y8+ZDM43MKeNHcmFLCSXXFPwS/z35ew== - -"@react-native/gradle-plugin@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.75.1.tgz#b3368f2a164b4b41237ddfd618221d36086d5c54" - integrity sha512-a2gVjX3MB9TF9QZSKje79n1GDAnseTU94VIcFH/4DS3KjbK3yrNXsu1maxGZxDUAKmTUH7Rz4An/Rb5nkZG7dw== - -"@react-native/js-polyfills@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.75.1.tgz#77c3e7d36a262d2610fc4112ed00bc4ef79a4b11" - integrity sha512-7yUCDtsNaIoOefI3M1XiqUaxNQIzNYL0P38IE6JuroVZspPaGmwB34RkgBTuDzNQ+p/4EIgBmqRzqF5Jjlf92A== - -"@react-native/metro-babel-transformer@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.75.1.tgz#6c4b5d23c51d2fd5112954c8e9f6d250c33121a3" - integrity sha512-X4NZNWox2E97fJG97XNuTd9wU3FK2c+S/Neg7KsBETPOHUkdoORC3nH1VQRrIqID85yYgdxLxvDwXa9hkmzjuA== - dependencies: - "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.75.1" - hermes-parser "0.22.0" + hermes-eslint "^0.23.1" + +"@react-native/eslint-plugin@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/eslint-plugin/-/eslint-plugin-0.76.0.tgz#db49098082b37c824b05f8c85af2de7e4faa5313" + integrity sha512-TsQUN10MvmYsbWAuWp0nyGo+t+/FnuiBOZxNc9VS4eg2oni1Sb9p0DSqLL3Y8EDiAyLCaBNyoY+pkMF87jzILw== + +"@react-native/gradle-plugin@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.76.0.tgz#3cc66a51f8b21826edfec2d79598ac9a419f5427" + integrity sha512-MhsAahV/Ju0Md1x79ljaDsNzzFY02TsDqxSfOS8vc4trZuM0imFf7VEBitOydNDTf9NqzAqJ9p8j7OSuxUEvLg== + +"@react-native/js-polyfills@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.76.0.tgz#d3d300af39a6c9d18a30c7f340ee88845865efb0" + integrity sha512-0UzEqvg85Bn0BpgNG80wzbiWvNypwdl64sbRs/sEvIDjzgq/tM+u3KoneSD5tP72BCydAqXFfepff3FZgImfbA== + +"@react-native/metro-babel-transformer@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.0.tgz#ab41e2076acc4f2c9fe17b7f2319e27db62b882e" + integrity sha512-aq0MrjaOxDitSqQbttBcOt+5tjemCabhEX2gGthy8cNeZokBa2raoHQInDo9iBBN1ePKDCwKGypyC8zKA5dksQ== + dependencies: + "@babel/core" "^7.25.2" + "@react-native/babel-preset" "0.76.0" + hermes-parser "0.23.1" nullthrows "^1.1.1" -"@react-native/metro-config@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.75.1.tgz#877b495c70130fba72e37f9501beeb39bff7b0f0" - integrity sha512-+amwg/wzEZ23aePH0KmkUpA465GLv7Z6DfxSAl8HCgU4siPi3BYXk8dR84JqhSwe3VgRcVpyxve4+keDJ5BmdA== +"@react-native/metro-config@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/metro-config/-/metro-config-0.76.0.tgz#458a06286a23d76b04e9906f155bd37365912c2b" + integrity sha512-TYo7VKL/jjyMyToOThhfo1EzROjFYLIRCZFaUAYpX5vkOVGntdjJu0ELJIrsZVBW3Ncb0MFG6c+yqqpFpyciAw== dependencies: - "@react-native/js-polyfills" "0.75.1" - "@react-native/metro-babel-transformer" "0.75.1" - metro-config "^0.80.3" - metro-runtime "^0.80.3" + "@react-native/js-polyfills" "0.76.0" + "@react-native/metro-babel-transformer" "0.76.0" + metro-config "^0.81.0" + metro-runtime "^0.81.0" -"@react-native/normalize-colors@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.75.1.tgz#abe44f55108a8dd58ade0406a69a855ddae008e7" - integrity sha512-TnUII4YFtPBzxA0Eu1RvXrauw+fZlixK6QgbuOZSfhEfgM1ri6O1wse3VaR+h1CJw2NlNjgi902x9uUX8HbH8w== +"@react-native/normalize-colors@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.76.0.tgz#5cf89da962bcd2680eccbbceba6144ea6cf035c3" + integrity sha512-r+pjeIhzehb+bJUUUrztOQb+n6J9DeaLbF6waLgiHa5mFOiwP/4/iWS68inSZnnBtmXHkN2IYiMXzExx8hieWA== -"@react-native/typescript-config@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.75.1.tgz#818ba2bfac44c197ac9f828e1f243a17ae0a3d5b" - integrity sha512-jFoAiKd2g1ruJEnqY0SCVbDI3qKUiK2db0lTyezVXTOaNpvvnwLgl3Il9sTo8YCCvJkBgySLd8DmoHr0oIGRdw== +"@react-native/typescript-config@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/typescript-config/-/typescript-config-0.76.0.tgz#b7bc84d271cb2b12453ff85f4bf662538a7ac5de" + integrity sha512-BgBZd5su6acl5f+xaKaD+vkuCSkgxc9PL53GMzCqulnKJTjAHpsqJJSzGu6S3RgikJE6tmEy+EhxjFJQ3KvxIw== -"@react-native/virtualized-lists@0.75.1": - version "0.75.1" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.75.1.tgz#6189fb43758e887e97503103c69a4da5f2255901" - integrity sha512-e7XL9XtU2Z9NUFJFwL9StHa9l2La0/fU7wZ05s8YEMxB+7Fgyn7/X4JsIk7G4xTSPXxPKV2Yz9STHGzKT5OcKQ== +"@react-native/virtualized-lists@0.76.0": + version "0.76.0" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.76.0.tgz#af1f81d567db01dfea2054f060a11658b9b46bac" + integrity sha512-WT3Xi1+ikmWWdbrv3xnl8wYxobj1+N5JfiOQx7o/tiGUCx8m12pf5tlutXByH2m7X8bAZ+BBcRuu1vwt7XaRhQ== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" +"@react-navigation/core@^6.4.17": + version "6.4.17" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.17.tgz#f277a196b578c8a456efcc563d1c9bd87eb4ab04" + integrity sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg== + dependencies: + "@react-navigation/routers" "^6.1.9" + escape-string-regexp "^4.0.0" + nanoid "^3.1.23" + query-string "^7.1.3" + react-is "^16.13.0" + use-latest-callback "^0.2.1" + +"@react-navigation/elements@^1.3.31": + version "1.3.31" + resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.31.tgz#28dd802a0787bb03fc0e5be296daf1804dbebbcf" + integrity sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ== + +"@react-navigation/native-stack@^6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.11.0.tgz#a33f92cbd55dfe28fb0ba67df99aaa95240eb87c" + integrity sha512-U5EcUB9Q2NQspCFwYGGNJm0h6wBCOv7T30QjndmvlawLkNt7S7KWbpWyxS9XBHSIKF57RgWjfxuJNTgTstpXxw== + dependencies: + "@react-navigation/elements" "^1.3.31" + warn-once "^0.1.0" + +"@react-navigation/native@^6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.18.tgz#338fa9afa2c89feec1d3eac41c963840d8d6f106" + integrity sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg== + dependencies: + "@react-navigation/core" "^6.4.17" + escape-string-regexp "^4.0.0" + fast-deep-equal "^3.1.3" + nanoid "^3.1.23" + +"@react-navigation/routers@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.9.tgz#73f5481a15a38e36592a0afa13c3c064b9f90bed" + integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA== + dependencies: + nanoid "^3.1.23" + +"@react-navigation/stack@^6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-6.4.1.tgz#a158350637f5298292202ce854e5c5c9688f23f9" + integrity sha512-upMEHOKMtuMu4c9gmoPlO/JqI6mDlSqwXg1aXKOTQLXAF8H5koOLRfrmi7AkdiE9A7lDXWUAZoGuD9O88cYvDQ== + dependencies: + "@react-navigation/elements" "^1.3.31" + color "^4.2.3" + warn-once "^0.1.0" + "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -2403,6 +2651,11 @@ dependencies: "@types/node" "*" +"@types/hammerjs@^2.0.36": + version "2.0.45" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.45.tgz#ffa764bb68a66c08db6efb9c816eb7be850577b1" + integrity sha512-qkcUlZmX6c4J8q45taBKTL3p+LbITgyx7qhlPYOdOHZB7B31K0mXbP5YA7i7SgDeEGuI9MnumiKPEMrxg8j3KQ== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" @@ -2913,13 +3166,13 @@ babel-plugin-polyfill-corejs2@^0.4.10: "@babel/helper-define-polyfill-provider" "^0.6.1" semver "^6.3.1" -babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: - version "0.10.4" - resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" - integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== +babel-plugin-polyfill-corejs3@^0.10.6: + version "0.10.6" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz#2deda57caef50f59c525aeb4964d3b2f867710c7" + integrity sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA== dependencies: - "@babel/helper-define-polyfill-provider" "^0.6.1" - core-js-compat "^3.36.1" + "@babel/helper-define-polyfill-provider" "^0.6.2" + core-js-compat "^3.38.0" babel-plugin-polyfill-regenerator@^0.6.1: version "0.6.1" @@ -2928,6 +3181,13 @@ babel-plugin-polyfill-regenerator@^0.6.1: dependencies: "@babel/helper-define-polyfill-provider" "^0.6.1" +babel-plugin-syntax-hermes-parser@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.23.1.tgz#470e9d1d30ad670d4c8a37138e22ae39c843d1ff" + integrity sha512-uNLD0tk2tLUjGFdmCk+u/3FEw2o+BAwW4g+z2QVlxJrzZYOOPADroEcNtTPt5lNiScctaUmnsTkVEnOwZUOLhA== + dependencies: + hermes-parser "0.23.1" + babel-plugin-transform-flow-enums@^0.0.2: version "0.0.2" resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz#d1d0cc9bdc799c850ca110d0ddc9f21b9ec3ef25" @@ -3019,7 +3279,7 @@ braces@^3.0.3: dependencies: fill-range "^7.1.1" -browserslist@^4.22.2, browserslist@^4.23.0: +browserslist@^4.22.2: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -3039,6 +3299,16 @@ browserslist@^4.23.1: node-releases "^2.0.18" update-browserslist-db "^1.1.0" +browserslist@^4.23.3, browserslist@^4.24.0: + version "4.24.2" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.2.tgz#f5845bc91069dbd55ee89faf9822e1d885d16580" + integrity sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg== + dependencies: + caniuse-lite "^1.0.30001669" + electron-to-chromium "^1.5.41" + node-releases "^2.0.18" + update-browserslist-db "^1.1.1" + bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -3119,6 +3389,11 @@ caniuse-lite@^1.0.30001646: resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz#52de59529e8b02b1aedcaaf5c05d9e23c0c28138" integrity sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg== +caniuse-lite@^1.0.30001669: + version "1.0.30001669" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz#fda8f1d29a8bfdc42de0c170d7f34a9cf19ed7a3" + integrity sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w== + chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" @@ -3251,11 +3526,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" @@ -3266,6 +3557,11 @@ command-exists@^1.2.8: resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== +commander@^12.0.0: + version "12.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-12.1.0.tgz#01423b36f501259fdaac4d0e4d60c96c991585d3" + integrity sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA== + commander@^2.20.0: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" @@ -3321,12 +3617,12 @@ convert-source-map@^2.0.0: resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== -core-js-compat@^3.31.0, core-js-compat@^3.36.1: - version "3.37.0" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.0.tgz#d9570e544163779bb4dff1031c7972f44918dc73" - integrity sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA== +core-js-compat@^3.38.0, core-js-compat@^3.38.1: + version "3.38.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.38.1.tgz#2bc7a298746ca5a7bcb9c164bcb120f2ebc09a09" + integrity sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw== dependencies: - browserslist "^4.23.0" + browserslist "^4.23.3" core-util-is@~1.0.0: version "1.0.3" @@ -3462,6 +3758,11 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + dedent@^1.0.0: version "1.5.3" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" @@ -3593,6 +3894,11 @@ electron-to-chromium@^1.5.4: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.11.tgz#258077f1077a1c72f2925cd5b326c470a7f5adef" integrity sha512-R1CccCDYqndR25CaXFd6hp/u9RaaMcftMkphmvuepXr5b1vfLkRml6aWVeBhXJ7rbevHkKEMJtz8XqPf7ffmew== +electron-to-chromium@^1.5.41: + version "1.5.45" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.45.tgz#fa592ce6a88b44d23acbc7453a2feab98996e6c9" + integrity sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw== + emittery@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" @@ -3766,6 +4072,11 @@ escalade@^3.1.1, escalade@^3.1.2: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== +escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + escape-html@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" @@ -4009,6 +4320,11 @@ expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" +exponential-backoff@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.1.tgz#64ac7526fe341ab18a39016cd22c787d01e00bf6" + integrity sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -4035,10 +4351,10 @@ fast-levenshtein@^2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== -fast-xml-parser@^4.2.4: - version "4.3.6" - resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz#190f9d99097f0c8f2d3a0e681a10404afca052ff" - integrity sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw== +fast-xml-parser@^4.4.1: + version "4.5.0" + resolved "https://registry.yarnpkg.com/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz#2882b7d01a6825dfdf909638f2de0256351def37" + integrity sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg== dependencies: strnum "^1.0.5" @@ -4077,6 +4393,11 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + finalhandler@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -4374,29 +4695,45 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hermes-estree@0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.20.1.tgz#0b9a544cf883a779a8e1444b915fa365bef7f72d" - integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== +hermes-eslint@^0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-eslint/-/hermes-eslint-0.23.1.tgz#e0801e58bd4a70f01b0b0659805f315ab7ea6691" + integrity sha512-DaEpbJobK1KwpTSXrPIKkHs2h+B+RTw2F1g9S70tjtJ14a3zM+2gPVUtc8xyffQqRJ6tPfs+/zRKwV17lwDvqA== + dependencies: + esrecurse "^4.3.0" + hermes-estree "0.23.1" + hermes-parser "0.23.1" + +hermes-estree@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.23.1.tgz#d0bac369a030188120ee7024926aabe5a9f84fdb" + integrity sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg== -hermes-estree@0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.22.0.tgz#38559502b119f728901d2cfe2ef422f277802a1d" - integrity sha512-FLBt5X9OfA8BERUdc6aZS36Xz3rRuB0Y/mfocSADWEJfomc1xfene33GdyAmtTkKTBXTN/EgAy+rjTKkkZJHlw== +hermes-estree@0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.24.0.tgz#487dc1ddc0bae698c2d79f34153ac9bf62d7b3c0" + integrity sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw== -hermes-parser@0.20.1: - version "0.20.1" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.20.1.tgz#ad10597b99f718b91e283f81cbe636c50c3cff92" - integrity sha512-BL5P83cwCogI8D7rrDCgsFY0tdYUtmFP9XaXtl2IQjC+2Xo+4okjfXintlTxcIwl4qeGddEl28Z11kbVIw0aNA== +hermes-parser@0.23.1: + version "0.23.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.23.1.tgz#e5de648e664f3b3d84d01b48fc7ab164f4b68205" + integrity sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA== dependencies: - hermes-estree "0.20.1" + hermes-estree "0.23.1" -hermes-parser@0.22.0: - version "0.22.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.22.0.tgz#fc8e0e6c7bfa8db85b04c9f9544a102c4fcb4040" - integrity sha512-gn5RfZiEXCsIWsFGsKiykekktUoh0PdFWYocXsUdZIyWSckT6UIyPcyyUIPSR3kpnELWeK3n3ztAse7Mat6PSA== +hermes-parser@0.24.0: + version "0.24.0" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.24.0.tgz#2ed19d079efc0848eb1f800f0c393a074c4696fb" + integrity sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg== dependencies: - hermes-estree "0.22.0" + hermes-estree "0.24.0" + +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" html-escaper@^2.0.0: version "2.0.2" @@ -4515,6 +4852,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" @@ -4646,6 +4988,11 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5249,6 +5596,11 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +jsesc@^3.0.2, jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + jsesc@~0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" @@ -5492,6 +5844,13 @@ memoize-one@^5.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -5502,57 +5861,64 @@ merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -metro-babel-transformer@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.80.8.tgz#2951eeab76630b3c59f3874d04f4f12a6e73b2bd" - integrity sha512-TTzNwRZb2xxyv4J/+yqgtDAP2qVqH3sahsnFu6Xv4SkLqzrivtlnyUbaeTdJ9JjtADJUEjCbgbFgUVafrXdR9Q== +metro-babel-transformer@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-babel-transformer/-/metro-babel-transformer-0.81.0.tgz#cf468eafea52e4d8a77844eb7257f8a76e9d9d94" + integrity sha512-Dc0QWK4wZIeHnyZ3sevWGTnnSkIDDn/SWyfrn99zbKbDOCoCYy71PAn9uCRrP/hduKLJQOy+tebd63Rr9D8tXg== dependencies: - "@babel/core" "^7.20.0" - hermes-parser "0.20.1" + "@babel/core" "^7.25.2" + flow-enums-runtime "^0.0.6" + hermes-parser "0.24.0" nullthrows "^1.1.1" -metro-cache-key@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.80.8.tgz#d57af9c25f9fe7e755644594d602ef89124ee06b" - integrity sha512-qWKzxrLsRQK5m3oH8ePecqCc+7PEhR03cJE6Z6AxAj0idi99dHOSitTmY0dclXVB9vP2tQIAE8uTd8xkYGk8fA== +metro-cache-key@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-cache-key/-/metro-cache-key-0.81.0.tgz#5db34fa1a323a2310205bda7abd0df9614e36f45" + integrity sha512-qX/IwtknP9bQZL78OK9xeSvLM/xlGfrs6SlUGgHvrxtmGTRSsxcyqxR+c+7ch1xr05n62Gin/O44QKg5V70rNQ== + dependencies: + flow-enums-runtime "^0.0.6" -metro-cache@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.80.8.tgz#bc7d38611e4f31686a99045d4f2956c0bff4dd3b" - integrity sha512-5svz+89wSyLo7BxdiPDlwDTgcB9kwhNMfNhiBZPNQQs1vLFXxOkILwQiV5F2EwYT9DEr6OPZ0hnJkZfRQ8lDYQ== +metro-cache@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-cache/-/metro-cache-0.81.0.tgz#90470d10d190ad708f04c6e337eec2c7cddb3db0" + integrity sha512-DyuqySicHXkHUDZFVJmh0ygxBSx6pCKUrTcSgb884oiscV/ROt1Vhye+x+OIHcsodyA10gzZtrVtxIFV4l9I4g== dependencies: - metro-core "0.80.8" - rimraf "^3.0.2" + exponential-backoff "^3.1.1" + flow-enums-runtime "^0.0.6" + metro-core "0.81.0" -metro-config@0.80.8, metro-config@^0.80.3: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.80.8.tgz#1961feed6334601951ea72600901dafade56a973" - integrity sha512-VGQJpfJawtwRzGzGXVUoohpIkB0iPom4DmSbAppKfumdhtLA8uVeEPp2GM61kL9hRvdbMhdWA7T+hZFDlo4mJA== +metro-config@0.81.0, metro-config@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-config/-/metro-config-0.81.0.tgz#8f8074033cb7e9ddb5b0459642adf6880bc9fbc1" + integrity sha512-6CinEaBe3WLpRlKlYXXu8r1UblJhbwD6Gtnoib5U8j6Pjp7XxMG9h/DGMeNp9aGLDu1OieUqiXpFo7O0/rR5Kg== dependencies: connect "^3.6.5" cosmiconfig "^5.0.5" + flow-enums-runtime "^0.0.6" jest-validate "^29.6.3" - metro "0.80.8" - metro-cache "0.80.8" - metro-core "0.80.8" - metro-runtime "0.80.8" + metro "0.81.0" + metro-cache "0.81.0" + metro-core "0.81.0" + metro-runtime "0.81.0" -metro-core@0.80.8, metro-core@^0.80.3: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.80.8.tgz#85cf9745e767a33fe96bc5f166b71e213a482978" - integrity sha512-g6lud55TXeISRTleW6SHuPFZHtYrpwNqbyFIVd9j9Ofrb5IReiHp9Zl8xkAfZQp8v6ZVgyXD7c130QTsCz+vBw== +metro-core@0.81.0, metro-core@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-core/-/metro-core-0.81.0.tgz#d0b634f9cf97849b7730c59457ab7a439811d4c8" + integrity sha512-CVkM5YCOAFkNMvJai6KzA0RpztzfEKRX62/PFMOJ9J7K0uq/UkOFLxcgpcncMIrfy0PbfEj811b69tjULUQe1Q== dependencies: + flow-enums-runtime "^0.0.6" lodash.throttle "^4.1.1" - metro-resolver "0.80.8" + metro-resolver "0.81.0" -metro-file-map@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.80.8.tgz#216e54db4dc8496815bd38bb806d469c5f5b66fd" - integrity sha512-eQXMFM9ogTfDs2POq7DT2dnG7rayZcoEgRbHPXvhUWkVwiKkro2ngcBE++ck/7A36Cj5Ljo79SOkYwHaWUDYDw== +metro-file-map@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-file-map/-/metro-file-map-0.81.0.tgz#af0ccf4f8db4fd8429f78f231faa49dde2c402c3" + integrity sha512-zMDI5uYhQCyxbye/AuFx/pAbsz9K+vKL7h1ShUXdN2fz4VUPiyQYRsRqOoVG1DsiCgzd5B6LW0YW77NFpjDQeg== dependencies: anymatch "^3.0.3" debug "^2.2.0" fb-watchman "^2.0.0" + flow-enums-runtime "^0.0.6" graceful-fs "^4.2.4" invariant "^2.2.4" jest-worker "^29.6.3" @@ -5563,92 +5929,101 @@ metro-file-map@0.80.8: optionalDependencies: fsevents "^2.3.2" -metro-minify-terser@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.80.8.tgz#166413d2286900e7fd764aa30497a1596bc18c00" - integrity sha512-y8sUFjVvdeUIINDuW1sejnIjkZfEF+7SmQo0EIpYbWmwh+kq/WMj74yVaBWuqNjirmUp1YNfi3alT67wlbBWBQ== +metro-minify-terser@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-minify-terser/-/metro-minify-terser-0.81.0.tgz#8b0abe977d63a99b99fa94d53678ef3170d5b659" + integrity sha512-U2ramh3W822ZR1nfXgIk+emxsf5eZSg10GbQrT0ZizImK8IZ5BmJY+BHRIkQgHzWFpExOVxC7kWbGL1bZALswA== dependencies: + flow-enums-runtime "^0.0.6" terser "^5.15.0" -metro-resolver@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.80.8.tgz#bcc8f8d7f874a9c5fee9ebbde8541d6dc88783df" - integrity sha512-JdtoJkP27GGoZ2HJlEsxs+zO7jnDUCRrmwXJozTlIuzLHMRrxgIRRby9fTCbMhaxq+iA9c+wzm3iFb4NhPmLbQ== +metro-resolver@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-resolver/-/metro-resolver-0.81.0.tgz#141f4837e1e0c5a1810ea02f2d9be3c9f6cf3766" + integrity sha512-Uu2Q+buHhm571cEwpPek8egMbdSTqmwT/5U7ZVNpK6Z2ElQBBCxd7HmFAslKXa7wgpTO2FAn6MqGeERbAtVDUA== + dependencies: + flow-enums-runtime "^0.0.6" -metro-runtime@0.80.8, metro-runtime@^0.80.3: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.80.8.tgz#8f265369c05d9a3f05f9915842fac5d4e93f44bd" - integrity sha512-2oScjfv6Yb79PelU1+p8SVrCMW9ZjgEiipxq7jMRn8mbbtWzyv3g8Mkwr+KwOoDFI/61hYPUbY8cUnu278+x1g== +metro-runtime@0.81.0, metro-runtime@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-runtime/-/metro-runtime-0.81.0.tgz#63af9b3fec15d1f307d89ef4881f5ba2c592291e" + integrity sha512-6oYB5HOt37RuGz2eV4A6yhcl+PUTwJYLDlY9vhT+aVjbUWI6MdBCf69vc4f5K5Vpt+yOkjy+2LDwLS0ykWFwYw== dependencies: - "@babel/runtime" "^7.0.0" + "@babel/runtime" "^7.25.0" + flow-enums-runtime "^0.0.6" -metro-source-map@0.80.8, metro-source-map@^0.80.3: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.80.8.tgz#fe92c2b82739c34cf46372a2be07d4e9cac8eb09" - integrity sha512-+OVISBkPNxjD4eEKhblRpBf463nTMk3KMEeYS8Z4xM/z3qujGJGSsWUGRtH27+c6zElaSGtZFiDMshEb8mMKQg== +metro-source-map@0.81.0, metro-source-map@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-source-map/-/metro-source-map-0.81.0.tgz#ca83964124bb227d5f0bdb1ee304dbfe635f869e" + integrity sha512-TzsVxhH83dyxg4A4+L1nzNO12I7ps5IHLjKGZH3Hrf549eiZivkdjYiq/S5lOB+p2HiQ+Ykcwtmcja95LIC62g== dependencies: - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" + "@babel/traverse" "^7.25.3" + "@babel/traverse--for-generate-function-map" "npm:@babel/traverse@^7.25.3" + "@babel/types" "^7.25.2" + flow-enums-runtime "^0.0.6" invariant "^2.2.4" - metro-symbolicate "0.80.8" + metro-symbolicate "0.81.0" nullthrows "^1.1.1" - ob1 "0.80.8" + ob1 "0.81.0" source-map "^0.5.6" vlq "^1.0.0" -metro-symbolicate@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.80.8.tgz#881afc90453450208bf519b22e54962fc909d432" - integrity sha512-nwhYySk79jQhwjL9QmOUo4wS+/0Au9joEryDWw7uj4kz2yvw1uBjwmlql3BprQCBzRdB3fcqOP8kO8Es+vE31g== +metro-symbolicate@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-symbolicate/-/metro-symbolicate-0.81.0.tgz#b7b1eae8bfd6ad2a922fa2bcb9f2144e464adafb" + integrity sha512-C/1rWbNTPYp6yzID8IPuQPpVGzJ2rbWYBATxlvQ9dfK5lVNoxcwz77hjcY8ISLsRRR15hyd/zbjCNKPKeNgE1Q== dependencies: + flow-enums-runtime "^0.0.6" invariant "^2.2.4" - metro-source-map "0.80.8" + metro-source-map "0.81.0" nullthrows "^1.1.1" source-map "^0.5.6" through2 "^2.0.1" vlq "^1.0.0" -metro-transform-plugins@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.80.8.tgz#2ed3162cec7fa7549279a6031e6d910198332a77" - integrity sha512-sSu8VPL9Od7w98MftCOkQ1UDeySWbsIAS5I54rW22BVpPnI3fQ42srvqMLaJUQPjLehUanq8St6OMBCBgH/UWw== +metro-transform-plugins@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-transform-plugins/-/metro-transform-plugins-0.81.0.tgz#614c0e50593df545487b3f3383fed810c608fb32" + integrity sha512-uErLAPBvttGCrmGSCa0dNHlOTk3uJFVEVWa5WDg6tQ79PRmuYRwzUgLhVzn/9/kyr75eUX3QWXN79Jvu4txt6Q== dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" + "@babel/core" "^7.25.2" + "@babel/generator" "^7.25.0" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.3" + flow-enums-runtime "^0.0.6" nullthrows "^1.1.1" -metro-transform-worker@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.80.8.tgz#df3bc21928e1c99b077cd1e2feec9f13d6c351c6" - integrity sha512-+4FG3TQk3BTbNqGkFb2uCaxYTfsbuFOCKMMURbwu0ehCP8ZJuTUramkaNZoATS49NSAkRgUltgmBa4YaKZ5mqw== - dependencies: - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/types" "^7.20.0" - metro "0.80.8" - metro-babel-transformer "0.80.8" - metro-cache "0.80.8" - metro-cache-key "0.80.8" - metro-minify-terser "0.80.8" - metro-source-map "0.80.8" - metro-transform-plugins "0.80.8" +metro-transform-worker@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro-transform-worker/-/metro-transform-worker-0.81.0.tgz#43e63c95014f36786f0e1a132c778c6392950de7" + integrity sha512-HrQ0twiruhKy0yA+9nK5bIe3WQXZcC66PXTvRIos61/EASLAP2DzEmW7IxN/MGsfZegN2UzqL2CG38+mOB45vg== + dependencies: + "@babel/core" "^7.25.2" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/types" "^7.25.2" + flow-enums-runtime "^0.0.6" + metro "0.81.0" + metro-babel-transformer "0.81.0" + metro-cache "0.81.0" + metro-cache-key "0.81.0" + metro-minify-terser "0.81.0" + metro-source-map "0.81.0" + metro-transform-plugins "0.81.0" nullthrows "^1.1.1" -metro@0.80.8, metro@^0.80.3: - version "0.80.8" - resolved "https://registry.yarnpkg.com/metro/-/metro-0.80.8.tgz#42faa80ea8f1c43bea022b55baa3162e90878868" - integrity sha512-in7S0W11mg+RNmcXw+2d9S3zBGmCARDxIwoXJAmLUQOQoYsRP3cpGzyJtc7WOw8+FXfpgXvceD0u+PZIHXEL7g== +metro@0.81.0, metro@^0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/metro/-/metro-0.81.0.tgz#cffe9b7d597728dee8b57903ca155417b7c13a4f" + integrity sha512-kzdzmpL0gKhEthZ9aOV7sTqvg6NuTxDV8SIm9pf9sO8VVEbKrQk5DNcwupOUjgPPFAuKUc2NkT0suyT62hm2xg== dependencies: - "@babel/code-frame" "^7.0.0" - "@babel/core" "^7.20.0" - "@babel/generator" "^7.20.0" - "@babel/parser" "^7.20.0" - "@babel/template" "^7.0.0" - "@babel/traverse" "^7.20.0" - "@babel/types" "^7.20.0" + "@babel/code-frame" "^7.24.7" + "@babel/core" "^7.25.2" + "@babel/generator" "^7.25.0" + "@babel/parser" "^7.25.3" + "@babel/template" "^7.25.0" + "@babel/traverse" "^7.25.3" + "@babel/types" "^7.25.2" accepts "^1.3.7" chalk "^4.0.0" ci-info "^2.0.0" @@ -5656,34 +6031,33 @@ metro@0.80.8, metro@^0.80.3: debug "^2.2.0" denodeify "^1.2.1" error-stack-parser "^2.0.6" + flow-enums-runtime "^0.0.6" graceful-fs "^4.2.4" - hermes-parser "0.20.1" + hermes-parser "0.24.0" image-size "^1.0.2" invariant "^2.2.4" jest-worker "^29.6.3" jsc-safe-url "^0.2.2" lodash.throttle "^4.1.1" - metro-babel-transformer "0.80.8" - metro-cache "0.80.8" - metro-cache-key "0.80.8" - metro-config "0.80.8" - metro-core "0.80.8" - metro-file-map "0.80.8" - metro-resolver "0.80.8" - metro-runtime "0.80.8" - metro-source-map "0.80.8" - metro-symbolicate "0.80.8" - metro-transform-plugins "0.80.8" - metro-transform-worker "0.80.8" + metro-babel-transformer "0.81.0" + metro-cache "0.81.0" + metro-cache-key "0.81.0" + metro-config "0.81.0" + metro-core "0.81.0" + metro-file-map "0.81.0" + metro-resolver "0.81.0" + metro-runtime "0.81.0" + metro-source-map "0.81.0" + metro-symbolicate "0.81.0" + metro-transform-plugins "0.81.0" + metro-transform-worker "0.81.0" mime-types "^2.1.27" - node-fetch "^2.2.0" nullthrows "^1.1.1" - rimraf "^3.0.2" serialize-error "^2.1.0" source-map "^0.5.6" strip-ansi "^6.0.0" throat "^5.0.0" - ws "^7.5.1" + ws "^7.5.10" yargs "^17.6.2" micromatch@^4.0.2: @@ -5775,6 +6149,11 @@ ms@2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nanoid@^3.1.23: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -5863,10 +6242,12 @@ nullthrows@^1.1.1: resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== -ob1@0.80.8: - version "0.80.8" - resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.80.8.tgz#08be1b8398d004719074ad702c975a5c7e1b29f2" - integrity sha512-QHJQk/lXMmAW8I7AIM3in1MSlwe1umR72Chhi8B7Xnq6mzjhBKkA6Fy/zAhQnGkA4S912EPCEvTij5yh+EQTAA== +ob1@0.81.0: + version "0.81.0" + resolved "https://registry.yarnpkg.com/ob1/-/ob1-0.81.0.tgz#dc3154cca7aa9c2eb58f5ac63e9ee23ff4c6f520" + integrity sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ== + dependencies: + flow-enums-runtime "^0.0.6" object-assign@^4.1.1: version "4.1.1" @@ -6141,6 +6522,11 @@ picocolors@^1.0.1: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== +picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + picomatch@^2.0.4, picomatch@^2.2.3, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -6185,7 +6571,7 @@ prettier@2.8.8: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -pretty-format@^26.5.2, pretty-format@^26.6.2: +pretty-format@^26.6.2: version "26.6.2" resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== @@ -6224,7 +6610,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.8.1: +prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -6243,10 +6629,15 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== -querystring@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" - integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== +query-string@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" queue-microtask@^1.2.2: version "1.2.3" @@ -6273,12 +6664,17 @@ react-devtools-core@^5.3.1: shell-quote "^1.6.1" ws "^7" +react-freeze@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/react-freeze/-/react-freeze-1.0.4.tgz#cbbea2762b0368b05cbe407ddc9d518c57c6f3ad" + integrity sha512-r4F0Sec0BLxWicc7HEyo2x3/2icUTrRmDjaaRyzzn+7aDyFZliszMDOgLVwSnQnYENOlL1o569Ze2HZefk8clA== + "react-is@^16.12.0 || ^17.0.0 || ^18.0.0", react-is@^18.0.0, react-is@^18.3.1: version "18.3.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-is@^16.13.1: +react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -6288,10 +6684,20 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-native-reanimated@3.15.0: - version "3.15.0" - resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.15.0.tgz#8814af7c78bbdf4c92bbd583f2266febf962e66a" - integrity sha512-yGxOyYAAu/5CyjonM2SgsM5sviiiK8HiHL9jT1bKfRxMLnNX9cFP8/UXRkbMT7ZXIfOlCvNFR0AqnphpuXIPVA== +react-native-gesture-handler@^2.20.2: + version "2.20.2" + resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-2.20.2.tgz#73844c8e9c417459c2f2981bc4d8f66ba8a5ee66" + integrity sha512-HqzFpFczV4qCnwKlvSAvpzEXisL+Z9fsR08YV5LfJDkzuArMhBu2sOoSPUF/K62PCoAb+ObGlTC83TKHfUd0vg== + dependencies: + "@egjs/hammerjs" "^2.0.17" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + prop-types "^15.7.2" + +react-native-reanimated@3.16.1: + version "3.16.1" + resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-3.16.1.tgz#7c3cb256adb8fb436f57911d0e8e7cae68e28a67" + integrity sha512-Wnbo7toHZ6kPLAD8JWKoKCTfNoqYOMW5vUEP76Rr4RBmJCrdXj6oauYP0aZnZq8NCbiP5bwwu7+RECcWtoetnQ== dependencies: "@babel/plugin-transform-arrow-functions" "^7.0.0-0" "@babel/plugin-transform-class-properties" "^7.0.0-0" @@ -6305,7 +6711,20 @@ react-native-reanimated@3.15.0: convert-source-map "^2.0.0" invariant "^2.2.4" -"react-native-svg@link:..": +react-native-safe-area-context@^4.11.1: + version "4.11.1" + resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.11.1.tgz#dae959f4512ca125f087a44c16b2c23de10b0e29" + integrity sha512-urF1m4nFiZFaWjsv2zj8J/hKvo4b2tJW+6CYU1mY4lKv1RwhG2eV8J/EHKuNlLhATZx3+6j7szrpHrQW2ZcAaQ== + +react-native-screens@3.35.0: + version "3.35.0" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.35.0.tgz#4acf4c7d331d47d33d0214d415779540b7664e0e" + integrity sha512-rmkqb/M/SQIrXwygk6pXcOhgHltYAhidf1WceO7ujAxkr6XtwmgFyd1HIztsrJa568GrAuwPdQ11I7TpVk+XsA== + dependencies: + react-freeze "^1.0.0" + warn-once "^0.1.0" + +"react-native-svg@link:../..": version "0.0.0" uid "" @@ -6316,27 +6735,27 @@ react-native-view-shot@4.0.0-alpha.2: dependencies: html2canvas "^1.4.1" -react-native@0.75.1: - version "0.75.1" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.75.1.tgz#0b7738bbfa44afe5895b1c02ec737c9d1bc19dcb" - integrity sha512-6WGjZdqXLEuBWAP+h2WH5a2Nd9jn7KmQ1GYy0Krzkcfvz9vPtKKIUSEjwvi3q+M0UTu3V/ESBaMDfT/GGr3fkg== +react-native@0.76.0: + version "0.76.0" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.76.0.tgz#fd624e9da2271327079b792190800e364e1ad6a7" + integrity sha512-isbLzmY7fhhLdN/oss4jlRHeDmEShuTYsp1Zq93UM0/JssQK4g+2Ub4mHdhxDFm2LN+0ryBgVJK1nO7l93cfsA== dependencies: "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "14.0.0" - "@react-native-community/cli-platform-android" "14.0.0" - "@react-native-community/cli-platform-ios" "14.0.0" - "@react-native/assets-registry" "0.75.1" - "@react-native/codegen" "0.75.1" - "@react-native/community-cli-plugin" "0.75.1" - "@react-native/gradle-plugin" "0.75.1" - "@react-native/js-polyfills" "0.75.1" - "@react-native/normalize-colors" "0.75.1" - "@react-native/virtualized-lists" "0.75.1" + "@react-native/assets-registry" "0.76.0" + "@react-native/codegen" "0.76.0" + "@react-native/community-cli-plugin" "0.76.0" + "@react-native/gradle-plugin" "0.76.0" + "@react-native/js-polyfills" "0.76.0" + "@react-native/normalize-colors" "0.76.0" + "@react-native/virtualized-lists" "0.76.0" abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" + babel-jest "^29.7.0" + babel-plugin-syntax-hermes-parser "^0.23.1" base64-js "^1.5.1" chalk "^4.0.0" + commander "^12.0.0" event-target-shim "^5.0.1" flow-enums-runtime "^0.0.6" glob "^7.1.1" @@ -6344,11 +6763,11 @@ react-native@0.75.1: jest-environment-node "^29.6.3" jsc-android "^250231.0.0" memoize-one "^5.0.0" - metro-runtime "^0.80.3" - metro-source-map "^0.80.3" + metro-runtime "^0.81.0" + metro-source-map "^0.81.0" mkdirp "^0.5.1" nullthrows "^1.1.1" - pretty-format "^26.5.2" + pretty-format "^29.7.0" promise "^8.3.0" react-devtools-core "^5.3.1" react-refresh "^0.14.0" @@ -6357,7 +6776,7 @@ react-native@0.75.1: semver "^7.1.3" stacktrace-parser "^0.1.10" whatwg-fetch "^3.0.0" - ws "^6.2.2" + ws "^6.2.3" yargs "^17.6.2" react-refresh@^0.14.0: @@ -6446,6 +6865,13 @@ regenerate-unicode-properties@^10.1.0: dependencies: regenerate "^1.4.2" +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== + dependencies: + regenerate "^1.4.2" + regenerate@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" @@ -6490,6 +6916,30 @@ regexpu-core@^5.3.1: unicode-match-property-ecmascript "^2.0.0" unicode-match-property-value-ecmascript "^2.1.0" +regexpu-core@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.1.1.tgz#b469b245594cb2d088ceebc6369dceb8c00becac" + integrity sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.11.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.11.1.tgz#ae55c74f646db0c8fcb922d4da635e33da405149" + integrity sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ== + dependencies: + jsesc "~3.0.2" + regjsparser@^0.9.1: version "0.9.1" resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.9.1.tgz#272d05aa10c7c1f67095b1ff0addae8442fc5709" @@ -6771,6 +7221,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" @@ -6821,6 +7278,11 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -6855,6 +7317,11 @@ statuses@~1.5.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -7254,6 +7721,14 @@ update-browserslist-db@^1.1.0: escalade "^3.1.2" picocolors "^1.0.1" +update-browserslist-db@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz#80846fba1d79e82547fb661f8d141e0945755fe5" + integrity sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.0" + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -7261,6 +7736,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-latest-callback@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.1.tgz#4d4e6a9e4817b13142834850dcfa8d24ca4569cf" + integrity sha512-QWlq8Is8BGWBf883QOEQP5HWYX/kMI+JTbJ5rdtvJLmXTIh9XoHIO3PQcmQl8BU44VKxow1kbQUHa6mQSMALDQ== + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -7304,7 +7784,7 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -warn-once@0.1.1: +warn-once@0.1.1, warn-once@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43" integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== @@ -7436,13 +7916,6 @@ write-file-atomic@^4.0.2: imurmurhash "^0.1.4" signal-exit "^3.0.7" -ws@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.2.tgz#dd5cdbd57a9979916097652d78f1cc5faea0c32e" - integrity sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw== - dependencies: - async-limiter "~1.0.0" - ws@^6.2.3: version "6.2.3" resolved "https://registry.yarnpkg.com/ws/-/ws-6.2.3.tgz#ccc96e4add5fd6fedbc491903075c85c5a11d9ee" @@ -7450,11 +7923,16 @@ ws@^6.2.3: dependencies: async-limiter "~1.0.0" -ws@^7, ws@^7.5.1: +ws@^7: version "7.5.9" resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== +ws@^7.5.10: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" diff --git a/fabric-example/.bundle/config b/apps/fabric-macos-example/.bundle/config similarity index 100% rename from fabric-example/.bundle/config rename to apps/fabric-macos-example/.bundle/config diff --git a/fabric-macos-example/.gitignore b/apps/fabric-macos-example/.gitignore similarity index 100% rename from fabric-macos-example/.gitignore rename to apps/fabric-macos-example/.gitignore diff --git a/fabric-macos-example/.prettierrc.js b/apps/fabric-macos-example/.prettierrc.js similarity index 100% rename from fabric-macos-example/.prettierrc.js rename to apps/fabric-macos-example/.prettierrc.js diff --git a/fabric-example/.watchmanconfig b/apps/fabric-macos-example/.watchmanconfig similarity index 100% rename from fabric-example/.watchmanconfig rename to apps/fabric-macos-example/.watchmanconfig diff --git a/example/Gemfile b/apps/fabric-macos-example/Gemfile similarity index 100% rename from example/Gemfile rename to apps/fabric-macos-example/Gemfile diff --git a/fabric-macos-example/Gemfile.lock b/apps/fabric-macos-example/Gemfile.lock similarity index 100% rename from fabric-macos-example/Gemfile.lock rename to apps/fabric-macos-example/Gemfile.lock diff --git a/fabric-macos-example/__tests__/App.test.tsx b/apps/fabric-macos-example/__tests__/App.test.tsx similarity index 100% rename from fabric-macos-example/__tests__/App.test.tsx rename to apps/fabric-macos-example/__tests__/App.test.tsx diff --git a/fabric-macos-example/app.json b/apps/fabric-macos-example/app.json similarity index 100% rename from fabric-macos-example/app.json rename to apps/fabric-macos-example/app.json diff --git a/fabric-macos-example/babel.config.js b/apps/fabric-macos-example/babel.config.js similarity index 100% rename from fabric-macos-example/babel.config.js rename to apps/fabric-macos-example/babel.config.js diff --git a/fabric-macos-example/index.js b/apps/fabric-macos-example/index.js similarity index 84% rename from fabric-macos-example/index.js rename to apps/fabric-macos-example/index.js index a5aaa4a89..aa1be2128 100644 --- a/fabric-macos-example/index.js +++ b/apps/fabric-macos-example/index.js @@ -3,7 +3,7 @@ */ import {AppRegistry} from 'react-native'; -import App from '../apps'; +import App from '../common'; import {name as appName} from './app.json'; AppRegistry.registerComponent(appName, () => App); diff --git a/fabric-example/jest.config.js b/apps/fabric-macos-example/jest.config.js similarity index 100% rename from fabric-example/jest.config.js rename to apps/fabric-macos-example/jest.config.js diff --git a/fabric-macos-example/macos/.gitignore b/apps/fabric-macos-example/macos/.gitignore similarity index 100% rename from fabric-macos-example/macos/.gitignore rename to apps/fabric-macos-example/macos/.gitignore diff --git a/fabric-macos-example/macos/.xcode.env b/apps/fabric-macos-example/macos/.xcode.env similarity index 100% rename from fabric-macos-example/macos/.xcode.env rename to apps/fabric-macos-example/macos/.xcode.env diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.h b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.h similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.h rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.h diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.mm b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.mm similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.mm rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/AppDelegate.mm diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/AppIcon.appiconset/Contents.json diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/Contents.json b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/Contents.json similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/Contents.json rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Assets.xcassets/Contents.json diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/Base.lproj/Main.storyboard b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Base.lproj/Main.storyboard similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/Base.lproj/Main.storyboard rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Base.lproj/Main.storyboard diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/FabricMacOSExample.entitlements b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/FabricMacOSExample.entitlements similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/FabricMacOSExample.entitlements rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/FabricMacOSExample.entitlements diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/Info.plist b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Info.plist similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/Info.plist rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/Info.plist diff --git a/fabric-macos-example/macos/FabricMacOSExample-macOS/main.m b/apps/fabric-macos-example/macos/FabricMacOSExample-macOS/main.m similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample-macOS/main.m rename to apps/fabric-macos-example/macos/FabricMacOSExample-macOS/main.m diff --git a/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/project.pbxproj b/apps/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/project.pbxproj similarity index 93% rename from fabric-macos-example/macos/FabricMacOSExample.xcodeproj/project.pbxproj rename to apps/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/project.pbxproj index 3d370090a..f7557590d 100644 --- a/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/project.pbxproj +++ b/apps/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/project.pbxproj @@ -7,16 +7,15 @@ objects = { /* Begin PBXBuildFile section */ - 3D0CB14318F69CC1F86D93C5 /* libPods-FabricMacOSExample-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A4FB6D0F9CF65D2316A4C2E /* libPods-FabricMacOSExample-macOS.a */; }; 5142014D2437B4B30078DB4F /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5142014C2437B4B30078DB4F /* AppDelegate.mm */; }; 514201522437B4B40078DB4F /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 514201512437B4B40078DB4F /* Assets.xcassets */; }; 514201552437B4B40078DB4F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 514201532437B4B40078DB4F /* Main.storyboard */; }; 514201582437B4B40078DB4F /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 514201572437B4B40078DB4F /* main.m */; }; + 73955321424971531B6F728B /* libPods-FabricMacOSExample-macOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 84BBADF0F14F81609C966534 /* libPods-FabricMacOSExample-macOS.a */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 13B07F961A680F5B00A75B9A /* FabricMacOSExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FabricMacOSExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 2C6097186FED0C3F65640CFE /* Pods-FabricMacOSExample-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricMacOSExample-macOS.release.xcconfig"; path = "Target Support Files/Pods-FabricMacOSExample-macOS/Pods-FabricMacOSExample-macOS.release.xcconfig"; sourceTree = ""; }; 514201492437B4B30078DB4F /* FabricMacOSExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FabricMacOSExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; 5142014B2437B4B30078DB4F /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 5142014C2437B4B30078DB4F /* AppDelegate.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = AppDelegate.mm; sourceTree = ""; }; @@ -25,8 +24,9 @@ 514201562437B4B40078DB4F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 514201572437B4B40078DB4F /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 514201592437B4B40078DB4F /* FabricMacOSExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = FabricMacOSExample.entitlements; sourceTree = ""; }; - 7A4FB6D0F9CF65D2316A4C2E /* libPods-FabricMacOSExample-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FabricMacOSExample-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - D7D86233CAA4A4D7507EC2C8 /* Pods-FabricMacOSExample-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricMacOSExample-macOS.debug.xcconfig"; path = "Target Support Files/Pods-FabricMacOSExample-macOS/Pods-FabricMacOSExample-macOS.debug.xcconfig"; sourceTree = ""; }; + 5D21ACD81E060C326567B8C1 /* Pods-FabricMacOSExample-macOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricMacOSExample-macOS.debug.xcconfig"; path = "Target Support Files/Pods-FabricMacOSExample-macOS/Pods-FabricMacOSExample-macOS.debug.xcconfig"; sourceTree = ""; }; + 84BBADF0F14F81609C966534 /* libPods-FabricMacOSExample-macOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-FabricMacOSExample-macOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + C5CBBF555D36B28572B0751B /* Pods-FabricMacOSExample-macOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-FabricMacOSExample-macOS.release.xcconfig"; path = "Target Support Files/Pods-FabricMacOSExample-macOS/Pods-FabricMacOSExample-macOS.release.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -42,30 +42,30 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3D0CB14318F69CC1F86D93C5 /* libPods-FabricMacOSExample-macOS.a in Frameworks */, + 73955321424971531B6F728B /* libPods-FabricMacOSExample-macOS.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { + 18B70681D0CA1D4B14ED1E93 /* Pods */ = { isa = PBXGroup; children = ( - ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 7A4FB6D0F9CF65D2316A4C2E /* libPods-FabricMacOSExample-macOS.a */, + 5D21ACD81E060C326567B8C1 /* Pods-FabricMacOSExample-macOS.debug.xcconfig */, + C5CBBF555D36B28572B0751B /* Pods-FabricMacOSExample-macOS.release.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; - 3C71D9F51455BED832A9A679 /* Pods */ = { + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( - D7D86233CAA4A4D7507EC2C8 /* Pods-FabricMacOSExample-macOS.debug.xcconfig */, - 2C6097186FED0C3F65640CFE /* Pods-FabricMacOSExample-macOS.release.xcconfig */, + ED297162215061F000B7C4FE /* JavaScriptCore.framework */, + 84BBADF0F14F81609C966534 /* libPods-FabricMacOSExample-macOS.a */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; 5142014A2437B4B30078DB4F /* FabricMacOSExample-macOS */ = { @@ -96,7 +96,7 @@ 832341AE1AAA6A7D00B99B32 /* Libraries */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, - 3C71D9F51455BED832A9A679 /* Pods */, + 18B70681D0CA1D4B14ED1E93 /* Pods */, ); indentWidth = 2; sourceTree = ""; @@ -137,12 +137,12 @@ isa = PBXNativeTarget; buildConfigurationList = 5142015A2437B4B40078DB4F /* Build configuration list for PBXNativeTarget "FabricMacOSExample-macOS" */; buildPhases = ( - 1A938104A937498D81B3BD3B /* [CP] Check Pods Manifest.lock */, + 195FDA46B1D9819D89F31625 /* [CP] Check Pods Manifest.lock */, 514201452437B4B30078DB4F /* Sources */, 514201462437B4B30078DB4F /* Frameworks */, 514201472437B4B30078DB4F /* Resources */, 381D8A6E24576A4E00465D17 /* Bundle React Native code and images */, - AB250294988F3DD4697BDF77 /* [CP] Copy Pods Resources */, + 4D1F23D0B5835399273FDFA8 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -223,7 +223,7 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native-macos/scripts/react-native-xcode.sh\n"; }; - 1A938104A937498D81B3BD3B /* [CP] Check Pods Manifest.lock */ = { + 195FDA46B1D9819D89F31625 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -263,17 +263,21 @@ shellPath = /bin/sh; shellScript = "export NODE_BINARY=node\n../node_modules/react-native-macos/scripts/react-native-xcode.sh\n"; }; - AB250294988F3DD4697BDF77 /* [CP] Copy Pods Resources */ = { + 4D1F23D0B5835399273FDFA8 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputPaths = ( "${PODS_ROOT}/Target Support Files/Pods-FabricMacOSExample-macOS/Pods-FabricMacOSExample-macOS-resources.sh", + "${PODS_CONFIGURATION_BUILD_DIR}/RNCAsyncStorage/RNCAsyncStorage_resources.bundle", + "${PODS_CONFIGURATION_BUILD_DIR}/RNSVG/RNSVGFilters.bundle", "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/RCTI18nStrings.bundle", ); name = "[CP] Copy Pods Resources"; outputPaths = ( + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNCAsyncStorage_resources.bundle", + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RNSVGFilters.bundle", "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/RCTI18nStrings.bundle", ); runOnlyForDeploymentPostprocessing = 0; @@ -358,7 +362,7 @@ }; 5142015B2437B4B40078DB4F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D7D86233CAA4A4D7507EC2C8 /* Pods-FabricMacOSExample-macOS.debug.xcconfig */; + baseConfigurationReference = 5D21ACD81E060C326567B8C1 /* Pods-FabricMacOSExample-macOS.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -382,7 +386,7 @@ }; 5142015C2437B4B40078DB4F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2C6097186FED0C3F65640CFE /* Pods-FabricMacOSExample-macOS.release.xcconfig */; + baseConfigurationReference = C5CBBF555D36B28572B0751B /* Pods-FabricMacOSExample-macOS.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; diff --git a/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/xcshareddata/xcschemes/FabricMacOSExample-macOS.xcscheme b/apps/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/xcshareddata/xcschemes/FabricMacOSExample-macOS.xcscheme similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample.xcodeproj/xcshareddata/xcschemes/FabricMacOSExample-macOS.xcscheme rename to apps/fabric-macos-example/macos/FabricMacOSExample.xcodeproj/xcshareddata/xcschemes/FabricMacOSExample-macOS.xcscheme diff --git a/fabric-macos-example/macos/FabricMacOSExample.xcworkspace/contents.xcworkspacedata b/apps/fabric-macos-example/macos/FabricMacOSExample.xcworkspace/contents.xcworkspacedata similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample.xcworkspace/contents.xcworkspacedata rename to apps/fabric-macos-example/macos/FabricMacOSExample.xcworkspace/contents.xcworkspacedata diff --git a/fabric-example/ios/FabricExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/apps/fabric-macos-example/macos/FabricMacOSExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from fabric-example/ios/FabricExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to apps/fabric-macos-example/macos/FabricMacOSExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/fabric-macos-example/macos/Podfile b/apps/fabric-macos-example/macos/Podfile similarity index 95% rename from fabric-macos-example/macos/Podfile rename to apps/fabric-macos-example/macos/Podfile index d6f4e28e3..9547c4753 100644 --- a/fabric-macos-example/macos/Podfile +++ b/apps/fabric-macos-example/macos/Podfile @@ -1,6 +1,8 @@ require_relative '../node_modules/react-native-macos/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' +ENV['RCT_NEW_ARCH_ENABLED'] = '1' + prepare_react_native_project! target 'FabricMacOSExample-macOS' do diff --git a/fabric-macos-example/macos/Podfile.lock b/apps/fabric-macos-example/macos/Podfile.lock similarity index 96% rename from fabric-macos-example/macos/Podfile.lock rename to apps/fabric-macos-example/macos/Podfile.lock index b4e8a3057..36dc8594e 100644 --- a/fabric-macos-example/macos/Podfile.lock +++ b/apps/fabric-macos-example/macos/Podfile.lock @@ -1047,6 +1047,44 @@ PODS: - React-jsi (= 0.73.34) - React-logger (= 0.73.34) - React-perflogger (= 0.73.34) + - RNCAsyncStorage (2.0.0): + - glog + - RCT-Folly (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga + - RNGestureHandler (2.20.0): + - glog + - RCT-Folly (= 2022.05.16.00) + - RCTRequired + - RCTTypeSafety + - React-Codegen + - React-Core + - React-debug + - React-Fabric + - React-graphics + - React-ImageManager + - React-jsi + - React-NativeModulesApple + - React-RCTFabric + - React-rendererdebug + - React-utils + - ReactCommon/turbomodule/bridging + - ReactCommon/turbomodule/core + - Yoga - RNReanimated (3.9.0): - glog - RCT-Folly (= 2022.05.16.00) @@ -1066,7 +1104,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - Yoga - - RNSVG (15.8.0-rc.1): + - RNSVG (15.8.0): - glog - RCT-Folly (= 2022.05.16.00) - RCTRequired @@ -1084,9 +1122,9 @@ PODS: - React-utils - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - - RNSVG/common (= 15.8.0-rc.1) + - RNSVG/common (= 15.8.0) - Yoga - - RNSVG/common (15.8.0-rc.1): + - RNSVG/common (15.8.0): - glog - RCT-Folly (= 2022.05.16.00) - RCTRequired @@ -1161,6 +1199,8 @@ DEPENDENCIES: - React-runtimescheduler (from `../node_modules/react-native-macos/ReactCommon/react/renderer/runtimescheduler`) - React-utils (from `../node_modules/react-native-macos/ReactCommon/react/utils`) - ReactCommon/turbomodule/core (from `../node_modules/react-native-macos/ReactCommon`) + - "RNCAsyncStorage (from `../node_modules/@react-native-async-storage/async-storage`)" + - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNReanimated (from `../node_modules/react-native-reanimated`) - RNSVG (from `../node_modules/react-native-svg`) - SocketRocket (from `../node_modules/react-native-macos/third-party-podspecs/SocketRocket.podspec`) @@ -1265,6 +1305,10 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native-macos/ReactCommon/react/utils" ReactCommon: :path: "../node_modules/react-native-macos/ReactCommon" + RNCAsyncStorage: + :path: "../node_modules/@react-native-async-storage/async-storage" + RNGestureHandler: + :path: "../node_modules/react-native-gesture-handler" RNReanimated: :path: "../node_modules/react-native-reanimated" RNSVG: @@ -1324,11 +1368,13 @@ SPEC CHECKSUMS: React-runtimescheduler: 604848395b867f8a7fc5fb617411dacb81291a5d React-utils: f0bb613a2b0a7f8011bdafb8ac098e30d4825256 ReactCommon: 4afd22a8615d591e925c67434b6d947b9ae24ca8 + RNCAsyncStorage: 85095944a808882e37b9b80f698491cd249b15bb + RNGestureHandler: 1b3263210f8507635303b925a1b0915e7fc4253a RNReanimated: 096c06ec3b073d0bb04f6dd1c99e40fad2d2fb31 - RNSVG: 166f90ef363c2f6b97dd92664ff11d76026c9642 + RNSVG: 987d1128980c4e7f3d9c664325e9e56fd24a1cde SocketRocket: f6c6249082c011e6de2de60ed641ef8bbe0cfac9 - Yoga: 35603207c576afc16e93625844f6d469ae6d5f03 + Yoga: 5be3d03dc4f7c1941ad966ff4fb297c5cbe66bd1 -PODFILE CHECKSUM: 014e1898817fb7a489441e9cac7af4e939005777 +PODFILE CHECKSUM: 5946b8554200839d1db9f7ac51f41dd6599814de COCOAPODS: 1.14.3 diff --git a/fabric-example/ios/FabricExample/PrivacyInfo.xcprivacy b/apps/fabric-macos-example/macos/PrivacyInfo.xcprivacy similarity index 100% rename from fabric-example/ios/FabricExample/PrivacyInfo.xcprivacy rename to apps/fabric-macos-example/macos/PrivacyInfo.xcprivacy diff --git a/paper-macos-example/metro.config.js b/apps/fabric-macos-example/metro.config.js similarity index 92% rename from paper-macos-example/metro.config.js rename to apps/fabric-macos-example/metro.config.js index ba5f7c8ae..ad3bfb306 100644 --- a/paper-macos-example/metro.config.js +++ b/apps/fabric-macos-example/metro.config.js @@ -9,9 +9,9 @@ const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); const path = require('path'); const exclusionList = require('metro-config/src/defaults/exclusionList'); -const pack = require('../package.json'); +const pack = require('../../package.json'); -const root = path.resolve(__dirname, '..'); +const root = path.resolve(__dirname, '../..'); const projectNodeModules = path.join(__dirname, 'node_modules'); const modules = [...Object.keys(pack.peerDependencies), 'react-native-macos']; diff --git a/fabric-macos-example/package.json b/apps/fabric-macos-example/package.json similarity index 77% rename from fabric-macos-example/package.json rename to apps/fabric-macos-example/package.json index 0ce347625..a3bac9d98 100644 --- a/fabric-macos-example/package.json +++ b/apps/fabric-macos-example/package.json @@ -10,11 +10,16 @@ "postinstall": "patch-package" }, "dependencies": { + "@react-native-async-storage/async-storage": "^2.0.0", + "@react-navigation/native": "^6.1.18", + "@react-navigation/native-stack": "^6.11.0", + "@react-navigation/stack": "^6.4.1", "react": "18.2.0", "react-native": "0.73.4", + "react-native-gesture-handler": "https://github.com/software-mansion/react-native-gesture-handler", "react-native-macos": "^0.73.0-0", "react-native-reanimated": "3.9.0", - "react-native-svg": "link:../" + "react-native-svg": "link:../../" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/fabric-macos-example/patches/react-native-reanimated+3.9.0.patch b/apps/fabric-macos-example/patches/react-native-reanimated+3.9.0.patch similarity index 100% rename from fabric-macos-example/patches/react-native-reanimated+3.9.0.patch rename to apps/fabric-macos-example/patches/react-native-reanimated+3.9.0.patch diff --git a/fabric-macos-example/yarn.lock b/apps/fabric-macos-example/yarn.lock similarity index 97% rename from fabric-macos-example/yarn.lock rename to apps/fabric-macos-example/yarn.lock index a88d5b1ee..95238db31 100644 --- a/fabric-macos-example/yarn.lock +++ b/apps/fabric-macos-example/yarn.lock @@ -1167,6 +1167,13 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@egjs/hammerjs@^2.0.17": + version "2.0.17" + resolved "https://registry.yarnpkg.com/@egjs/hammerjs/-/hammerjs-2.0.17.tgz#5dc02af75a6a06e4c2db0202cae38c9263895124" + integrity sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A== + dependencies: + "@types/hammerjs" "^2.0.36" + "@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" @@ -1529,6 +1536,13 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@react-native-async-storage/async-storage@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@react-native-async-storage/async-storage/-/async-storage-2.0.0.tgz#22373f7f83132547701637fc574ddb83b83b384e" + integrity sha512-af6H9JjfL6G/PktBfUivvexoiFKQTJGQCtSWxMdivLzNIY94mu9DdiY0JqCSg/LyPCLGKhHPUlRQhNvpu3/KVA== + dependencies: + merge-options "^3.0.4" + "@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" @@ -2166,6 +2180,57 @@ invariant "^2.2.4" nullthrows "^1.1.1" +"@react-navigation/core@^6.4.17": + version "6.4.17" + resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-6.4.17.tgz#f277a196b578c8a456efcc563d1c9bd87eb4ab04" + integrity sha512-Nd76EpomzChWAosGqWOYE3ItayhDzIEzzZsT7PfGcRFDgW5miHV2t4MZcq9YIK4tzxZjVVpYbIynOOQQd1e0Cg== + dependencies: + "@react-navigation/routers" "^6.1.9" + escape-string-regexp "^4.0.0" + nanoid "^3.1.23" + query-string "^7.1.3" + react-is "^16.13.0" + use-latest-callback "^0.2.1" + +"@react-navigation/elements@^1.3.31": + version "1.3.31" + resolved "https://registry.yarnpkg.com/@react-navigation/elements/-/elements-1.3.31.tgz#28dd802a0787bb03fc0e5be296daf1804dbebbcf" + integrity sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ== + +"@react-navigation/native-stack@^6.11.0": + version "6.11.0" + resolved "https://registry.yarnpkg.com/@react-navigation/native-stack/-/native-stack-6.11.0.tgz#a33f92cbd55dfe28fb0ba67df99aaa95240eb87c" + integrity sha512-U5EcUB9Q2NQspCFwYGGNJm0h6wBCOv7T30QjndmvlawLkNt7S7KWbpWyxS9XBHSIKF57RgWjfxuJNTgTstpXxw== + dependencies: + "@react-navigation/elements" "^1.3.31" + warn-once "^0.1.0" + +"@react-navigation/native@^6.1.18": + version "6.1.18" + resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-6.1.18.tgz#338fa9afa2c89feec1d3eac41c963840d8d6f106" + integrity sha512-mIT9MiL/vMm4eirLcmw2h6h/Nm5FICtnYSdohq4vTLA2FF/6PNhByM7s8ffqoVfE5L0uAa6Xda1B7oddolUiGg== + dependencies: + "@react-navigation/core" "^6.4.17" + escape-string-regexp "^4.0.0" + fast-deep-equal "^3.1.3" + nanoid "^3.1.23" + +"@react-navigation/routers@^6.1.9": + version "6.1.9" + resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-6.1.9.tgz#73f5481a15a38e36592a0afa13c3c064b9f90bed" + integrity sha512-lTM8gSFHSfkJvQkxacGM6VJtBt61ip2XO54aNfswD+KMw6eeZ4oehl7m0me3CR9hnDE4+60iAZR8sAhvCiI3NA== + dependencies: + nanoid "^3.1.23" + +"@react-navigation/stack@^6.4.1": + version "6.4.1" + resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-6.4.1.tgz#a158350637f5298292202ce854e5c5c9688f23f9" + integrity sha512-upMEHOKMtuMu4c9gmoPlO/JqI6mDlSqwXg1aXKOTQLXAF8H5koOLRfrmi7AkdiE9A7lDXWUAZoGuD9O88cYvDQ== + dependencies: + "@react-navigation/elements" "^1.3.31" + color "^4.2.3" + warn-once "^0.1.0" + "@sideway/address@^4.1.5": version "4.1.5" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.5.tgz#4bc149a0076623ced99ca8208ba780d65a99b9d5" @@ -2247,6 +2312,11 @@ dependencies: "@types/node" "*" +"@types/hammerjs@^2.0.36": + version "2.0.46" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.46.tgz#381daaca1360ff8a7c8dff63f32e69745b9fb1e1" + integrity sha512-ynRvcq6wvqexJ9brDMS4BnBLzmr0e14d6ZJTEShTBWKymQiHwlAyGu0ZPEFI2Fh1U53F7tN9ufClWM5KvqkKOw== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.6" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" @@ -2999,11 +3069,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" @@ -3193,6 +3279,11 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== +decode-uri-component@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== + dedent@^1.0.0: version "1.5.3" resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.5.3.tgz#99aee19eb9bae55a67327717b6e848d0bf777e5a" @@ -3817,6 +3908,11 @@ fill-range@^7.1.1: dependencies: to-regex-range "^5.0.1" +filter-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" + integrity sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ== + finalhandler@1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -4163,6 +4259,13 @@ hermes-profile-transformer@^0.0.6: dependencies: source-map "^0.7.3" +hoist-non-react-statics@^3.3.0: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + html-escaper@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" @@ -4277,6 +4380,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" @@ -4408,6 +4516,11 @@ is-path-inside@^3.0.3: resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + is-plain-object@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" @@ -5247,6 +5360,13 @@ memoize-one@^5.0.0: resolved "https://registry.yarnpkg.com/memoize-one/-/memoize-one-5.2.1.tgz#8337aa3c4335581839ec01c3d594090cebe8f00e" integrity sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q== +merge-options@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/merge-options/-/merge-options-3.0.4.tgz#84709c2aa2a4b24c1981f66c179fe5565cc6dbb7" + integrity sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ== + dependencies: + is-plain-obj "^2.1.0" + merge-stream@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" @@ -5579,6 +5699,11 @@ ms@2.1.3: resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== +nanoid@^3.1.23: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + natural-compare-lite@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" @@ -6018,7 +6143,7 @@ prompts@^2.0.1, prompts@^2.4.2: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@^15.8.1: +prop-types@^15.7.2, prop-types@^15.8.1: version "15.8.1" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== @@ -6037,6 +6162,16 @@ pure-rand@^6.0.0: resolved "https://registry.yarnpkg.com/pure-rand/-/pure-rand-6.1.0.tgz#d173cf23258231976ccbdb05247c9787957604f2" integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA== +query-string@^7.1.3: + version "7.1.3" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-7.1.3.tgz#a1cf90e994abb113a325804a972d98276fe02328" + integrity sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg== + dependencies: + decode-uri-component "^0.2.2" + filter-obj "^1.1.0" + split-on-first "^1.0.0" + strict-uri-encode "^2.0.0" + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -6067,7 +6202,7 @@ react-devtools-core@^4.27.7: resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== -react-is@^16.13.1: +react-is@^16.13.0, react-is@^16.13.1, react-is@^16.7.0: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -6077,6 +6212,15 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +"react-native-gesture-handler@https://github.com/software-mansion/react-native-gesture-handler": + version "2.20.0" + resolved "https://github.com/software-mansion/react-native-gesture-handler#802da495101cd3fbf2257e2bf7271fe1719b6638" + dependencies: + "@egjs/hammerjs" "^2.0.17" + hoist-non-react-statics "^3.3.0" + invariant "^2.2.4" + prop-types "^15.7.2" + react-native-macos@^0.73.0-0: version "0.73.34" resolved "https://registry.yarnpkg.com/react-native-macos/-/react-native-macos-0.73.34.tgz#5b3d6d53339f6c231ea0432562425db914a31b63" @@ -6135,7 +6279,7 @@ react-native-reanimated@3.9.0: convert-source-map "^2.0.0" invariant "^2.2.4" -"react-native-svg@link:..": +"react-native-svg@link:../..": version "0.0.0" uid "" @@ -6584,6 +6728,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" @@ -6639,6 +6790,11 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== +split-on-first@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" + integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== + sprintf-js@~1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" @@ -6673,6 +6829,11 @@ statuses@~1.5.0: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== +strict-uri-encode@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" + integrity sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ== + string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" @@ -7072,6 +7233,11 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +use-latest-callback@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/use-latest-callback/-/use-latest-callback-0.2.1.tgz#4d4e6a9e4817b13142834850dcfa8d24ca4569cf" + integrity sha512-QWlq8Is8BGWBf883QOEQP5HWYX/kMI+JTbJ5rdtvJLmXTIh9XoHIO3PQcmQl8BU44VKxow1kbQUHa6mQSMALDQ== + util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -7108,7 +7274,7 @@ walker@^1.0.7, walker@^1.0.8: dependencies: makeerror "1.0.12" -warn-once@0.1.1: +warn-once@0.1.1, warn-once@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43" integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q== diff --git a/fabric-example/.gitignore b/apps/fabric-windows-example/.gitignore similarity index 100% rename from fabric-example/.gitignore rename to apps/fabric-windows-example/.gitignore diff --git a/fabric-windows-example/.prettierrc.js b/apps/fabric-windows-example/.prettierrc.js similarity index 100% rename from fabric-windows-example/.prettierrc.js rename to apps/fabric-windows-example/.prettierrc.js diff --git a/fabric-windows-example/.ruby-version b/apps/fabric-windows-example/.ruby-version similarity index 100% rename from fabric-windows-example/.ruby-version rename to apps/fabric-windows-example/.ruby-version diff --git a/fabric-macos-example/.watchmanconfig b/apps/fabric-windows-example/.watchmanconfig similarity index 100% rename from fabric-macos-example/.watchmanconfig rename to apps/fabric-windows-example/.watchmanconfig diff --git a/fabric-windows-example/app.json b/apps/fabric-windows-example/app.json similarity index 100% rename from fabric-windows-example/app.json rename to apps/fabric-windows-example/app.json diff --git a/fabric-windows-example/babel.config.js b/apps/fabric-windows-example/babel.config.js similarity index 100% rename from fabric-windows-example/babel.config.js rename to apps/fabric-windows-example/babel.config.js diff --git a/fabric-windows-example/index.js b/apps/fabric-windows-example/index.js similarity index 84% rename from fabric-windows-example/index.js rename to apps/fabric-windows-example/index.js index a850d031d..aa1be2128 100644 --- a/fabric-windows-example/index.js +++ b/apps/fabric-windows-example/index.js @@ -3,7 +3,7 @@ */ import {AppRegistry} from 'react-native'; -import App from './App'; +import App from '../common'; import {name as appName} from './app.json'; AppRegistry.registerComponent(appName, () => App); diff --git a/fabric-macos-example/jest.config.js b/apps/fabric-windows-example/jest.config.js similarity index 100% rename from fabric-macos-example/jest.config.js rename to apps/fabric-windows-example/jest.config.js diff --git a/fabric-windows-example/jest.config.windows.js b/apps/fabric-windows-example/jest.config.windows.js similarity index 100% rename from fabric-windows-example/jest.config.windows.js rename to apps/fabric-windows-example/jest.config.windows.js diff --git a/fabric-windows-example/metro.config.js b/apps/fabric-windows-example/metro.config.js similarity index 82% rename from fabric-windows-example/metro.config.js rename to apps/fabric-windows-example/metro.config.js index 86edefa74..e922a7b3b 100644 --- a/fabric-windows-example/metro.config.js +++ b/apps/fabric-windows-example/metro.config.js @@ -1,4 +1,4 @@ -const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); +const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); /** * Metro configuration @@ -9,14 +9,14 @@ const { getDefaultConfig, mergeConfig } = require('@react-native/metro-config'); const path = require('path'); const exclusionList = require('metro-config/src/defaults/exclusionList'); const escape = require('escape-string-regexp'); -const pack = require('../package.json'); +const pack = require('../../package.json'); -const root = path.resolve(__dirname, '..'); +const root = path.resolve(__dirname, '../..'); const projectNodeModules = path.join(__dirname, 'node_modules'); const fs = require('fs'); const rnwPath = fs.realpathSync( - path.resolve(require.resolve('react-native-windows/package.json'), '..') + path.resolve(require.resolve('react-native-windows/package.json'), '..'), ); const modules = [...Object.keys(pack.peerDependencies), 'react-native-windows']; @@ -30,16 +30,17 @@ const config = { resolver: { blockList: exclusionList( modules.map( - (m) => - new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`) + m => new RegExp(`^${escape(path.join(root, 'node_modules', m))}\\/.*$`), ), // This stops "react-native run-windows" from causing the metro server to // crash if its already running - new RegExp(`${path.join(__dirname, 'windows').replace(/[/\\]+/g, '/')}.*`), + new RegExp( + `${path.join(__dirname, 'windows').replace(/[/\\]+/g, '/')}.*`, + ), // This prevents "react-native run-windows" from hitting: EBUSY: resource busy or locked, open msbuild.ProjectImports.zip or other files produced by msbuild new RegExp(`${rnwPath}/build/.*`), new RegExp(`${rnwPath}/target/.*`), - /.*\.ProjectImports\.zip/ + /.*\.ProjectImports\.zip/, ), nodeModulesPaths: [projectNodeModules, path.join(__dirname, '../../')], extraNodeModules: modules.reduce((acc, name) => { diff --git a/fabric-windows-example/package.json b/apps/fabric-windows-example/package.json similarity index 96% rename from fabric-windows-example/package.json rename to apps/fabric-windows-example/package.json index 3dee6a169..886972a42 100644 --- a/fabric-windows-example/package.json +++ b/apps/fabric-windows-example/package.json @@ -13,7 +13,7 @@ "react-native": "0.74.2", "react-native-windows": "0.74.9", "react-native-reanimated": "3.9.0", - "react-native-svg": "link:../" + "react-native-svg": "link:../../" }, "devDependencies": { "@babel/core": "^7.20.0", diff --git a/fabric-windows-example/windows/.gitignore b/apps/fabric-windows-example/windows/.gitignore similarity index 100% rename from fabric-windows-example/windows/.gitignore rename to apps/fabric-windows-example/windows/.gitignore diff --git a/fabric-windows-example/windows/ExperimentalFeatures.props b/apps/fabric-windows-example/windows/ExperimentalFeatures.props similarity index 100% rename from fabric-windows-example/windows/ExperimentalFeatures.props rename to apps/fabric-windows-example/windows/ExperimentalFeatures.props diff --git a/fabric-windows-example/windows/FabricExample.Package/FabricExample.Package.wapproj b/apps/fabric-windows-example/windows/FabricExample.Package/FabricExample.Package.wapproj similarity index 100% rename from fabric-windows-example/windows/FabricExample.Package/FabricExample.Package.wapproj rename to apps/fabric-windows-example/windows/FabricExample.Package/FabricExample.Package.wapproj diff --git a/example/windows/Example/Assets/LockScreenLogo.scale-200.png b/apps/fabric-windows-example/windows/FabricExample.Package/Images/LockScreenLogo.scale-200.png similarity index 100% rename from example/windows/Example/Assets/LockScreenLogo.scale-200.png rename to apps/fabric-windows-example/windows/FabricExample.Package/Images/LockScreenLogo.scale-200.png diff --git a/example/windows/Example/Assets/SplashScreen.scale-200.png b/apps/fabric-windows-example/windows/FabricExample.Package/Images/SplashScreen.scale-200.png similarity index 100% rename from example/windows/Example/Assets/SplashScreen.scale-200.png rename to apps/fabric-windows-example/windows/FabricExample.Package/Images/SplashScreen.scale-200.png diff --git a/example/windows/Example/Assets/Square150x150Logo.scale-200.png b/apps/fabric-windows-example/windows/FabricExample.Package/Images/Square150x150Logo.scale-200.png similarity index 100% rename from example/windows/Example/Assets/Square150x150Logo.scale-200.png rename to apps/fabric-windows-example/windows/FabricExample.Package/Images/Square150x150Logo.scale-200.png diff --git a/example/windows/Example/Assets/Square44x44Logo.scale-200.png b/apps/fabric-windows-example/windows/FabricExample.Package/Images/Square44x44Logo.scale-200.png similarity index 100% rename from example/windows/Example/Assets/Square44x44Logo.scale-200.png rename to apps/fabric-windows-example/windows/FabricExample.Package/Images/Square44x44Logo.scale-200.png diff --git a/example/windows/Example/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/apps/fabric-windows-example/windows/FabricExample.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from example/windows/Example/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to apps/fabric-windows-example/windows/FabricExample.Package/Images/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/example/windows/Example/Assets/StoreLogo.png b/apps/fabric-windows-example/windows/FabricExample.Package/Images/StoreLogo.png similarity index 100% rename from example/windows/Example/Assets/StoreLogo.png rename to apps/fabric-windows-example/windows/FabricExample.Package/Images/StoreLogo.png diff --git a/example/windows/Example/Assets/Wide310x150Logo.scale-200.png b/apps/fabric-windows-example/windows/FabricExample.Package/Images/Wide310x150Logo.scale-200.png similarity index 100% rename from example/windows/Example/Assets/Wide310x150Logo.scale-200.png rename to apps/fabric-windows-example/windows/FabricExample.Package/Images/Wide310x150Logo.scale-200.png diff --git a/fabric-windows-example/windows/FabricExample.Package/Package.appxmanifest b/apps/fabric-windows-example/windows/FabricExample.Package/Package.appxmanifest similarity index 100% rename from fabric-windows-example/windows/FabricExample.Package/Package.appxmanifest rename to apps/fabric-windows-example/windows/FabricExample.Package/Package.appxmanifest diff --git a/fabric-windows-example/windows/FabricExample.Package/packages.lock.json b/apps/fabric-windows-example/windows/FabricExample.Package/packages.lock.json similarity index 100% rename from fabric-windows-example/windows/FabricExample.Package/packages.lock.json rename to apps/fabric-windows-example/windows/FabricExample.Package/packages.lock.json diff --git a/fabric-windows-example/windows/FabricExample.sln b/apps/fabric-windows-example/windows/FabricExample.sln similarity index 100% rename from fabric-windows-example/windows/FabricExample.sln rename to apps/fabric-windows-example/windows/FabricExample.sln diff --git a/fabric-windows-example/windows/FabricExample/.gitignore b/apps/fabric-windows-example/windows/FabricExample/.gitignore similarity index 100% rename from fabric-windows-example/windows/FabricExample/.gitignore rename to apps/fabric-windows-example/windows/FabricExample/.gitignore diff --git a/example/windows/Example/AutolinkedNativeModules.g.cpp b/apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.cpp similarity index 100% rename from example/windows/Example/AutolinkedNativeModules.g.cpp rename to apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.cpp diff --git a/example/windows/Example/AutolinkedNativeModules.g.h b/apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.h similarity index 100% rename from example/windows/Example/AutolinkedNativeModules.g.h rename to apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.h diff --git a/example/windows/Example/AutolinkedNativeModules.g.props b/apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.props similarity index 100% rename from example/windows/Example/AutolinkedNativeModules.g.props rename to apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.props diff --git a/example/windows/Example/AutolinkedNativeModules.g.targets b/apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.targets similarity index 100% rename from example/windows/Example/AutolinkedNativeModules.g.targets rename to apps/fabric-windows-example/windows/FabricExample/AutolinkedNativeModules.g.targets diff --git a/fabric-windows-example/windows/FabricExample/FabricExample.cpp b/apps/fabric-windows-example/windows/FabricExample/FabricExample.cpp similarity index 100% rename from fabric-windows-example/windows/FabricExample/FabricExample.cpp rename to apps/fabric-windows-example/windows/FabricExample/FabricExample.cpp diff --git a/fabric-windows-example/windows/FabricExample/FabricExample.h b/apps/fabric-windows-example/windows/FabricExample/FabricExample.h similarity index 100% rename from fabric-windows-example/windows/FabricExample/FabricExample.h rename to apps/fabric-windows-example/windows/FabricExample/FabricExample.h diff --git a/fabric-windows-example/windows/FabricExample/FabricExample.ico b/apps/fabric-windows-example/windows/FabricExample/FabricExample.ico similarity index 100% rename from fabric-windows-example/windows/FabricExample/FabricExample.ico rename to apps/fabric-windows-example/windows/FabricExample/FabricExample.ico diff --git a/fabric-windows-example/windows/FabricExample/FabricExample.rc b/apps/fabric-windows-example/windows/FabricExample/FabricExample.rc similarity index 100% rename from fabric-windows-example/windows/FabricExample/FabricExample.rc rename to apps/fabric-windows-example/windows/FabricExample/FabricExample.rc diff --git a/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj b/apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj similarity index 100% rename from fabric-windows-example/windows/FabricExample/FabricExample.vcxproj rename to apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj diff --git a/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj.filters b/apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj.filters similarity index 100% rename from fabric-windows-example/windows/FabricExample/FabricExample.vcxproj.filters rename to apps/fabric-windows-example/windows/FabricExample/FabricExample.vcxproj.filters diff --git a/fabric-windows-example/windows/FabricExample/packages.lock.json b/apps/fabric-windows-example/windows/FabricExample/packages.lock.json similarity index 100% rename from fabric-windows-example/windows/FabricExample/packages.lock.json rename to apps/fabric-windows-example/windows/FabricExample/packages.lock.json diff --git a/fabric-windows-example/windows/FabricExample/pch.cpp b/apps/fabric-windows-example/windows/FabricExample/pch.cpp similarity index 100% rename from fabric-windows-example/windows/FabricExample/pch.cpp rename to apps/fabric-windows-example/windows/FabricExample/pch.cpp diff --git a/fabric-windows-example/windows/FabricExample/pch.h b/apps/fabric-windows-example/windows/FabricExample/pch.h similarity index 100% rename from fabric-windows-example/windows/FabricExample/pch.h rename to apps/fabric-windows-example/windows/FabricExample/pch.h diff --git a/fabric-windows-example/windows/FabricExample/resource.h b/apps/fabric-windows-example/windows/FabricExample/resource.h similarity index 100% rename from fabric-windows-example/windows/FabricExample/resource.h rename to apps/fabric-windows-example/windows/FabricExample/resource.h diff --git a/fabric-windows-example/windows/FabricExample/small.ico b/apps/fabric-windows-example/windows/FabricExample/small.ico similarity index 100% rename from fabric-windows-example/windows/FabricExample/small.ico rename to apps/fabric-windows-example/windows/FabricExample/small.ico diff --git a/fabric-windows-example/windows/FabricExample/targetver.h b/apps/fabric-windows-example/windows/FabricExample/targetver.h similarity index 100% rename from fabric-windows-example/windows/FabricExample/targetver.h rename to apps/fabric-windows-example/windows/FabricExample/targetver.h diff --git a/fabric-windows-example/yarn.lock b/apps/fabric-windows-example/yarn.lock similarity index 99% rename from fabric-windows-example/yarn.lock rename to apps/fabric-windows-example/yarn.lock index b8a462210..c9ebc1ca5 100644 --- a/fabric-windows-example/yarn.lock +++ b/apps/fabric-windows-example/yarn.lock @@ -7641,7 +7641,7 @@ react-native-reanimated@3.9.0: convert-source-map "^2.0.0" invariant "^2.2.4" -"react-native-svg@link:..": +"react-native-svg@link:../..": version "0.0.0" uid "" diff --git a/apps/index.tsx b/apps/index.tsx deleted file mode 100644 index 1a73b9bc6..000000000 --- a/apps/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -import App from './examples'; - -export default App; diff --git a/fabric-macos-example/.bundle/config b/apps/paper-example/.bundle/config similarity index 100% rename from fabric-macos-example/.bundle/config rename to apps/paper-example/.bundle/config diff --git a/fabric-windows-example/.gitignore b/apps/paper-example/.gitignore similarity index 100% rename from fabric-windows-example/.gitignore rename to apps/paper-example/.gitignore diff --git a/fabric-windows-example/.watchmanconfig b/apps/paper-example/.watchmanconfig similarity index 100% rename from fabric-windows-example/.watchmanconfig rename to apps/paper-example/.watchmanconfig diff --git a/tests-example/Gemfile b/apps/paper-example/Gemfile similarity index 100% rename from tests-example/Gemfile rename to apps/paper-example/Gemfile diff --git a/example/Gemfile.lock b/apps/paper-example/Gemfile.lock similarity index 76% rename from example/Gemfile.lock rename to apps/paper-example/Gemfile.lock index fb8713d8f..5a787ef5f 100644 --- a/example/Gemfile.lock +++ b/apps/paper-example/Gemfile.lock @@ -5,23 +5,29 @@ GEM base64 nkf rexml - activesupport (7.0.8.1) + activesupport (7.1.4.2) + base64 + bigdecimal concurrent-ruby (~> 1.0, >= 1.0.2) + connection_pool (>= 2.2.5) + drb i18n (>= 1.6, < 2) minitest (>= 5.1) + mutex_m tzinfo (~> 2.0) - addressable (2.8.6) - public_suffix (>= 2.0.2, < 6.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) algoliasearch (1.27.5) httpclient (~> 2.8, >= 2.8.3) json (>= 1.5.1) atomos (0.1.3) base64 (0.2.0) + bigdecimal (3.1.8) claide (1.1.0) - cocoapods (1.14.3) + cocoapods (1.15.2) addressable (~> 2.8) claide (>= 1.0.2, < 2.0) - cocoapods-core (= 1.14.3) + cocoapods-core (= 1.15.2) cocoapods-deintegrate (>= 1.0.3, < 2.0) cocoapods-downloader (>= 2.1, < 3.0) cocoapods-plugins (>= 1.0.0, < 2.0) @@ -36,7 +42,7 @@ GEM nap (~> 1.0) ruby-macho (>= 2.3.0, < 3.0) xcodeproj (>= 1.23.0, < 2.0) - cocoapods-core (1.14.3) + cocoapods-core (1.15.2) activesupport (>= 5.0, < 8) addressable (~> 2.8) algoliasearch (~> 1.0) @@ -56,48 +62,51 @@ GEM netrc (~> 0.11) cocoapods-try (1.2.0) colored2 (3.1.2) - concurrent-ruby (1.2.3) + concurrent-ruby (1.3.4) + connection_pool (2.4.1) + drb (2.2.1) escape (0.0.4) ethon (0.16.0) ffi (>= 1.15.0) - ffi (1.16.3) + ffi (1.17.0) fourflusher (2.3.1) fuzzy_match (2.0.4) gh_inspector (1.1.3) httpclient (2.8.3) - i18n (1.14.4) + i18n (1.14.6) concurrent-ruby (~> 1.0) - json (2.7.2) - minitest (5.22.3) + json (2.7.4) + minitest (5.25.1) molinillo (0.8.0) + mutex_m (0.2.0) nanaimo (0.3.0) nap (1.1.0) netrc (0.11.0) nkf (0.2.0) public_suffix (4.0.7) - rexml (3.2.6) + rexml (3.3.9) ruby-macho (2.5.1) typhoeus (1.4.1) ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) - xcodeproj (1.24.0) + xcodeproj (1.25.1) CFPropertyList (>= 2.3.3, < 4.0) atomos (~> 0.1.3) claide (>= 1.0.2, < 2.0) colored2 (~> 3.1) nanaimo (~> 0.3.0) - rexml (~> 3.2.4) + rexml (>= 3.3.6, < 4.0) PLATFORMS ruby DEPENDENCIES - activesupport (>= 6.1.7.5, < 7.1.0) - cocoapods (>= 1.13, < 1.15) + activesupport (>= 6.1.7.5, != 7.1.0) + cocoapods (>= 1.13, != 1.15.1, != 1.15.0) RUBY VERSION - ruby 3.2.1p31 + ruby 2.7.6p219 BUNDLED WITH - 2.4.19 + 2.5.22 diff --git a/example/README.md b/apps/paper-example/README.md similarity index 100% rename from example/README.md rename to apps/paper-example/README.md diff --git a/example/android/app/build.gradle b/apps/paper-example/android/app/build.gradle similarity index 87% rename from example/android/app/build.gradle rename to apps/paper-example/android/app/build.gradle index 9e0f98e32..47cc4e16b 100644 --- a/example/android/app/build.gradle +++ b/apps/paper-example/android/app/build.gradle @@ -8,14 +8,14 @@ apply plugin: "com.facebook.react" */ react { /* Folders */ - // The root of your project, i.e. where "package.json" lives. Default is '..' - // root = file("../") - // The folder where the react-native NPM package is. Default is ../node_modules/react-native - // reactNativeDir = file("../node_modules/react-native") - // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen - // codegenDir = file("../node_modules/@react-native/codegen") - // The cli.js file which is the React Native CLI entrypoint. Default is ../node_modules/react-native/cli.js - // cliFile = file("../node_modules/react-native/cli.js") + // The root of your project, i.e. where "package.json" lives. Default is '../..' + // root = file("../../") + // The folder where the react-native NPM package is. Default is ../../node_modules/react-native + // reactNativeDir = file("../../node_modules/react-native") + // The folder where the react-native Codegen package is. Default is ../../node_modules/@react-native/codegen + // codegenDir = file("../../node_modules/@react-native/codegen") + // The cli.js file which is the React Native CLI entrypoint. Default is ../../node_modules/react-native/cli.js + // cliFile = file("../../node_modules/react-native/cli.js") /* Variants */ // The list of variants to that are debuggable. For those we're going to @@ -49,6 +49,9 @@ react { // // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" // hermesFlags = ["-O", "-output-source-map"] + + /* Autolinking */ + autolinkLibrariesWithApp() } /** @@ -74,9 +77,9 @@ android { buildToolsVersion rootProject.ext.buildToolsVersion compileSdk rootProject.ext.compileSdkVersion - namespace "com.example" + namespace "com.paperexample" defaultConfig { - applicationId "com.example" + applicationId "com.paperexample" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion versionCode 1 @@ -114,5 +117,3 @@ dependencies { implementation jscFlavor } } - -apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project) diff --git a/fabric-example/android/app/debug.keystore b/apps/paper-example/android/app/debug.keystore similarity index 100% rename from fabric-example/android/app/debug.keystore rename to apps/paper-example/android/app/debug.keystore diff --git a/fabric-example/android/app/proguard-rules.pro b/apps/paper-example/android/app/proguard-rules.pro similarity index 100% rename from fabric-example/android/app/proguard-rules.pro rename to apps/paper-example/android/app/proguard-rules.pro diff --git a/fabric-example/android/app/src/debug/AndroidManifest.xml b/apps/paper-example/android/app/src/debug/AndroidManifest.xml similarity index 100% rename from fabric-example/android/app/src/debug/AndroidManifest.xml rename to apps/paper-example/android/app/src/debug/AndroidManifest.xml diff --git a/tests-example/android/app/src/main/AndroidManifest.xml b/apps/paper-example/android/app/src/main/AndroidManifest.xml similarity index 100% rename from tests-example/android/app/src/main/AndroidManifest.xml rename to apps/paper-example/android/app/src/main/AndroidManifest.xml diff --git a/example/android/app/src/main/java/com/example/MainActivity.kt b/apps/paper-example/android/app/src/main/java/com/paperexample/MainActivity.kt similarity index 79% rename from example/android/app/src/main/java/com/example/MainActivity.kt rename to apps/paper-example/android/app/src/main/java/com/paperexample/MainActivity.kt index 7e179d50a..9d370085b 100644 --- a/example/android/app/src/main/java/com/example/MainActivity.kt +++ b/apps/paper-example/android/app/src/main/java/com/paperexample/MainActivity.kt @@ -1,5 +1,6 @@ -package com.example +package com.paperexample +import android.os.Bundle import com.facebook.react.ReactActivity import com.facebook.react.ReactActivityDelegate import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled @@ -11,8 +12,11 @@ class MainActivity : ReactActivity() { * Returns the name of the main component registered from JavaScript. This is used to schedule * rendering of the component. */ - override fun getMainComponentName(): String = "Example" + override fun getMainComponentName(): String = "PaperExample" + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(null) + } /** * Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate] * which allows you to enable New Architecture with a single boolean flags [fabricEnabled] diff --git a/example/android/app/src/main/java/com/example/MainApplication.kt b/apps/paper-example/android/app/src/main/java/com/paperexample/MainApplication.kt similarity index 91% rename from example/android/app/src/main/java/com/example/MainApplication.kt rename to apps/paper-example/android/app/src/main/java/com/paperexample/MainApplication.kt index b748a8809..07b709035 100644 --- a/example/android/app/src/main/java/com/example/MainApplication.kt +++ b/apps/paper-example/android/app/src/main/java/com/paperexample/MainApplication.kt @@ -1,4 +1,4 @@ -package com.example +package com.paperexample import android.app.Application import com.facebook.react.PackageList @@ -9,6 +9,7 @@ import com.facebook.react.ReactPackage import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost import com.facebook.react.defaults.DefaultReactNativeHost +import com.facebook.react.soloader.OpenSourceMergedSoMapping import com.facebook.soloader.SoLoader class MainApplication : Application(), ReactApplication { @@ -34,7 +35,7 @@ class MainApplication : Application(), ReactApplication { override fun onCreate() { super.onCreate() - SoLoader.init(this, false) + SoLoader.init(this, OpenSourceMergedSoMapping) if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { // If you opted-in for the New Architecture, we load the native entry point for this app. load() diff --git a/fabric-example/android/app/src/main/res/drawable/rn_edit_text_material.xml b/apps/paper-example/android/app/src/main/res/drawable/rn_edit_text_material.xml similarity index 100% rename from fabric-example/android/app/src/main/res/drawable/rn_edit_text_material.xml rename to apps/paper-example/android/app/src/main/res/drawable/rn_edit_text_material.xml diff --git a/fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/apps/paper-example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png rename to apps/paper-example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png diff --git a/fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/apps/paper-example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png rename to apps/paper-example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png diff --git a/fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/apps/paper-example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png rename to apps/paper-example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png diff --git a/fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/apps/paper-example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png rename to apps/paper-example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png diff --git a/fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/apps/paper-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png rename to apps/paper-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png diff --git a/fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/apps/paper-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png rename to apps/paper-example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png diff --git a/fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/apps/paper-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png rename to apps/paper-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png diff --git a/fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/apps/paper-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png rename to apps/paper-example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png diff --git a/fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/apps/paper-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png rename to apps/paper-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png diff --git a/fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/apps/paper-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png similarity index 100% rename from fabric-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png rename to apps/paper-example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png diff --git a/apps/paper-example/android/app/src/main/res/values/strings.xml b/apps/paper-example/android/app/src/main/res/values/strings.xml new file mode 100644 index 000000000..20a3296c4 --- /dev/null +++ b/apps/paper-example/android/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + PaperExample + diff --git a/fabric-example/android/app/src/main/res/values/styles.xml b/apps/paper-example/android/app/src/main/res/values/styles.xml similarity index 100% rename from fabric-example/android/app/src/main/res/values/styles.xml rename to apps/paper-example/android/app/src/main/res/values/styles.xml diff --git a/fabric-example/android/build.gradle b/apps/paper-example/android/build.gradle similarity index 82% rename from fabric-example/android/build.gradle rename to apps/paper-example/android/build.gradle index df1ce4db3..a9ea02369 100644 --- a/fabric-example/android/build.gradle +++ b/apps/paper-example/android/build.gradle @@ -1,8 +1,8 @@ buildscript { ext { - buildToolsVersion = "34.0.0" - minSdkVersion = 23 - compileSdkVersion = 34 + buildToolsVersion = "35.0.0" + minSdkVersion = 24 + compileSdkVersion = 35 targetSdkVersion = 34 ndkVersion = "26.1.10909125" kotlinVersion = "1.9.24" diff --git a/example/android/gradle.properties b/apps/paper-example/android/gradle.properties similarity index 95% rename from example/android/gradle.properties rename to apps/paper-example/android/gradle.properties index a46a5b90f..9fb15664b 100644 --- a/example/android/gradle.properties +++ b/apps/paper-example/android/gradle.properties @@ -21,8 +21,6 @@ org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true # Use this property to specify which architecture you want to build. # You can also override it from the CLI using diff --git a/apps/paper-example/android/gradle/wrapper/gradle-wrapper.jar b/apps/paper-example/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 000000000..a4b76b953 Binary files /dev/null and b/apps/paper-example/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/fabric-example/android/gradle/wrapper/gradle-wrapper.properties b/apps/paper-example/android/gradle/wrapper/gradle-wrapper.properties similarity index 93% rename from fabric-example/android/gradle/wrapper/gradle-wrapper.properties rename to apps/paper-example/android/gradle/wrapper/gradle-wrapper.properties index 6f7a6eb33..79eb9d003 100644 --- a/fabric-example/android/gradle/wrapper/gradle-wrapper.properties +++ b/apps/paper-example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/fabric-example/android/gradlew b/apps/paper-example/android/gradlew similarity index 98% rename from fabric-example/android/gradlew rename to apps/paper-example/android/gradlew index b740cf133..f5feea6d6 100755 --- a/fabric-example/android/gradlew +++ b/apps/paper-example/android/gradlew @@ -15,6 +15,8 @@ # See the License for the specific language governing permissions and # limitations under the License. # +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################## # @@ -84,7 +86,8 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s +' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum diff --git a/example/android/gradlew.bat b/apps/paper-example/android/gradlew.bat similarity index 98% rename from example/android/gradlew.bat rename to apps/paper-example/android/gradlew.bat index 25da30dbd..9d21a2183 100644 --- a/example/android/gradlew.bat +++ b/apps/paper-example/android/gradlew.bat @@ -13,6 +13,8 @@ @rem See the License for the specific language governing permissions and @rem limitations under the License. @rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem @if "%DEBUG%"=="" @echo off @rem ########################################################################## diff --git a/apps/paper-example/android/settings.gradle b/apps/paper-example/android/settings.gradle new file mode 100644 index 000000000..b7e93d6b5 --- /dev/null +++ b/apps/paper-example/android/settings.gradle @@ -0,0 +1,6 @@ +pluginManagement { includeBuild("../node_modules/@react-native/gradle-plugin") } +plugins { id("com.facebook.react.settings") } +extensions.configure(com.facebook.react.ReactSettingsExtension){ ex -> ex.autolinkLibrariesFromCommand() } +rootProject.name = 'PaperExample' +include ':app' +includeBuild('../node_modules/@react-native/gradle-plugin') diff --git a/apps/paper-example/app.json b/apps/paper-example/app.json new file mode 100644 index 000000000..c2458f972 --- /dev/null +++ b/apps/paper-example/app.json @@ -0,0 +1,4 @@ +{ + "name": "PaperExample", + "displayName": "PaperExample" +} diff --git a/apps/paper-example/babel.config.js b/apps/paper-example/babel.config.js new file mode 100644 index 000000000..175dc7d87 --- /dev/null +++ b/apps/paper-example/babel.config.js @@ -0,0 +1,4 @@ +module.exports = { + presets: ['module:@react-native/babel-preset'], + plugins: ['module:react-native-dotenv', 'react-native-reanimated/plugin'], +}; diff --git a/apps/paper-example/common b/apps/paper-example/common new file mode 120000 index 000000000..83323993b --- /dev/null +++ b/apps/paper-example/common @@ -0,0 +1 @@ +../common/ \ No newline at end of file diff --git a/fabric-example/index.js b/apps/paper-example/index.js similarity index 84% rename from fabric-example/index.js rename to apps/paper-example/index.js index d60a80149..a7ab94e96 100644 --- a/fabric-example/index.js +++ b/apps/paper-example/index.js @@ -3,7 +3,7 @@ */ import { AppRegistry } from 'react-native'; -import App from '../apps'; +import App from '../common'; import { name as appName } from './app.json'; AppRegistry.registerComponent(appName, () => App); diff --git a/fabric-example/ios/.xcode.env b/apps/paper-example/ios/.xcode.env similarity index 100% rename from fabric-example/ios/.xcode.env rename to apps/paper-example/ios/.xcode.env diff --git a/example/ios/Example.xcodeproj/project.pbxproj b/apps/paper-example/ios/PaperExample.xcodeproj/project.pbxproj similarity index 71% rename from example/ios/Example.xcodeproj/project.pbxproj rename to apps/paper-example/ios/PaperExample.xcodeproj/project.pbxproj index 64352f109..3d6ca490d 100644 --- a/example/ios/Example.xcodeproj/project.pbxproj +++ b/apps/paper-example/ios/PaperExample.xcodeproj/project.pbxproj @@ -7,14 +7,14 @@ objects = { /* Begin PBXBuildFile section */ - 00E356F31AD99517003FC87E /* ExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ExampleTests.m */; }; - 0C80B921A6F3F58F76C31292 /* libPods-Example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-Example.a */; }; + 00E356F31AD99517003FC87E /* PaperExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* PaperExampleTests.m */; }; + 09D6C2F6F80442D389D9F399 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */; }; + 0C80B921A6F3F58F76C31292 /* libPods-PaperExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DCACB8F33CDC322A6C60F78 /* libPods-PaperExample.a */; }; 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; - 7699B88040F8A987B510C191 /* libPods-Example-ExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Example-ExampleTests.a */; }; + 7699B88040F8A987B510C191 /* libPods-PaperExample-PaperExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 19F6CBCC0A4E27FBF8BF4A61 /* libPods-PaperExample-PaperExampleTests.a */; }; 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; }; - C35781B2457D5898B7213A0D /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 9D90345809BA99F1314F488D /* PrivacyInfo.xcprivacy */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -23,29 +23,28 @@ containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */; proxyType = 1; remoteGlobalIDString = 13B07F861A680F5B00A75B9A; - remoteInfo = Example; + remoteInfo = PaperExample; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00E356EE1AD99517003FC87E /* ExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 00E356EE1AD99517003FC87E /* PaperExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PaperExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 00E356F21AD99517003FC87E /* ExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ExampleTests.m; sourceTree = ""; }; - 13B07F961A680F5B00A75B9A /* Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = Example/AppDelegate.h; sourceTree = ""; }; - 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = Example/AppDelegate.mm; sourceTree = ""; }; - 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Example/Images.xcassets; sourceTree = ""; }; - 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = Example/Info.plist; sourceTree = ""; }; - 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Example/main.m; sourceTree = ""; }; - 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = Example/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Example-ExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Example-ExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3B4392A12AC88292D35C810B /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = ""; }; - 5709B34CF0A7D63546082F79 /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = ""; }; - 5B7EB9410499542E8C5724F5 /* Pods-Example-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-ExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests.debug.xcconfig"; sourceTree = ""; }; - 5DCACB8F33CDC322A6C60F78 /* libPods-Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = Example/LaunchScreen.storyboard; sourceTree = ""; }; - 89C6BE57DB24E9ADA2F236DE /* Pods-Example-ExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-ExampleTests.release.xcconfig"; path = "Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests.release.xcconfig"; sourceTree = ""; }; - 9D90345809BA99F1314F488D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Example/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 00E356F21AD99517003FC87E /* PaperExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PaperExampleTests.m; sourceTree = ""; }; + 13B07F961A680F5B00A75B9A /* PaperExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PaperExample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = PaperExample/AppDelegate.h; sourceTree = ""; }; + 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = PaperExample/AppDelegate.mm; sourceTree = ""; }; + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = PaperExample/Images.xcassets; sourceTree = ""; }; + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = PaperExample/Info.plist; sourceTree = ""; }; + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = PaperExample/main.m; sourceTree = ""; }; + 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = PrivacyInfo.xcprivacy; path = PaperExample/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-PaperExample-PaperExampleTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PaperExample-PaperExampleTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B4392A12AC88292D35C810B /* Pods-PaperExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PaperExample.debug.xcconfig"; path = "Target Support Files/Pods-PaperExample/Pods-PaperExample.debug.xcconfig"; sourceTree = ""; }; + 5709B34CF0A7D63546082F79 /* Pods-PaperExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PaperExample.release.xcconfig"; path = "Target Support Files/Pods-PaperExample/Pods-PaperExample.release.xcconfig"; sourceTree = ""; }; + 5B7EB9410499542E8C5724F5 /* Pods-PaperExample-PaperExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PaperExample-PaperExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests.debug.xcconfig"; sourceTree = ""; }; + 5DCACB8F33CDC322A6C60F78 /* libPods-PaperExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-PaperExample.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = PaperExample/LaunchScreen.storyboard; sourceTree = ""; }; + 89C6BE57DB24E9ADA2F236DE /* Pods-PaperExample-PaperExampleTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PaperExample-PaperExampleTests.release.xcconfig"; path = "Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests.release.xcconfig"; sourceTree = ""; }; ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ @@ -54,7 +53,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7699B88040F8A987B510C191 /* libPods-Example-ExampleTests.a in Frameworks */, + 7699B88040F8A987B510C191 /* libPods-PaperExample-PaperExampleTests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -62,20 +61,20 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0C80B921A6F3F58F76C31292 /* libPods-Example.a in Frameworks */, + 0C80B921A6F3F58F76C31292 /* libPods-PaperExample.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 00E356EF1AD99517003FC87E /* ExampleTests */ = { + 00E356EF1AD99517003FC87E /* PaperExampleTests */ = { isa = PBXGroup; children = ( - 00E356F21AD99517003FC87E /* ExampleTests.m */, + 00E356F21AD99517003FC87E /* PaperExampleTests.m */, 00E356F01AD99517003FC87E /* Supporting Files */, ); - path = ExampleTests; + path = PaperExampleTests; sourceTree = ""; }; 00E356F01AD99517003FC87E /* Supporting Files */ = { @@ -86,7 +85,7 @@ name = "Supporting Files"; sourceTree = ""; }; - 13B07FAE1A68108700A75B9A /* Example */ = { + 13B07FAE1A68108700A75B9A /* PaperExample */ = { isa = PBXGroup; children = ( 13B07FAF1A68108700A75B9A /* AppDelegate.h */, @@ -96,17 +95,16 @@ 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */, 13B07FB71A68108700A75B9A /* main.m */, 13B07FB81A68108700A75B9A /* PrivacyInfo.xcprivacy */, - 9D90345809BA99F1314F488D /* PrivacyInfo.xcprivacy */, ); - name = Example; + name = PaperExample; sourceTree = ""; }; 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { isa = PBXGroup; children = ( ED297162215061F000B7C4FE /* JavaScriptCore.framework */, - 5DCACB8F33CDC322A6C60F78 /* libPods-Example.a */, - 19F6CBCC0A4E27FBF8BF4A61 /* libPods-Example-ExampleTests.a */, + 5DCACB8F33CDC322A6C60F78 /* libPods-PaperExample.a */, + 19F6CBCC0A4E27FBF8BF4A61 /* libPods-PaperExample-PaperExampleTests.a */, ); name = Frameworks; sourceTree = ""; @@ -121,9 +119,9 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 13B07FAE1A68108700A75B9A /* Example */, + 13B07FAE1A68108700A75B9A /* PaperExample */, 832341AE1AAA6A7D00B99B32 /* Libraries */, - 00E356EF1AD99517003FC87E /* ExampleTests */, + 00E356EF1AD99517003FC87E /* PaperExampleTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, BBD78D7AC51CEA395F1C20DB /* Pods */, @@ -136,8 +134,8 @@ 83CBBA001A601CBA00E9B192 /* Products */ = { isa = PBXGroup; children = ( - 13B07F961A680F5B00A75B9A /* Example.app */, - 00E356EE1AD99517003FC87E /* ExampleTests.xctest */, + 13B07F961A680F5B00A75B9A /* PaperExample.app */, + 00E356EE1AD99517003FC87E /* PaperExampleTests.xctest */, ); name = Products; sourceTree = ""; @@ -145,10 +143,10 @@ BBD78D7AC51CEA395F1C20DB /* Pods */ = { isa = PBXGroup; children = ( - 3B4392A12AC88292D35C810B /* Pods-Example.debug.xcconfig */, - 5709B34CF0A7D63546082F79 /* Pods-Example.release.xcconfig */, - 5B7EB9410499542E8C5724F5 /* Pods-Example-ExampleTests.debug.xcconfig */, - 89C6BE57DB24E9ADA2F236DE /* Pods-Example-ExampleTests.release.xcconfig */, + 3B4392A12AC88292D35C810B /* Pods-PaperExample.debug.xcconfig */, + 5709B34CF0A7D63546082F79 /* Pods-PaperExample.release.xcconfig */, + 5B7EB9410499542E8C5724F5 /* Pods-PaperExample-PaperExampleTests.debug.xcconfig */, + 89C6BE57DB24E9ADA2F236DE /* Pods-PaperExample-PaperExampleTests.release.xcconfig */, ); path = Pods; sourceTree = ""; @@ -156,9 +154,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 00E356ED1AD99517003FC87E /* ExampleTests */ = { + 00E356ED1AD99517003FC87E /* PaperExampleTests */ = { isa = PBXNativeTarget; - buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExampleTests" */; + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "PaperExampleTests" */; buildPhases = ( A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */, 00E356EA1AD99517003FC87E /* Sources */, @@ -172,14 +170,14 @@ dependencies = ( 00E356F51AD99517003FC87E /* PBXTargetDependency */, ); - name = ExampleTests; - productName = ExampleTests; - productReference = 00E356EE1AD99517003FC87E /* ExampleTests.xctest */; + name = PaperExampleTests; + productName = PaperExampleTests; + productReference = 00E356EE1AD99517003FC87E /* PaperExampleTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - 13B07F861A680F5B00A75B9A /* Example */ = { + 13B07F861A680F5B00A75B9A /* PaperExample */ = { isa = PBXNativeTarget; - buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Example" */; + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "PaperExample" */; buildPhases = ( C38B50BA6285516D6DCD4F65 /* [CP] Check Pods Manifest.lock */, 13B07F871A680F5B00A75B9A /* Sources */, @@ -193,9 +191,9 @@ ); dependencies = ( ); - name = Example; - productName = Example; - productReference = 13B07F961A680F5B00A75B9A /* Example.app */; + name = PaperExample; + productName = PaperExample; + productReference = 13B07F961A680F5B00A75B9A /* PaperExample.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -215,7 +213,7 @@ }; }; }; - buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Example" */; + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "PaperExample" */; compatibilityVersion = "Xcode 12.0"; developmentRegion = en; hasScannedForEncodings = 0; @@ -228,8 +226,8 @@ projectDirPath = ""; projectRoot = ""; targets = ( - 13B07F861A680F5B00A75B9A /* Example */, - 00E356ED1AD99517003FC87E /* ExampleTests */, + 13B07F861A680F5B00A75B9A /* PaperExample */, + 00E356ED1AD99517003FC87E /* PaperExampleTests */, ); }; /* End PBXProject section */ @@ -248,7 +246,7 @@ files = ( 81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - C35781B2457D5898B7213A0D /* PrivacyInfo.xcprivacy in Resources */, + 09D6C2F6F80442D389D9F399 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -277,15 +275,15 @@ files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample/Pods-PaperExample-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample/Pods-PaperExample-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PaperExample/Pods-PaperExample-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; A55EABD7B0C7F3A422A6CC61 /* [CP] Check Pods Manifest.lock */ = { @@ -303,7 +301,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Example-ExampleTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-PaperExample-PaperExampleTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -325,7 +323,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Example-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-PaperExample-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -338,15 +336,15 @@ files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-frameworks.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; E235C05ADACE081382539298 /* [CP] Copy Pods Resources */ = { @@ -355,15 +353,15 @@ files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample/Pods-PaperExample-resources-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample/Pods-PaperExample-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PaperExample/Pods-PaperExample-resources.sh\"\n"; showEnvVarsInLog = 0; }; F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = { @@ -372,15 +370,15 @@ files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests-resources-${CONFIGURATION}-input-files.xcfilelist", ); name = "[CP] Copy Pods Resources"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", + "${PODS_ROOT}/Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests-resources-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example-ExampleTests/Pods-Example-ExampleTests-resources.sh\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-PaperExample-PaperExampleTests/Pods-PaperExample-PaperExampleTests-resources.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -390,7 +388,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 00E356F31AD99517003FC87E /* ExampleTests.m in Sources */, + 00E356F31AD99517003FC87E /* PaperExampleTests.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -408,7 +406,7 @@ /* Begin PBXTargetDependency section */ 00E356F51AD99517003FC87E /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = 13B07F861A680F5B00A75B9A /* Example */; + target = 13B07F861A680F5B00A75B9A /* PaperExample */; targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -416,15 +414,15 @@ /* Begin XCBuildConfiguration section */ 00E356F61AD99517003FC87E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-Example-ExampleTests.debug.xcconfig */; + baseConfigurationReference = 5B7EB9410499542E8C5724F5 /* Pods-PaperExample-PaperExampleTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; GCC_PREPROCESSOR_DEFINITIONS = ( "DEBUG=1", "$(inherited)", ); - INFOPLIST_FILE = ExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + INFOPLIST_FILE = PaperExampleTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -437,18 +435,18 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PaperExample.app/PaperExample"; }; name = Debug; }; 00E356F71AD99517003FC87E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-Example-ExampleTests.release.xcconfig */; + baseConfigurationReference = 89C6BE57DB24E9ADA2F236DE /* Pods-PaperExample-PaperExampleTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; COPY_PHASE_STRIP = NO; - INFOPLIST_FILE = ExampleTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; + INFOPLIST_FILE = PaperExampleTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -461,19 +459,20 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example.app/Example"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/PaperExample.app/PaperExample"; }; name = Release; }; 13B07F941A680F5B00A75B9A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-Example.debug.xcconfig */; + baseConfigurationReference = 3B4392A12AC88292D35C810B /* Pods-PaperExample.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; ENABLE_BITCODE = NO; - INFOPLIST_FILE = Example/Info.plist; + INFOPLIST_FILE = PaperExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -485,7 +484,7 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = Example; + PRODUCT_NAME = PaperExample; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; @@ -494,12 +493,13 @@ }; 13B07F951A680F5B00A75B9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-Example.release.xcconfig */; + baseConfigurationReference = 5709B34CF0A7D63546082F79 /* Pods-PaperExample.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = 1; - INFOPLIST_FILE = Example/Info.plist; + INFOPLIST_FILE = PaperExample/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", @@ -511,7 +511,7 @@ "-lc++", ); PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)"; - PRODUCT_NAME = Example; + PRODUCT_NAME = PaperExample; SWIFT_VERSION = 5.0; VERSIONING_SYSTEM = "apple-generic"; }; @@ -521,7 +521,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; @@ -549,7 +548,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; - CXX = ""; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; @@ -568,9 +566,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD = ""; - LDPLUSPLUS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -596,6 +592,7 @@ ); REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG"; USE_HERMES = true; }; name = Debug; @@ -604,7 +601,6 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - CC = ""; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "c++20"; CLANG_CXX_LIBRARY = "libc++"; @@ -632,7 +628,6 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = YES; - CXX = ""; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = ""; @@ -644,9 +639,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 13.4; - LD = ""; - LDPLUSPLUS = ""; + IPHONEOS_DEPLOYMENT_TARGET = 15.1; LD_RUNPATH_SEARCH_PATHS = ( /usr/lib/swift, "$(inherited)", @@ -679,7 +672,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "ExampleTests" */ = { + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "PaperExampleTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 00E356F61AD99517003FC87E /* Debug */, @@ -688,7 +681,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "Example" */ = { + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "PaperExample" */ = { isa = XCConfigurationList; buildConfigurations = ( 13B07F941A680F5B00A75B9A /* Debug */, @@ -697,7 +690,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "Example" */ = { + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "PaperExample" */ = { isa = XCConfigurationList; buildConfigurations = ( 83CBBA201A601CBA00E9B192 /* Debug */, diff --git a/example/ios/Example.xcodeproj/xcshareddata/xcschemes/Example.xcscheme b/apps/paper-example/ios/PaperExample.xcodeproj/xcshareddata/xcschemes/PaperExample.xcscheme similarity index 79% rename from example/ios/Example.xcodeproj/xcshareddata/xcschemes/Example.xcscheme rename to apps/paper-example/ios/PaperExample.xcodeproj/xcshareddata/xcschemes/PaperExample.xcscheme index 2dbf0217e..1caa655f0 100644 --- a/example/ios/Example.xcodeproj/xcshareddata/xcschemes/Example.xcscheme +++ b/apps/paper-example/ios/PaperExample.xcodeproj/xcshareddata/xcschemes/PaperExample.xcscheme @@ -15,9 +15,9 @@ + BuildableName = "PaperExample.app" + BlueprintName = "PaperExample" + ReferencedContainer = "container:PaperExample.xcodeproj"> @@ -33,9 +33,9 @@ + BuildableName = "PaperExampleTests.xctest" + BlueprintName = "PaperExampleTests" + ReferencedContainer = "container:PaperExample.xcodeproj"> @@ -55,9 +55,9 @@ + BuildableName = "PaperExample.app" + BlueprintName = "PaperExample" + ReferencedContainer = "container:PaperExample.xcodeproj"> @@ -72,9 +72,9 @@ + BuildableName = "PaperExample.app" + BlueprintName = "PaperExample" + ReferencedContainer = "container:PaperExample.xcodeproj"> diff --git a/example/ios/Example.xcworkspace/contents.xcworkspacedata b/apps/paper-example/ios/PaperExample.xcworkspace/contents.xcworkspacedata similarity index 78% rename from example/ios/Example.xcworkspace/contents.xcworkspacedata rename to apps/paper-example/ios/PaperExample.xcworkspace/contents.xcworkspacedata index a37cf193d..29af23872 100644 --- a/example/ios/Example.xcworkspace/contents.xcworkspacedata +++ b/apps/paper-example/ios/PaperExample.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:PaperExample.xcodeproj"> diff --git a/fabric-macos-example/macos/FabricMacOSExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/apps/paper-example/ios/PaperExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from fabric-macos-example/macos/FabricMacOSExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to apps/paper-example/ios/PaperExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/fabric-example/ios/FabricExample/AppDelegate.h b/apps/paper-example/ios/PaperExample/AppDelegate.h similarity index 100% rename from fabric-example/ios/FabricExample/AppDelegate.h rename to apps/paper-example/ios/PaperExample/AppDelegate.h diff --git a/example/ios/Example/AppDelegate.mm b/apps/paper-example/ios/PaperExample/AppDelegate.mm similarity index 95% rename from example/ios/Example/AppDelegate.mm rename to apps/paper-example/ios/PaperExample/AppDelegate.mm index b32f0e363..7c091dacd 100644 --- a/example/ios/Example/AppDelegate.mm +++ b/apps/paper-example/ios/PaperExample/AppDelegate.mm @@ -6,7 +6,7 @@ @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - self.moduleName = @"Example"; + self.moduleName = @"PaperExample"; // You can add your custom initial props in the dictionary below. // They will be passed down to the ViewController used by React Native. self.initialProps = @{}; diff --git a/fabric-example/ios/FabricExample/Images.xcassets/AppIcon.appiconset/Contents.json b/apps/paper-example/ios/PaperExample/Images.xcassets/AppIcon.appiconset/Contents.json similarity index 100% rename from fabric-example/ios/FabricExample/Images.xcassets/AppIcon.appiconset/Contents.json rename to apps/paper-example/ios/PaperExample/Images.xcassets/AppIcon.appiconset/Contents.json diff --git a/fabric-example/ios/FabricExample/Images.xcassets/Contents.json b/apps/paper-example/ios/PaperExample/Images.xcassets/Contents.json similarity index 100% rename from fabric-example/ios/FabricExample/Images.xcassets/Contents.json rename to apps/paper-example/ios/PaperExample/Images.xcassets/Contents.json diff --git a/example/ios/Example/Info.plist b/apps/paper-example/ios/PaperExample/Info.plist similarity index 98% rename from example/ios/Example/Info.plist rename to apps/paper-example/ios/PaperExample/Info.plist index 28343d167..f193c088b 100644 --- a/example/ios/Example/Info.plist +++ b/apps/paper-example/ios/PaperExample/Info.plist @@ -5,7 +5,7 @@ CFBundleDevelopmentRegion en CFBundleDisplayName - Example + PaperExample CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier diff --git a/example/ios/Example/LaunchScreen.storyboard b/apps/paper-example/ios/PaperExample/LaunchScreen.storyboard similarity index 94% rename from example/ios/Example/LaunchScreen.storyboard rename to apps/paper-example/ios/PaperExample/LaunchScreen.storyboard index 110331148..99e967369 100644 --- a/example/ios/Example/LaunchScreen.storyboard +++ b/apps/paper-example/ios/PaperExample/LaunchScreen.storyboard @@ -16,7 +16,7 @@ -