@shopify/react-native-skia 1.7.6 → 1.7.7
Sign up to get free protection for your applications and to get access to all the features.
- package/android/cpp/rnskia-android/OpenGLWindowContext.h +8 -1
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +4 -4
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +2 -2
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +13 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaTextureView.java +24 -1
- package/cpp/rnskia/RNSkJsiViewApi.h +0 -3
- package/cpp/rnskia/RNSkView.h +6 -6
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +2 -2
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +2 -2
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Circle.d.ts +2 -3
- package/lib/commonjs/dom/nodes/datatypes/Circle.js +11 -6
- package/lib/commonjs/dom/nodes/datatypes/Circle.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Enum.js +1 -0
- package/lib/commonjs/dom/nodes/datatypes/Enum.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Fitting.js +1 -10
- package/lib/commonjs/dom/nodes/datatypes/Fitting.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Gradient.js +3 -2
- package/lib/commonjs/dom/nodes/datatypes/Gradient.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Path.js +4 -1
- package/lib/commonjs/dom/nodes/datatypes/Path.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Radius.js +1 -0
- package/lib/commonjs/dom/nodes/datatypes/Radius.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +3 -1
- package/lib/commonjs/dom/nodes/datatypes/Rect.js +17 -7
- package/lib/commonjs/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/commonjs/dom/nodes/datatypes/Transform.d.ts +2 -1
- package/lib/commonjs/dom/nodes/datatypes/Transform.js +32 -1
- package/lib/commonjs/dom/nodes/datatypes/Transform.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/Box.js +4 -5
- package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/CircleNode.js +1 -1
- package/lib/commonjs/dom/nodes/drawings/CircleNode.js.map +1 -1
- package/lib/commonjs/dom/types/DeclarationContext.d.ts +4 -4
- package/lib/commonjs/dom/types/DeclarationContext.js +8 -2
- package/lib/commonjs/dom/types/DeclarationContext.js.map +1 -1
- package/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/commonjs/external/reanimated/renderHelpers.js +11 -6
- package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/commonjs/renderer/HostConfig.js +8 -4
- package/lib/commonjs/renderer/HostConfig.js.map +1 -1
- package/lib/commonjs/renderer/__tests__/setup.d.ts +2 -3
- package/lib/commonjs/renderer/processors/Animations/Animations.d.ts +1 -2
- package/lib/commonjs/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/commonjs/renderer/typeddash.js +5 -1
- package/lib/commonjs/renderer/typeddash.js.map +1 -1
- package/lib/commonjs/skia/__tests__/setup.d.ts +0 -3
- package/lib/commonjs/skia/types/Path/Path.js +5 -1
- package/lib/commonjs/skia/types/Path/Path.js.map +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.js +8 -6
- package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
- package/lib/commonjs/sksg/Container.d.ts +19 -0
- package/lib/commonjs/sksg/Container.js +102 -0
- package/lib/commonjs/sksg/Container.js.map +1 -0
- package/lib/commonjs/sksg/DrawingContext.d.ts +16 -0
- package/lib/commonjs/sksg/DrawingContext.js +186 -0
- package/lib/commonjs/sksg/DrawingContext.js.map +1 -0
- package/lib/commonjs/sksg/HostConfig.d.ts +19 -0
- package/lib/commonjs/sksg/HostConfig.js +168 -0
- package/lib/commonjs/sksg/HostConfig.js.map +1 -0
- package/lib/commonjs/sksg/Reconciler.d.ts +17 -0
- package/lib/commonjs/sksg/Reconciler.js +54 -0
- package/lib/commonjs/sksg/Reconciler.js.map +1 -0
- package/lib/commonjs/sksg/__tests__/MockDeclaration.d.ts +57 -0
- package/lib/commonjs/sksg/nodes/Node.d.ts +7 -0
- package/lib/commonjs/sksg/nodes/Node.js +6 -0
- package/lib/commonjs/sksg/nodes/Node.js.map +1 -0
- package/lib/commonjs/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/commonjs/sksg/nodes/colorFilters.js +55 -0
- package/lib/commonjs/sksg/nodes/colorFilters.js.map +1 -0
- package/lib/commonjs/sksg/nodes/context.d.ts +3 -0
- package/lib/commonjs/sksg/nodes/context.js +448 -0
- package/lib/commonjs/sksg/nodes/context.js.map +1 -0
- package/lib/commonjs/sksg/nodes/drawings.d.ts +31 -0
- package/lib/commonjs/sksg/nodes/drawings.js +361 -0
- package/lib/commonjs/sksg/nodes/drawings.js.map +1 -0
- package/lib/commonjs/sksg/nodes/imageFilters.d.ts +14 -0
- package/lib/commonjs/sksg/nodes/imageFilters.js +135 -0
- package/lib/commonjs/sksg/nodes/imageFilters.js.map +1 -0
- package/lib/commonjs/sksg/nodes/index.d.ts +3 -0
- package/lib/commonjs/sksg/nodes/index.js +39 -0
- package/lib/commonjs/sksg/nodes/index.js.map +1 -0
- package/lib/commonjs/sksg/nodes/paint.d.ts +2 -0
- package/lib/commonjs/sksg/nodes/paint.js +80 -0
- package/lib/commonjs/sksg/nodes/paint.js.map +1 -0
- package/lib/commonjs/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/commonjs/sksg/nodes/pathEffects.js +84 -0
- package/lib/commonjs/sksg/nodes/pathEffects.js.map +1 -0
- package/lib/commonjs/sksg/nodes/shaders.d.ts +10 -0
- package/lib/commonjs/sksg/nodes/shaders.js +156 -0
- package/lib/commonjs/sksg/nodes/shaders.js.map +1 -0
- package/lib/commonjs/sksg/nodes/utils.d.ts +3 -0
- package/lib/commonjs/sksg/nodes/utils.js +25 -0
- package/lib/commonjs/sksg/nodes/utils.js.map +1 -0
- package/lib/commonjs/views/SkiaPictureView.js +0 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/types.d.ts +2 -2
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Circle.d.ts +2 -3
- package/lib/module/dom/nodes/datatypes/Circle.js +12 -6
- package/lib/module/dom/nodes/datatypes/Circle.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Enum.js +2 -0
- package/lib/module/dom/nodes/datatypes/Enum.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Fitting.js +2 -10
- package/lib/module/dom/nodes/datatypes/Fitting.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Gradient.js +4 -2
- package/lib/module/dom/nodes/datatypes/Gradient.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Path.js +5 -1
- package/lib/module/dom/nodes/datatypes/Path.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Radius.js +2 -0
- package/lib/module/dom/nodes/datatypes/Radius.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Rect.d.ts +3 -1
- package/lib/module/dom/nodes/datatypes/Rect.js +14 -5
- package/lib/module/dom/nodes/datatypes/Rect.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Transform.d.ts +2 -1
- package/lib/module/dom/nodes/datatypes/Transform.js +31 -0
- package/lib/module/dom/nodes/datatypes/Transform.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Box.js +1 -2
- package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
- package/lib/module/dom/nodes/drawings/CircleNode.js +1 -1
- package/lib/module/dom/nodes/drawings/CircleNode.js.map +1 -1
- package/lib/module/dom/types/DeclarationContext.d.ts +4 -4
- package/lib/module/dom/types/DeclarationContext.js +9 -2
- package/lib/module/dom/types/DeclarationContext.js.map +1 -1
- package/lib/module/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/module/external/reanimated/renderHelpers.js +8 -4
- package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
- package/lib/module/renderer/HostConfig.js +8 -4
- package/lib/module/renderer/HostConfig.js.map +1 -1
- package/lib/module/renderer/__tests__/setup.d.ts +2 -3
- package/lib/module/renderer/processors/Animations/Animations.d.ts +1 -2
- package/lib/module/renderer/processors/Animations/Animations.js.map +1 -1
- package/lib/module/renderer/typeddash.js +5 -1
- package/lib/module/renderer/typeddash.js.map +1 -1
- package/lib/module/skia/__tests__/setup.d.ts +0 -3
- package/lib/module/skia/types/Path/Path.js +5 -1
- package/lib/module/skia/types/Path/Path.js.map +1 -1
- package/lib/module/skia/types/Shader/Shader.js +9 -6
- package/lib/module/skia/types/Shader/Shader.js.map +1 -1
- package/lib/module/sksg/Container.d.ts +19 -0
- package/lib/module/sksg/Container.js +94 -0
- package/lib/module/sksg/Container.js.map +1 -0
- package/lib/module/sksg/DrawingContext.d.ts +16 -0
- package/lib/module/sksg/DrawingContext.js +180 -0
- package/lib/module/sksg/DrawingContext.js.map +1 -0
- package/lib/module/sksg/HostConfig.d.ts +19 -0
- package/lib/module/sksg/HostConfig.js +161 -0
- package/lib/module/sksg/HostConfig.js.map +1 -0
- package/lib/module/sksg/Reconciler.d.ts +17 -0
- package/lib/module/sksg/Reconciler.js +46 -0
- package/lib/module/sksg/Reconciler.js.map +1 -0
- package/lib/module/sksg/__tests__/MockDeclaration.d.ts +57 -0
- package/lib/module/sksg/nodes/Node.d.ts +7 -0
- package/lib/module/sksg/nodes/Node.js +2 -0
- package/lib/module/sksg/nodes/Node.js.map +1 -0
- package/lib/module/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/module/sksg/nodes/colorFilters.js +44 -0
- package/lib/module/sksg/nodes/colorFilters.js.map +1 -0
- package/lib/module/sksg/nodes/context.d.ts +3 -0
- package/lib/module/sksg/nodes/context.js +443 -0
- package/lib/module/sksg/nodes/context.js.map +1 -0
- package/lib/module/sksg/nodes/drawings.d.ts +31 -0
- package/lib/module/sksg/nodes/drawings.js +334 -0
- package/lib/module/sksg/nodes/drawings.js.map +1 -0
- package/lib/module/sksg/nodes/imageFilters.d.ts +14 -0
- package/lib/module/sksg/nodes/imageFilters.js +122 -0
- package/lib/module/sksg/nodes/imageFilters.js.map +1 -0
- package/lib/module/sksg/nodes/index.d.ts +3 -0
- package/lib/module/sksg/nodes/index.js +4 -0
- package/lib/module/sksg/nodes/index.js.map +1 -0
- package/lib/module/sksg/nodes/paint.d.ts +2 -0
- package/lib/module/sksg/nodes/paint.js +74 -0
- package/lib/module/sksg/nodes/paint.js.map +1 -0
- package/lib/module/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/module/sksg/nodes/pathEffects.js +72 -0
- package/lib/module/sksg/nodes/pathEffects.js.map +1 -0
- package/lib/module/sksg/nodes/shaders.d.ts +10 -0
- package/lib/module/sksg/nodes/shaders.js +142 -0
- package/lib/module/sksg/nodes/shaders.js.map +1 -0
- package/lib/module/sksg/nodes/utils.d.ts +3 -0
- package/lib/module/sksg/nodes/utils.js +18 -0
- package/lib/module/sksg/nodes/utils.js.map +1 -0
- package/lib/module/views/SkiaPictureView.js +0 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/types.d.ts +2 -2
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Circle.d.ts +1 -1
- package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Rect.d.ts +2 -0
- package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Transform.d.ts +1 -0
- package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/lib/commonjs/renderer/HostConfig.d.ts +3 -1
- package/lib/typescript/lib/commonjs/sksg/Container.d.ts +16 -0
- package/lib/typescript/lib/commonjs/sksg/DrawingContext.d.ts +26 -0
- package/lib/typescript/lib/commonjs/sksg/HostConfig.d.ts +50 -0
- package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +16 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/Node.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/context.d.ts +2 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/drawings.d.ts +23 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/imageFilters.d.ts +10 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/index.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/paint.d.ts +2 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/shaders.d.ts +10 -0
- package/lib/typescript/lib/commonjs/sksg/nodes/utils.d.ts +3 -0
- package/lib/typescript/lib/module/dom/nodes/datatypes/Circle.d.ts +1 -1
- package/lib/typescript/lib/module/dom/nodes/datatypes/Rect.d.ts +2 -0
- package/lib/typescript/lib/module/dom/nodes/datatypes/Transform.d.ts +1 -0
- package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/lib/module/mock/index.d.ts +4 -1
- package/lib/typescript/lib/module/renderer/HostConfig.d.ts +3 -1
- package/lib/typescript/lib/module/sksg/Container.d.ts +15 -0
- package/lib/typescript/lib/module/sksg/DrawingContext.d.ts +26 -0
- package/lib/typescript/lib/module/sksg/HostConfig.d.ts +49 -0
- package/lib/typescript/lib/module/sksg/Reconciler.d.ts +15 -0
- package/lib/typescript/lib/module/sksg/nodes/colorFilters.d.ts +6 -0
- package/lib/typescript/lib/module/sksg/nodes/context.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/nodes/drawings.d.ts +22 -0
- package/lib/typescript/lib/module/sksg/nodes/imageFilters.d.ts +9 -0
- package/lib/typescript/lib/module/sksg/nodes/index.d.ts +3 -0
- package/lib/typescript/lib/module/sksg/nodes/paint.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/nodes/pathEffects.d.ts +7 -0
- package/lib/typescript/lib/module/sksg/nodes/shaders.d.ts +9 -0
- package/lib/typescript/lib/module/sksg/nodes/utils.d.ts +2 -0
- package/lib/typescript/src/dom/nodes/datatypes/Circle.d.ts +2 -3
- package/lib/typescript/src/dom/nodes/datatypes/Rect.d.ts +3 -1
- package/lib/typescript/src/dom/nodes/datatypes/Transform.d.ts +2 -1
- package/lib/typescript/src/dom/types/DeclarationContext.d.ts +4 -4
- package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +2 -0
- package/lib/typescript/src/renderer/__tests__/setup.d.ts +2 -3
- package/lib/typescript/src/renderer/processors/Animations/Animations.d.ts +1 -2
- package/lib/typescript/src/skia/__tests__/setup.d.ts +0 -3
- package/lib/typescript/src/sksg/Container.d.ts +19 -0
- package/lib/typescript/src/sksg/DrawingContext.d.ts +16 -0
- package/lib/typescript/src/sksg/HostConfig.d.ts +19 -0
- package/lib/typescript/src/sksg/Reconciler.d.ts +17 -0
- package/lib/typescript/src/sksg/__tests__/MockDeclaration.d.ts +57 -0
- package/lib/typescript/src/sksg/nodes/Node.d.ts +7 -0
- package/lib/typescript/src/sksg/nodes/colorFilters.d.ts +7 -0
- package/lib/typescript/src/sksg/nodes/context.d.ts +3 -0
- package/lib/typescript/src/sksg/nodes/drawings.d.ts +31 -0
- package/lib/typescript/src/sksg/nodes/imageFilters.d.ts +14 -0
- package/lib/typescript/src/sksg/nodes/index.d.ts +3 -0
- package/lib/typescript/src/sksg/nodes/paint.d.ts +2 -0
- package/lib/typescript/src/sksg/nodes/pathEffects.d.ts +8 -0
- package/lib/typescript/src/sksg/nodes/shaders.d.ts +10 -0
- package/lib/typescript/src/sksg/nodes/utils.d.ts +3 -0
- package/lib/typescript/src/views/types.d.ts +2 -2
- package/libs/{ios → apple}/libskia.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/{ios → apple}/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
- package/libs/{ios → apple}/libskottie.xcframework/Info.plist +20 -5
- package/libs/{ios → apple}/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/{ios → apple}/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
- package/libs/{ios → apple}/libskparagraph.xcframework/Info.plist +20 -5
- package/libs/{ios → apple}/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/{ios → apple}/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
- package/libs/{ios → apple}/libsksg.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/{ios → apple}/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
- package/libs/{ios → apple}/libskshaper.xcframework/Info.plist +20 -5
- package/libs/{ios → apple}/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/{ios → apple}/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
- package/libs/{ios → apple}/libskunicode_core.xcframework/Info.plist +18 -3
- package/libs/{ios → apple}/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
- package/libs/{ios → apple}/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
- package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
- package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
- package/libs/{ios → apple}/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
- package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
- package/libs/{ios → apple}/libsvg.xcframework/Info.plist +15 -0
- package/libs/{ios → apple}/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/{ios → apple}/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
- package/package.json +3 -3
- package/react-native-skia.podspec +9 -9
- package/src/__tests__/setup.ts +1 -1
- package/src/__tests__/snapshots/sksg/breathe-0.png +0 -0
- package/src/__tests__/snapshots/sksg/breathe.png +0 -0
- package/src/__tests__/snapshots/sksg/simple.png +0 -0
- package/src/__tests__/snapshots/sksg/simple2.png +0 -0
- package/src/dom/nodes/JsiSkDOM.ts +2 -1
- package/src/dom/nodes/datatypes/Circle.ts +7 -5
- package/src/dom/nodes/datatypes/Enum.ts +2 -0
- package/src/dom/nodes/datatypes/Fitting.ts +2 -5
- package/src/dom/nodes/datatypes/Gradient.ts +4 -7
- package/src/dom/nodes/datatypes/Path.ts +5 -2
- package/src/dom/nodes/datatypes/Radius.ts +2 -0
- package/src/dom/nodes/datatypes/Rect.ts +40 -6
- package/src/dom/nodes/datatypes/Transform.ts +29 -1
- package/src/dom/nodes/drawings/Box.ts +1 -29
- package/src/dom/nodes/drawings/CircleNode.ts +1 -1
- package/src/dom/types/DeclarationContext.ts +12 -2
- package/src/external/reanimated/renderHelpers.ts +8 -4
- package/src/renderer/HostConfig.ts +10 -4
- package/src/renderer/__tests__/documentation/shapes/Box.spec.tsx +2 -2
- package/src/renderer/__tests__/setup.tsx +17 -15
- package/src/renderer/processors/Animations/Animations.ts +1 -5
- package/src/renderer/typeddash.ts +4 -2
- package/src/skia/__tests__/setup.ts +1 -51
- package/src/skia/types/Path/Path.ts +4 -2
- package/src/skia/types/Shader/Shader.ts +7 -4
- package/src/sksg/Container.ts +102 -0
- package/src/sksg/DrawingContext.ts +221 -0
- package/src/sksg/HostConfig.ts +287 -0
- package/src/sksg/Reconciler.ts +59 -0
- package/src/sksg/__tests__/Declarations.spec.tsx +235 -0
- package/src/sksg/__tests__/MockDeclaration.ts +140 -0
- package/src/sksg/__tests__/Simple.spec.tsx +148 -0
- package/src/sksg/nodes/Node.ts +8 -0
- package/src/sksg/nodes/colorFilters.ts +60 -0
- package/src/sksg/nodes/context.ts +489 -0
- package/src/sksg/nodes/drawings.ts +393 -0
- package/src/sksg/nodes/imageFilters.ts +183 -0
- package/src/sksg/nodes/index.ts +3 -0
- package/src/sksg/nodes/paint.ts +75 -0
- package/src/sksg/nodes/pathEffects.ts +95 -0
- package/src/sksg/nodes/shaders.ts +203 -0
- package/src/sksg/nodes/utils.ts +23 -0
- package/src/views/SkiaPictureView.tsx +0 -2
- package/src/views/types.ts +2 -2
- package/lib/commonjs/dom/__tests__/Shaders.spec.d.ts +0 -1
- package/lib/commonjs/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Compose.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Demos.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/DrawingContext.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Drawings.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Group.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Paint.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/RenderNodes.spec.d.ts +0 -1
- package/lib/module/dom/__tests__/Shaders.spec.d.ts +0 -1
- package/lib/module/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Compose.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Demos.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/DrawingContext.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Drawings.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Group.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Paint.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/RenderNodes.spec.d.ts +0 -1
- package/lib/typescript/src/dom/__tests__/Shaders.spec.d.ts +0 -1
- package/lib/typescript/src/renderer/__tests__/SkiaDOM.spec.d.ts +0 -1
- package/src/dom/__tests__/Compose.spec.tsx +0 -42
- package/src/dom/__tests__/Demos.spec.tsx +0 -145
- package/src/dom/__tests__/DrawingContext.spec.tsx +0 -99
- package/src/dom/__tests__/Drawings.spec.tsx +0 -95
- package/src/dom/__tests__/Group.spec.tsx +0 -132
- package/src/dom/__tests__/Paint.spec.tsx +0 -100
- package/src/dom/__tests__/RenderNodes.spec.tsx +0 -44
- package/src/dom/__tests__/Shaders.spec.tsx +0 -123
- package/src/renderer/__tests__/SkiaDOM.spec.tsx +0 -46
- /package/lib/commonjs/{dom/__tests__/Compose.spec.d.ts → sksg/__tests__/Declarations.spec.d.ts} +0 -0
- /package/lib/commonjs/{dom/__tests__/Demos.spec.d.ts → sksg/__tests__/Simple.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/DrawingContext.spec.d.ts → module/sksg/__tests__/Declarations.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/Drawings.spec.d.ts → module/sksg/__tests__/Simple.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/Group.spec.d.ts → typescript/lib/module/sksg/nodes/Node.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/Paint.spec.d.ts → typescript/src/sksg/__tests__/Declarations.spec.d.ts} +0 -0
- /package/lib/{commonjs/dom/__tests__/RenderNodes.spec.d.ts → typescript/src/sksg/__tests__/Simple.spec.d.ts} +0 -0
@@ -0,0 +1,221 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
3
|
+
import {
|
4
|
+
enumKey,
|
5
|
+
isPathDef,
|
6
|
+
processPath,
|
7
|
+
processTransformProps2,
|
8
|
+
} from "../dom/nodes";
|
9
|
+
import type { ClipDef, DrawingNodeProps, GroupProps } from "../dom/types";
|
10
|
+
import { DeclarationContext } from "../dom/types";
|
11
|
+
import {
|
12
|
+
BlendMode,
|
13
|
+
ClipOp,
|
14
|
+
isRRect,
|
15
|
+
PaintStyle,
|
16
|
+
StrokeCap,
|
17
|
+
StrokeJoin,
|
18
|
+
} from "../skia/types";
|
19
|
+
import type {
|
20
|
+
SkPath,
|
21
|
+
SkRect,
|
22
|
+
SkRRect,
|
23
|
+
SkCanvas,
|
24
|
+
Skia,
|
25
|
+
SkPaint,
|
26
|
+
} from "../skia/types";
|
27
|
+
|
28
|
+
const computeClip = (
|
29
|
+
Skia: Skia,
|
30
|
+
clip: ClipDef | undefined
|
31
|
+
):
|
32
|
+
| undefined
|
33
|
+
| { clipPath: SkPath }
|
34
|
+
| { clipRect: SkRect }
|
35
|
+
| { clipRRect: SkRRect } => {
|
36
|
+
if (clip) {
|
37
|
+
if (isPathDef(clip)) {
|
38
|
+
return { clipPath: processPath(Skia, clip) };
|
39
|
+
} else if (isRRect(clip)) {
|
40
|
+
return { clipRRect: clip };
|
41
|
+
} else {
|
42
|
+
return { clipRect: clip };
|
43
|
+
}
|
44
|
+
}
|
45
|
+
return undefined;
|
46
|
+
};
|
47
|
+
|
48
|
+
export class DrawingContext {
|
49
|
+
private paints: SkPaint[];
|
50
|
+
public declCtx: DeclarationContext;
|
51
|
+
public Skia: Skia;
|
52
|
+
public canvas: SkCanvas;
|
53
|
+
|
54
|
+
constructor(Skia: Skia, canvas: SkCanvas) {
|
55
|
+
this.Skia = Skia;
|
56
|
+
this.canvas = canvas;
|
57
|
+
this.paints = [Skia.Paint()];
|
58
|
+
this.declCtx = new DeclarationContext(this.Skia);
|
59
|
+
}
|
60
|
+
|
61
|
+
save() {
|
62
|
+
this.paints.push(this.paint.copy());
|
63
|
+
}
|
64
|
+
|
65
|
+
restore() {
|
66
|
+
this.paints.pop();
|
67
|
+
}
|
68
|
+
|
69
|
+
get paint() {
|
70
|
+
const paint = this.paints[this.paints.length - 1];
|
71
|
+
if (!paint) {
|
72
|
+
throw new Error("Paint is undefined");
|
73
|
+
}
|
74
|
+
return paint;
|
75
|
+
}
|
76
|
+
|
77
|
+
getLocalPaints() {
|
78
|
+
const { paint } = this;
|
79
|
+
return [paint, ...this.declCtx.paints.popAll()];
|
80
|
+
}
|
81
|
+
|
82
|
+
processPaint({
|
83
|
+
opacity,
|
84
|
+
color,
|
85
|
+
strokeWidth,
|
86
|
+
blendMode,
|
87
|
+
style,
|
88
|
+
strokeJoin,
|
89
|
+
strokeCap,
|
90
|
+
strokeMiter,
|
91
|
+
antiAlias,
|
92
|
+
dither,
|
93
|
+
paint: paintProp,
|
94
|
+
}: DrawingNodeProps) {
|
95
|
+
if (paintProp) {
|
96
|
+
this.declCtx.paints.push(paintProp);
|
97
|
+
return true;
|
98
|
+
}
|
99
|
+
let shouldRestore = false;
|
100
|
+
const colorFilter = this.declCtx.colorFilters.popAllAsOne();
|
101
|
+
const imageFilter = this.declCtx.imageFilters.popAllAsOne();
|
102
|
+
const shader = this.declCtx.shaders.pop();
|
103
|
+
const maskFilter = this.declCtx.maskFilters.pop();
|
104
|
+
const pathEffect = this.declCtx.pathEffects.popAllAsOne();
|
105
|
+
if (
|
106
|
+
opacity !== undefined ||
|
107
|
+
color !== undefined ||
|
108
|
+
strokeWidth !== undefined ||
|
109
|
+
blendMode !== undefined ||
|
110
|
+
style !== undefined ||
|
111
|
+
strokeJoin !== undefined ||
|
112
|
+
strokeCap !== undefined ||
|
113
|
+
strokeMiter !== undefined ||
|
114
|
+
antiAlias !== undefined ||
|
115
|
+
dither !== undefined ||
|
116
|
+
colorFilter !== undefined ||
|
117
|
+
imageFilter !== undefined ||
|
118
|
+
shader !== undefined ||
|
119
|
+
maskFilter !== undefined ||
|
120
|
+
pathEffect !== undefined
|
121
|
+
) {
|
122
|
+
if (!shouldRestore) {
|
123
|
+
this.save();
|
124
|
+
shouldRestore = true;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
const { paint } = this;
|
128
|
+
if (opacity !== undefined) {
|
129
|
+
paint.setAlphaf(paint.getAlphaf() * opacity);
|
130
|
+
}
|
131
|
+
if (color !== undefined) {
|
132
|
+
const currentOpacity = paint.getAlphaf();
|
133
|
+
paint.setShader(null);
|
134
|
+
if (typeof color === "string" || typeof color === "number") {
|
135
|
+
paint.setColor(this.Skia.Color(color));
|
136
|
+
} else if (Array.isArray(color)) {
|
137
|
+
paint.setColor(new Float32Array(color));
|
138
|
+
} else if (color instanceof Float32Array) {
|
139
|
+
paint.setColor(color);
|
140
|
+
} else {
|
141
|
+
throw new Error("Invalid color");
|
142
|
+
}
|
143
|
+
paint.setAlphaf(currentOpacity * paint.getAlphaf());
|
144
|
+
}
|
145
|
+
if (strokeWidth !== undefined) {
|
146
|
+
paint.setStrokeWidth(strokeWidth);
|
147
|
+
}
|
148
|
+
if (blendMode !== undefined) {
|
149
|
+
paint.setBlendMode(BlendMode[enumKey(blendMode)]);
|
150
|
+
}
|
151
|
+
if (style !== undefined) {
|
152
|
+
paint.setStyle(PaintStyle[enumKey(style)]);
|
153
|
+
}
|
154
|
+
if (strokeJoin !== undefined) {
|
155
|
+
paint.setStrokeJoin(StrokeJoin[enumKey(strokeJoin)]);
|
156
|
+
}
|
157
|
+
if (strokeCap !== undefined) {
|
158
|
+
paint.setStrokeCap(StrokeCap[enumKey(strokeCap)]);
|
159
|
+
}
|
160
|
+
if (strokeMiter !== undefined) {
|
161
|
+
paint.setStrokeMiter(strokeMiter);
|
162
|
+
}
|
163
|
+
if (antiAlias !== undefined) {
|
164
|
+
paint.setAntiAlias(antiAlias);
|
165
|
+
}
|
166
|
+
if (dither !== undefined) {
|
167
|
+
paint.setDither(dither);
|
168
|
+
}
|
169
|
+
if (colorFilter) {
|
170
|
+
paint.setColorFilter(colorFilter);
|
171
|
+
}
|
172
|
+
if (imageFilter) {
|
173
|
+
paint.setImageFilter(imageFilter);
|
174
|
+
}
|
175
|
+
if (shader) {
|
176
|
+
paint.setShader(shader);
|
177
|
+
}
|
178
|
+
if (maskFilter) {
|
179
|
+
paint.setMaskFilter(maskFilter);
|
180
|
+
}
|
181
|
+
if (pathEffect) {
|
182
|
+
paint.setPathEffect(pathEffect);
|
183
|
+
}
|
184
|
+
return shouldRestore;
|
185
|
+
}
|
186
|
+
|
187
|
+
processMatrixAndClipping(props: GroupProps, layer?: boolean | SkPaint) {
|
188
|
+
const hasTransform =
|
189
|
+
props.matrix !== undefined || props.transform !== undefined;
|
190
|
+
const clip = computeClip(this.Skia, props.clip);
|
191
|
+
const hasClip = clip !== undefined;
|
192
|
+
const op = props.invertClip ? ClipOp.Difference : ClipOp.Intersect;
|
193
|
+
const m3 = processTransformProps2(this.Skia, props);
|
194
|
+
const shouldSave = hasTransform || hasClip || !!layer;
|
195
|
+
if (shouldSave) {
|
196
|
+
if (layer) {
|
197
|
+
if (typeof layer === "boolean") {
|
198
|
+
this.canvas.saveLayer();
|
199
|
+
} else {
|
200
|
+
this.canvas.saveLayer(layer);
|
201
|
+
}
|
202
|
+
} else {
|
203
|
+
this.canvas.save();
|
204
|
+
}
|
205
|
+
}
|
206
|
+
|
207
|
+
if (m3) {
|
208
|
+
this.canvas.concat(m3);
|
209
|
+
}
|
210
|
+
if (clip) {
|
211
|
+
if ("clipRect" in clip) {
|
212
|
+
this.canvas.clipRect(clip.clipRect, op, true);
|
213
|
+
} else if ("clipRRect" in clip) {
|
214
|
+
this.canvas.clipRRect(clip.clipRRect, op, true);
|
215
|
+
} else {
|
216
|
+
this.canvas.clipPath(clip.clipPath, op, true);
|
217
|
+
}
|
218
|
+
}
|
219
|
+
return shouldSave;
|
220
|
+
}
|
221
|
+
}
|
@@ -0,0 +1,287 @@
|
|
1
|
+
/*global NodeJS*/
|
2
|
+
import type { Fiber, HostConfig } from "react-reconciler";
|
3
|
+
import { DefaultEventPriority } from "react-reconciler/constants";
|
4
|
+
|
5
|
+
import { NodeType } from "../dom/types";
|
6
|
+
import { shallowEq } from "../renderer/typeddash";
|
7
|
+
|
8
|
+
import type { Node } from "./nodes/Node";
|
9
|
+
import type { Container } from "./Container";
|
10
|
+
|
11
|
+
const DEBUG = false;
|
12
|
+
export const debug = (...args: Parameters<typeof console.log>) => {
|
13
|
+
if (DEBUG) {
|
14
|
+
console.log(...args);
|
15
|
+
}
|
16
|
+
};
|
17
|
+
|
18
|
+
const isDeclaration = (type: NodeType) => {
|
19
|
+
"worklet";
|
20
|
+
return (
|
21
|
+
// BlurMaskFilters
|
22
|
+
type === NodeType.BlurMaskFilter ||
|
23
|
+
// ImageFilters
|
24
|
+
type === NodeType.BlendImageFilter ||
|
25
|
+
type === NodeType.BlurImageFilter ||
|
26
|
+
type === NodeType.OffsetImageFilter ||
|
27
|
+
type === NodeType.DropShadowImageFilter ||
|
28
|
+
type === NodeType.MorphologyImageFilter ||
|
29
|
+
type === NodeType.DisplacementMapImageFilter ||
|
30
|
+
type === NodeType.RuntimeShaderImageFilter ||
|
31
|
+
// ColorFilters
|
32
|
+
type === NodeType.MatrixColorFilter ||
|
33
|
+
type === NodeType.BlendColorFilter ||
|
34
|
+
type === NodeType.LumaColorFilter ||
|
35
|
+
type === NodeType.LinearToSRGBGammaColorFilter ||
|
36
|
+
type === NodeType.SRGBToLinearGammaColorFilter ||
|
37
|
+
type === NodeType.LerpColorFilter ||
|
38
|
+
// Shaders
|
39
|
+
type === NodeType.Shader ||
|
40
|
+
type === NodeType.ImageShader ||
|
41
|
+
type === NodeType.ColorShader ||
|
42
|
+
type === NodeType.Turbulence ||
|
43
|
+
type === NodeType.FractalNoise ||
|
44
|
+
type === NodeType.LinearGradient ||
|
45
|
+
type === NodeType.RadialGradient ||
|
46
|
+
type === NodeType.SweepGradient ||
|
47
|
+
type === NodeType.TwoPointConicalGradient ||
|
48
|
+
// Path Effects
|
49
|
+
type === NodeType.CornerPathEffect ||
|
50
|
+
type === NodeType.DiscretePathEffect ||
|
51
|
+
type === NodeType.DashPathEffect ||
|
52
|
+
type === NodeType.Path1DPathEffect ||
|
53
|
+
type === NodeType.Path2DPathEffect ||
|
54
|
+
type === NodeType.SumPathEffect ||
|
55
|
+
type === NodeType.Line2DPathEffect ||
|
56
|
+
// Mixed
|
57
|
+
type === NodeType.Blend ||
|
58
|
+
// Paint
|
59
|
+
type === NodeType.Paint
|
60
|
+
);
|
61
|
+
};
|
62
|
+
|
63
|
+
type Instance = Node;
|
64
|
+
|
65
|
+
type Props = object;
|
66
|
+
type TextInstance = Node;
|
67
|
+
type SuspenseInstance = Instance;
|
68
|
+
type HydratableInstance = Instance;
|
69
|
+
type PublicInstance = Instance;
|
70
|
+
type HostContext = null;
|
71
|
+
type UpdatePayload = Container;
|
72
|
+
type ChildSet = Node[];
|
73
|
+
type TimeoutHandle = NodeJS.Timeout;
|
74
|
+
type NoTimeout = -1;
|
75
|
+
|
76
|
+
type SkiaHostConfig = HostConfig<
|
77
|
+
NodeType,
|
78
|
+
Props,
|
79
|
+
Container,
|
80
|
+
Instance,
|
81
|
+
TextInstance,
|
82
|
+
SuspenseInstance,
|
83
|
+
HydratableInstance,
|
84
|
+
PublicInstance,
|
85
|
+
HostContext,
|
86
|
+
UpdatePayload,
|
87
|
+
ChildSet,
|
88
|
+
TimeoutHandle,
|
89
|
+
NoTimeout
|
90
|
+
>;
|
91
|
+
|
92
|
+
export const sksgHostConfig: SkiaHostConfig = {
|
93
|
+
/**
|
94
|
+
* This function is used by the reconciler in order to calculate current time for prioritising work.
|
95
|
+
*/
|
96
|
+
supportsMutation: false,
|
97
|
+
isPrimaryRenderer: false,
|
98
|
+
supportsPersistence: true,
|
99
|
+
supportsHydration: false,
|
100
|
+
//supportsMicrotask: true,
|
101
|
+
scheduleTimeout: setTimeout,
|
102
|
+
cancelTimeout: clearTimeout,
|
103
|
+
noTimeout: -1,
|
104
|
+
|
105
|
+
getRootHostContext: (_rootContainerInstance: Container) => {
|
106
|
+
debug("getRootHostContext");
|
107
|
+
return null;
|
108
|
+
},
|
109
|
+
|
110
|
+
getChildHostContext(_parentHostContext, _type, _rootContainerInstance) {
|
111
|
+
debug("getChildHostContext");
|
112
|
+
return null;
|
113
|
+
},
|
114
|
+
|
115
|
+
shouldSetTextContent(_type, _props) {
|
116
|
+
return false;
|
117
|
+
},
|
118
|
+
|
119
|
+
createTextInstance(
|
120
|
+
_text,
|
121
|
+
_rootContainerInstance,
|
122
|
+
_hostContext,
|
123
|
+
_internalInstanceHandle
|
124
|
+
) {
|
125
|
+
debug("createTextInstance");
|
126
|
+
// return SpanNode({}, text) as SkNode;
|
127
|
+
throw new Error("Text nodes are not supported yet");
|
128
|
+
},
|
129
|
+
|
130
|
+
createInstance(
|
131
|
+
type,
|
132
|
+
props,
|
133
|
+
container,
|
134
|
+
_hostContext,
|
135
|
+
_internalInstanceHandle
|
136
|
+
) {
|
137
|
+
debug("createInstance", type);
|
138
|
+
container.registerValues(props);
|
139
|
+
const instance = {
|
140
|
+
type,
|
141
|
+
isDeclaration: isDeclaration(type),
|
142
|
+
props,
|
143
|
+
children: [],
|
144
|
+
};
|
145
|
+
return instance;
|
146
|
+
},
|
147
|
+
|
148
|
+
appendInitialChild(parentInstance: Instance, child: Instance | TextInstance) {
|
149
|
+
parentInstance.children.push(child);
|
150
|
+
},
|
151
|
+
|
152
|
+
finalizeInitialChildren(
|
153
|
+
parentInstance,
|
154
|
+
_type,
|
155
|
+
_props,
|
156
|
+
_rootContainerInstance,
|
157
|
+
_hostContext
|
158
|
+
) {
|
159
|
+
debug("finalizeInitialChildren", parentInstance);
|
160
|
+
return false;
|
161
|
+
},
|
162
|
+
|
163
|
+
commitMount() {
|
164
|
+
// if finalizeInitialChildren = true
|
165
|
+
debug("commitMount");
|
166
|
+
},
|
167
|
+
|
168
|
+
prepareForCommit(_containerInfo) {
|
169
|
+
debug("prepareForCommit");
|
170
|
+
return null;
|
171
|
+
},
|
172
|
+
|
173
|
+
resetAfterCommit(container) {
|
174
|
+
debug("resetAfterCommit");
|
175
|
+
container.redraw();
|
176
|
+
},
|
177
|
+
|
178
|
+
getPublicInstance(node: Instance) {
|
179
|
+
debug("getPublicInstance");
|
180
|
+
return node;
|
181
|
+
},
|
182
|
+
|
183
|
+
commitTextUpdate: (
|
184
|
+
_textInstance: TextInstance,
|
185
|
+
_oldText: string,
|
186
|
+
_newText: string
|
187
|
+
) => {
|
188
|
+
// textInstance.instance = newText;
|
189
|
+
},
|
190
|
+
|
191
|
+
clearContainer: (container) => {
|
192
|
+
debug("clearContainer");
|
193
|
+
container.clear();
|
194
|
+
},
|
195
|
+
|
196
|
+
prepareUpdate(
|
197
|
+
_instance: Instance,
|
198
|
+
_type: string,
|
199
|
+
oldProps: Props,
|
200
|
+
newProps: Props,
|
201
|
+
container: Container,
|
202
|
+
_hostContext: HostContext
|
203
|
+
) {
|
204
|
+
debug("prepareUpdate");
|
205
|
+
const propsAreEqual = shallowEq(oldProps, newProps);
|
206
|
+
if (propsAreEqual) {
|
207
|
+
return null;
|
208
|
+
}
|
209
|
+
container.unregisterValues(oldProps);
|
210
|
+
container.registerValues(newProps);
|
211
|
+
return container;
|
212
|
+
},
|
213
|
+
|
214
|
+
preparePortalMount: () => {
|
215
|
+
debug("preparePortalMount");
|
216
|
+
},
|
217
|
+
|
218
|
+
cloneInstance(
|
219
|
+
instance,
|
220
|
+
_updatePayload,
|
221
|
+
_type,
|
222
|
+
_oldProps,
|
223
|
+
newProps,
|
224
|
+
_internalInstanceHandle,
|
225
|
+
keepChildren: boolean,
|
226
|
+
_recyclableInstance: null | Instance
|
227
|
+
) {
|
228
|
+
debug("cloneInstance");
|
229
|
+
|
230
|
+
return {
|
231
|
+
type: instance.type,
|
232
|
+
props: newProps,
|
233
|
+
children: keepChildren ? [...instance.children] : [],
|
234
|
+
isDeclaration: instance.isDeclaration,
|
235
|
+
};
|
236
|
+
},
|
237
|
+
|
238
|
+
createContainerChildSet(): ChildSet {
|
239
|
+
debug("createContainerChildSet");
|
240
|
+
return [];
|
241
|
+
},
|
242
|
+
|
243
|
+
appendChildToContainerChildSet(
|
244
|
+
childSet: ChildSet,
|
245
|
+
child: Instance | TextInstance
|
246
|
+
): void {
|
247
|
+
childSet.push(child);
|
248
|
+
},
|
249
|
+
|
250
|
+
finalizeContainerChildren(container: Container, newChildren: ChildSet) {
|
251
|
+
debug("finalizeContainerChildren");
|
252
|
+
container.root = newChildren;
|
253
|
+
},
|
254
|
+
|
255
|
+
replaceContainerChildren(container: Container, newChildren: ChildSet) {
|
256
|
+
debug("replaceContainerChildren");
|
257
|
+
container.root = newChildren;
|
258
|
+
},
|
259
|
+
|
260
|
+
cloneHiddenInstance(
|
261
|
+
_instance: Instance,
|
262
|
+
_type: string,
|
263
|
+
_props: Props
|
264
|
+
): Instance {
|
265
|
+
debug("cloneHiddenInstance");
|
266
|
+
throw new Error("Not yet implemented.");
|
267
|
+
},
|
268
|
+
|
269
|
+
cloneHiddenTextInstance(_instance: Instance, _text: string): TextInstance {
|
270
|
+
debug("cloneHiddenTextInstance");
|
271
|
+
throw new Error("Not yet implemented.");
|
272
|
+
},
|
273
|
+
// see https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874
|
274
|
+
getCurrentEventPriority: () => DefaultEventPriority,
|
275
|
+
beforeActiveInstanceBlur: () => {},
|
276
|
+
afterActiveInstanceBlur: () => {},
|
277
|
+
detachDeletedInstance: () => {},
|
278
|
+
getInstanceFromNode: function (_node): Fiber | null | undefined {
|
279
|
+
throw new Error("Function not implemented.");
|
280
|
+
},
|
281
|
+
prepareScopeUpdate: function (_scopeInstance, _instance): void {
|
282
|
+
throw new Error("Function not implemented.");
|
283
|
+
},
|
284
|
+
getInstanceFromScope: function (_scopeInstance): Instance | null {
|
285
|
+
throw new Error("Function not implemented.");
|
286
|
+
},
|
287
|
+
};
|
@@ -0,0 +1,59 @@
|
|
1
|
+
import type { ReactNode } from "react";
|
2
|
+
import type { OpaqueRoot } from "react-reconciler";
|
3
|
+
import ReactReconciler from "react-reconciler";
|
4
|
+
|
5
|
+
import type { SkCanvas, Skia } from "../skia/types";
|
6
|
+
import { NodeType } from "../dom/types";
|
7
|
+
|
8
|
+
import { debug, sksgHostConfig } from "./HostConfig";
|
9
|
+
import { Container } from "./Container";
|
10
|
+
|
11
|
+
const skiaReconciler = ReactReconciler(sksgHostConfig);
|
12
|
+
|
13
|
+
skiaReconciler.injectIntoDevTools({
|
14
|
+
bundleType: 1,
|
15
|
+
version: "0.0.1",
|
16
|
+
rendererPackageName: "react-native-skia",
|
17
|
+
});
|
18
|
+
|
19
|
+
export class SkiaSGRoot {
|
20
|
+
private root: OpaqueRoot;
|
21
|
+
private container: Container;
|
22
|
+
|
23
|
+
constructor(Skia: Skia, nativeId = -1) {
|
24
|
+
this.container = new Container(Skia, nativeId);
|
25
|
+
this.root = skiaReconciler.createContainer(
|
26
|
+
this.container,
|
27
|
+
0,
|
28
|
+
null,
|
29
|
+
true,
|
30
|
+
null,
|
31
|
+
"",
|
32
|
+
console.error,
|
33
|
+
null
|
34
|
+
);
|
35
|
+
}
|
36
|
+
|
37
|
+
get sg() {
|
38
|
+
const children = this.container.root;
|
39
|
+
return { type: NodeType.Group, props: {}, children, isDeclaration: false };
|
40
|
+
}
|
41
|
+
|
42
|
+
render(element: ReactNode) {
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
44
|
+
skiaReconciler.updateContainer(element as any, this.root, null, () => {
|
45
|
+
debug("updateContainer");
|
46
|
+
});
|
47
|
+
}
|
48
|
+
|
49
|
+
drawOnCanvas(canvas: SkCanvas) {
|
50
|
+
this.container.drawOnCanvas(canvas);
|
51
|
+
}
|
52
|
+
|
53
|
+
unmount() {
|
54
|
+
this.container.unmounted = true;
|
55
|
+
skiaReconciler.updateContainer(null, this.root, null, () => {
|
56
|
+
debug("unmountContainer");
|
57
|
+
});
|
58
|
+
}
|
59
|
+
}
|