@shopify/react-native-skia 1.8.1 → 1.9.0

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.
Files changed (203) hide show
  1. package/android/cpp/rnskia-android/MainThreadDispatcher.h +1 -1
  2. package/android/cpp/rnskia-android/OpenGLContext.h +4 -4
  3. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +3 -3
  4. package/cpp/api/JsiSkCanvas.h +27 -25
  5. package/cpp/api/JsiSkImage.h +24 -0
  6. package/cpp/api/JsiSkPaint.h +1 -1
  7. package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +5 -1
  8. package/cpp/rnskia/dom/nodes/JsiImageNode.h +8 -4
  9. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +9 -38
  10. package/cpp/rnskia/dom/props/SamplingProp.h +54 -0
  11. package/ios/RNSkia-iOS/SkiaManager.mm +2 -4
  12. package/lib/commonjs/dom/types/Drawings.d.ts +3 -1
  13. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  14. package/lib/commonjs/dom/types/Shaders.d.ts +2 -3
  15. package/lib/commonjs/dom/types/Shaders.js.map +1 -1
  16. package/lib/commonjs/external/reanimated/useAnimatedImageValue.js +1 -8
  17. package/lib/commonjs/external/reanimated/useAnimatedImageValue.js.map +1 -1
  18. package/lib/commonjs/renderer/components/image/ImageShader.d.ts +1 -1
  19. package/lib/commonjs/renderer/components/image/ImageShader.js +0 -4
  20. package/lib/commonjs/renderer/components/image/ImageShader.js.map +1 -1
  21. package/lib/commonjs/skia/core/AnimatedImage.d.ts +1 -1
  22. package/lib/commonjs/skia/core/AnimatedImage.js +1 -1
  23. package/lib/commonjs/skia/core/AnimatedImage.js.map +1 -1
  24. package/lib/commonjs/skia/core/Data.d.ts +1 -1
  25. package/lib/commonjs/skia/core/Data.js +2 -8
  26. package/lib/commonjs/skia/core/Data.js.map +1 -1
  27. package/lib/commonjs/skia/types/Canvas.d.ts +2 -2
  28. package/lib/commonjs/skia/types/Canvas.js.map +1 -1
  29. package/lib/commonjs/skia/types/Image/Image.d.ts +18 -0
  30. package/lib/commonjs/skia/types/Image/Image.js +24 -1
  31. package/lib/commonjs/skia/types/Image/Image.js.map +1 -1
  32. package/lib/commonjs/skia/types/Picture/PictureRecorder.d.ts +2 -1
  33. package/lib/commonjs/skia/types/Picture/PictureRecorder.js.map +1 -1
  34. package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +2 -2
  35. package/lib/commonjs/skia/web/JsiSkCanvas.js +15 -2
  36. package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
  37. package/lib/commonjs/sksg/Container.d.ts +17 -14
  38. package/lib/commonjs/sksg/Container.js +59 -61
  39. package/lib/commonjs/sksg/Container.js.map +1 -1
  40. package/lib/commonjs/sksg/HostConfig.js +4 -9
  41. package/lib/commonjs/sksg/HostConfig.js.map +1 -1
  42. package/lib/commonjs/sksg/Reconciler.js +1 -2
  43. package/lib/commonjs/sksg/Reconciler.js.map +1 -1
  44. package/lib/commonjs/sksg/Recorder/Recorder.d.ts +11 -0
  45. package/lib/commonjs/sksg/Recorder/Recorder.js +9 -0
  46. package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
  47. package/lib/commonjs/sksg/Recorder/commands/Drawing.js +11 -4
  48. package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
  49. package/lib/commonjs/sksg/Recorder/commands/Shaders.js +8 -3
  50. package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
  51. package/lib/module/dom/types/Drawings.d.ts +3 -1
  52. package/lib/module/dom/types/Drawings.js.map +1 -1
  53. package/lib/module/dom/types/Shaders.d.ts +2 -3
  54. package/lib/module/dom/types/Shaders.js.map +1 -1
  55. package/lib/module/external/reanimated/useAnimatedImageValue.js +1 -8
  56. package/lib/module/external/reanimated/useAnimatedImageValue.js.map +1 -1
  57. package/lib/module/renderer/components/image/ImageShader.d.ts +1 -1
  58. package/lib/module/renderer/components/image/ImageShader.js +0 -4
  59. package/lib/module/renderer/components/image/ImageShader.js.map +1 -1
  60. package/lib/module/skia/core/AnimatedImage.d.ts +1 -1
  61. package/lib/module/skia/core/AnimatedImage.js +1 -1
  62. package/lib/module/skia/core/AnimatedImage.js.map +1 -1
  63. package/lib/module/skia/core/Data.d.ts +1 -1
  64. package/lib/module/skia/core/Data.js +2 -8
  65. package/lib/module/skia/core/Data.js.map +1 -1
  66. package/lib/module/skia/types/Canvas.d.ts +2 -2
  67. package/lib/module/skia/types/Canvas.js.map +1 -1
  68. package/lib/module/skia/types/Image/Image.d.ts +18 -0
  69. package/lib/module/skia/types/Image/Image.js +21 -0
  70. package/lib/module/skia/types/Image/Image.js.map +1 -1
  71. package/lib/module/skia/types/Picture/PictureRecorder.d.ts +2 -1
  72. package/lib/module/skia/types/Picture/PictureRecorder.js.map +1 -1
  73. package/lib/module/skia/web/JsiSkCanvas.d.ts +2 -2
  74. package/lib/module/skia/web/JsiSkCanvas.js +15 -2
  75. package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
  76. package/lib/module/sksg/Container.d.ts +17 -14
  77. package/lib/module/sksg/Container.js +56 -59
  78. package/lib/module/sksg/Container.js.map +1 -1
  79. package/lib/module/sksg/HostConfig.js +4 -9
  80. package/lib/module/sksg/HostConfig.js.map +1 -1
  81. package/lib/module/sksg/Reconciler.js +2 -3
  82. package/lib/module/sksg/Reconciler.js.map +1 -1
  83. package/lib/module/sksg/Recorder/Recorder.d.ts +11 -0
  84. package/lib/module/sksg/Recorder/Recorder.js +9 -0
  85. package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
  86. package/lib/module/sksg/Recorder/commands/Drawing.js +12 -5
  87. package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
  88. package/lib/module/sksg/Recorder/commands/Shaders.js +9 -4
  89. package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
  90. package/lib/typescript/lib/commonjs/renderer/components/image/ImageShader.d.ts +1 -3
  91. package/lib/typescript/lib/commonjs/skia/core/AnimatedImage.d.ts +1 -1
  92. package/lib/typescript/lib/commonjs/skia/core/Data.d.ts +1 -1
  93. package/lib/typescript/lib/commonjs/skia/types/Image/Image.d.ts +21 -0
  94. package/lib/typescript/lib/commonjs/skia/web/JsiSkCanvas.d.ts +1 -1
  95. package/lib/typescript/lib/commonjs/sksg/Container.d.ts +15 -10
  96. package/lib/typescript/lib/commonjs/sksg/HostConfig.d.ts +4 -4
  97. package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +21 -2
  98. package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +5 -0
  99. package/lib/typescript/lib/module/mock/index.d.ts +19 -4
  100. package/lib/typescript/lib/module/renderer/components/image/ImageShader.d.ts +1 -3
  101. package/lib/typescript/lib/module/skia/core/AnimatedImage.d.ts +1 -1
  102. package/lib/typescript/lib/module/skia/core/Data.d.ts +1 -1
  103. package/lib/typescript/lib/module/skia/types/Image/Image.d.ts +21 -0
  104. package/lib/typescript/lib/module/skia/web/JsiSkCanvas.d.ts +1 -1
  105. package/lib/typescript/lib/module/sksg/Container.d.ts +15 -10
  106. package/lib/typescript/lib/module/sksg/HostConfig.d.ts +4 -4
  107. package/lib/typescript/lib/module/sksg/Reconciler.d.ts +21 -2
  108. package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +5 -0
  109. package/lib/typescript/src/dom/types/Drawings.d.ts +3 -1
  110. package/lib/typescript/src/dom/types/Shaders.d.ts +2 -3
  111. package/lib/typescript/src/renderer/components/image/ImageShader.d.ts +1 -1
  112. package/lib/typescript/src/skia/core/AnimatedImage.d.ts +1 -1
  113. package/lib/typescript/src/skia/core/Data.d.ts +1 -1
  114. package/lib/typescript/src/skia/types/Canvas.d.ts +2 -2
  115. package/lib/typescript/src/skia/types/Image/Image.d.ts +18 -0
  116. package/lib/typescript/src/skia/types/Picture/PictureRecorder.d.ts +2 -1
  117. package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +2 -2
  118. package/lib/typescript/src/sksg/Container.d.ts +17 -14
  119. package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +11 -0
  120. package/libs/apple/libskia.xcframework/Info.plist +35 -2
  121. package/libs/apple/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  122. package/libs/apple/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  123. package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
  124. package/libs/apple/libskia.xcframework/tvos-arm64_arm64e/libskia.a +0 -0
  125. package/libs/apple/libskia.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  126. package/libs/apple/libskottie.xcframework/Info.plist +36 -3
  127. package/libs/apple/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  128. package/libs/apple/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  129. package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
  130. package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e/libskottie.a +0 -0
  131. package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  132. package/libs/apple/libskparagraph.xcframework/Info.plist +40 -7
  133. package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  134. package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  135. package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
  136. package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e/libskparagraph.a +0 -0
  137. package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  138. package/libs/apple/libsksg.xcframework/Info.plist +35 -2
  139. package/libs/apple/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  140. package/libs/apple/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  141. package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
  142. package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e/libsksg.a +0 -0
  143. package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  144. package/libs/apple/libskshaper.xcframework/Info.plist +33 -0
  145. package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  146. package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  147. package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
  148. package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e/libskshaper.a +0 -0
  149. package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  150. package/libs/apple/libskunicode_core.xcframework/Info.plist +36 -3
  151. package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
  152. package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
  153. package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
  154. package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e/libskunicode_core.a +0 -0
  155. package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
  156. package/libs/apple/libskunicode_libgrapheme.xcframework/Info.plist +35 -2
  157. package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
  158. package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
  159. package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
  160. package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
  161. package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
  162. package/libs/apple/libsvg.xcframework/Info.plist +36 -3
  163. package/libs/apple/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  164. package/libs/apple/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  165. package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
  166. package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e/libsvg.a +0 -0
  167. package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  168. package/package.json +1 -1
  169. package/react-native-skia.podspec +2 -2
  170. package/src/__tests__/snapshots/animated-images/bird.png +0 -0
  171. package/src/__tests__/snapshots/demos/product.png +0 -0
  172. package/src/__tests__/snapshots/demos/product2.png +0 -0
  173. package/src/__tests__/snapshots/images/bundle-android.png +0 -0
  174. package/src/__tests__/snapshots/images/bundle-ios.png +0 -0
  175. package/src/__tests__/snapshots/images/bundle-node.png +0 -0
  176. package/src/__tests__/snapshots/images/filter.png +0 -0
  177. package/src/dom/types/Drawings.ts +3 -0
  178. package/src/dom/types/Shaders.ts +2 -4
  179. package/src/external/reanimated/useAnimatedImageValue.ts +4 -15
  180. package/src/renderer/__tests__/e2e/Text.spec.tsx +1 -1
  181. package/src/renderer/components/image/ImageShader.tsx +2 -15
  182. package/src/skia/core/AnimatedImage.ts +2 -3
  183. package/src/skia/core/Data.ts +3 -9
  184. package/src/skia/types/Canvas.ts +2 -3
  185. package/src/skia/types/Image/Image.ts +14 -0
  186. package/src/skia/types/Picture/PictureRecorder.ts +2 -1
  187. package/src/skia/web/JsiSkCanvas.ts +50 -29
  188. package/src/sksg/Container.ts +64 -67
  189. package/src/sksg/HostConfig.ts +4 -9
  190. package/src/sksg/Reconciler.ts +3 -3
  191. package/src/sksg/Recorder/Recorder.ts +20 -0
  192. package/src/sksg/Recorder/commands/Drawing.ts +33 -4
  193. package/src/sksg/Recorder/commands/Shaders.ts +21 -8
  194. package/lib/commonjs/sksg/Recorder/Recording.d.ts +0 -7
  195. package/lib/commonjs/sksg/Recorder/Recording.js +0 -12
  196. package/lib/commonjs/sksg/Recorder/Recording.js.map +0 -1
  197. package/lib/module/sksg/Recorder/Recording.d.ts +0 -7
  198. package/lib/module/sksg/Recorder/Recording.js +0 -5
  199. package/lib/module/sksg/Recorder/Recording.js.map +0 -1
  200. package/lib/typescript/lib/commonjs/sksg/Recorder/Recording.d.ts +0 -5
  201. package/lib/typescript/lib/module/sksg/Recorder/Recording.d.ts +0 -4
  202. package/lib/typescript/src/sksg/Recorder/Recording.d.ts +0 -7
  203. package/src/sksg/Recorder/Recording.ts +0 -13
