@shopify/react-native-skia 1.5.8 → 1.5.9

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 (104) hide show
  1. package/android/CMakeLists.txt +0 -1
  2. package/android/cpp/jni/JniPlatformContext.cpp +0 -49
  3. package/android/cpp/jni/include/JniPlatformContext.h +1 -17
  4. package/android/cpp/jni/include/JniSkiaBaseView.h +0 -2
  5. package/android/cpp/jni/include/JniSkiaDomView.h +0 -3
  6. package/android/cpp/jni/include/JniSkiaManager.h +0 -2
  7. package/android/cpp/jni/include/JniSkiaPictureView.h +0 -3
  8. package/android/cpp/rnskia-android/MainThreadDispatcher.h +69 -0
  9. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +4 -11
  10. package/android/cpp/rnskia-android/RNSkAndroidView.h +3 -13
  11. package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +0 -1
  12. package/android/src/main/java/com/shopify/reactnative/skia/PlatformContext.java +0 -85
  13. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaModule.java +1 -21
  14. package/android/src/main/java/com/shopify/reactnative/skia/SkiaManager.java +0 -4
  15. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerDelegate.java +1 -4
  16. package/android/src/paper/java/com/facebook/react/viewmanagers/SkiaDomViewManagerInterface.java +0 -1
  17. package/cpp/rnskia/RNSkManager.cpp +2 -3
  18. package/cpp/rnskia/RNSkPlatformContext.h +2 -114
  19. package/cpp/rnskia/RNSkView.h +16 -75
  20. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +1 -10
  21. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +0 -16
  22. package/ios/RNSkia-iOS/SkiaDomView.mm +0 -1
  23. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +0 -6
  24. package/ios/RNSkia-iOS/SkiaPictureView.mm +0 -1
  25. package/ios/RNSkia-iOS/SkiaPictureViewManager.mm +0 -6
  26. package/ios/RNSkia-iOS/SkiaUIView.h +0 -1
  27. package/ios/RNSkia-iOS/SkiaUIView.mm +1 -14
  28. package/lib/commonjs/renderer/Canvas.d.ts +1 -0
  29. package/lib/commonjs/renderer/Canvas.js +5 -5
  30. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  31. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.d.ts +0 -1
  32. package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  33. package/lib/commonjs/views/SkiaBaseWebView.d.ts +1 -12
  34. package/lib/commonjs/views/SkiaBaseWebView.js +1 -19
  35. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  36. package/lib/commonjs/views/SkiaDomView.d.ts +8 -1
  37. package/lib/commonjs/views/SkiaDomView.js +14 -2
  38. package/lib/commonjs/views/SkiaDomView.js.map +1 -1
  39. package/lib/commonjs/views/SkiaDomView.web.d.ts +3 -3
  40. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -1
  41. package/lib/commonjs/views/SkiaJSDomView.d.ts +12 -6
  42. package/lib/commonjs/views/SkiaJSDomView.js +12 -3
  43. package/lib/commonjs/views/SkiaJSDomView.js.map +1 -1
  44. package/lib/commonjs/views/SkiaPictureView.d.ts +8 -1
  45. package/lib/commonjs/views/SkiaPictureView.js +14 -1
  46. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  47. package/lib/commonjs/views/SkiaPictureView.web.d.ts +3 -3
  48. package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
  49. package/lib/commonjs/views/types.d.ts +2 -12
  50. package/lib/commonjs/views/types.js.map +1 -1
  51. package/lib/module/renderer/Canvas.d.ts +1 -0
  52. package/lib/module/renderer/Canvas.js +5 -5
  53. package/lib/module/renderer/Canvas.js.map +1 -1
  54. package/lib/module/specs/SkiaPictureViewNativeComponent.d.ts +0 -1
  55. package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +1 -1
  56. package/lib/module/views/SkiaBaseWebView.d.ts +1 -12
  57. package/lib/module/views/SkiaBaseWebView.js +1 -19
  58. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  59. package/lib/module/views/SkiaDomView.d.ts +8 -1
  60. package/lib/module/views/SkiaDomView.js +14 -2
  61. package/lib/module/views/SkiaDomView.js.map +1 -1
  62. package/lib/module/views/SkiaDomView.web.d.ts +3 -3
  63. package/lib/module/views/SkiaDomView.web.js.map +1 -1
  64. package/lib/module/views/SkiaJSDomView.d.ts +12 -6
  65. package/lib/module/views/SkiaJSDomView.js +12 -3
  66. package/lib/module/views/SkiaJSDomView.js.map +1 -1
  67. package/lib/module/views/SkiaPictureView.d.ts +8 -1
  68. package/lib/module/views/SkiaPictureView.js +14 -1
  69. package/lib/module/views/SkiaPictureView.js.map +1 -1
  70. package/lib/module/views/SkiaPictureView.web.d.ts +3 -3
  71. package/lib/module/views/SkiaPictureView.web.js.map +1 -1
  72. package/lib/module/views/types.d.ts +2 -12
  73. package/lib/module/views/types.js.map +1 -1
  74. package/lib/typescript/lib/commonjs/views/SkiaBaseWebView.d.ts +0 -11
  75. package/lib/typescript/lib/commonjs/views/SkiaDomView.d.ts +3 -0
  76. package/lib/typescript/lib/commonjs/views/SkiaJSDomView.d.ts +2 -0
  77. package/lib/typescript/lib/commonjs/views/SkiaPictureView.d.ts +3 -0
  78. package/lib/typescript/lib/module/views/SkiaBaseWebView.d.ts +0 -11
  79. package/lib/typescript/lib/module/views/SkiaDomView.d.ts +3 -0
  80. package/lib/typescript/lib/module/views/SkiaJSDomView.d.ts +2 -0
  81. package/lib/typescript/lib/module/views/SkiaPictureView.d.ts +3 -0
  82. package/lib/typescript/src/renderer/Canvas.d.ts +1 -0
  83. package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.d.ts +0 -1
  84. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +1 -12
  85. package/lib/typescript/src/views/SkiaDomView.d.ts +8 -1
  86. package/lib/typescript/src/views/SkiaDomView.web.d.ts +3 -3
  87. package/lib/typescript/src/views/SkiaJSDomView.d.ts +12 -6
  88. package/lib/typescript/src/views/SkiaPictureView.d.ts +8 -1
  89. package/lib/typescript/src/views/SkiaPictureView.web.d.ts +3 -3
  90. package/lib/typescript/src/views/types.d.ts +2 -12
  91. package/package.json +1 -1
  92. package/src/renderer/Canvas.tsx +4 -3
  93. package/src/specs/SkiaPictureViewNativeComponent.ts +0 -1
  94. package/src/views/SkiaBaseWebView.tsx +3 -19
  95. package/src/views/SkiaDomView.tsx +23 -4
  96. package/src/views/SkiaDomView.web.tsx +3 -3
  97. package/src/views/SkiaJSDomView.tsx +30 -9
  98. package/src/views/SkiaPictureView.tsx +22 -2
  99. package/src/views/SkiaPictureView.web.tsx +3 -3
  100. package/src/views/types.ts +2 -13
  101. package/cpp/rnskia/RNSkDispatchQueue.cpp +0 -73
  102. package/cpp/rnskia/RNSkDispatchQueue.h +0 -49
  103. package/ios/RNSkia-iOS/DisplayLink.h +0 -17
  104. package/ios/RNSkia-iOS/DisplayLink.mm +0 -41
