@shopify/react-native-skia 0.1.158 → 0.1.159
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/CMakeLists.txt +35 -11
- package/android/build.gradle +21 -25
- package/android/cpp/jni/JniLoad.cpp +2 -0
- package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
- package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
- package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
- package/cpp/api/JsiSkHostObjects.h +6 -0
- package/cpp/api/JsiSkImageFilterFactory.h +1 -1
- package/cpp/api/JsiSkPaint.h +9 -2
- package/cpp/api/JsiSkPath.h +1 -0
- package/cpp/api/JsiSkRuntimeEffect.h +36 -36
- package/cpp/jsi/JsiHostObject.cpp +16 -28
- package/cpp/jsi/JsiHostObject.h +127 -7
- package/cpp/jsi/JsiValue.cpp +346 -0
- package/cpp/jsi/JsiValue.h +222 -0
- package/cpp/jsi/JsiValueWrapper.h +33 -5
- package/cpp/rnskia/RNSkDomView.cpp +220 -0
- package/cpp/rnskia/RNSkDomView.h +140 -0
- package/cpp/rnskia/RNSkJsView.cpp +0 -4
- package/cpp/rnskia/RNSkJsView.h +6 -4
- package/cpp/rnskia/RNSkManager.cpp +7 -0
- package/cpp/rnskia/RNSkPictureView.h +5 -8
- package/cpp/rnskia/RNSkView.h +113 -5
- package/cpp/rnskia/dom/JsiDomApi.h +167 -0
- package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
- package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
- package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
- package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
- package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
- package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
- package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
- package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
- package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
- package/cpp/rnskia/dom/base/NodeProp.h +130 -0
- package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
- package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
- package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
- package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
- package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
- package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
- package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
- package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
- package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
- package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
- package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
- package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
- package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
- package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
- package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
- package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
- package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
- package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
- package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
- package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
- package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
- package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
- package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
- package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
- package/cpp/rnskia/dom/props/BezierProps.h +63 -0
- package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
- package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
- package/cpp/rnskia/dom/props/CircleProp.h +46 -0
- package/cpp/rnskia/dom/props/ClipProp.h +62 -0
- package/cpp/rnskia/dom/props/ColorProp.h +80 -0
- package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
- package/cpp/rnskia/dom/props/FontProp.h +34 -0
- package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
- package/cpp/rnskia/dom/props/ImageProps.h +173 -0
- package/cpp/rnskia/dom/props/LayerProp.h +50 -0
- package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
- package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
- package/cpp/rnskia/dom/props/PaintProps.h +172 -0
- package/cpp/rnskia/dom/props/PathProp.h +55 -0
- package/cpp/rnskia/dom/props/PictureProp.h +38 -0
- package/cpp/rnskia/dom/props/PointProp.h +72 -0
- package/cpp/rnskia/dom/props/PointsProp.h +83 -0
- package/cpp/rnskia/dom/props/RRectProp.h +134 -0
- package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
- package/cpp/rnskia/dom/props/RectProp.h +118 -0
- package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
- package/cpp/rnskia/dom/props/SvgProp.h +37 -0
- package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
- package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
- package/cpp/rnskia/dom/props/TransformProp.h +80 -0
- package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
- package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
- package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
- package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
- package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
- package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
- package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
- package/cpp/skia/include/codec/SkCodec.h +8 -5
- package/cpp/skia/include/core/SkAnnotation.h +2 -0
- package/cpp/skia/include/core/SkBitmap.h +52 -1
- package/cpp/skia/include/core/SkBlendMode.h +2 -0
- package/cpp/skia/include/core/SkCanvas.h +52 -31
- package/cpp/skia/include/core/SkCapabilities.h +44 -0
- package/cpp/skia/include/core/SkColor.h +7 -0
- package/cpp/skia/include/core/SkColorFilter.h +37 -0
- package/cpp/skia/include/core/SkColorSpace.h +1 -1
- package/cpp/skia/include/core/SkFont.h +4 -0
- package/cpp/skia/include/core/SkFontMgr.h +3 -0
- package/cpp/skia/include/core/SkGraphics.h +9 -0
- package/cpp/skia/include/core/SkImage.h +77 -17
- package/cpp/skia/include/core/SkImageEncoder.h +5 -3
- package/cpp/skia/include/core/SkImageGenerator.h +27 -17
- package/cpp/skia/include/core/SkM44.h +1 -0
- package/cpp/skia/include/core/SkMesh.h +120 -34
- package/cpp/skia/include/core/SkMilestone.h +1 -1
- package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
- package/cpp/skia/include/core/SkPaint.h +15 -2
- package/cpp/skia/include/core/SkPath.h +4 -0
- package/cpp/skia/include/core/SkPathBuilder.h +1 -1
- package/cpp/skia/include/core/SkPicture.h +0 -3
- package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
- package/cpp/skia/include/core/SkPixmap.h +19 -0
- package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
- package/cpp/skia/include/core/SkRect.h +11 -4
- package/cpp/skia/include/core/SkRefCnt.h +13 -1
- package/cpp/skia/include/core/SkRegion.h +6 -0
- package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
- package/cpp/skia/include/core/SkScalar.h +6 -25
- package/cpp/skia/include/core/SkShader.h +20 -12
- package/cpp/skia/include/core/SkSpan.h +51 -19
- package/cpp/skia/include/core/SkStream.h +2 -2
- package/cpp/skia/include/core/SkString.h +11 -3
- package/cpp/skia/include/core/SkSurface.h +85 -8
- package/cpp/skia/include/core/SkTextBlob.h +5 -2
- package/cpp/skia/include/core/SkTypes.h +11 -10
- package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
- package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
- package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
- package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
- package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
- package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
- package/cpp/skia/include/effects/SkGradientShader.h +68 -38
- package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
- package/cpp/skia/include/effects/SkImageFilters.h +5 -4
- package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
- package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
- package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
- package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
- package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
- package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
- package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
- package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
- package/cpp/skia/include/encode/SkEncoder.h +17 -0
- package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
- package/cpp/skia/include/gpu/GpuTypes.h +18 -0
- package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
- package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
- package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
- package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
- package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
- package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
- package/cpp/skia/include/gpu/GrTypes.h +11 -11
- package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
- package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
- package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
- package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
- package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
- package/cpp/skia/include/gpu/graphite/Context.h +47 -55
- package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
- package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
- package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
- package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
- package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
- package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
- package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
- package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
- package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
- package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
- package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
- package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
- package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
- package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
- package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
- package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
- package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
- package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
- package/cpp/skia/include/pathops/SkPathOps.h +1 -1
- package/cpp/skia/include/private/SkColorData.h +10 -40
- package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
- package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
- package/cpp/skia/include/private/SkHalf.h +5 -52
- package/cpp/skia/include/private/SkMacros.h +1 -1
- package/cpp/skia/include/private/SkMalloc.h +4 -0
- package/cpp/skia/include/private/SkPathRef.h +10 -10
- package/cpp/skia/include/private/SkSLModifiers.h +59 -23
- package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
- package/cpp/skia/include/private/SkSLSymbol.h +7 -3
- package/cpp/skia/include/private/SkStringView.h +4 -0
- package/cpp/skia/include/private/SkTArray.h +21 -7
- package/cpp/skia/include/private/SkTDArray.h +173 -285
- package/cpp/skia/include/private/SkTHash.h +33 -32
- package/cpp/skia/include/private/SkTemplates.h +24 -26
- package/cpp/skia/include/private/SkVx.h +218 -135
- package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
- package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
- package/cpp/skia/include/private/chromium/Slug.h +76 -0
- package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
- package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
- package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
- package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
- package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
- package/cpp/skia/include/sksl/DSL.h +0 -1
- package/cpp/skia/include/sksl/DSLBlock.h +4 -18
- package/cpp/skia/include/sksl/DSLCase.h +2 -8
- package/cpp/skia/include/sksl/DSLCore.h +8 -15
- package/cpp/skia/include/sksl/DSLExpression.h +51 -142
- package/cpp/skia/include/sksl/DSLFunction.h +7 -15
- package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
- package/cpp/skia/include/sksl/DSLStatement.h +4 -39
- package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
- package/cpp/skia/include/sksl/DSLType.h +20 -12
- package/cpp/skia/include/sksl/DSLVar.h +56 -146
- package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
- package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
- package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
- package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
- package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
- package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
- package/cpp/skia/include/utils/SkBase64.h +2 -0
- package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
- package/cpp/skia/include/utils/SkEventTracer.h +12 -1
- package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
- package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
- package/cpp/skia/include/utils/SkParse.h +3 -0
- package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
- package/cpp/skia/include/utils/SkTextUtils.h +2 -1
- package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
- package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
- package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
- package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
- package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
- package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
- package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
- package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
- package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
- package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
- package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
- package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
- package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
- package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
- package/cpp/skia/src/core/SkLRUCache.h +126 -0
- package/cpp/skia/src/core/SkTInternalLList.h +302 -0
- package/cpp/utils/RNSkTimingInfo.h +1 -0
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
- package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
- package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
- package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
- package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +19 -63
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/DependencyManager.js +0 -5
- package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.js.map +1 -1
- package/lib/commonjs/renderer/useCanvas.js +4 -18
- package/lib/commonjs/renderer/useCanvas.js.map +1 -1
- package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
- package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
- package/lib/commonjs/views/SkiaDomView.js +152 -0
- package/lib/commonjs/views/SkiaDomView.js.map +1 -0
- package/lib/commonjs/views/SkiaDomView.web.js +55 -0
- package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
- package/lib/commonjs/views/SkiaPictureView.js +16 -2
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/SkiaView.js +17 -2
- package/lib/commonjs/views/SkiaView.js.map +1 -1
- package/lib/commonjs/views/index.js +13 -0
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.js +1 -1
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/renderer/Canvas.js +20 -64
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/DependencyManager.js +0 -5
- package/lib/module/renderer/DependencyManager.js.map +1 -1
- package/lib/module/renderer/HostComponents.js.map +1 -1
- package/lib/module/renderer/useCanvas.js +2 -13
- package/lib/module/renderer/useCanvas.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +7 -0
- package/lib/module/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/views/SkiaDomView.js +128 -0
- package/lib/module/views/SkiaDomView.js.map +1 -0
- package/lib/module/views/SkiaDomView.web.js +41 -0
- package/lib/module/views/SkiaDomView.web.js.map +1 -0
- package/lib/module/views/SkiaPictureView.js +14 -2
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/SkiaView.js +15 -2
- package/lib/module/views/SkiaView.js.map +1 -1
- package/lib/module/views/index.js +1 -0
- package/lib/module/views/index.js.map +1 -1
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
- package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
- package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
- package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
- package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
- package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
- package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
- package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
- package/lib/typescript/src/views/index.d.ts +1 -0
- package/lib/typescript/src/views/types.d.ts +12 -2
- package/libs/android/arm64-v8a/libskia.a +0 -0
- package/libs/android/arm64-v8a/libskottie.a +0 -0
- package/libs/android/arm64-v8a/libskparagraph.a +0 -0
- package/libs/android/arm64-v8a/libsksg.a +0 -0
- package/libs/android/arm64-v8a/libskshaper.a +0 -0
- package/libs/android/arm64-v8a/libskunicode.a +0 -0
- package/libs/android/arm64-v8a/libsvg.a +0 -0
- package/libs/android/armeabi-v7a/libskia.a +0 -0
- package/libs/android/armeabi-v7a/libskottie.a +0 -0
- package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
- package/libs/android/armeabi-v7a/libsksg.a +0 -0
- package/libs/android/armeabi-v7a/libskshaper.a +0 -0
- package/libs/android/armeabi-v7a/libskunicode.a +0 -0
- package/libs/android/armeabi-v7a/libsvg.a +0 -0
- package/libs/android/x86/libskia.a +0 -0
- package/libs/android/x86/libskottie.a +0 -0
- package/libs/android/x86/libskparagraph.a +0 -0
- package/libs/android/x86/libsksg.a +0 -0
- package/libs/android/x86/libskshaper.a +0 -0
- package/libs/android/x86/libskunicode.a +0 -0
- package/libs/android/x86/libsvg.a +0 -0
- package/libs/android/x86_64/libskia.a +0 -0
- package/libs/android/x86_64/libskottie.a +0 -0
- package/libs/android/x86_64/libskparagraph.a +0 -0
- package/libs/android/x86_64/libsksg.a +0 -0
- package/libs/android/x86_64/libskshaper.a +0 -0
- package/libs/android/x86_64/libskunicode.a +0 -0
- package/libs/android/x86_64/libsvg.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/ios/libsksg.xcframework/Info.plist +5 -5
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
- package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +5 -3
- package/react-native-skia.podspec +3 -1
- package/src/dom/nodes/JsiSkDOM.ts +170 -56
- package/src/dom/nodes/RenderNode.ts +1 -1
- package/src/renderer/Canvas.tsx +32 -56
- package/src/renderer/DependencyManager.tsx +0 -5
- package/src/renderer/HostComponents.ts +152 -1
- package/src/renderer/useCanvas.ts +1 -15
- package/src/views/SkiaBaseWebView.tsx +4 -0
- package/src/views/SkiaDomView.tsx +120 -0
- package/src/views/SkiaDomView.web.tsx +37 -0
- package/src/views/SkiaPictureView.tsx +10 -2
- package/src/views/SkiaView.tsx +11 -3
- package/src/views/index.ts +1 -0
- package/src/views/types.ts +19 -2
- package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
- package/cpp/skia/include/c/sk_canvas.h +0 -159
- package/cpp/skia/include/c/sk_colorspace.h +0 -25
- package/cpp/skia/include/c/sk_data.h +0 -65
- package/cpp/skia/include/c/sk_image.h +0 -71
- package/cpp/skia/include/c/sk_imageinfo.h +0 -62
- package/cpp/skia/include/c/sk_maskfilter.h +0 -47
- package/cpp/skia/include/c/sk_matrix.h +0 -49
- package/cpp/skia/include/c/sk_paint.h +0 -145
- package/cpp/skia/include/c/sk_path.h +0 -102
- package/cpp/skia/include/c/sk_picture.h +0 -70
- package/cpp/skia/include/c/sk_shader.h +0 -143
- package/cpp/skia/include/c/sk_surface.h +0 -73
- package/cpp/skia/include/c/sk_types.h +0 -278
- package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
- package/cpp/skia/include/private/SkNx.h +0 -430
- package/cpp/skia/include/private/SkNx_neon.h +0 -713
- package/cpp/skia/include/private/SkNx_sse.h +0 -823
- package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
- package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
|
@@ -34,8 +34,7 @@ JsiHostObject::~JsiHostObject() {
|
|
|
34
34
|
void JsiHostObject::set(jsi::Runtime &rt, const jsi::PropNameID &name,
|
|
35
35
|
const jsi::Value &value) {
|
|
36
36
|
|
|
37
|
-
auto
|
|
38
|
-
auto nameStr = nameVal.c_str();
|
|
37
|
+
auto nameStr = name.utf8(rt);
|
|
39
38
|
|
|
40
39
|
/** Check the static setters map */
|
|
41
40
|
const JsiPropertySettersMap &setters = getExportedPropertySettersMap();
|
|
@@ -54,8 +53,15 @@ void JsiHostObject::set(jsi::Runtime &rt, const jsi::PropNameID &name,
|
|
|
54
53
|
|
|
55
54
|
jsi::Value JsiHostObject::get(jsi::Runtime &runtime,
|
|
56
55
|
const jsi::PropNameID &name) {
|
|
57
|
-
auto
|
|
58
|
-
|
|
56
|
+
auto nameStr = name.utf8(runtime);
|
|
57
|
+
|
|
58
|
+
// Do the happy-paths first
|
|
59
|
+
|
|
60
|
+
// Check function cache
|
|
61
|
+
auto cachedFunc = _hostFunctionCache.find(nameStr);
|
|
62
|
+
if (cachedFunc != _hostFunctionCache.end()) {
|
|
63
|
+
return cachedFunc->second.asFunction(runtime);
|
|
64
|
+
}
|
|
59
65
|
|
|
60
66
|
// Check the static getters map
|
|
61
67
|
const JsiPropertyGettersMap &getters = getExportedPropertyGettersMap();
|
|
@@ -65,23 +71,6 @@ jsi::Value JsiHostObject::get(jsi::Runtime &runtime,
|
|
|
65
71
|
return dispatcher(runtime);
|
|
66
72
|
}
|
|
67
73
|
|
|
68
|
-
// Check the cache for functions
|
|
69
|
-
auto runtimeCache = _cache.find(&runtime);
|
|
70
|
-
JsiHostFunctionCache *currentCache;
|
|
71
|
-
if (runtimeCache != _cache.end()) {
|
|
72
|
-
currentCache = &runtimeCache->second;
|
|
73
|
-
// Check if the runtime cache as a cache of the host function
|
|
74
|
-
auto cachedFunc = runtimeCache->second.find(nameStr);
|
|
75
|
-
if (cachedFunc != runtimeCache->second.end()) {
|
|
76
|
-
return cachedFunc->second->asFunction(runtime);
|
|
77
|
-
}
|
|
78
|
-
} else {
|
|
79
|
-
// Create cache for this runtime
|
|
80
|
-
JsiHostFunctionCache runtimeCache;
|
|
81
|
-
_cache.emplace(&runtime, JsiHostFunctionCache{});
|
|
82
|
-
currentCache = &_cache.at(&runtime);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
74
|
// Check the static function map
|
|
86
75
|
const JsiFunctionMap &funcs = getExportedFunctionMap();
|
|
87
76
|
auto func = funcs.find(nameStr);
|
|
@@ -91,13 +80,12 @@ jsi::Value JsiHostObject::get(jsi::Runtime &runtime,
|
|
|
91
80
|
std::placeholders::_1, std::placeholders::_2,
|
|
92
81
|
std::placeholders::_3, std::placeholders::_4);
|
|
93
82
|
|
|
94
|
-
// Add to cache
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
return currentCache->at(nameStr)->asFunction(runtime);
|
|
83
|
+
// Add to cache - it is important to cache the results from the
|
|
84
|
+
// createFromHostFunction function which takes some time.
|
|
85
|
+
return _hostFunctionCache
|
|
86
|
+
.emplace(nameStr, jsi::Function::createFromHostFunction(runtime, name,
|
|
87
|
+
0, dispatcher))
|
|
88
|
+
.first->second.asFunction(runtime);
|
|
101
89
|
}
|
|
102
90
|
|
|
103
91
|
if (_funcMap.count(nameStr) > 0) {
|
package/cpp/jsi/JsiHostObject.h
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
#include <jsi/jsi.h>
|
|
4
4
|
|
|
5
5
|
#include <functional>
|
|
6
|
+
#include <map>
|
|
6
7
|
#include <memory>
|
|
7
8
|
#include <string>
|
|
8
9
|
#include <unordered_map>
|
|
@@ -123,12 +124,6 @@ using JsiPropertySettersMap =
|
|
|
123
124
|
std::unordered_map<std::string, void (JsiHostObject::*)(
|
|
124
125
|
jsi::Runtime &, const jsi::Value &)>;
|
|
125
126
|
|
|
126
|
-
using JsiHostFunctionCache =
|
|
127
|
-
std::unordered_map<std::string, std::unique_ptr<jsi::Function>>;
|
|
128
|
-
|
|
129
|
-
using JsiRuntimeCache =
|
|
130
|
-
std::unordered_map<jsi::Runtime *, JsiHostFunctionCache>;
|
|
131
|
-
|
|
132
127
|
/**
|
|
133
128
|
* Base class for jsi host objects
|
|
134
129
|
*/
|
|
@@ -240,9 +235,134 @@ protected:
|
|
|
240
235
|
});
|
|
241
236
|
}
|
|
242
237
|
|
|
238
|
+
/**
|
|
239
|
+
@Returns a reference to the argument at the given position in the arguments
|
|
240
|
+
array. Raises an error if the index is above the number of arguments.
|
|
241
|
+
@param runtime jsi::Runtime
|
|
242
|
+
@param arguments Arguments list
|
|
243
|
+
@param count Number of arguments in arguments list
|
|
244
|
+
@param index Index of parameter to return
|
|
245
|
+
*/
|
|
246
|
+
static const jsi::Value &getArgument(jsi::Runtime &runtime,
|
|
247
|
+
const jsi::Value *arguments,
|
|
248
|
+
size_t count, size_t index) {
|
|
249
|
+
if (index >= count) {
|
|
250
|
+
throw jsi::JSError(runtime, "Argument index out of bounds.");
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
return arguments[index];
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
Returns argument as number or throws
|
|
258
|
+
*/
|
|
259
|
+
static double getArgumentAsNumber(jsi::Runtime &runtime,
|
|
260
|
+
const jsi::Value *arguments, size_t count,
|
|
261
|
+
size_t index) {
|
|
262
|
+
const jsi::Value &value = getArgument(runtime, arguments, count, index);
|
|
263
|
+
if (!value.isNumber()) {
|
|
264
|
+
throw jsi::JSError(runtime,
|
|
265
|
+
"Expected type number for parameter at index " +
|
|
266
|
+
std::to_string(index));
|
|
267
|
+
}
|
|
268
|
+
return value.asNumber();
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
Returns argument as bool or throws
|
|
273
|
+
*/
|
|
274
|
+
static bool getArgumentAsBool(jsi::Runtime &runtime,
|
|
275
|
+
const jsi::Value *arguments, size_t count,
|
|
276
|
+
size_t index) {
|
|
277
|
+
const jsi::Value &value = getArgument(runtime, arguments, count, index);
|
|
278
|
+
if (!value.isBool()) {
|
|
279
|
+
throw jsi::JSError(runtime,
|
|
280
|
+
"Expected type boolean for parameter at index " +
|
|
281
|
+
std::to_string(index));
|
|
282
|
+
}
|
|
283
|
+
return value.getBool();
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
/**
|
|
287
|
+
Returns argument as string or throws
|
|
288
|
+
*/
|
|
289
|
+
static jsi::String getArgumentAsString(jsi::Runtime &runtime,
|
|
290
|
+
const jsi::Value *arguments,
|
|
291
|
+
size_t count, size_t index) {
|
|
292
|
+
const jsi::Value &value = getArgument(runtime, arguments, count, index);
|
|
293
|
+
if (!value.isString()) {
|
|
294
|
+
throw jsi::JSError(runtime,
|
|
295
|
+
"Expected type string for parameter at index " +
|
|
296
|
+
std::to_string(index));
|
|
297
|
+
}
|
|
298
|
+
return value.asString(runtime);
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
/**
|
|
302
|
+
Returns argument as object or throws
|
|
303
|
+
*/
|
|
304
|
+
static jsi::Object getArgumentAsObject(jsi::Runtime &runtime,
|
|
305
|
+
const jsi::Value *arguments,
|
|
306
|
+
size_t count, size_t index) {
|
|
307
|
+
const jsi::Value &value = getArgument(runtime, arguments, count, index);
|
|
308
|
+
if (!value.isObject()) {
|
|
309
|
+
throw jsi::JSError(runtime,
|
|
310
|
+
"Expected type object for parameter at index " +
|
|
311
|
+
std::to_string(index));
|
|
312
|
+
}
|
|
313
|
+
return value.asObject(runtime);
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
Returns argument as host object or throws
|
|
318
|
+
*/
|
|
319
|
+
template <typename T = HostObject>
|
|
320
|
+
static std::shared_ptr<T>
|
|
321
|
+
getArgumentAsHostObject(jsi::Runtime &runtime, const jsi::Value *arguments,
|
|
322
|
+
size_t count, size_t index) {
|
|
323
|
+
auto value = getArgumentAsObject(runtime, arguments, count, index);
|
|
324
|
+
if (!value.isHostObject(runtime)) {
|
|
325
|
+
throw jsi::JSError(runtime,
|
|
326
|
+
"Expected type host object for parameter at index " +
|
|
327
|
+
std::to_string(index));
|
|
328
|
+
}
|
|
329
|
+
return value.asHostObject<T>(runtime);
|
|
330
|
+
}
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
Returns argument as array or throws
|
|
334
|
+
*/
|
|
335
|
+
static jsi::Array getArgumentAsArray(jsi::Runtime &runtime,
|
|
336
|
+
const jsi::Value *arguments,
|
|
337
|
+
size_t count, size_t index) {
|
|
338
|
+
auto value = getArgumentAsObject(runtime, arguments, count, index);
|
|
339
|
+
if (!value.isArray(runtime)) {
|
|
340
|
+
throw jsi::JSError(runtime,
|
|
341
|
+
"Expected type array for parameter at index " +
|
|
342
|
+
std::to_string(index));
|
|
343
|
+
}
|
|
344
|
+
return value.asArray(runtime);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
Returns argument as function or throws
|
|
349
|
+
*/
|
|
350
|
+
static jsi::Object getArgumentAsFunction(jsi::Runtime &runtime,
|
|
351
|
+
const jsi::Value *arguments,
|
|
352
|
+
size_t count, size_t index) {
|
|
353
|
+
auto value = getArgumentAsObject(runtime, arguments, count, index);
|
|
354
|
+
if (!value.isFunction(runtime)) {
|
|
355
|
+
throw jsi::JSError(runtime,
|
|
356
|
+
"Expected type function for parameter at index " +
|
|
357
|
+
std::to_string(index));
|
|
358
|
+
}
|
|
359
|
+
return value.asFunction(runtime);
|
|
360
|
+
}
|
|
361
|
+
|
|
243
362
|
private:
|
|
244
363
|
std::unordered_map<std::string, jsi::HostFunctionType> _funcMap;
|
|
245
364
|
std::unordered_map<std::string, JsPropertyType> _propMap;
|
|
246
|
-
|
|
365
|
+
|
|
366
|
+
std::map<std::string, jsi::Function> _hostFunctionCache;
|
|
247
367
|
};
|
|
248
368
|
} // namespace RNJsi
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
#include "JsiValue.h"
|
|
2
|
+
|
|
3
|
+
namespace RNJsi {
|
|
4
|
+
|
|
5
|
+
JsiValue::JsiValue() : _type(PropType::Undefined) {}
|
|
6
|
+
|
|
7
|
+
JsiValue::JsiValue(jsi::Runtime &runtime, const jsi::Value &value)
|
|
8
|
+
: JsiValue() {
|
|
9
|
+
setCurrent(runtime, value);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
void JsiValue::setCurrent(jsi::Runtime &runtime, const jsi::Value &value) {
|
|
13
|
+
_stringValue = "";
|
|
14
|
+
_hostObject = nullptr;
|
|
15
|
+
_hostFunction = nullptr;
|
|
16
|
+
_props.clear();
|
|
17
|
+
_array.clear();
|
|
18
|
+
_keysCache.clear();
|
|
19
|
+
|
|
20
|
+
if (value.isNumber()) {
|
|
21
|
+
_type = PropType::Number;
|
|
22
|
+
_numberValue = value.asNumber();
|
|
23
|
+
} else if (value.isBool()) {
|
|
24
|
+
_type = PropType::Bool;
|
|
25
|
+
_boolValue = value.getBool();
|
|
26
|
+
} else if (value.isString()) {
|
|
27
|
+
_type = PropType::String;
|
|
28
|
+
_stringValue = value.asString(runtime).utf8(runtime);
|
|
29
|
+
} else if (value.isUndefined()) {
|
|
30
|
+
_type = PropType::Undefined;
|
|
31
|
+
} else if (value.isNull()) {
|
|
32
|
+
_type = PropType::Null;
|
|
33
|
+
} else if (value.isObject()) {
|
|
34
|
+
setObject(runtime, value);
|
|
35
|
+
} else {
|
|
36
|
+
throw std::runtime_error("Could not store jsi::Value of provided type");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
bool JsiValue::getAsBool() const {
|
|
41
|
+
if (_type != PropType::Bool) {
|
|
42
|
+
throw std::runtime_error("Expected type bool, got " +
|
|
43
|
+
getTypeAsString(_type));
|
|
44
|
+
}
|
|
45
|
+
return _boolValue;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
double JsiValue::getAsNumber() const {
|
|
49
|
+
if (_type != PropType::Number) {
|
|
50
|
+
throw std::runtime_error("Expected type number, got " +
|
|
51
|
+
getTypeAsString(_type));
|
|
52
|
+
}
|
|
53
|
+
return _numberValue;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const std::string &JsiValue::getAsString() const {
|
|
57
|
+
if (_type == PropType::Number) {
|
|
58
|
+
return std::move(std::to_string(_numberValue));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (_type != PropType::String) {
|
|
62
|
+
throw std::runtime_error("Expected type string, got " +
|
|
63
|
+
getTypeAsString(_type));
|
|
64
|
+
}
|
|
65
|
+
return _stringValue;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const std::vector<JsiValue> &JsiValue::getAsArray() const {
|
|
69
|
+
if (_type != PropType::Array) {
|
|
70
|
+
throw std::runtime_error("Expected type array, got " +
|
|
71
|
+
getTypeAsString(_type));
|
|
72
|
+
}
|
|
73
|
+
return _array;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
const JsiValue &JsiValue::getValue(PropId name) const {
|
|
77
|
+
if (_type != PropType::Object) {
|
|
78
|
+
throw std::runtime_error("Expected type object, got " +
|
|
79
|
+
getTypeAsString(_type));
|
|
80
|
+
}
|
|
81
|
+
return _props.at(name);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
bool JsiValue::hasValue(PropId name) const {
|
|
85
|
+
if (_type != PropType::Object) {
|
|
86
|
+
throw std::runtime_error("Expected type object, got " +
|
|
87
|
+
getTypeAsString(_type));
|
|
88
|
+
}
|
|
89
|
+
return _props.count(name) > 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
std::vector<PropId> JsiValue::getKeys() const {
|
|
93
|
+
if (_type != PropType::Object) {
|
|
94
|
+
throw std::runtime_error("Expected type object, got " +
|
|
95
|
+
getTypeAsString(_type));
|
|
96
|
+
}
|
|
97
|
+
return _keysCache;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
std::shared_ptr<jsi::HostObject> JsiValue::getAsHostObject() const {
|
|
101
|
+
if (_type != PropType::HostObject) {
|
|
102
|
+
throw std::runtime_error("Expected type host object, got " +
|
|
103
|
+
getTypeAsString(_type));
|
|
104
|
+
}
|
|
105
|
+
return _hostObject;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
jsi::HostFunctionType JsiValue::getAsHostFunction() const {
|
|
109
|
+
if (_type != PropType::HostFunction) {
|
|
110
|
+
throw std::runtime_error("Expected type host function, got " +
|
|
111
|
+
getTypeAsString(_type));
|
|
112
|
+
}
|
|
113
|
+
return _hostFunction;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
const jsi::HostFunctionType JsiValue::getAsFunction() const {
|
|
117
|
+
return getAsHostFunction();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
std::string JsiValue::asString() const {
|
|
121
|
+
switch (_type) {
|
|
122
|
+
case PropType::Null:
|
|
123
|
+
return "(null)";
|
|
124
|
+
case PropType::Undefined:
|
|
125
|
+
return "(undefined)";
|
|
126
|
+
case PropType::Number:
|
|
127
|
+
return std::to_string(_numberValue);
|
|
128
|
+
case PropType::Bool:
|
|
129
|
+
return std::to_string(_boolValue);
|
|
130
|
+
case PropType::String:
|
|
131
|
+
return _stringValue;
|
|
132
|
+
case PropType::Object:
|
|
133
|
+
return "[Object]";
|
|
134
|
+
case PropType::Array:
|
|
135
|
+
return "[Array]";
|
|
136
|
+
case PropType::HostObject:
|
|
137
|
+
return "[HostObject]";
|
|
138
|
+
case PropType::HostFunction:
|
|
139
|
+
return "[HostFunction]";
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
jsi::Value JsiValue::getAsJsiValue(jsi::Runtime &runtime) const {
|
|
144
|
+
switch (_type) {
|
|
145
|
+
case PropType::Undefined:
|
|
146
|
+
return jsi::Value::undefined();
|
|
147
|
+
case PropType::Null:
|
|
148
|
+
return jsi::Value::null();
|
|
149
|
+
case PropType::Number:
|
|
150
|
+
return _numberValue;
|
|
151
|
+
case PropType::Bool:
|
|
152
|
+
return _boolValue;
|
|
153
|
+
case PropType::String:
|
|
154
|
+
return jsi::String::createFromUtf8(runtime, _stringValue);
|
|
155
|
+
case PropType::Object:
|
|
156
|
+
return getObject(runtime);
|
|
157
|
+
case PropType::Array:
|
|
158
|
+
return getArray(runtime);
|
|
159
|
+
case PropType::HostObject:
|
|
160
|
+
return getHostObject(runtime);
|
|
161
|
+
case PropType::HostFunction:
|
|
162
|
+
return getHostFunction(runtime);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
std::string JsiValue::getTypeAsString(PropType type) {
|
|
167
|
+
switch (type) {
|
|
168
|
+
case PropType::Undefined:
|
|
169
|
+
return "undefined";
|
|
170
|
+
case PropType::Null:
|
|
171
|
+
return "null";
|
|
172
|
+
case PropType::Number:
|
|
173
|
+
return "number";
|
|
174
|
+
case PropType::Bool:
|
|
175
|
+
return "boolean";
|
|
176
|
+
case PropType::String:
|
|
177
|
+
return "string";
|
|
178
|
+
case PropType::Object:
|
|
179
|
+
return "object";
|
|
180
|
+
case PropType::Array:
|
|
181
|
+
return "array";
|
|
182
|
+
case PropType::HostObject:
|
|
183
|
+
return "hostobject";
|
|
184
|
+
case PropType::HostFunction:
|
|
185
|
+
return "hostfunction";
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
void JsiValue::setObject(jsi::Runtime &runtime, const jsi::Value &value) {
|
|
190
|
+
auto obj = value.asObject(runtime);
|
|
191
|
+
if (obj.isFunction(runtime)) {
|
|
192
|
+
setFunction(runtime, value);
|
|
193
|
+
} else if (obj.isArray(runtime)) {
|
|
194
|
+
setArray(runtime, obj);
|
|
195
|
+
} else if (obj.isHostObject(runtime)) {
|
|
196
|
+
setHostObject(runtime, obj);
|
|
197
|
+
} else {
|
|
198
|
+
_type = PropType::Object;
|
|
199
|
+
// Read object keys
|
|
200
|
+
auto keys = obj.getPropertyNames(runtime);
|
|
201
|
+
size_t size = keys.size(runtime);
|
|
202
|
+
_keysCache.clear();
|
|
203
|
+
_keysCache.reserve(size);
|
|
204
|
+
_props.clear();
|
|
205
|
+
_props.reserve(size);
|
|
206
|
+
|
|
207
|
+
for (size_t i = 0; i < size; ++i) {
|
|
208
|
+
auto key = JsiPropId::get(
|
|
209
|
+
keys.getValueAtIndex(runtime, i).asString(runtime).utf8(runtime));
|
|
210
|
+
try {
|
|
211
|
+
_props.try_emplace(key, runtime, obj.getProperty(runtime, key));
|
|
212
|
+
_keysCache.push_back(key);
|
|
213
|
+
} catch (jsi::JSError e) {
|
|
214
|
+
throw jsi::JSError(runtime,
|
|
215
|
+
"Could not set property for key " +
|
|
216
|
+
std::string(key) + ":\n" + e.getMessage(),
|
|
217
|
+
e.getStack());
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
jsi::Object JsiValue::getObject(jsi::Runtime &runtime) const {
|
|
224
|
+
assert(_type == PropType::Object);
|
|
225
|
+
auto obj = jsi::Object(runtime);
|
|
226
|
+
for (auto &p : _props) {
|
|
227
|
+
obj.setProperty(runtime, p.first, p.second.getAsJsiValue(runtime));
|
|
228
|
+
}
|
|
229
|
+
return obj;
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
bool JsiValue::operator!=(const JsiValue &other) const {
|
|
233
|
+
return !(this->operator==(other));
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
bool JsiValue::operator==(const JsiValue &other) const {
|
|
237
|
+
|
|
238
|
+
if (other.getType() != getType()) {
|
|
239
|
+
return false;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
switch (_type) {
|
|
243
|
+
case PropType::Null:
|
|
244
|
+
case PropType::Undefined:
|
|
245
|
+
return true;
|
|
246
|
+
case PropType::Number:
|
|
247
|
+
return _numberValue == other.getAsNumber();
|
|
248
|
+
case PropType::Bool:
|
|
249
|
+
return _boolValue == other.getAsBool();
|
|
250
|
+
case PropType::String:
|
|
251
|
+
return _stringValue == other.getAsString();
|
|
252
|
+
case PropType::Object: {
|
|
253
|
+
if (_props.size() != other.getProps().size()) {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
for (auto &p : _props) {
|
|
257
|
+
auto t = p.second.operator==(other.getValue(p.first));
|
|
258
|
+
if (!t) {
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return true;
|
|
263
|
+
}
|
|
264
|
+
case PropType::Array: {
|
|
265
|
+
auto otherArr = other.getAsArray();
|
|
266
|
+
if (_array.size() != otherArr.size()) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
for (size_t i = 0; i < _array.size(); ++i) {
|
|
270
|
+
if (!_array[i].operator==(otherArr[i])) {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
return true;
|
|
275
|
+
}
|
|
276
|
+
case PropType::HostObject:
|
|
277
|
+
return getAsHostObject() == other.getAsHostObject();
|
|
278
|
+
case PropType::HostFunction:
|
|
279
|
+
// Unable to compare host functions
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
throw std::runtime_error(
|
|
284
|
+
"Wrong type in equals call. Should not happen. File a bug.");
|
|
285
|
+
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
void JsiValue::setFunction(jsi::Runtime &runtime, const jsi::Value &value) {
|
|
290
|
+
auto func = value.asObject(runtime).asFunction(runtime);
|
|
291
|
+
if (func.isHostFunction(runtime)) {
|
|
292
|
+
_type = PropType::HostFunction;
|
|
293
|
+
_hostFunction = func.getHostFunction(runtime);
|
|
294
|
+
} else {
|
|
295
|
+
_type = PropType::HostFunction;
|
|
296
|
+
auto obj = std::make_shared<jsi::Object>(value.asObject(runtime));
|
|
297
|
+
_hostFunction = [obj](jsi::Runtime &runtime, const jsi::Value &thisValue,
|
|
298
|
+
const jsi::Value *arguments,
|
|
299
|
+
size_t count) -> jsi::Value {
|
|
300
|
+
auto func = obj->asFunction(runtime);
|
|
301
|
+
if (thisValue.isNull() || thisValue.isUndefined()) {
|
|
302
|
+
return func.call(runtime, arguments, count);
|
|
303
|
+
} else {
|
|
304
|
+
return func.callWithThis(runtime, thisValue.asObject(runtime),
|
|
305
|
+
arguments, count);
|
|
306
|
+
}
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
jsi::Object JsiValue::getHostFunction(jsi::Runtime &runtime) const {
|
|
312
|
+
assert(_type == PropType::HostFunction);
|
|
313
|
+
return jsi::Function::createFromHostFunction(
|
|
314
|
+
runtime, jsi::PropNameID::forUtf8(runtime, "fn"), 0, _hostFunction);
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
void JsiValue::setArray(jsi::Runtime &runtime, const jsi::Object &obj) {
|
|
318
|
+
_type = PropType::Array;
|
|
319
|
+
auto arr = obj.asArray(runtime);
|
|
320
|
+
size_t size = arr.size(runtime);
|
|
321
|
+
_array.reserve(size);
|
|
322
|
+
for (size_t i = 0; i < size; ++i) {
|
|
323
|
+
_array.emplace_back(runtime, arr.getValueAtIndex(runtime, i));
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
jsi::Array JsiValue::getArray(jsi::Runtime &runtime) const {
|
|
328
|
+
assert(_type == PropType::Array);
|
|
329
|
+
jsi::Array arr = jsi::Array(runtime, _array.size());
|
|
330
|
+
for (size_t i = 0; i < _array.size(); ++i) {
|
|
331
|
+
arr.setValueAtIndex(runtime, i, _array[i].getAsJsiValue(runtime));
|
|
332
|
+
}
|
|
333
|
+
return arr;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
void JsiValue::setHostObject(jsi::Runtime &runtime, const jsi::Object &obj) {
|
|
337
|
+
_type = PropType::HostObject;
|
|
338
|
+
_hostObject = obj.asHostObject(runtime);
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
jsi::Object JsiValue::getHostObject(jsi::Runtime &runtime) const {
|
|
342
|
+
assert(_type == PropType::HostObject);
|
|
343
|
+
return jsi::Object::createFromHostObject(runtime, _hostObject);
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
} // namespace RNJsi
|