@@ -7,7 +7,7 @@
7
7
  class MainThreadDispatcher {
8
8
  private:
9
9
  ALooper *mainLooper = nullptr;
10
- int messagePipe[2] = { -1, -1 };
10
+ int messagePipe[2] = {-1, -1};
11
11
  std::queue<std::function<void()>> taskQueue;
12
12
  std::mutex queueMutex;
13
13
 
@@ -122,8 +122,8 @@ public:
122
122
  format = GrBackendFormats::MakeGL(GR_GL_RGBA16F, GR_GL_TEXTURE_EXTERNAL);
123
123
  break;
124
124
  case AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM:
125
- GrBackendFormats::MakeGL(GR_GL_RGB565, GR_GL_TEXTURE_EXTERNAL);
126
- break;
125
+ GrBackendFormats::MakeGL(GR_GL_RGB565, GR_GL_TEXTURE_EXTERNAL);
126
+ break;
127
127
  case AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM:
128
128
  format = GrBackendFormats::MakeGL(GR_GL_RGB10_A2, GR_GL_TEXTURE_EXTERNAL);
129
129
  break;
@@ -146,8 +146,8 @@ public:
146
146
  auto height = static_cast<int>(description.height);
147
147
  auto backendTex = MakeGLBackendTexture(
148
148
  _directContext.get(), const_cast<AHardwareBuffer *>(hardwareBuffer),
149
- width, height, &deleteImageProc,
150
- &updateImageProc, &deleteImageCtx, false, format, false);
149
+ width, height, &deleteImageProc, &updateImageProc, &deleteImageCtx,
150
+ false, format, false);
151
151
  if (!backendTex.isValid()) {
152
152
  RNSkLogger::logToConsole(
153
153
  "Failed to convert HardwareBuffer to OpenGL Texture!");
@@ -26,7 +26,8 @@ namespace RNSkia {
26
26
  RNSkOpenGLCanvasProvider::RNSkOpenGLCanvasProvider(
27
27
  std::function<void()> requestRedraw,
28
28
  std::shared_ptr<RNSkia::RNSkPlatformContext> platformContext)
29
- : RNSkCanvasProvider(std::move(requestRedraw)), _platformContext(std::move(platformContext)) {}
29
+ : RNSkCanvasProvider(std::move(requestRedraw)),
30
+ _platformContext(std::move(platformContext)) {}
30
31
 
31
32
  RNSkOpenGLCanvasProvider::~RNSkOpenGLCanvasProvider() = default;
32
33
 
@@ -109,8 +110,7 @@ void RNSkOpenGLCanvasProvider::surfaceAvailable(jobject jSurfaceTexture,
109
110
  #if defined(SK_GRAPHITE)
110
111
  _surfaceHolder = DawnContext::getInstance().MakeWindow(window, width, height);
111
112
  #else
112
- _surfaceHolder =
113
- OpenGLContext::getInstance().MakeWindow(window);
113
+ _surfaceHolder = OpenGLContext::getInstance().MakeWindow(window);
114
114
  #endif
115
115
 
116
116
  // Post redraw request to ensure we paint in the next draw cycle.
@@ -525,32 +525,34 @@ public:
525
525
 
526
526
  std::vector<SkColor> colors;
527
527
  if (count > 5 && !arguments[5].isUndefined()) {
528
- auto colorsArray = arguments[5].asObject(runtime).asArray(runtime);
529
- int colorsSize = static_cast<int>(colorsArray.size(runtime));
530
- colors.reserve(colorsSize);
531
- for (int i = 0; i < colorsSize; i++) {
532
- // Convert from [r,g,b,a] in [0,1] to SkColor
533
- auto val = colorsArray.getValueAtIndex(runtime, i).asObject(runtime);
534
- float r = val.getProperty(runtime, "0").asNumber();
535
- float g = val.getProperty(runtime, "1").asNumber();
536
- float b = val.getProperty(runtime, "2").asNumber();
537
- float a = val.getProperty(runtime, "3").asNumber();
538
-
539
- // Convert to 8-bit color channels and pack into SkColor
540
- uint8_t r8 = static_cast<uint8_t>(r * 255);
541
- uint8_t g8 = static_cast<uint8_t>(g * 255);
542
- uint8_t b8 = static_cast<uint8_t>(b * 255);
543
- uint8_t a8 = static_cast<uint8_t>(a * 255);
544
-
545
- SkColor color = SkColorSetARGB(a8, r8, g8, b8);
546
- colors.push_back(color);
547
- }
528
+ auto colorsArray = arguments[5].asObject(runtime).asArray(runtime);
529
+ int colorsSize = static_cast<int>(colorsArray.size(runtime));
530
+ colors.reserve(colorsSize);
531
+ for (int i = 0; i < colorsSize; i++) {
532
+ // Convert from [r,g,b,a] in [0,1] to SkColor
533
+ auto val = colorsArray.getValueAtIndex(runtime, i).asObject(runtime);
534
+ float r = val.getProperty(runtime, "0").asNumber();
535
+ float g = val.getProperty(runtime, "1").asNumber();
536
+ float b = val.getProperty(runtime, "2").asNumber();
537
+ float a = val.getProperty(runtime, "3").asNumber();
538
+
539
+ // Convert to 8-bit color channels and pack into SkColor
540
+ uint8_t r8 = static_cast<uint8_t>(r * 255);
541
+ uint8_t g8 = static_cast<uint8_t>(g * 255);
542
+ uint8_t b8 = static_cast<uint8_t>(b * 255);
543
+ uint8_t a8 = static_cast<uint8_t>(a * 255);
544
+
545
+ SkColor color = SkColorSetARGB(a8, r8, g8, b8);
546
+ colors.push_back(color);
547
+ }
548
548
  }
549
-
550
- SkSamplingOptions sampling(SkFilterMode::kLinear, SkMipmapMode::kNone);
551
- _canvas->drawAtlas(atlas.get(), xforms.data(), skRects.data(), colors.data(),
552
- skRects.size(), blendMode, sampling, nullptr,
553
- paint.get());
549
+ SkSamplingOptions sampling(SkFilterMode::kLinear);
550
+ if (count > 6) {
551
+ sampling = SamplingOptionsFromValue(runtime, arguments[5]);
552
+ }
553
+ _canvas->drawAtlas(atlas.get(), xforms.data(), skRects.data(),
554
+ colors.data(), skRects.size(), blendMode, sampling,
555
+ nullptr, paint.get());
554
556
 
555
557
  return jsi::Value::undefined();
556
558
  }
@@ -36,6 +36,30 @@ namespace RNSkia {
36
36
 
37
37
  namespace jsi = facebook::jsi;
38
38
 
39
+ inline SkSamplingOptions SamplingOptionsFromValue(jsi::Runtime &runtime,
40
+ const jsi::Value &val) {
41
+ SkSamplingOptions samplingOptions(SkFilterMode::kLinear);
42
+ if (val.isObject()) {
43
+ auto object = val.asObject(runtime);
44
+ if (object.hasProperty(runtime, "B") && object.hasProperty(runtime, "C")) {
45
+ auto B = static_cast<float>(object.getProperty(runtime, "B").asNumber());
46
+ auto C = static_cast<float>(object.getProperty(runtime, "C").asNumber());
47
+ samplingOptions = SkSamplingOptions({B, C});
48
+ } else if (object.hasProperty(runtime, "filter")) {
49
+ auto filter = static_cast<SkFilterMode>(
50
+ object.getProperty(runtime, "filter").asNumber());
51
+ if (object.hasProperty(runtime, "mipmap")) {
52
+ auto mipmap = static_cast<SkMipmapMode>(
53
+ object.getProperty(runtime, "mipmap").asNumber());
54
+ samplingOptions = SkSamplingOptions(filter, mipmap);
55
+ } else {
56
+ samplingOptions = SkSamplingOptions(filter);
57
+ }
58
+ }
59
+ }
60
+ return samplingOptions;
61
+ }
62
+
39
63
  class JsiSkImage : public JsiSkWrappingSkPtrHostObject<SkImage> {
40
64
  public:
41
65
  // TODO-API: Properties?
@@ -28,7 +28,7 @@ public:
28
28
  EXPORT_JSI_API_TYPENAME(JsiSkPaint, Paint)
29
29
 
30
30
  JSI_HOST_FUNCTION(assign) {
31
- SkPaint* paint = JsiSkPaint::fromValue(runtime, arguments[0]).get();
31
+ SkPaint *paint = JsiSkPaint::fromValue(runtime, arguments[0]).get();
32
32
  *getObject() = *paint;
33
33
  return jsi::Value::undefined();
34
34
  }
@@ -3,6 +3,7 @@
3
3
  #include "JsiDomDrawingNode.h"
4
4
  #include "RSXformProp.h"
5
5
  #include "RectProp.h"
6
+ #include "SamplingProp.h"
6
7
  #include "SkImageProps.h"
7
8
 
8
9
  #include <memory>
@@ -28,7 +29,8 @@ protected:
28
29
  ? *_blendModeProp->getDerivedValue()
29
30
  : SkBlendMode::kDstOver;
30
31
  auto paint = *context->getPaint();
31
- SkSamplingOptions sampling(SkFilterMode::kLinear, SkMipmapMode::kNone);
32
+ auto sampling = _samplingProp->isSet() ? *_samplingProp->getDerivedValue()
33
+ : SkSamplingOptions(SkFilterMode::kLinear);
32
34
  context->getCanvas()->drawAtlas(
33
35
  image.get(), transforms->data(), sprites->data(),
34
36
  colors == nullptr ? nullptr : colors->data(), sprites->size(),
@@ -43,6 +45,7 @@ protected:
43
45
  _imageProp = container->defineProperty<ImageProp>("image");
44
46
  _colorsProp = container->defineProperty<ColorsProp>("colors");
45
47
  _blendModeProp = container->defineProperty<BlendModeProp>("blendMode");
48
+ _samplingProp = container->defineProperty<SamplingProp>("sampling");
46
49
 
47
50
  _rectsProp->require();
48
51
  _rsxFormsProp->require();
@@ -54,6 +57,7 @@ private:
54
57
  RSXFormsProp *_rsxFormsProp;
55
58
  ColorsProp *_colorsProp;
56
59
  BlendModeProp *_blendModeProp;
60
+ SamplingProp *_samplingProp;
57
61
  };
58
62
 
59
63
  } // namespace RNSkia
@@ -1,6 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #include "JsiDomDrawingNode.h"
4
+ #include "SamplingProp.h"
4
5
  #include "SkImageProps.h"
5
6
 
6
7
  #include <memory>
@@ -20,19 +21,22 @@ protected:
20
21
  if (image == nullptr) {
21
22
  return;
22
23
  }
23
-
24
- context->getCanvas()->drawImageRect(
25
- image, rects->src, rects->dst, SkSamplingOptions(),
26
- context->getPaint().get(), SkCanvas::kStrict_SrcRectConstraint);
24
+ auto sampling = _samplingProp->isSet() ? *_samplingProp->getDerivedValue()
25
+ : SkSamplingOptions(SkFilterMode::kLinear);
26
+ context->getCanvas()->drawImageRect(image, rects->src, rects->dst, sampling,
27
+ context->getPaint().get(),
28
+ SkCanvas::kStrict_SrcRectConstraint);
27
29
  }
28
30
 
29
31
  void defineProperties(NodePropsContainer *container) override {
30
32
  JsiDomDrawingNode::defineProperties(container);
31
33
  _imageProps = container->defineProperty<ImageProps>();
34
+ _samplingProp = container->defineProperty<SamplingProp>("sampling");
32
35
  }
33
36
 
34
37
  private:
35
38
  ImageProps *_imageProps;
39
+ SamplingProp *_samplingProp;
36
40
  };
37
41
 
38
42
  } // namespace RNSkia