@@ -9,7 +9,6 @@
9
9
  #include <unordered_map>
10
10
  #include <utility>
11
11
 
12
- #include "RNSkDispatchQueue.h"
13
12
  #include "RNSkVideo.h"
14
13
  #include "WindowContext.h"
15
14
 
@@ -42,57 +41,19 @@ public:
42
41
  std::shared_ptr<react::CallInvoker> callInvoker,
43
42
  float pixelDensity)
44
43
  : _pixelDensity(pixelDensity), _jsRuntime(runtime),
45
- _callInvoker(callInvoker),
46
- _dispatchQueue(
47
- std::make_unique<RNSkDispatchQueue>("skia-render-thread")) {
48
- _jsThreadId = std::this_thread::get_id();
44
+ _callInvoker(callInvoker) {
49
45
  }
50
46
 
51
- /**
52
- * Destructor
53
- */
54
- virtual ~RNSkPlatformContext() { invalidate(); }
55
-
56
- void invalidate() {
57
- if (!_isValid) {
58
- return;
59
- }
60
- // Stop the refresh loop
61
- stopDrawLoop();
62
- // Notify draw loop listeners once with the invalidated parameter
63
- // set to true signalling that we are done and can clean up.
64
- notifyDrawLoop(true);
65
- _isValid = false;
66
- }
67
-
68
- /*
69
- Returns true if the current execution context is the javascript thread.
70
- */
71
- bool isOnJavascriptThread() {
72
- return _jsThreadId == std::this_thread::get_id();
73
- }
47
+ virtual ~RNSkPlatformContext() = default;
74
48
 
75
49
  /**
76
50
  * Schedules the function to be run on the javascript thread async
77
51
  * @param func Function to run
78
52
  */
79
53
  void runOnJavascriptThread(std::function<void()> func) {
80
- if (!_isValid) {
81
- return;
82
- }
83
54
  _callInvoker->invokeAsync(std::move(func));
84
55
  }
85
56
 
86
- /**
87
- Runs the function on the render thread
88
- */
89
- void runOnRenderThread(std::function<void()> func) {
90
- if (!_isValid) {
91
- return;
92
- }
93
- _dispatchQueue->dispatch(std::move(func));
94
- }
95
-
96
57
  /**
97
58
  * Runs the passed function on the main thread
98
59
  * @param func Function to run.
@@ -192,82 +153,9 @@ public:
192
153
  */
193
154
  float getPixelDensity() { return _pixelDensity; }
194
155
 
195
- /**
196
- * Starts (if not started) a loop that will call back on display sync
197
- * @param callback Callback to call on sync
198
- * @returns Identifier of the draw loop entry
199
- */
200
- size_t beginDrawLoop(size_t nativeId, std::function<void(bool)> callback) {
201
- if (!_isValid) {
202
- return 0;
203
- }
204
- auto shouldStart = false;
205
- {
206
- std::lock_guard<std::mutex> lock(_drawCallbacksLock);
207
- _drawCallbacks.emplace(nativeId, std::move(callback));
208
- shouldStart = _drawCallbacks.size() == 1;
209
- }
210
- if (shouldStart) {
211
- // Start
212
- startDrawLoop();
213
- }
214
- return nativeId;
215
- }
216
-
217
- /**
218
- * Ends (if running) the drawing loop that was started with beginDrawLoop.
219
- * This method must be called symmetrically with the beginDrawLoop method.
220
- * @param nativeId Identifier of view to end
221
- */
222
- void endDrawLoop(size_t nativeId) {
223
- if (!_isValid) {
224
- return;
225
- }
226
- auto shouldStop = false;
227
- {
228
- std::lock_guard<std::mutex> lock(_drawCallbacksLock);
229
- if (_drawCallbacks.count(nativeId) > 0) {
230
- _drawCallbacks.erase(nativeId);
231
- }
232
- shouldStop = _drawCallbacks.size() == 0;
233
- }
234
- if (shouldStop) {
235
- stopDrawLoop();
236
- }
237
- }
238
-
239
- /**
240
- * Notifies all drawing callbacks
241
- * @param invalidated True if the context was invalidated, otherwise false.
242
- * This can be used to receive a notification that we have stopped the main
243
- * drawloop
244
- */
245
- void notifyDrawLoop(bool invalidated) {
246
- if (!_isValid) {
247
- return;
248
- }
249
- std::lock_guard<std::mutex> lock(_drawCallbacksLock);
250
- for (auto it = _drawCallbacks.begin(); it != _drawCallbacks.end(); it++) {
251
- it->second(invalidated);
252
- }
253
- }
254
-
255
- // default implementation does nothing, so it can be called from virtual
256
- // destructor.
257
- virtual void startDrawLoop() {}
258
- virtual void stopDrawLoop() {}
259
-
260
156
  private:
261
157
  float _pixelDensity;
262
-
263
- std::thread::id _jsThreadId;
264
-
265
158
  jsi::Runtime *_jsRuntime;
266
159
  std::shared_ptr<react::CallInvoker> _callInvoker;
267
- std::unique_ptr<RNSkDispatchQueue> _dispatchQueue;
268
-
269
- std::unordered_map<size_t, std::function<void(bool)>> _drawCallbacks;
270
- std::mutex _drawCallbacksLock;
271
- std::atomic<bool> _isValid = {true};
272
160
  };
