@shopify/react-native-skia 1.7.5 → 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 +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/RRect.d.ts +1 -1
- package/lib/commonjs/skia/types/RRect.js +7 -3
- package/lib/commonjs/skia/types/RRect.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/skia/web/JsiSkParagraphStyle.js +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.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/SkiaDomView.js +3 -1
- package/lib/commonjs/views/SkiaDomView.js.map +1 -1
- 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 +2 -2
- 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/RRect.d.ts +1 -1
- package/lib/module/skia/types/RRect.js +7 -3
- package/lib/module/skia/types/RRect.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/skia/web/JsiSkParagraphStyle.js +1 -1
- package/lib/module/skia/web/JsiSkParagraphStyle.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/SkiaDomView.js +3 -1
- package/lib/module/views/SkiaDomView.js.map +1 -1
- 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/skia/types/RRect.d.ts +1 -1
- 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 -4
- 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/RRect.ts +9 -3
- package/src/skia/types/Shader/Shader.ts +7 -4
- package/src/skia/web/JsiSkParagraphStyle.ts +1 -3
- 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/SkiaDomView.tsx +3 -1
- 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
@@ -1,14 +1,16 @@
|
|
1
|
-
|
1
|
+
"worklet";
|
2
|
+
|
2
3
|
import type { CircleDef, ScalarCircleDef } from "../../types";
|
3
4
|
|
4
|
-
export const isCircleScalarDef = (def: CircleDef): def is ScalarCircleDef =>
|
5
|
+
export const isCircleScalarDef = (def: CircleDef): def is ScalarCircleDef => {
|
5
6
|
// We have an issue to check property existence on JSI backed instances
|
6
7
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
7
|
-
(def as any).cx !== undefined;
|
8
|
+
return (def as any).cx !== undefined;
|
9
|
+
};
|
8
10
|
|
9
|
-
export const processCircle = (
|
11
|
+
export const processCircle = (def: CircleDef) => {
|
10
12
|
if (isCircleScalarDef(def)) {
|
11
|
-
return { c:
|
13
|
+
return { c: { x: def.cx, y: def.cy }, r: def.r };
|
12
14
|
}
|
13
15
|
return { ...def, c: def.c ?? { x: 0, y: 0 } };
|
14
16
|
};
|
@@ -1,3 +1,5 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
1
3
|
import { exhaustiveCheck } from "../../../renderer/typeddash";
|
2
4
|
import type { SkRect } from "../../../skia/types";
|
3
5
|
import type { Fit } from "../../types";
|
@@ -8,7 +10,6 @@ export interface Size {
|
|
8
10
|
}
|
9
11
|
|
10
12
|
export const size = (width = 0, height = 0) => {
|
11
|
-
"worklet";
|
12
13
|
return { width, height };
|
13
14
|
};
|
14
15
|
|
@@ -21,7 +22,6 @@ export const rect2rect = (
|
|
21
22
|
{ scaleX: number },
|
22
23
|
{ scaleY: number }
|
23
24
|
] => {
|
24
|
-
"worklet";
|
25
25
|
const scaleX = dst.width / src.width;
|
26
26
|
const scaleY = dst.height / src.height;
|
27
27
|
const translateX = dst.x - src.x * scaleX;
|
@@ -33,7 +33,6 @@ const inscribe = (
|
|
33
33
|
{ width, height }: Size,
|
34
34
|
rect: { x: number; y: number; width: number; height: number }
|
35
35
|
) => {
|
36
|
-
"worklet";
|
37
36
|
const halfWidthDelta = (rect.width - width) / 2.0;
|
38
37
|
const halfHeightDelta = (rect.height - height) / 2.0;
|
39
38
|
return {
|
@@ -45,7 +44,6 @@ const inscribe = (
|
|
45
44
|
};
|
46
45
|
|
47
46
|
const applyBoxFit = (fit: Fit, input: Size, output: Size) => {
|
48
|
-
"worklet";
|
49
47
|
let src = size(),
|
50
48
|
dst = size();
|
51
49
|
if (
|
@@ -114,7 +112,6 @@ export const fitRects = (
|
|
114
112
|
rect: SkRect,
|
115
113
|
{ x, y, width, height }: SkRect
|
116
114
|
) => {
|
117
|
-
"worklet";
|
118
115
|
const sizes = applyBoxFit(
|
119
116
|
fit,
|
120
117
|
{ width: rect.width, height: rect.height },
|
@@ -1,3 +1,5 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
1
3
|
import type { Skia, SkRect, Transforms3d, Vector } from "../../../skia/types";
|
2
4
|
import { TileMode } from "../../../skia/types";
|
3
5
|
import type { GradientProps, ImageShaderProps } from "../../types";
|
@@ -35,13 +37,8 @@ export const getRect = (
|
|
35
37
|
const { x, y, width, height } = props;
|
36
38
|
if (props.rect) {
|
37
39
|
return props.rect;
|
38
|
-
} else if (
|
39
|
-
x
|
40
|
-
y !== undefined &&
|
41
|
-
width !== undefined &&
|
42
|
-
height !== undefined
|
43
|
-
) {
|
44
|
-
return Skia.XYWHRect(x, y, width, height);
|
40
|
+
} else if (width !== undefined && height !== undefined) {
|
41
|
+
return Skia.XYWHRect(x ?? 0, y ?? 0, width, height);
|
45
42
|
} else {
|
46
43
|
return undefined;
|
47
44
|
}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
1
3
|
import type { Skia } from "../../../skia/types";
|
2
4
|
import { isPath } from "../../../skia/types";
|
3
5
|
import type { PathDef } from "../../types";
|
@@ -14,5 +16,6 @@ export const processPath = (Skia: Skia, rawPath: PathDef) => {
|
|
14
16
|
};
|
15
17
|
|
16
18
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
17
|
-
export const isPathDef = (def: any): def is PathDef =>
|
18
|
-
typeof def === "string" || isPath(def);
|
19
|
+
export const isPathDef = (def: any): def is PathDef => {
|
20
|
+
return typeof def === "string" || isPath(def);
|
21
|
+
};
|
@@ -1,22 +1,25 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
1
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
2
|
-
import type { Skia, SkRect, Vector } from "../../../skia/types";
|
4
|
+
import type { Skia, SkRect, SkRRect, Vector } from "../../../skia/types";
|
3
5
|
import type { RectCtor, RectDef, RRectCtor, RRectDef } from "../../types";
|
4
6
|
|
5
7
|
import { processRadius } from "./Radius";
|
6
8
|
|
7
9
|
export const isEdge = (pos: Vector, b: SkRect) => {
|
8
|
-
"worklet";
|
9
10
|
return (
|
10
11
|
pos.x === b.x || pos.y === b.y || pos.x === b.width || pos.y === b.height
|
11
12
|
);
|
12
13
|
};
|
13
14
|
|
14
15
|
// We have an issue to check property existence on JSI backed instances
|
15
|
-
const isRRectCtor = (def: RRectDef): def is RRectCtor =>
|
16
|
-
(def as any).rect === undefined;
|
16
|
+
const isRRectCtor = (def: RRectDef): def is RRectCtor => {
|
17
|
+
return (def as any).rect === undefined;
|
18
|
+
};
|
17
19
|
// We have an issue to check property existence on JSI backed instances
|
18
|
-
const isRectCtor = (def: RectDef): def is RectCtor =>
|
19
|
-
(def as any).rect === undefined;
|
20
|
+
const isRectCtor = (def: RectDef): def is RectCtor => {
|
21
|
+
return (def as any).rect === undefined;
|
22
|
+
};
|
20
23
|
|
21
24
|
export const processRect = (Skia: Skia, def: RectDef) => {
|
22
25
|
if (isRectCtor(def)) {
|
@@ -38,3 +41,34 @@ export const processRRect = (Skia: Skia, def: RRectDef) => {
|
|
38
41
|
return def.rect;
|
39
42
|
}
|
40
43
|
};
|
44
|
+
|
45
|
+
export const inflate = (
|
46
|
+
Skia: Skia,
|
47
|
+
box: SkRRect,
|
48
|
+
dx: number,
|
49
|
+
dy: number,
|
50
|
+
tx = 0,
|
51
|
+
ty = 0
|
52
|
+
) => {
|
53
|
+
return Skia.RRectXY(
|
54
|
+
Skia.XYWHRect(
|
55
|
+
box.rect.x - dx + tx,
|
56
|
+
box.rect.y - dy + ty,
|
57
|
+
box.rect.width + 2 * dx,
|
58
|
+
box.rect.height + 2 * dy
|
59
|
+
),
|
60
|
+
box.rx + dx,
|
61
|
+
box.ry + dy
|
62
|
+
);
|
63
|
+
};
|
64
|
+
|
65
|
+
export const deflate = (
|
66
|
+
Skia: Skia,
|
67
|
+
box: SkRRect,
|
68
|
+
dx: number,
|
69
|
+
dy: number,
|
70
|
+
tx = 0,
|
71
|
+
ty = 0
|
72
|
+
) => {
|
73
|
+
return inflate(Skia, box, -dx, -dy, tx, ty);
|
74
|
+
};
|
@@ -1,5 +1,7 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
1
3
|
import type { TransformProps } from "../../types";
|
2
|
-
import type { SkMatrix } from "../../../skia/types";
|
4
|
+
import type { Skia, SkMatrix } from "../../../skia/types";
|
3
5
|
import { processTransform } from "../../../skia/types";
|
4
6
|
|
5
7
|
export const processTransformProps = (m3: SkMatrix, props: TransformProps) => {
|
@@ -22,3 +24,29 @@ export const processTransformProps = (m3: SkMatrix, props: TransformProps) => {
|
|
22
24
|
}
|
23
25
|
}
|
24
26
|
};
|
27
|
+
|
28
|
+
export const processTransformProps2 = (Skia: Skia, props: TransformProps) => {
|
29
|
+
const { transform, origin, matrix } = props;
|
30
|
+
if (matrix) {
|
31
|
+
const m3 = Skia.Matrix();
|
32
|
+
if (origin) {
|
33
|
+
m3.translate(origin.x, origin.y);
|
34
|
+
m3.concat(matrix);
|
35
|
+
m3.translate(-origin.x, -origin.y);
|
36
|
+
} else {
|
37
|
+
m3.concat(matrix);
|
38
|
+
}
|
39
|
+
return m3;
|
40
|
+
} else if (transform) {
|
41
|
+
const m3 = Skia.Matrix();
|
42
|
+
if (origin) {
|
43
|
+
m3.translate(origin.x, origin.y);
|
44
|
+
}
|
45
|
+
processTransform(m3, transform);
|
46
|
+
if (origin) {
|
47
|
+
m3.translate(-origin.x, -origin.y);
|
48
|
+
}
|
49
|
+
return m3;
|
50
|
+
}
|
51
|
+
return null;
|
52
|
+
};
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import type { SkRRect, Skia } from "../../../skia/types";
|
2
1
|
import { BlurStyle, ClipOp, isRRect } from "../../../skia/types";
|
3
2
|
import type { DrawingContext } from "../../types";
|
4
3
|
import { NodeType } from "../../types";
|
@@ -7,34 +6,7 @@ import type { NodeContext } from "../Node";
|
|
7
6
|
import { JsiDeclarationNode } from "../Node";
|
8
7
|
import { JsiRenderNode } from "../RenderNode";
|
9
8
|
import type { DeclarationContext } from "../../types/DeclarationContext";
|
10
|
-
|
11
|
-
const inflate = (
|
12
|
-
Skia: Skia,
|
13
|
-
box: SkRRect,
|
14
|
-
dx: number,
|
15
|
-
dy: number,
|
16
|
-
tx = 0,
|
17
|
-
ty = 0
|
18
|
-
) =>
|
19
|
-
Skia.RRectXY(
|
20
|
-
Skia.XYWHRect(
|
21
|
-
box.rect.x - dx + tx,
|
22
|
-
box.rect.y - dy + ty,
|
23
|
-
box.rect.width + 2 * dx,
|
24
|
-
box.rect.height + 2 * dy
|
25
|
-
),
|
26
|
-
box.rx + dx,
|
27
|
-
box.ry + dy
|
28
|
-
);
|
29
|
-
|
30
|
-
const deflate = (
|
31
|
-
Skia: Skia,
|
32
|
-
box: SkRRect,
|
33
|
-
dx: number,
|
34
|
-
dy: number,
|
35
|
-
tx = 0,
|
36
|
-
ty = 0
|
37
|
-
) => inflate(Skia, box, -dx, -dy, tx, ty);
|
9
|
+
import { deflate, inflate } from "../datatypes";
|
38
10
|
|
39
11
|
export class BoxShadowNode extends JsiDeclarationNode<BoxShadowProps> {
|
40
12
|
constructor(ctx: NodeContext, props: BoxShadowProps) {
|
@@ -1,3 +1,5 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
1
3
|
import type {
|
2
4
|
SkShader,
|
3
5
|
SkPaint,
|
@@ -25,8 +27,11 @@ export const composeDeclarations = <T>(filters: T[], composer: Composer<T>) => {
|
|
25
27
|
class Declaration<T> {
|
26
28
|
private decls: T[] = [];
|
27
29
|
private indexes = [0];
|
30
|
+
private composer?: Composer<T>;
|
28
31
|
|
29
|
-
constructor(
|
32
|
+
constructor(composer?: Composer<T>) {
|
33
|
+
this.composer = composer;
|
34
|
+
}
|
30
35
|
|
31
36
|
private get index() {
|
32
37
|
return this.indexes[this.indexes.length - 1];
|
@@ -53,6 +58,9 @@ class Declaration<T> {
|
|
53
58
|
}
|
54
59
|
|
55
60
|
popAllAsOne() {
|
61
|
+
if (this.decls.length === 0) {
|
62
|
+
return undefined;
|
63
|
+
}
|
56
64
|
if (!this.composer) {
|
57
65
|
throw new Error("No composer for this type of declaration");
|
58
66
|
}
|
@@ -62,6 +70,7 @@ class Declaration<T> {
|
|
62
70
|
}
|
63
71
|
|
64
72
|
export class DeclarationContext {
|
73
|
+
public Skia: Skia;
|
65
74
|
readonly paints: Declaration<SkPaint>;
|
66
75
|
readonly maskFilters: Declaration<SkMaskFilter>;
|
67
76
|
readonly shaders: Declaration<SkShader>;
|
@@ -69,7 +78,8 @@ export class DeclarationContext {
|
|
69
78
|
readonly imageFilters: Declaration<SkImageFilter>;
|
70
79
|
readonly colorFilters: Declaration<SkColorFilter>;
|
71
80
|
|
72
|
-
constructor(
|
81
|
+
constructor(Skia: Skia) {
|
82
|
+
this.Skia = Skia;
|
73
83
|
const peComp = this.Skia.PathEffect.MakeCompose.bind(this.Skia.PathEffect);
|
74
84
|
const ifComp = this.Skia.ImageFilter.MakeCompose.bind(
|
75
85
|
this.Skia.ImageFilter
|
@@ -6,13 +6,17 @@ import type { Node } from "../../dom/types";
|
|
6
6
|
|
7
7
|
import Rea from "./ReanimatedProxy";
|
8
8
|
|
9
|
-
let HAS_REANIMATED = false;
|
10
|
-
let HAS_REANIMATED_3 = false;
|
9
|
+
export let HAS_REANIMATED = false;
|
10
|
+
export let HAS_REANIMATED_3 = false;
|
11
11
|
try {
|
12
|
-
|
13
|
-
|
12
|
+
// This logic is convoluted but necessary
|
13
|
+
// In most systems, `require("react-native-reanimated")` throws an error, all is well.
|
14
|
+
// In webpack, in some configuration it will return an empty object.
|
15
|
+
// So it will not throw an error and we need to check the version to know if it's there.
|
14
16
|
const reanimatedVersion =
|
15
17
|
require("react-native-reanimated/package.json").version;
|
18
|
+
require("react-native-reanimated");
|
19
|
+
HAS_REANIMATED = !!reanimatedVersion;
|
16
20
|
if (
|
17
21
|
reanimatedVersion &&
|
18
22
|
(reanimatedVersion >= "3.0.0" || reanimatedVersion.includes("3.0.0-"))
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*global NodeJS*/
|
2
|
-
import type { HostConfig } from "react-reconciler";
|
2
|
+
import type { Fiber, HostConfig } from "react-reconciler";
|
3
3
|
import { DefaultEventPriority } from "react-reconciler/constants";
|
4
4
|
|
5
5
|
import type { NodeType, Node } from "../dom/types";
|
@@ -78,7 +78,6 @@ export const skHostConfig: SkiaHostConfig = {
|
|
78
78
|
/**
|
79
79
|
* This function is used by the reconciler in order to calculate current time for prioritising work.
|
80
80
|
*/
|
81
|
-
now: Date.now,
|
82
81
|
supportsMutation: true,
|
83
82
|
isPrimaryRenderer: false,
|
84
83
|
supportsPersistence: false,
|
@@ -242,11 +241,18 @@ export const skHostConfig: SkiaHostConfig = {
|
|
242
241
|
insertBefore: (parent, child, before) => {
|
243
242
|
insertBefore(parent, child, before);
|
244
243
|
},
|
244
|
+
|
245
245
|
// see https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874
|
246
|
-
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
247
|
-
// @ts-expect-error
|
248
246
|
getCurrentEventPriority: () => DefaultEventPriority,
|
249
247
|
beforeActiveInstanceBlur: () => {},
|
250
248
|
afterActiveInstanceBlur: () => {},
|
251
249
|
detachDeletedInstance: () => {},
|
250
|
+
|
251
|
+
getInstanceFromNode: function (_node): Fiber | null | undefined {
|
252
|
+
return null;
|
253
|
+
},
|
254
|
+
prepareScopeUpdate: function (_scopeInstance, _instance): void {},
|
255
|
+
getInstanceFromScope: function (_scopeInstance): Instance | null {
|
256
|
+
return null;
|
257
|
+
},
|
252
258
|
};
|
@@ -27,7 +27,7 @@ describe("Box", () => {
|
|
27
27
|
</Box>
|
28
28
|
</>
|
29
29
|
);
|
30
|
-
processResult(surface, docPath("box/shadows.png")
|
30
|
+
processResult(surface, docPath("box/shadows.png"));
|
31
31
|
});
|
32
32
|
it("should draw a box with red stroke", () => {
|
33
33
|
const size = width / 2;
|
@@ -41,6 +41,6 @@ describe("Box", () => {
|
|
41
41
|
/>
|
42
42
|
</>
|
43
43
|
);
|
44
|
-
processResult(surface, docPath("box/box-stroke.png")
|
44
|
+
processResult(surface, docPath("box/box-stroke.png"));
|
45
45
|
});
|
46
46
|
});
|
@@ -8,15 +8,13 @@ import type { Server, WebSocket } from "ws";
|
|
8
8
|
|
9
9
|
import type * as SkiaExports from "../../index";
|
10
10
|
import { JsiSkApi } from "../../skia/web/JsiSkia";
|
11
|
-
import type { Node } from "../../dom/nodes";
|
12
|
-
import { JsiSkDOM } from "../../dom/nodes";
|
13
11
|
import { Group } from "../components";
|
14
12
|
import type { SkImage, SkFont, Skia, SkCanvas } from "../../skia/types";
|
15
13
|
import { isPath } from "../../skia/types";
|
16
14
|
import { E2E } from "../../__tests__/setup";
|
17
|
-
import { SkiaRoot } from "../Reconciler";
|
18
|
-
import { JsiDrawingContext } from "../../dom/types/DrawingContext";
|
19
15
|
import { LoadSkiaWeb } from "../../web/LoadSkiaWeb";
|
16
|
+
import { SkiaSGRoot } from "../../sksg/Reconciler";
|
17
|
+
import type { Node } from "../../sksg/nodes";
|
20
18
|
|
21
19
|
import { SkiaObject } from "./e2e/setup";
|
22
20
|
|
@@ -172,11 +170,6 @@ export const importSkia = (): typeof SkiaExports => {
|
|
172
170
|
};
|
173
171
|
};
|
174
172
|
|
175
|
-
export const getSkDOM = () => {
|
176
|
-
const { Skia } = importSkia();
|
177
|
-
return new JsiSkDOM({ Skia }, false);
|
178
|
-
};
|
179
|
-
|
180
173
|
export const PIXEL_RATIO = 3;
|
181
174
|
export const fontSize = 32 * PIXEL_RATIO;
|
182
175
|
export const width = 256 * PIXEL_RATIO;
|
@@ -197,21 +190,20 @@ export const mountCanvas = (element: ReactNode) => {
|
|
197
190
|
expect(ckSurface).toBeDefined();
|
198
191
|
const canvas = ckSurface.getCanvas();
|
199
192
|
|
200
|
-
const root = new
|
193
|
+
const root = new SkiaSGRoot(Skia);
|
201
194
|
root.render(element);
|
202
195
|
return {
|
203
196
|
surface: ckSurface,
|
204
197
|
root,
|
205
198
|
draw: () => {
|
206
|
-
|
207
|
-
root.dom.render(ctx);
|
199
|
+
root.drawOnCanvas(canvas);
|
208
200
|
},
|
209
201
|
};
|
210
202
|
};
|
211
203
|
|
212
204
|
export const serialize = (element: ReactNode) => {
|
213
205
|
const { root } = mountCanvas(element);
|
214
|
-
const serialized = serializeNode(root.
|
206
|
+
const serialized = serializeNode(root.sg);
|
215
207
|
return JSON.stringify(serialized);
|
216
208
|
};
|
217
209
|
|
@@ -228,6 +220,8 @@ interface SerializedNode {
|
|
228
220
|
const serializeSkOjects = (obj: any): any => {
|
229
221
|
if (typeof obj === "function") {
|
230
222
|
return { __typename__: "Function", source: `${obj.toString()}` };
|
223
|
+
} else if (obj instanceof Float32Array) {
|
224
|
+
return { __typename__: "Float32Array", value: Array.from(obj) };
|
231
225
|
} else if (Array.isArray(obj)) {
|
232
226
|
return obj.map((item) => serializeSkOjects(item));
|
233
227
|
} else if (obj && typeof obj === "object" && "__typename__" in obj) {
|
@@ -302,13 +296,21 @@ const serializeSkOjects = (obj: any): any => {
|
|
302
296
|
ty: obj.ty,
|
303
297
|
};
|
304
298
|
}
|
299
|
+
} else if (obj && typeof obj === "object") {
|
300
|
+
const result = Object.keys(obj).reduce((acc, key) => {
|
301
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
302
|
+
// @ts-ignore
|
303
|
+
acc[key] = serializeSkOjects(obj[key]);
|
304
|
+
return acc;
|
305
|
+
}, {});
|
306
|
+
return result;
|
305
307
|
}
|
306
308
|
return obj;
|
307
309
|
};
|
308
310
|
|
309
311
|
const serializeNode = (node: Node<any>): SerializedNode => {
|
310
312
|
const props: any = {};
|
311
|
-
const ogProps = node.
|
313
|
+
const ogProps = node.props;
|
312
314
|
if (ogProps) {
|
313
315
|
Object.keys(ogProps)
|
314
316
|
.filter((key) => key !== "children")
|
@@ -319,7 +321,7 @@ const serializeNode = (node: Node<any>): SerializedNode => {
|
|
319
321
|
return {
|
320
322
|
type: node.type,
|
321
323
|
props,
|
322
|
-
children: node.children
|
324
|
+
children: node.children.map((child) => serializeNode(child)),
|
323
325
|
};
|
324
326
|
};
|
325
327
|
|
@@ -1,8 +1,4 @@
|
|
1
|
-
export type
|
2
|
-
value: T;
|
3
|
-
};
|
4
|
-
|
5
|
-
export type AnimatedProp<T> = T | SharedValueType<T>;
|
1
|
+
export type AnimatedProp<T> = T | { value: T };
|
6
2
|
|
7
3
|
export type AnimatedProps<T, O extends keyof T | never = never> = {
|
8
4
|
[K in keyof T]: K extends "children"
|
@@ -1,5 +1,7 @@
|
|
1
|
-
export const mapKeys = <T extends object>(obj: T) =>
|
2
|
-
|
1
|
+
export const mapKeys = <T extends object>(obj: T) => {
|
2
|
+
"worklet";
|
3
|
+
return Object.keys(obj) as (keyof T)[];
|
4
|
+
};
|
3
5
|
|
4
6
|
export const exhaustiveCheck = (a: never): never => {
|
5
7
|
"worklet";
|
@@ -1,7 +1,5 @@
|
|
1
|
-
import type { Node } from "../../dom/types";
|
2
|
-
import { mapKeys } from "../../renderer/typeddash";
|
3
1
|
import { LoadSkiaWeb } from "../../web/LoadSkiaWeb";
|
4
|
-
import {
|
2
|
+
import { Skia } from "../types";
|
5
3
|
import { JsiSkApi } from "../web";
|
6
4
|
|
7
5
|
let Skia: ReturnType<typeof JsiSkApi>;
|
@@ -27,51 +25,3 @@ export const setupSkia = (width = 256, height = 256) => {
|
|
27
25
|
CanvasKit: global.CanvasKit,
|
28
26
|
};
|
29
27
|
};
|
30
|
-
|
31
|
-
const asValue = (value: unknown) => {
|
32
|
-
if (value instanceof Float32Array) {
|
33
|
-
return Array.from(value)
|
34
|
-
.map((v) => Math.round(v * 100) / 100)
|
35
|
-
.join(", ");
|
36
|
-
} else if (isMatrix(value)) {
|
37
|
-
// TODO: https://github.com/Shopify/react-native-skia/issues/715
|
38
|
-
return "m3x3";
|
39
|
-
} else if (
|
40
|
-
typeof value === "object" &&
|
41
|
-
value !== null &&
|
42
|
-
"x" in value &&
|
43
|
-
"y" in value
|
44
|
-
) {
|
45
|
-
const v = value as { x: number; y: number };
|
46
|
-
return `{x:${v.x}, y:${v.y}}`;
|
47
|
-
}
|
48
|
-
return value;
|
49
|
-
};
|
50
|
-
|
51
|
-
export const printAsXML = (node: Node<unknown>) => {
|
52
|
-
console.log(asXML(node));
|
53
|
-
};
|
54
|
-
|
55
|
-
// Print nodes as XML tree
|
56
|
-
export const asXML = (node: Node<unknown>, indent = 0): string => {
|
57
|
-
// TODO: remove cast
|
58
|
-
const hasChildren = node.children().length > 0;
|
59
|
-
const props = node.getProps() as object;
|
60
|
-
const space = new Array(indent).fill(" ").join("");
|
61
|
-
const keys = mapKeys(props).filter((key) => props[key] !== undefined);
|
62
|
-
if (hasChildren) {
|
63
|
-
return `${space}<${node.type}${keys.length > 0 ? " " : ""}${keys
|
64
|
-
.map((name) => `${name}="${asValue(props[name])}"`)
|
65
|
-
.join(" ")}>
|
66
|
-
${node
|
67
|
-
.children()
|
68
|
-
|
69
|
-
.map((child) => asXML(child, indent + 2)).join(`
|
70
|
-
`)}
|
71
|
-
${space}</${node.type}>`;
|
72
|
-
} else {
|
73
|
-
return `${space}<${node.type} ${keys
|
74
|
-
.map((name) => `${name}="${asValue(props[name])}"`)
|
75
|
-
.join(" ")} />`;
|
76
|
-
}
|
77
|
-
};
|
@@ -47,8 +47,10 @@ export enum PathVerb {
|
|
47
47
|
|
48
48
|
export type PathCommand = number[];
|
49
49
|
|
50
|
-
export const isPath = (obj: SkJSIInstance<string> | null): obj is SkPath =>
|
51
|
-
|
50
|
+
export const isPath = (obj: SkJSIInstance<string> | null): obj is SkPath => {
|
51
|
+
"worklet";
|
52
|
+
return obj !== null && obj.__typename__ === "Path";
|
53
|
+
};
|
52
54
|
|
53
55
|
export interface SkPath extends SkJSIInstance<"Path"> {
|
54
56
|
/**
|
package/src/skia/types/RRect.ts
CHANGED
@@ -18,6 +18,12 @@ export interface NonUniformRRect {
|
|
18
18
|
export type InputRRect = SkRRect | NonUniformRRect;
|
19
19
|
|
20
20
|
// We have an issue to check property existence on JSI backed instances
|
21
|
-
export const isRRect = (def:
|
22
|
-
|
23
|
-
(
|
21
|
+
export const isRRect = (def: unknown): def is SkRRect => {
|
22
|
+
"worklet";
|
23
|
+
return (
|
24
|
+
typeof def === "object" &&
|
25
|
+
def !== null &&
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
27
|
+
typeof (def as any).rect === "object"
|
28
|
+
);
|
29
|
+
};
|
@@ -1,3 +1,5 @@
|
|
1
|
+
"worklet";
|
2
|
+
|
1
3
|
import type { SkJSIInstance } from "../JsiInstance";
|
2
4
|
import type { Vector } from "../Point";
|
3
5
|
import type { SkRuntimeEffect, SkRuntimeShaderBuilder } from "../RuntimeEffect";
|
@@ -18,12 +20,13 @@ export interface Uniforms {
|
|
18
20
|
[name: string]: Uniform;
|
19
21
|
}
|
20
22
|
|
21
|
-
const isVector = (obj: unknown): obj is Vector =>
|
23
|
+
const isVector = (obj: unknown): obj is Vector => {
|
22
24
|
// We have an issue to check property existence on JSI backed instances
|
23
25
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
24
|
-
(obj as any).x !== undefined && (obj as any).y !== undefined;
|
26
|
+
return (obj as any).x !== undefined && (obj as any).y !== undefined;
|
27
|
+
};
|
25
28
|
|
26
|
-
|
29
|
+
function processValue(values: number[], value: Uniform) {
|
27
30
|
if (typeof value === "number") {
|
28
31
|
values.push(value);
|
29
32
|
} else if (Array.isArray(value)) {
|
@@ -33,7 +36,7 @@ const processValue = (values: number[], value: Uniform) => {
|
|
33
36
|
} else if (value instanceof Float32Array) {
|
34
37
|
values.push(...value);
|
35
38
|
}
|
36
|
-
}
|
39
|
+
}
|
37
40
|
|
38
41
|
export const processUniforms = (
|
39
42
|
source: SkRuntimeEffect,
|
@@ -19,9 +19,7 @@ export class JsiSkParagraphStyle {
|
|
19
19
|
ps.replaceTabCharacters =
|
20
20
|
value.replaceTabCharacters ?? ps.replaceTabCharacters;
|
21
21
|
ps.textAlign =
|
22
|
-
value.textAlign !== undefined
|
23
|
-
? { value: value.textAlign }
|
24
|
-
: undefined ?? ps.textAlign;
|
22
|
+
value.textAlign !== undefined ? { value: value.textAlign } : ps.textAlign;
|
25
23
|
ps.textDirection =
|
26
24
|
value.textDirection !== undefined
|
27
25
|
? { value: value.textDirection === TextDirection.LTR ? 1 : 0 }
|