@@ -6,6 +6,7 @@
6
6
  #include "ColorProp.h"
7
7
  #include "NodeProp.h"
8
8
  #include "NumbersProp.h"
9
+ #include "SamplingProp.h"
9
10
  #include "TileModeProp.h"
10
11
  #include "TransformsProps.h"
11
12
  #include "UniformsProp.h"
@@ -120,12 +121,12 @@ public:
120
121
  }
121
122
  }
122
123
 
123
- context->getShaders()->push(image->makeShader(
124
- *_txProp->getDerivedValue(), *_tyProp->getDerivedValue(),
125
- SkSamplingOptions(
126
- getFilterModeFromString(_filterModeProp->value().getAsString()),
127
- getMipmapModeFromString(_mipmapModeProp->value().getAsString())),
128
- &_matrix));
124
+ auto samplingOptions = _samplingProp->isSet()
125
+ ? *_samplingProp->getDerivedValue()
126
+ : SkSamplingOptions(SkFilterMode::kLinear);
127
+ context->getShaders()->push(image->makeShader(*_txProp->getDerivedValue(),
128
+ *_tyProp->getDerivedValue(),
129
+ samplingOptions, &_matrix));
129
130
  }
130
131
 
131
132
  protected:
@@ -133,17 +134,14 @@ protected:
133
134
  JsiDomDeclarationNode::defineProperties(container);
134
135
  _txProp = container->defineProperty<TileModeProp>("tx");