273
161
  } // namespace RNSkia
@@ -145,8 +145,6 @@ private:
145
145
  std::shared_ptr<RNSkPlatformContext> _context;
146
146
  };
147
147
 
148
- enum RNSkDrawingMode { Default, Continuous };
149
-
150
148
  class RNSkView : public std::enable_shared_from_this<RNSkView> {
151
149
  public:
152
150
  /**
@@ -161,7 +159,7 @@ public:
161
159
  /**
162
160
  Destructor
163
161
  */
164
- virtual ~RNSkView() { endDrawingLoop(); }
162
+ virtual ~RNSkView() {}
165
163
 
166
164
  /**
167
165
  Sets custom properties. Custom properties are properties that are set
@@ -172,43 +170,33 @@ public:
172
170
  // Nothing here...
173
171
  }
174
172
 
175
- /**
176
- * Repaints the Skia view using the underlying context and the drawcallback.
177
- * This method schedules a draw request that will be run on the correct
178
- * thread and js runtime.
179
- */
180
- void requestRedraw() { _redrawRequestCounter++; }
173
+ void requestRedraw() {
174
+ if (!_redrawRequested) {
175
+ _redrawRequested = true;
176
+ _platformContext->runOnMainThread([this]() {
177
+ if (_renderer) {
178
+ _renderer->renderImmediate(_canvasProvider);
179
+ _redrawRequested = false;
180
+ }
181
+ });
182
+ }
183
+ }
181
184
 
182
- /**
183
- Renders immediate. Be carefull to not call this method from another thread
184
- than the UI thread
185
- */
186
- void renderImmediate() {
185
+ void redraw() {
187
186
  _renderer->renderImmediate(_canvasProvider);
188
- _redrawRequestCounter = 0;
187
+ _redrawRequested = false;
189
188
  }
190
189
 
191
190
  /**
192
191
  Sets the native id of the view
193
192
  */
194
- virtual void setNativeId(size_t nativeId) {
195
- _nativeId = nativeId;
196
- beginDrawingLoop();
197
- }
193
+ virtual void setNativeId(size_t nativeId) { _nativeId = nativeId; }
198
194
 
199
195
  /**
200
196
  Returns the native id
201
197
  */
202
198
  size_t getNativeId() { return _nativeId; }
203
199
 
204
- /**
205
- Sets the drawing mode for the view
206
- */
207
- void setDrawingMode(RNSkDrawingMode mode) {
208
- _drawingMode = mode;
209
- requestRedraw();
210
- }
211
-
212
200
  /**
213
201
  * Set to true to show the debug overlays on render
214
202
  */
@@ -240,61 +228,14 @@ protected:
240
228
  return _canvasProvider;
241
229
  }
242
230
 
243
- /**
244
- Ends an ongoing beginDrawCallback loop for this view. This method is made
245
- protected if the drawing loop should be stopped before reaching the
246
- destructor (like we do for Android views)
247
- */
248
- void endDrawingLoop() {
249
- if (_drawingLoopId != 0) {
250
- _drawingLoopId = 0;
251
- _platformContext->endDrawLoop(_nativeId);
252
- }
253
- }
254
-
255
231
  private:
256
- /**
257
- Starts beginDrawCallback loop if the drawing mode is continuous
258
- */
259
- void beginDrawingLoop() {
260
- if (_drawingLoopId != 0 || _nativeId == 0) {
261
- return;
262
- }
263
- // Set to zero to avoid calling beginDrawLoop before we return
264
- _drawingLoopId = _platformContext->beginDrawLoop(
265
- _nativeId, [weakSelf = weak_from_this()](bool invalidated) {
266
- auto self = weakSelf.lock();
267
- if (self) {
268
- self->drawLoopCallback(invalidated);
269
- }
270
- });
271
- }
272
-
273
- /**
274
- Draw loop callback
275
- */
276
- void drawLoopCallback(bool invalidated) {
277
- if (_redrawRequestCounter > 0 ||
278
- _drawingMode == RNSkDrawingMode::Continuous) {
279
- _redrawRequestCounter = 0;
280
-
281
- if (!_renderer->tryRender(_canvasProvider)) {
282
- // The renderer could not render cause it was busy, just schedule
283
- // redrawing on the next frame.
284
- requestRedraw();
285
- }
286
- }
287
- }
288
-
289
232
  std::shared_ptr<RNSkPlatformContext> _platformContext;
290
233
  std::shared_ptr<RNSkCanvasProvider> _canvasProvider;
291
234
  std::shared_ptr<RNSkRenderer> _renderer;
292
235
 
293
- RNSkDrawingMode _drawingMode = RNSkDrawingMode::Default;
294
236
  size_t _nativeId;
295
237
 
296
- size_t _drawingLoopId = 0;
297
- std::atomic<int> _redrawRequestCounter = {1};
238
+ std::atomic<bool> _redrawRequested = {false};
298
239
  };
299
240
 
300
241
  } // namespace RNSkia
@@ -7,7 +7,6 @@
7
7
  #include <memory>
8
8
  #include <string>
9
9
 
10
- #include "DisplayLink.h"
11
10
  #include "RNSkPlatformContext.h"
12
11
  #include "ViewScreenshotService.h"
13
12
 
@@ -49,12 +48,8 @@ public:
49
48
  ~RNSkiOSPlatformContext() {
50
49
  CFNotificationCenterRemoveEveryObserver(
51
50
  CFNotificationCenterGetLocalCenter(), this);
52
- stopDrawLoop();
53
51
  }
54
52
 
55
- void startDrawLoop() override;
56
- void stopDrawLoop() override;
57
-
58
53
  void runOnMainThread(std::function<void()>) override;
59
54
 
60
55
  sk_sp<SkImage> takeScreenshotFromViewTag(size_t tag) override;
@@ -81,13 +76,9 @@ public:
81
76
  #endif
82
77
  sk_sp<SkFontMgr> createFontMgr() override;
83
78
 
84
- void willInvalidateModules() {
85
- // We need to do some house-cleaning here!
86
- invalidate();
87
- }
79
+ void willInvalidateModules() {}
88
80
 
89
81
  private:
90
- DisplayLink *_displayLink;
91
82
  ViewScreenshotService *_screenshotService;
92
83
  };
93
84
 
@@ -214,20 +214,4 @@ RNSkiOSPlatformContext::takeScreenshotFromViewTag(size_t viewTag) {
214
214
  screenshotOfViewWithTag:[NSNumber numberWithLong:viewTag]];