135
136
  _tyProp = container->defineProperty<TileModeProp>("ty");
136
- _filterModeProp = container->defineProperty<NodeProp>("fm");
137
- _mipmapModeProp = container->defineProperty<NodeProp>("mm");
138
137
 
138
+ _samplingProp = container->defineProperty<SamplingProp>("sampling");
139
139
  _imageProps = container->defineProperty<ImageProps>();
140
140
  _transformProp = container->defineProperty<TransformProp>("transform");
141
141
  _originProp = container->defineProperty<PointProp>("origin");
142
142
 
143
143
  _txProp->require();
144
144
  _tyProp->require();
145
- _filterModeProp->require();
146
- _mipmapModeProp->require();
147
145
 
148
146
  _transformProp->require();
149
147
 
@@ -152,41 +150,14 @@ protected:
152
150
  }
153
151
 
154
152
  private:
155
- SkFilterMode getFilterModeFromString(const std::string &value) {
156
- if (value == "last") {
157
- return SkFilterMode::kLast;
158
- } else if (value == "linear") {
159
- return SkFilterMode::kLinear;
160
- } else if (value == "nearest") {
161
- return SkFilterMode::kNearest;
162
- }
163
- throw std::runtime_error("The value \"" + value +
164
- "\" is not a valid Filter Mode.");
165
- }
166
-
167
- SkMipmapMode getMipmapModeFromString(const std::string &value) {
168
- if (value == "last") {
169
- return SkMipmapMode::kLast;
170
- } else if (value == "last") {
171
- return SkMipmapMode::kLast;
172
- } else if (value == "last") {
173
- return SkMipmapMode::kLast;
174
- } else if (value == "none") {
175
- return SkMipmapMode::kNone;
176
- }
177
- throw std::runtime_error("The value \"" + value +
178
- "\" is not a valid Mipmap Mode.");
179
- }
180
-
181
153
  SkMatrix _matrix;
182
154
 
183
155
  TileModeProp *_txProp;
184
156
  TileModeProp *_tyProp;
185
- NodeProp *_filterModeProp;
186
- NodeProp *_mipmapModeProp;
187
157
  ImageProps *_imageProps;
188
158
  TransformProp *_transformProp;
189
159
  PointProp *_originProp;
160
+ SamplingProp *_samplingProp;
190
161
  };
191
162
 
192
163
  class JsiColorShaderNode : public JsiDomDeclarationNode,
@@ -0,0 +1,54 @@
1
+ #pragma once
2
+
3
+ #include "include/core/SkSamplingOptions.h"
4
+
5
+ namespace RNSkia {
6
+
7
+ static PropId PropNameCubicB = JsiPropId::get("B");
8
+ static PropId PropNameCubicC = JsiPropId::get("C");
9
+ static PropId PropNameFilter = JsiPropId::get("filter");
10
+ static PropId PropNameMipmap = JsiPropId::get("mipmap");
11
+
12
+ class SamplingProp : public DerivedProp<SkSamplingOptions> {
13
+ public:
14
+ explicit SamplingProp(PropId name,
15
+ const std::function<void(BaseNodeProp *)> &onChange)
16
+ : DerivedProp(onChange) {
17
+ _prop = defineProperty<NodeProp>(name);
18
+ }
19
+
20
+ static SkSamplingOptions processSamplingOptions(const JsiValue &value) {
21
+ SkSamplingOptions samplingOptions(SkFilterMode::kLinear);
22
+ if (value.getType() == PropType::Object) {
23
+ if (value.hasValue(PropNameCubicB) && value.hasValue(PropNameCubicC)) {
24
+ auto B =
25
+ static_cast<float>(value.getValue(PropNameCubicB).getAsNumber());
26
+ auto C =
27
+ static_cast<float>(value.getValue(PropNameCubicC).getAsNumber());
28
+ samplingOptions = SkSamplingOptions({B, C});
29
+ } else if (value.hasValue(PropNameFilter)) {
30
+ auto filter = static_cast<SkFilterMode>(
31
+ value.getValue(PropNameFilter).getAsNumber());
32
+ if (value.hasValue(PropNameMipmap)) {
33
+ auto mipmap = static_cast<SkMipmapMode>(
34
+ value.getValue(PropNameMipmap).getAsNumber());
35
+ samplingOptions = SkSamplingOptions(filter, mipmap);
36
+ } else {
37
+ samplingOptions = SkSamplingOptions(filter);
38
+ }
39
+ }
40
+ }
41
+
42
+ return samplingOptions;
43
+ }
44
+
45
+ void updateDerivedValue() override {
46
+ if (_prop->isSet()) {
47
+ setDerivedValue(SamplingProp::processSamplingOptions(_prop->value()));
48
+ }
49
+ }
50
+
51
+ private:
52
+ NodeProp *_prop;
53
+ };
54
+ } // namespace RNSkia
@@ -47,14 +47,12 @@ static __weak SkiaManager *sharedInstance = nil;
47
47
  return self;
48
48
  }
49
49
 