215
215
  }
216
216
 
217
- void RNSkiOSPlatformContext::startDrawLoop() {
218
- if (_displayLink == nullptr) {
219
- _displayLink = [[DisplayLink alloc] init];
220
- [_displayLink start:^(double time) {
221
- notifyDrawLoop(false);
222
- }];
223
- }
224
- }
225
-
226
- void RNSkiOSPlatformContext::stopDrawLoop() {
227
- if (_displayLink != nullptr) {
228
- [_displayLink stop];
229
- _displayLink = nullptr;
230
- }
231
- }
232
-
233
217
  } // namespace RNSkia
@@ -51,7 +51,6 @@ using namespace facebook::react;
51
51
  int nativeId =
52
52
  [[RCTConvert NSString:RCTNSStringFromString(newProps.nativeId)] intValue];
53
53
  [self setNativeId:nativeId];
54
- [self setDrawingMode:newProps.mode];
55
54
  [self setDebugMode:newProps.debug];
56
55
  }
57
56
 
@@ -26,12 +26,6 @@ RCT_CUSTOM_VIEW_PROPERTY(nativeID, NSNumber, SkiaUIView) {
26
26
  [(SkiaUIView *)view setNativeId:nativeId];
27
27
  }
28
28
 
29
- RCT_CUSTOM_VIEW_PROPERTY(mode, NSString, SkiaUIView) {
30
- std::string mode =
31
- json != NULL ? [[RCTConvert NSString:json] UTF8String] : "default";
32
- [(SkiaUIView *)view setDrawingMode:mode];
33
- }
34
-
35
29
  RCT_CUSTOM_VIEW_PROPERTY(debug, BOOL, SkiaUIView) {
36
30
  bool debug = json != NULL ? [RCTConvert BOOL:json] : false;
37
31
  [(SkiaUIView *)view setDebugMode:debug];
@@ -53,7 +53,6 @@ using namespace facebook::react;
53
53
  int nativeId =
54
54
  [[RCTConvert NSString:RCTNSStringFromString(newProps.nativeId)] intValue];
55
55
  [self setNativeId:nativeId];
56
- [self setDrawingMode:newProps.mode];
57
56
  [self setDebugMode:newProps.debug];
58
57
  }
59
58
 
@@ -26,12 +26,6 @@ RCT_CUSTOM_VIEW_PROPERTY(nativeID, NSNumber, SkiaUIView) {
26
26
  [(SkiaUIView *)view setNativeId:nativeId];
27
27
  }
28
28
 
29
- RCT_CUSTOM_VIEW_PROPERTY(mode, NSString, SkiaUIView) {
30
- std::string mode =
31
- json != NULL ? [[RCTConvert NSString:json] UTF8String] : "default";
32
- [(SkiaUIView *)view setDrawingMode:mode];
33
- }
34
-
35
29
  RCT_CUSTOM_VIEW_PROPERTY(debug, BOOL, SkiaUIView) {
36
30
  bool debug = json != NULL ? [RCTConvert BOOL:json] : false;
37
31
  [(SkiaUIView *)view setDebugMode:debug];
@@ -31,7 +31,6 @@
31
31
  - (std::shared_ptr<RNSkBaseiOSView>)impl;
32
32
  - (SkiaManager *)skiaManager;
33
33
 
34
- - (void)setDrawingMode:(std::string)mode;
35
34
  - (void)setDebugMode:(bool)debugMode;
36
35
  - (void)setNativeId:(size_t)nativeId;
37
36
 
@@ -11,7 +11,6 @@
11
11
  @implementation SkiaUIView {
12
12
  std::shared_ptr<RNSkBaseiOSView> _impl;
13
13
  RNSkia::RNSkManager *_manager;
14
- RNSkia::RNSkDrawingMode _drawingMode;
15
14
  std::function<std::shared_ptr<RNSkBaseiOSView>(
16
15
  std::shared_ptr<RNSkia::RNSkPlatformContext>)>
17
16
  _factory;
@@ -45,7 +44,6 @@
45
44
  _manager = manager;
46
45
  _nativeId = 0;
47
46
  _debugMode = false;
48
- _drawingMode = RNSkia::RNSkDrawingMode::Default;
49
47
  _factory = factory;
50
48
  }
51
49
 
@@ -86,7 +84,6 @@
86
84
  if (_nativeId != 0) {
87
85
  _manager->setSkiaView(_nativeId, _impl->getDrawView());
88
86
  }
89
- _impl->getDrawView()->setDrawingMode(_drawingMode);
90
87
  _impl->getDrawView()->setShowDebugOverlays(_debugMode);
91
88
  }
92
89
  }
@@ -131,7 +128,7 @@
131
128
  // We override drawRect to ensure we to direct rendering when the
132
129
  // underlying OS view needs to render:
133
130
  if (_impl != nullptr) {
134
- _impl->getDrawView()->renderImmediate();
131
+ _impl->getDrawView()->redraw();
135
132
  }
136
133
  }
137
134
 
@@ -146,16 +143,6 @@
146
143
 
147
144
  #pragma mark Properties
148
145
 
149
- - (void)setDrawingMode:(std::string)mode {
150
- _drawingMode = mode.compare("continuous") == 0
151
- ? RNSkia::RNSkDrawingMode::Continuous
152
- : RNSkia::RNSkDrawingMode::Default;
153
-
154
- if (_impl != nullptr) {
155
- _impl->getDrawView()->setDrawingMode(_drawingMode);
156
- }
157
- }
158
-
159
146
  - (void)setDebugMode:(bool)debugMode {
160
147
  _debugMode = debugMode;
161
148
  if (_impl != nullptr) {
@@ -6,5 +6,6 @@ export declare const useCanvasRef: () => React.RefObject<SkiaDomView>;
6
6
  export interface CanvasProps extends SkiaBaseViewProps {
7
7
  ref?: RefObject<SkiaDomView>;
8
8
  children: ReactNode;
9
+ mode?: "default" | "continuous";
9
10
  }
10
11
  export declare const Canvas: FunctionComponent<CanvasProps & React.RefAttributes<SkiaDomView>>;
@@ -36,7 +36,7 @@ const Canvas = exports.Canvas = /*#__PURE__*/(0, _react.forwardRef)(({
36
36
  children,
37
37
  style,
38
38
  debug,
39
- mode,
39
+ mode = "default",
40
40
  onSize: _onSize,
41
41
  onLayout: _onLayout,
42
42
  ...props
@@ -70,19 +70,19 @@ const Canvas = exports.Canvas = /*#__PURE__*/(0, _react.forwardRef)(({
70
70
  style: style,
71
71
  root: root.dom,
72
72
  onLayout: onLayout,
73
- mode: mode,
74
- debug: debug
73
+ debug: debug,
74
+ mode: mode
75
75
  }, props));
76
76
  } else {
77
77
  return /*#__PURE__*/_react.default.createElement(_SkiaJSDomView.SkiaJSDomView, _extends({
78
- Skia: _Skia.Skia
78
+ Skia: _Skia.Skia,
79
+ mode: mode
79
80
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
80
81
  ,
81
82
  ref: ref,
82
83
  style: style,
83
84
  root: root.dom,
84
85
  onLayout: onLayout,
85
- mode: mode,
86
86
  debug: debug
87
87
  }, props));
88
88
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_views","_Skia","_SkiaJSDomView","_Reconciler","_HostComponents","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","useCanvasRef","useRef","exports","useOnSizeEvent","resultValue","onLayout","useCallback","event","width","height","nativeEvent","layout","value","Canvas","forwardRef","children","style","debug","mode","onSize","_onSize","_onLayout","props","forwardedRef","innerRef","ref","useCombinedRefs","redraw","_innerRef$current","current","getNativeId","_innerRef$current$nat","_innerRef$current2","id","nativeId","root","useMemo","SkiaRoot","Skia","NATIVE_DOM","useEffect","render","unmount","createElement","SkiaDomView","dom","SkiaJSDomView","refs","targetRef","React","forEach"],"sources":["Canvas.tsx"],"sourcesContent":["import React, {\n useEffect,\n useCallback,\n useMemo,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n MutableRefObject,\n ForwardedRef,\n FunctionComponent,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\n\nimport { SkiaDomView } from \"../views\";\nimport { Skia } from \"../skia/Skia\";\nimport type { SkiaBaseViewProps } from \"../views\";\nimport { SkiaJSDomView } from \"../views/SkiaJSDomView\";\n\nimport { SkiaRoot } from \"./Reconciler\";\nimport { NATIVE_DOM } from \"./HostComponents\";\n\nexport const useCanvasRef = () => useRef<SkiaDomView>(null);\n\nexport interface CanvasProps extends SkiaBaseViewProps {\n ref?: RefObject<SkiaDomView>;\n children: ReactNode;\n}\n\nconst useOnSizeEvent = (\n resultValue: SkiaBaseViewProps[\"onSize\"],\n onLayout?: (event: LayoutChangeEvent) => void\n) => {\n return useCallback(\n (event: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(event);\n }\n const { width, height } = event.nativeEvent.layout;\n\n if (resultValue) {\n resultValue.value = { width, height };\n }\n },\n [onLayout, resultValue]\n );\n};\n\nexport const Canvas = forwardRef<SkiaDomView, CanvasProps>(\n (\n {\n children,\n style,\n debug,\n mode,\n onSize: _onSize,\n onLayout: _onLayout,\n ...props\n },\n forwardedRef\n ) => {\n const onLayout = useOnSizeEvent(_onSize, _onLayout);\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const redraw = useCallback(() => {\n innerRef.current?.redraw();\n }, [innerRef]);\n const getNativeId = useCallback(() => {\n const id = innerRef.current?.nativeId ?? -1;\n return id;\n }, [innerRef]);\n\n const root = useMemo(\n () => new SkiaRoot(Skia, NATIVE_DOM, redraw, getNativeId),\n [redraw, getNativeId]\n );\n\n // Render effect\n useEffect(() => {\n root.render(children);\n }, [children, root, redraw]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n if (NATIVE_DOM) {\n return (\n <SkiaDomView\n ref={ref}\n style={style}\n root={root.dom}\n onLayout={onLayout}\n mode={mode}\n debug={debug}\n {...props}\n />\n );\n } else {\n return (\n <SkiaJSDomView\n Skia={Skia}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref={ref as any}\n style={style}\n root={root.dom}\n onLayout={onLayout}\n mode={mode}\n debug={debug}\n {...props}\n />\n );\n }\n }\n) as FunctionComponent<CanvasProps & React.RefAttributes<SkiaDomView>>;\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_views","_Skia","_SkiaJSDomView","_Reconciler","_HostComponents","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","useCanvasRef","useRef","exports","useOnSizeEvent","resultValue","onLayout","useCallback","event","width","height","nativeEvent","layout","value","Canvas","forwardRef","children","style","debug","mode","onSize","_onSize","_onLayout","props","forwardedRef","innerRef","ref","useCombinedRefs","redraw","_innerRef$current","current","getNativeId","_innerRef$current$nat","_innerRef$current2","id","nativeId","root","useMemo","SkiaRoot","Skia","NATIVE_DOM","useEffect","render","unmount","createElement","SkiaDomView","dom","SkiaJSDomView","refs","targetRef","React","forEach"],"sources":["Canvas.tsx"],"sourcesContent":["import React, {\n useEffect,\n useCallback,\n useMemo,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n MutableRefObject,\n ForwardedRef,\n FunctionComponent,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\n\nimport { SkiaDomView } from \"../views\";\nimport { Skia } from \"../skia/Skia\";\nimport type { SkiaBaseViewProps } from \"../views\";\nimport { SkiaJSDomView } from \"../views/SkiaJSDomView\";\n\nimport { SkiaRoot } from \"./Reconciler\";\nimport { NATIVE_DOM } from \"./HostComponents\";\n\nexport const useCanvasRef = () => useRef<SkiaDomView>(null);\n\nexport interface CanvasProps extends SkiaBaseViewProps {\n ref?: RefObject<SkiaDomView>;\n children: ReactNode;\n mode?: \"default\" | \"continuous\";\n}\n\nconst useOnSizeEvent = (\n resultValue: SkiaBaseViewProps[\"onSize\"],\n onLayout?: (event: LayoutChangeEvent) => void\n) => {\n return useCallback(\n (event: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(event);\n }\n const { width, height } = event.nativeEvent.layout;\n\n if (resultValue) {\n resultValue.value = { width, height };\n }\n },\n [onLayout, resultValue]\n );\n};\n\nexport const Canvas = forwardRef<SkiaDomView, CanvasProps>(\n (\n {\n children,\n style,\n debug,\n mode = \"default\",\n onSize: _onSize,\n onLayout: _onLayout,\n ...props\n },\n forwardedRef\n ) => {\n const onLayout = useOnSizeEvent(_onSize, _onLayout);\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const redraw = useCallback(() => {\n innerRef.current?.redraw();\n }, [innerRef]);\n const getNativeId = useCallback(() => {\n const id = innerRef.current?.nativeId ?? -1;\n return id;\n }, [innerRef]);\n\n const root = useMemo(\n () => new SkiaRoot(Skia, NATIVE_DOM, redraw, getNativeId),\n [redraw, getNativeId]\n );\n\n // Render effect\n useEffect(() => {\n root.render(children);\n }, [children, root, redraw]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n if (NATIVE_DOM) {\n return (\n <SkiaDomView\n ref={ref}\n style={style}\n root={root.dom}\n onLayout={onLayout}\n debug={debug}\n mode={mode}\n {...props}\n />\n );\n } else {\n return (\n <SkiaJSDomView\n Skia={Skia}\n mode={mode}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref={ref as any}\n style={style}\n root={root.dom}\n onLayout={onLayout}\n debug={debug}\n {...props}\n />\n );\n }\n }\n) as FunctionComponent<CanvasProps & React.RefAttributes<SkiaDomView>>;\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  import type { ViewProps } from "react-native";
2
2
  export interface NativeProps extends ViewProps {
3
- mode: string;
4
3
  debug?: boolean;
5
4
  }
6
5
  declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
@@ -1 +1 @@
1
- {"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n mode: string;\n debug?: boolean;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaPictureView\");\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAQ7F;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GACe,IAAAG,+BAAsB,EAAc,iBAAiB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_codegenNativeComponent","_interopRequireDefault","require","e","__esModule","default","_default","exports","codegenNativeComponent"],"sources":["SkiaPictureViewNativeComponent.ts"],"sourcesContent":["import codegenNativeComponent from \"react-native/Libraries/Utilities/codegenNativeComponent\";\nimport type { ViewProps } from \"react-native\";\n\nexport interface NativeProps extends ViewProps {\n debug?: boolean;\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default codegenNativeComponent<NativeProps>(\"SkiaPictureView\");\n"],"mappings":";;;;;;AAAA,IAAAA,uBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAA6F,SAAAD,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAO7F;AAAA,IAAAG,QAAA,GAAAC,OAAA,CAAAF,OAAA,GACe,IAAAG,+BAAsB,EAAc,iBAAiB,CAAC","ignoreList":[]}
@@ -1,13 +1,12 @@
1
1
  import React from "react";
2
2
  import type { SkRect, SkCanvas } from "../skia/types";
3
- import type { DrawMode, SkiaBaseViewProps } from "./types";
3
+ import type { SkiaBaseViewProps } from "./types";
4
4
  export declare abstract class SkiaBaseWebView<TProps extends SkiaBaseViewProps> extends React.Component<TProps> {
5
5
  constructor(props: TProps);
6
6
  private _surface;
7
7
  private _unsubscriptions;
8
8
  private _canvas;
9
9
  private _canvasRef;
10
- private _mode;
11
10
  private _redrawRequests;
12
11
  private requestId;
13
12
  protected width: number;
@@ -36,16 +35,6 @@ export declare abstract class SkiaBaseWebView<TProps extends SkiaBaseViewProps>
36
35
  */
37
36
  private tick;
38
37
  redraw(): void;
39
- /**
40
- * Updates the drawing mode for the skia view. This is the same
41
- * as declaratively setting the mode property on the SkiaView.
42
- * There are two drawing modes, "continuous" and "default",
43
- * where the continuous mode will continuously redraw the view and
44
- * the default mode will only redraw when any of the regular react
45
- * properties are changed like size and margins.
46
- * @param mode Drawing mode to use.
47
- */
48
- setDrawMode(mode: DrawMode): void;
49
38
  private onLayout;
50
39
  render(): React.JSX.Element;
51
40
  }
@@ -15,19 +15,16 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
15
15
  const pd = _Platform.Platform.PixelRatio;
16
16
  class SkiaBaseWebView extends _react.default.Component {
17
17
  constructor(props) {
18
- var _props$mode;
19
18
  super(props);
20
19
  _defineProperty(this, "_surface", null);
21
20
  _defineProperty(this, "_unsubscriptions", []);
22
21
  _defineProperty(this, "_canvas", null);
23
22
  _defineProperty(this, "_canvasRef", /*#__PURE__*/_react.default.createRef());
24
- _defineProperty(this, "_mode", void 0);
25
23
  _defineProperty(this, "_redrawRequests", 0);
26
24
  _defineProperty(this, "requestId", 0);
27
25
  _defineProperty(this, "width", 0);
28
26
  _defineProperty(this, "height", 0);
29
27
  _defineProperty(this, "onLayout", this.onLayoutEvent.bind(this));
30
- this._mode = (_props$mode = props.mode) !== null && _props$mode !== void 0 ? _props$mode : "default";
31
28
  }
32
29
  unsubscribeAll() {
33
30
  this._unsubscriptions.forEach(u => u());
@@ -104,7 +101,7 @@ class SkiaBaseWebView extends _react.default.Component {
104
101
  * Sends a redraw request to the native SkiaView.
105
102
  */
106
103
  tick() {
107
- if (this._mode === "continuous" || this._redrawRequests > 0) {
104
+ if (this._redrawRequests > 0) {
108
105
  this._redrawRequests = 0;
109
106
  if (this._canvas) {
110
107
  var _this$_surface3;
@@ -122,23 +119,8 @@ class SkiaBaseWebView extends _react.default.Component {
122
119
  redraw() {
123
120
  this._redrawRequests++;
124
121
  }
125
-
126
- /**
127
- * Updates the drawing mode for the skia view. This is the same
128
- * as declaratively setting the mode property on the SkiaView.
129
- * There are two drawing modes, "continuous" and "default",
130
- * where the continuous mode will continuously redraw the view and
131
- * the default mode will only redraw when any of the regular react
132
- * properties are changed like size and margins.
133
- * @param mode Drawing mode to use.
134
- */
135
- setDrawMode(mode) {
136
- this._mode = mode;
137
- this.tick();
138
- }
139
122
  render() {
140
123
  const {
141
- mode,
142
124
  debug = false,
143
125
  ...viewProps
144
126
  } = this.props;