50
- - (void)dealloc
51
- {
50
+ - (void)dealloc {
52
51
  sharedInstance = nil;
53
52
  }
54
53
 
55
54
  #ifdef RCT_NEW_ARCH_ENABLED
56
- + (std::shared_ptr<RNSkia::RNSkManager>)latestActiveSkManager
57
- {
55
+ + (std::shared_ptr<RNSkia::RNSkManager>)latestActiveSkManager {
58
56
  if (sharedInstance != nil) {
59
57
  return [sharedInstance skManager];
60
58
  }
@@ -1,4 +1,4 @@
1
- import type { FillType, SkImage, StrokeOpts, Vector, Color, SkPoint, BlendMode, PointMode, VertexMode, SkFont, SkRRect, SkTextBlob, SkPicture, SkSVG, SkPaint, SkRect, SkRSXform, SkColor } from "../../skia/types";
1
+ import type { FillType, SkImage, StrokeOpts, Vector, Color, SkPoint, BlendMode, PointMode, VertexMode, SkFont, SkRRect, SkTextBlob, SkPicture, SkSVG, SkPaint, SkRect, SkRSXform, SkColor, SamplingOptions } from "../../skia/types";
2
2
  import type { CircleDef, Fit, GroupProps, PathDef, RectDef, RRectDef, SkEnum } from "./Common";
3
3
  export interface DrawingNodeProps extends GroupProps {
4
4
  paint?: SkPaint;
@@ -6,6 +6,7 @@ export interface DrawingNodeProps extends GroupProps {
6
6
  export type ImageProps = DrawingNodeProps & RectDef & {
7
7
  fit?: Fit;
8
8
  image: SkImage | null;
9
+ sampling?: SamplingOptions;
9
10
  };
10
11
  export type CircleProps = CircleDef & DrawingNodeProps;
11
12
  export interface PathProps extends DrawingNodeProps {
@@ -27,6 +28,7 @@ export interface AtlasProps extends DrawingNodeProps {
27
28
  sprites: SkRect[];
28
29
  transforms: SkRSXform[];
29
30
  colors?: SkColor[];
31
+ sampling?: SamplingOptions;
30
32
  }
31
33
  export interface CubicBezierHandle {
32
34
  pos: Vector;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {\n FillType,\n SkImage,\n StrokeOpts,\n Vector,\n Color,\n SkPoint,\n BlendMode,\n PointMode,\n VertexMode,\n SkFont,\n SkRRect,\n SkTextBlob,\n SkPicture,\n SkSVG,\n SkPaint,\n SkRect,\n SkRSXform,\n SkColor,\n} from \"../../skia/types\";\n\nimport type {\n CircleDef,\n Fit,\n GroupProps,\n PathDef,\n RectDef,\n RRectDef,\n SkEnum,\n} from \"./Common\";\n\nexport interface DrawingNodeProps extends GroupProps {\n paint?: SkPaint;\n}\n\nexport type ImageProps = DrawingNodeProps &\n RectDef & {\n fit?: Fit;\n image: SkImage | null;\n };\n\nexport type CircleProps = CircleDef & DrawingNodeProps;\n\nexport interface PathProps extends DrawingNodeProps {\n path: PathDef;\n start: number;\n end: number;\n stroke?: StrokeOpts;\n fillType?: SkEnum<typeof FillType>;\n}\n\nexport interface LineProps extends DrawingNodeProps {\n p1: Vector;\n p2: Vector;\n}\n\nexport type OvalProps = RectDef & DrawingNodeProps;\n\nexport type RectProps = RectDef & DrawingNodeProps;\n\nexport type RoundedRectProps = RRectDef & DrawingNodeProps;\n\nexport interface AtlasProps extends DrawingNodeProps {\n image: SkImage | null;\n sprites: SkRect[];\n transforms: SkRSXform[];\n colors?: SkColor[];\n}\n\nexport interface CubicBezierHandle {\n pos: Vector;\n c1: Vector;\n c2: Vector;\n}\n\nexport interface PatchProps extends DrawingNodeProps {\n colors?: Color[];\n patch: [\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle\n ];\n texture?: readonly [SkPoint, SkPoint, SkPoint, SkPoint];\n blendMode?: SkEnum<typeof BlendMode>;\n}\n\nexport interface VerticesProps extends DrawingNodeProps {\n colors?: string[];\n vertices: SkPoint[];\n textures?: SkPoint[];\n mode: SkEnum<typeof VertexMode>;\n blendMode?: SkEnum<typeof BlendMode>;\n indices?: number[];\n}\n\nexport interface ImageSVGProps extends DrawingNodeProps {\n svg: SkSVG | null;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n rect?: SkRect;\n}\n\nexport interface PictureProps extends DrawingNodeProps {\n picture: SkPicture;\n}\n\nexport interface PointsProps extends DrawingNodeProps {\n points: SkPoint[];\n mode: SkEnum<typeof PointMode>;\n}\n\nexport interface DiffRectProps extends DrawingNodeProps {\n inner: SkRRect;\n outer: SkRRect;\n}\n\nexport interface TextProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n x: number;\n y: number;\n}\n\nexport interface TextPathProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n path: PathDef;\n initialOffset: number;\n}\n\nexport interface TextBlobProps extends DrawingNodeProps {\n blob: SkTextBlob;\n x: number;\n y: number;\n}\n\nexport interface Glyph {\n id: number;\n pos: SkPoint;\n}\n\nexport interface GlyphsProps extends DrawingNodeProps {\n font: SkFont | null;\n x: number;\n y: number;\n glyphs: Glyph[];\n}\n\nexport interface BoxProps extends DrawingNodeProps {\n box: SkRRect | SkRect;\n}\n\nexport interface BoxShadowProps {\n dx?: number;\n dy?: number;\n spread?: number;\n blur: number;\n color?: Color;\n inner?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {\n FillType,\n SkImage,\n StrokeOpts,\n Vector,\n Color,\n SkPoint,\n BlendMode,\n PointMode,\n VertexMode,\n SkFont,\n SkRRect,\n SkTextBlob,\n SkPicture,\n SkSVG,\n SkPaint,\n SkRect,\n SkRSXform,\n SkColor,\n SamplingOptions,\n} from \"../../skia/types\";\n\nimport type {\n CircleDef,\n Fit,\n GroupProps,\n PathDef,\n RectDef,\n RRectDef,\n SkEnum,\n} from \"./Common\";\n\nexport interface DrawingNodeProps extends GroupProps {\n paint?: SkPaint;\n}\n\nexport type ImageProps = DrawingNodeProps &\n RectDef & {\n fit?: Fit;\n image: SkImage | null;\n sampling?: SamplingOptions;\n };\n\nexport type CircleProps = CircleDef & DrawingNodeProps;\n\nexport interface PathProps extends DrawingNodeProps {\n path: PathDef;\n start: number;\n end: number;\n stroke?: StrokeOpts;\n fillType?: SkEnum<typeof FillType>;\n}\n\nexport interface LineProps extends DrawingNodeProps {\n p1: Vector;\n p2: Vector;\n}\n\nexport type OvalProps = RectDef & DrawingNodeProps;\n\nexport type RectProps = RectDef & DrawingNodeProps;\n\nexport type RoundedRectProps = RRectDef & DrawingNodeProps;\n\nexport interface AtlasProps extends DrawingNodeProps {\n image: SkImage | null;\n sprites: SkRect[];\n transforms: SkRSXform[];\n colors?: SkColor[];\n sampling?: SamplingOptions;\n}\n\nexport interface CubicBezierHandle {\n pos: Vector;\n c1: Vector;\n c2: Vector;\n}\n\nexport interface PatchProps extends DrawingNodeProps {\n colors?: Color[];\n patch: [\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle\n ];\n texture?: readonly [SkPoint, SkPoint, SkPoint, SkPoint];\n blendMode?: SkEnum<typeof BlendMode>;\n}\n\nexport interface VerticesProps extends DrawingNodeProps {\n colors?: string[];\n vertices: SkPoint[];\n textures?: SkPoint[];\n mode: SkEnum<typeof VertexMode>;\n blendMode?: SkEnum<typeof BlendMode>;\n indices?: number[];\n}\n\nexport interface ImageSVGProps extends DrawingNodeProps {\n svg: SkSVG | null;\n x?: number;\n y?: number;\n width?: number;\n height?: number;\n rect?: SkRect;\n}\n\nexport interface PictureProps extends DrawingNodeProps {\n picture: SkPicture;\n}\n\nexport interface PointsProps extends DrawingNodeProps {\n points: SkPoint[];\n mode: SkEnum<typeof PointMode>;\n}\n\nexport interface DiffRectProps extends DrawingNodeProps {\n inner: SkRRect;\n outer: SkRRect;\n}\n\nexport interface TextProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n x: number;\n y: number;\n}\n\nexport interface TextPathProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n path: PathDef;\n initialOffset: number;\n}\n\nexport interface TextBlobProps extends DrawingNodeProps {\n blob: SkTextBlob;\n x: number;\n y: number;\n}\n\nexport interface Glyph {\n id: number;\n pos: SkPoint;\n}\n\nexport interface GlyphsProps extends DrawingNodeProps {\n font: SkFont | null;\n x: number;\n y: number;\n glyphs: Glyph[];\n}\n\nexport interface BoxProps extends DrawingNodeProps {\n box: SkRRect | SkRect;\n}\n\nexport interface BoxShadowProps {\n dx?: number;\n dy?: number;\n spread?: number;\n blur: number;\n color?: Color;\n inner?: boolean;\n}\n"],"mappings":"","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { Color, FilterMode, MipmapMode, SkImage, SkRect, SkRuntimeEffect, TileMode, Uniforms, Vector } from "../../skia/types";
1
+ import type { Color, SamplingOptions, SkImage, SkRect, SkRuntimeEffect, TileMode, Uniforms, Vector } from "../../skia/types";
2
2
  import type { SkEnum, TransformProps, ChildrenProps, RectCtor, Fit } from "./Common";
3
3
  export interface ShaderProps extends TransformProps, ChildrenProps {
4
4
  source: SkRuntimeEffect;
@@ -7,11 +7,10 @@ export interface ShaderProps extends TransformProps, ChildrenProps {
7
7
  export interface ImageShaderProps extends TransformProps, Partial<RectCtor> {
8
8
  tx: SkEnum<typeof TileMode>;
9
9
  ty: SkEnum<typeof TileMode>;
10
- fm: SkEnum<typeof FilterMode>;
11
- mm: SkEnum<typeof MipmapMode>;
12
10
  fit: Fit;
13
11
  rect?: SkRect;
14
12
  image: SkImage | null;
13
+ sampling?: SamplingOptions;
15
14
  }
16
15
  export interface ColorProps {
17
16
  color: Color;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["Shaders.ts"],"sourcesContent":["import type {\n Color,\n FilterMode,\n MipmapMode,\n SkImage,\n SkRect,\n SkRuntimeEffect,\n TileMode,\n Uniforms,\n Vector,\n} from \"../../skia/types\";\n\nimport type {\n SkEnum,\n TransformProps,\n ChildrenProps,\n RectCtor,\n Fit,\n} from \"./Common\";\n\nexport interface ShaderProps extends TransformProps, ChildrenProps {\n source: SkRuntimeEffect;\n uniforms: Uniforms;\n}\n\nexport interface ImageShaderProps extends TransformProps, Partial<RectCtor> {\n tx: SkEnum<typeof TileMode>;\n ty: SkEnum<typeof TileMode>;\n fm: SkEnum<typeof FilterMode>;\n mm: SkEnum<typeof MipmapMode>;\n fit: Fit;\n rect?: SkRect;\n image: SkImage | null;\n}\n\nexport interface ColorProps {\n color: Color;\n}\n\nexport interface TurbulenceProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface FractalNoiseProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface GradientProps extends TransformProps {\n colors: Color[];\n positions?: number[];\n mode?: SkEnum<typeof TileMode>;\n flags?: number;\n}\n\nexport interface LinearGradientProps extends GradientProps {\n start: Vector;\n end: Vector;\n}\n\nexport interface RadialGradientProps extends GradientProps {\n c: Vector;\n r: number;\n}\n\nexport interface SweepGradientProps extends GradientProps {\n c: Vector;\n start?: number;\n end?: number;\n}\n\nexport interface TwoPointConicalGradientProps extends GradientProps {\n start: Vector;\n startR: number;\n end: Vector;\n endR: number;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["Shaders.ts"],"sourcesContent":["import type {\n Color,\n SamplingOptions,\n SkImage,\n SkRect,\n SkRuntimeEffect,\n TileMode,\n Uniforms,\n Vector,\n} from \"../../skia/types\";\n\nimport type {\n SkEnum,\n TransformProps,\n ChildrenProps,\n RectCtor,\n Fit,\n} from \"./Common\";\n\nexport interface ShaderProps extends TransformProps, ChildrenProps {\n source: SkRuntimeEffect;\n uniforms: Uniforms;\n}\n\nexport interface ImageShaderProps extends TransformProps, Partial<RectCtor> {\n tx: SkEnum<typeof TileMode>;\n ty: SkEnum<typeof TileMode>;\n fit: Fit;\n rect?: SkRect;\n image: SkImage | null;\n sampling?: SamplingOptions;\n}\n\nexport interface ColorProps {\n color: Color;\n}\n\nexport interface TurbulenceProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface FractalNoiseProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface GradientProps extends TransformProps {\n colors: Color[];\n positions?: number[];\n mode?: SkEnum<typeof TileMode>;\n flags?: number;\n}\n\nexport interface LinearGradientProps extends GradientProps {\n start: Vector;\n end: Vector;\n}\n\nexport interface RadialGradientProps extends GradientProps {\n c: Vector;\n r: number;\n}\n\nexport interface SweepGradientProps extends GradientProps {\n c: Vector;\n start?: number;\n end?: number;\n}\n\nexport interface TwoPointConicalGradientProps extends GradientProps {\n start: Vector;\n startR: number;\n end: Vector;\n endR: number;\n}\n"],"mappings":"","ignoreList":[]}
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useAnimatedImageValue = void 0;
7
- var _react = require("react");
8
7
  var _AnimatedImage = require("../../skia/core/AnimatedImage");
9
8
  var _ReanimatedProxy = _interopRequireDefault(require("./ReanimatedProxy"));
10
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
@@ -17,7 +16,7 @@ const useAnimatedImageValue = (source, paused) => {
17
16
  const animatedImage = (0, _AnimatedImage.useAnimatedImage)(source, err => {
18
17
  console.error(err);
19
18
  throw new Error(`Could not load animated image - got '${err.message}'`);
20
- }, false);
19
+ });
21
20
  const frameDuration = (animatedImage === null || animatedImage === void 0 ? void 0 : animatedImage.currentFrameDuration()) || DEFAULT_FRAME_DURATION;
22
21
  _ReanimatedProxy.default.useFrameCallback(frameInfo => {
23
22
  if (!animatedImage) {
@@ -47,12 +46,6 @@ const useAnimatedImageValue = (source, paused) => {
47
46
  // Update the last timestamp
48
47
  lastTimestamp.value = timestamp;
49
48
  });
50
- (0, _react.useEffect)(() => {
51
- return () => {
52
- animatedImage === null || animatedImage === void 0 || animatedImage.dispose();
53
- };
54
- // eslint-disable-next-line react-hooks/exhaustive-deps
55
- }, []);
56
49
  return currentFrame;
57
50
  };
58
51
  exports.useAnimatedImageValue = useAnimatedImageValue;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_AnimatedImage","_ReanimatedProxy","_interopRequireDefault","e","__esModule","default","DEFAULT_FRAME_DURATION","useAnimatedImageValue","source","paused","defaultPaused","Rea","useSharedValue","isPaused","currentFrame","lastTimestamp","animatedImage","useAnimatedImage","err","console","error","Error","message","frameDuration","currentFrameDuration","useFrameCallback","frameInfo","value","timestamp","elapsed","decodeNextFrame","dispose","getCurrentFrame","useEffect","exports"],"sources":["useAnimatedImageValue.ts"],"sourcesContent":["import { useEffect } from \"react\";\nimport type { FrameInfo, SharedValue } from \"react-native-reanimated\";\n\nimport { useAnimatedImage } from \"../../skia/core/AnimatedImage\";\nimport type { DataSourceParam, SkImage } from \"../../skia/types\";\n\nimport Rea from \"./ReanimatedProxy\";\n\nconst DEFAULT_FRAME_DURATION = 60;\n\nexport const useAnimatedImageValue = (\n source: DataSourceParam,\n paused?: SharedValue<boolean>\n) => {\n const defaultPaused = Rea.useSharedValue(false);\n const isPaused = paused ?? defaultPaused;\n const currentFrame = Rea.useSharedValue<null | SkImage>(null);\n const lastTimestamp = Rea.useSharedValue(-1);\n const animatedImage = useAnimatedImage(\n source,\n (err) => {\n console.error(err);\n throw new Error(`Could not load animated image - got '${err.message}'`);\n },\n false\n );\n const frameDuration =\n animatedImage?.currentFrameDuration() || DEFAULT_FRAME_DURATION;\n\n Rea.useFrameCallback((frameInfo: FrameInfo) => {\n if (!animatedImage) {\n currentFrame.value = null;\n return;\n }\n if (isPaused.value && lastTimestamp.value !== -1) {\n return;\n }\n const { timestamp } = frameInfo;\n const elapsed = timestamp - lastTimestamp.value;\n\n // Check if it's time to switch frames based on GIF frame duration\n if (elapsed < frameDuration) {\n return;\n }\n\n // Update the current frame\n animatedImage.decodeNextFrame();\n if (currentFrame.value) {\n currentFrame.value.dispose();\n }\n currentFrame.value = animatedImage.getCurrentFrame();\n\n // Update the last timestamp\n lastTimestamp.value = timestamp;\n });\n useEffect(() => {\n return () => {\n animatedImage?.dispose();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n return currentFrame;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,cAAA,GAAAD,OAAA;AAGA,IAAAE,gBAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAoC,SAAAG,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpC,MAAMG,sBAAsB,GAAG,EAAE;AAE1B,MAAMC,qBAAqB,GAAGA,CACnCC,MAAuB,EACvBC,MAA6B,KAC1B;EACH,MAAMC,aAAa,GAAGC,wBAAG,CAACC,cAAc,CAAC,KAAK,CAAC;EAC/C,MAAMC,QAAQ,GAAGJ,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIC,aAAa;EACxC,MAAMI,YAAY,GAAGH,wBAAG,CAACC,cAAc,CAAiB,IAAI,CAAC;EAC7D,MAAMG,aAAa,GAAGJ,wBAAG,CAACC,cAAc,CAAC,CAAC,CAAC,CAAC;EAC5C,MAAMI,aAAa,GAAG,IAAAC,+BAAgB,EACpCT,MAAM,EACLU,GAAG,IAAK;IACPC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;IAClB,MAAM,IAAIG,KAAK,CAAC,wCAAwCH,GAAG,CAACI,OAAO,GAAG,CAAC;EACzE,CAAC,EACD,KACF,CAAC;EACD,MAAMC,aAAa,GACjB,CAAAP,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEQ,oBAAoB,CAAC,CAAC,KAAIlB,sBAAsB;EAEjEK,wBAAG,CAACc,gBAAgB,CAAEC,SAAoB,IAAK;IAC7C,IAAI,CAACV,aAAa,EAAE;MAClBF,YAAY,CAACa,KAAK,GAAG,IAAI;MACzB;IACF;IACA,IAAId,QAAQ,CAACc,KAAK,IAAIZ,aAAa,CAACY,KAAK,KAAK,CAAC,CAAC,EAAE;MAChD;IACF;IACA,MAAM;MAAEC;IAAU,CAAC,GAAGF,SAAS;IAC/B,MAAMG,OAAO,GAAGD,SAAS,GAAGb,aAAa,CAACY,KAAK;;IAE/C;IACA,IAAIE,OAAO,GAAGN,aAAa,EAAE;MAC3B;IACF;;IAEA;IACAP,aAAa,CAACc,eAAe,CAAC,CAAC;IAC/B,IAAIhB,YAAY,CAACa,KAAK,EAAE;MACtBb,YAAY,CAACa,KAAK,CAACI,OAAO,CAAC,CAAC;IAC9B;IACAjB,YAAY,CAACa,KAAK,GAAGX,aAAa,CAACgB,eAAe,CAAC,CAAC;;IAEpD;IACAjB,aAAa,CAACY,KAAK,GAAGC,SAAS;EACjC,CAAC,CAAC;EACF,IAAAK,gBAAS,EAAC,MAAM;IACd,OAAO,MAAM;MACXjB,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAEe,OAAO,CAAC,CAAC;IAC1B,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EACN,OAAOjB,YAAY;AACrB,CAAC;AAACoB,OAAA,CAAA3B,qBAAA,GAAAA,qBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_AnimatedImage","require","_ReanimatedProxy","_interopRequireDefault","e","__esModule","default","DEFAULT_FRAME_DURATION","useAnimatedImageValue","source","paused","defaultPaused","Rea","useSharedValue","isPaused","currentFrame","lastTimestamp","animatedImage","useAnimatedImage","err","console","error","Error","message","frameDuration","currentFrameDuration","useFrameCallback","frameInfo","value","timestamp","elapsed","decodeNextFrame","dispose","getCurrentFrame","exports"],"sources":["useAnimatedImageValue.ts"],"sourcesContent":["import type { FrameInfo, SharedValue } from \"react-native-reanimated\";\n\nimport { useAnimatedImage } from \"../../skia/core/AnimatedImage\";\nimport type { DataSourceParam, SkImage } from \"../../skia/types\";\n\nimport Rea from \"./ReanimatedProxy\";\n\nconst DEFAULT_FRAME_DURATION = 60;\n\nexport const useAnimatedImageValue = (\n source: DataSourceParam,\n paused?: SharedValue<boolean>\n) => {\n const defaultPaused = Rea.useSharedValue(false);\n const isPaused = paused ?? defaultPaused;\n const currentFrame = Rea.useSharedValue<null | SkImage>(null);\n const lastTimestamp = Rea.useSharedValue(-1);\n const animatedImage = useAnimatedImage(source, (err) => {\n console.error(err);\n throw new Error(`Could not load animated image - got '${err.message}'`);\n });\n const frameDuration =\n animatedImage?.currentFrameDuration() || DEFAULT_FRAME_DURATION;\n\n Rea.useFrameCallback((frameInfo: FrameInfo) => {\n if (!animatedImage) {\n currentFrame.value = null;\n return;\n }\n if (isPaused.value && lastTimestamp.value !== -1) {\n return;\n }\n const { timestamp } = frameInfo;\n const elapsed = timestamp - lastTimestamp.value;\n\n // Check if it's time to switch frames based on GIF frame duration\n if (elapsed < frameDuration) {\n return;\n }\n\n // Update the current frame\n animatedImage.decodeNextFrame();\n if (currentFrame.value) {\n currentFrame.value.dispose();\n }\n currentFrame.value = animatedImage.getCurrentFrame();\n\n // Update the last timestamp\n lastTimestamp.value = timestamp;\n });\n return currentFrame;\n};\n"],"mappings":";;;;;;AAEA,IAAAA,cAAA,GAAAC,OAAA;AAGA,IAAAC,gBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAoC,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEpC,MAAMG,sBAAsB,GAAG,EAAE;AAE1B,MAAMC,qBAAqB,GAAGA,CACnCC,MAAuB,EACvBC,MAA6B,KAC1B;EACH,MAAMC,aAAa,GAAGC,wBAAG,CAACC,cAAc,CAAC,KAAK,CAAC;EAC/C,MAAMC,QAAQ,GAAGJ,MAAM,aAANA,MAAM,cAANA,MAAM,GAAIC,aAAa;EACxC,MAAMI,YAAY,GAAGH,wBAAG,CAACC,cAAc,CAAiB,IAAI,CAAC;EAC7D,MAAMG,aAAa,GAAGJ,wBAAG,CAACC,cAAc,CAAC,CAAC,CAAC,CAAC;EAC5C,MAAMI,aAAa,GAAG,IAAAC,+BAAgB,EAACT,MAAM,EAAGU,GAAG,IAAK;IACtDC,OAAO,CAACC,KAAK,CAACF,GAAG,CAAC;IAClB,MAAM,IAAIG,KAAK,CAAC,wCAAwCH,GAAG,CAACI,OAAO,GAAG,CAAC;EACzE,CAAC,CAAC;EACF,MAAMC,aAAa,GACjB,CAAAP,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEQ,oBAAoB,CAAC,CAAC,KAAIlB,sBAAsB;EAEjEK,wBAAG,CAACc,gBAAgB,CAAEC,SAAoB,IAAK;IAC7C,IAAI,CAACV,aAAa,EAAE;MAClBF,YAAY,CAACa,KAAK,GAAG,IAAI;MACzB;IACF;IACA,IAAId,QAAQ,CAACc,KAAK,IAAIZ,aAAa,CAACY,KAAK,KAAK,CAAC,CAAC,EAAE;MAChD;IACF;IACA,MAAM;MAAEC;IAAU,CAAC,GAAGF,SAAS;IAC/B,MAAMG,OAAO,GAAGD,SAAS,GAAGb,aAAa,CAACY,KAAK;;IAE/C;IACA,IAAIE,OAAO,GAAGN,aAAa,EAAE;MAC3B;IACF;;IAEA;IACAP,aAAa,CAACc,eAAe,CAAC,CAAC;IAC/B,IAAIhB,YAAY,CAACa,KAAK,EAAE;MACtBb,YAAY,CAACa,KAAK,CAACI,OAAO,CAAC,CAAC;IAC9B;IACAjB,YAAY,CAACa,KAAK,GAAGX,aAAa,CAACgB,eAAe,CAAC,CAAC;;IAEpD;IACAjB,aAAa,CAACY,KAAK,GAAGC,SAAS;EACjC,CAAC,CAAC;EACF,OAAOd,YAAY;AACrB,CAAC;AAACmB,OAAA,CAAA1B,qBAAA,GAAAA,qBAAA","ignoreList":[]}
@@ -1,4 +1,4 @@
1
1
  import React from "react";
2
2
  import type { ImageShaderProps } from "../../../dom/types";
3
3
  import type { SkiaDefaultProps } from "../../processors";
4
- export declare const ImageShader: ({ tx, ty, fm, mm, fit, transform, ...props }: SkiaDefaultProps<ImageShaderProps, "tx" | "ty" | "fm" | "mm" | "fit" | "transform">) => React.JSX.Element;
4
+ export declare const ImageShader: ({ tx, ty, fit, transform, ...props }: SkiaDefaultProps<ImageShaderProps, "tx" | "ty" | "fit" | "transform">) => React.JSX.Element;
@@ -10,8 +10,6 @@ function _extends() { return _extends = Object.assign ? Object.assign.bind() : f
10
10
  const ImageShader = ({
11
11
  tx = "decal",
12
12
  ty = "decal",
13
- fm = "nearest",
14
- mm = "none",
15
13
  fit = "none",
16
14
  transform = [],
17
15
  ...props
@@ -19,8 +17,6 @@ const ImageShader = ({
19
17
  return /*#__PURE__*/_react.default.createElement("skImageShader", _extends({
20
18
  tx: tx,
21
19
  ty: ty,
22
- fm: fm,
23
- mm: mm,
24
20
  fit: fit,
25
21
  transform: transform
26
22
  }, props));
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","ImageShader","tx","ty","fm","mm","fit","transform","props","createElement","exports"],"sources":["ImageShader.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { ImageShaderProps } from \"../../../dom/types\";\nimport type { SkiaDefaultProps } from \"../../processors\";\n\nexport const ImageShader = ({\n tx = \"decal\",\n ty = \"decal\",\n fm = \"nearest\",\n mm = \"none\",\n fit = \"none\",\n transform = [],\n ...props\n}: SkiaDefaultProps<\n ImageShaderProps,\n \"tx\" | \"ty\" | \"fm\" | \"mm\" | \"fit\" | \"transform\"\n>) => {\n return (\n <skImageShader\n tx={tx}\n ty={ty}\n fm={fm}\n mm={mm}\n fit={fit}\n transform={transform}\n {...props}\n />\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,SAAA,WAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,CAAA,aAAAP,CAAA,MAAAA,CAAA,GAAAQ,SAAA,CAAAC,MAAA,EAAAT,CAAA,UAAAU,CAAA,GAAAF,SAAA,CAAAR,CAAA,YAAAW,CAAA,IAAAD,CAAA,OAAAE,cAAA,CAAAC,IAAA,CAAAH,CAAA,EAAAC,CAAA,MAAAJ,CAAA,CAAAI,CAAA,IAAAD,CAAA,CAAAC,CAAA,aAAAJ,CAAA,KAAAJ,QAAA,CAAAW,KAAA,OAAAN,SAAA;AAKnB,MAAMO,WAAW,GAAGA,CAAC;EAC1BC,EAAE,GAAG,OAAO;EACZC,EAAE,GAAG,OAAO;EACZC,EAAE,GAAG,SAAS;EACdC,EAAE,GAAG,MAAM;EACXC,GAAG,GAAG,MAAM;EACZC,SAAS,GAAG,EAAE;EACd,GAAGC;AAIL,CAAC,KAAK;EACJ,oBACEzB,MAAA,CAAAK,OAAA,CAAAqB,aAAA,kBAAApB,QAAA;IACEa,EAAE,EAAEA,EAAG;IACPC,EAAE,EAAEA,EAAG;IACPC,EAAE,EAAEA,EAAG;IACPC,EAAE,EAAEA,EAAG;IACPC,GAAG,EAAEA,GAAI;IACTC,SAAS,EAAEA;EAAU,GACjBC,KAAK,CACV,CAAC;AAEN,CAAC;AAACE,OAAA,CAAAT,WAAA,GAAAA,WAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","e","__esModule","default","_extends","Object","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","ImageShader","tx","ty","fit","transform","props","createElement","exports"],"sources":["ImageShader.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { ImageShaderProps } from \"../../../dom/types\";\nimport type { SkiaDefaultProps } from \"../../processors\";\n\nexport const ImageShader = ({\n tx = \"decal\",\n ty = \"decal\",\n fit = \"none\",\n transform = [],\n ...props\n}: SkiaDefaultProps<ImageShaderProps, \"tx\" | \"ty\" | \"fit\" | \"transform\">) => {\n return (\n <skImageShader tx={tx} ty={ty} fit={fit} transform={transform} {...props} />\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA0B,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,SAAA,WAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,CAAA,aAAAP,CAAA,MAAAA,CAAA,GAAAQ,SAAA,CAAAC,MAAA,EAAAT,CAAA,UAAAU,CAAA,GAAAF,SAAA,CAAAR,CAAA,YAAAW,CAAA,IAAAD,CAAA,OAAAE,cAAA,CAAAC,IAAA,CAAAH,CAAA,EAAAC,CAAA,MAAAJ,CAAA,CAAAI,CAAA,IAAAD,CAAA,CAAAC,CAAA,aAAAJ,CAAA,KAAAJ,QAAA,CAAAW,KAAA,OAAAN,SAAA;AAKnB,MAAMO,WAAW,GAAGA,CAAC;EAC1BC,EAAE,GAAG,OAAO;EACZC,EAAE,GAAG,OAAO;EACZC,GAAG,GAAG,MAAM;EACZC,SAAS,GAAG,EAAE;EACd,GAAGC;AACkE,CAAC,KAAK;EAC3E,oBACEvB,MAAA,CAAAK,OAAA,CAAAmB,aAAA,kBAAAlB,QAAA;IAAea,EAAE,EAAEA,EAAG;IAACC,EAAE,EAAEA,EAAG;IAACC,GAAG,EAAEA,GAAI;IAACC,SAAS,EAAEA;EAAU,GAAKC,KAAK,CAAG,CAAC;AAEhF,CAAC;AAACE,OAAA,CAAAP,WAAA,GAAAA,WAAA","ignoreList":[]}
@@ -2,4 +2,4 @@ import type { DataSourceParam } from "../types";
2
2
  /**
3
3
  * Returns a Skia Animated Image object
4
4
  * */
5
- export declare const useAnimatedImage: (source: DataSourceParam, onError?: (err: Error) => void, managed?: boolean) => import("../types").SkAnimatedImage | null;
5
+ export declare const useAnimatedImage: (source: DataSourceParam, onError?: (err: Error) => void) => import("../types").SkAnimatedImage | null;
@@ -11,6 +11,6 @@ const animatedImgFactory = _Skia.Skia.AnimatedImage.MakeAnimatedImageFromEncoded
11
11
  /**
12
12
  * Returns a Skia Animated Image object
13
13
  * */
14
- const useAnimatedImage = (source, onError, managed = true) => (0, _Data.useRawData)(source, animatedImgFactory, onError, managed);
14
+ const useAnimatedImage = (source, onError) => (0, _Data.useRawData)(source, animatedImgFactory, onError);
15
15
  exports.useAnimatedImage = useAnimatedImage;
16
16
  //# sourceMappingURL=AnimatedImage.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_Skia","require","_Data","animatedImgFactory","Skia","AnimatedImage","MakeAnimatedImageFromEncoded","bind","useAnimatedImage","source","onError","managed","useRawData","exports"],"sources":["AnimatedImage.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { DataSourceParam } from \"../types\";\n\nimport { useRawData } from \"./Data\";\n\nconst animatedImgFactory = Skia.AnimatedImage.MakeAnimatedImageFromEncoded.bind(\n Skia.AnimatedImage\n);\n\n/**\n * Returns a Skia Animated Image object\n * */\nexport const useAnimatedImage = (\n source: DataSourceParam,\n onError?: (err: Error) => void,\n managed = true\n) => useRawData(source, animatedImgFactory, onError, managed);\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAD,OAAA;AAEA,MAAME,kBAAkB,GAAGC,UAAI,CAACC,aAAa,CAACC,4BAA4B,CAACC,IAAI,CAC7EH,UAAI,CAACC,aACP,CAAC;;AAED;AACA;AACA;AACO,MAAMG,gBAAgB,GAAGA,CAC9BC,MAAuB,EACvBC,OAA8B,EAC9BC,OAAO,GAAG,IAAI,KACX,IAAAC,gBAAU,EAACH,MAAM,EAAEN,kBAAkB,EAAEO,OAAO,EAAEC,OAAO,CAAC;AAACE,OAAA,CAAAL,gBAAA,GAAAA,gBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_Skia","require","_Data","animatedImgFactory","Skia","AnimatedImage","MakeAnimatedImageFromEncoded","bind","useAnimatedImage","source","onError","useRawData","exports"],"sources":["AnimatedImage.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { DataSourceParam } from \"../types\";\n\nimport { useRawData } from \"./Data\";\n\nconst animatedImgFactory = Skia.AnimatedImage.MakeAnimatedImageFromEncoded.bind(\n Skia.AnimatedImage\n);\n\n/**\n * Returns a Skia Animated Image object\n * */\nexport const useAnimatedImage = (\n source: DataSourceParam,\n onError?: (err: Error) => void\n) => useRawData(source, animatedImgFactory, onError);\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGA,IAAAC,KAAA,GAAAD,OAAA;AAEA,MAAME,kBAAkB,GAAGC,UAAI,CAACC,aAAa,CAACC,4BAA4B,CAACC,IAAI,CAC7EH,UAAI,CAACC,aACP,CAAC;;AAED;AACA;AACA;AACO,MAAMG,gBAAgB,GAAGA,CAC9BC,MAAuB,EACvBC,OAA8B,KAC3B,IAAAC,gBAAU,EAACF,MAAM,EAAEN,kBAAkB,EAAEO,OAAO,CAAC;AAACE,OAAA,CAAAJ,gBAAA,GAAAA,gBAAA","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { SkData, DataSourceParam, SkJSIInstance } from "../types";
2
2
  export declare const loadData: <T>(source: DataSourceParam, factory: (data: SkData) => T | null, onError?: (err: Error) => void) => Promise<T | null>;
3
3
  export declare const useCollectionLoading: <T extends SkJSIInstance<string>>(source: DataSourceParam[], loader: () => Promise<(T | null)[]>) => T[] | null;
4
- export declare const useRawData: <T extends SkJSIInstance<string>>(source: DataSourceParam, factory: (data: SkData) => T | null, onError?: (err: Error) => void, manage?: boolean) => T | null;
4
+ export declare const useRawData: <T extends SkJSIInstance<string>>(source: DataSourceParam, factory: (data: SkData) => T | null, onError?: (err: Error) => void) => T | null;
5
5
  export declare const useData: (source: DataSourceParam, onError?: (err: Error) => void) => SkData | null;
@@ -27,7 +27,7 @@ const loadData = (source, factory, onError) => {
27
27
  }
28
28
  };
29
29
  exports.loadData = loadData;
30
- const useLoading = (source, loader, manage = true) => {
30
+ const useLoading = (source, loader) => {
31
31
  const mounted = (0, _react.useRef)(false);
32
32
  const [data, setData] = (0, _react.useState)(null);
33
33
  const dataRef = (0, _react.useRef)(null);
@@ -40,10 +40,6 @@ const useLoading = (source, loader, manage = true) => {
40
40
  }
41
41
  });
42
42
  return () => {
43
- if (manage) {
44
- var _dataRef$current;
45
- (_dataRef$current = dataRef.current) === null || _dataRef$current === void 0 || _dataRef$current.dispose();
46
- }
47
43
  mounted.current = false;
48
44
  };
49
45
  // eslint-disable-next-line react-hooks/exhaustive-deps
@@ -64,8 +60,6 @@ const useCollectionLoading = (source, loader) => {
64
60
  }
65
61
  });
66
62
  return () => {
67
- var _dataRef$current2;
68
- (_dataRef$current2 = dataRef.current) === null || _dataRef$current2 === void 0 || _dataRef$current2.forEach(instance => instance === null || instance === void 0 ? void 0 : instance.dispose());
69
63
  mounted.current = false;
70
64
  };
71
65
 
@@ -74,7 +68,7 @@ const useCollectionLoading = (source, loader) => {
74
68
  return data;
75
69
  };
76
70
  exports.useCollectionLoading = useCollectionLoading;
77
- const useRawData = (source, factory, onError, manage = true) => useLoading(source, () => loadData(source, factory, onError), manage);
71
+ const useRawData = (source, factory, onError) => useLoading(source, () => loadData(source, factory, onError));
78
72
  exports.useRawData = useRawData;
79
73
  const identity = data => data;
80
74
  const useData = (source, onError) => useRawData(source, identity, onError);