@shopify/react-native-skia 2.3.14 → 2.4.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 (65) hide show
  1. package/cpp/api/JsiSkPictureFactory.h +24 -6
  2. package/cpp/api/recorder/Command.h +12 -0
  3. package/cpp/api/recorder/JsiRecorder.h +2 -1
  4. package/cpp/api/recorder/RNRecorder.h +434 -374
  5. package/lib/commonjs/dom/types/Common.d.ts +1 -0
  6. package/lib/commonjs/dom/types/Common.js.map +1 -1
  7. package/lib/commonjs/skia/types/Recorder.d.ts +2 -2
  8. package/lib/commonjs/skia/types/Recorder.js.map +1 -1
  9. package/lib/commonjs/sksg/Recorder/Core.d.ts +2 -1
  10. package/lib/commonjs/sksg/Recorder/Core.js +0 -42
  11. package/lib/commonjs/sksg/Recorder/Core.js.map +1 -1
  12. package/lib/commonjs/sksg/Recorder/Debug.d.ts +2 -0
  13. package/lib/commonjs/sksg/Recorder/Debug.js +86 -0
  14. package/lib/commonjs/sksg/Recorder/Debug.js.map +1 -0
  15. package/lib/commonjs/sksg/Recorder/Player.js +46 -1
  16. package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
  17. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +2 -2
  18. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js +7 -2
  19. package/lib/commonjs/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  20. package/lib/commonjs/sksg/Recorder/Recorder.d.ts +2 -2
  21. package/lib/commonjs/sksg/Recorder/Recorder.js +7 -3
  22. package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
  23. package/lib/commonjs/sksg/Recorder/Visitor.js +14 -6
  24. package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
  25. package/lib/module/dom/types/Common.d.ts +1 -0
  26. package/lib/module/dom/types/Common.js.map +1 -1
  27. package/lib/module/skia/types/Recorder.d.ts +2 -2
  28. package/lib/module/skia/types/Recorder.js.map +1 -1
  29. package/lib/module/sksg/Recorder/Core.d.ts +2 -1
  30. package/lib/module/sksg/Recorder/Core.js +0 -42
  31. package/lib/module/sksg/Recorder/Core.js.map +1 -1
  32. package/lib/module/sksg/Recorder/Debug.d.ts +2 -0
  33. package/lib/module/sksg/Recorder/Debug.js +80 -0
  34. package/lib/module/sksg/Recorder/Debug.js.map +1 -0
  35. package/lib/module/sksg/Recorder/Player.js +46 -1
  36. package/lib/module/sksg/Recorder/Player.js.map +1 -1
  37. package/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +2 -2
  38. package/lib/module/sksg/Recorder/ReanimatedRecorder.js +7 -2
  39. package/lib/module/sksg/Recorder/ReanimatedRecorder.js.map +1 -1
  40. package/lib/module/sksg/Recorder/Recorder.d.ts +2 -2
  41. package/lib/module/sksg/Recorder/Recorder.js +7 -3
  42. package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
  43. package/lib/module/sksg/Recorder/Visitor.js +14 -6
  44. package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
  45. package/lib/typescript/lib/commonjs/sksg/Recorder/Debug.d.ts +2 -0
  46. package/lib/typescript/lib/commonjs/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  47. package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +1 -1
  48. package/lib/typescript/lib/module/sksg/Recorder/Debug.d.ts +1 -0
  49. package/lib/typescript/lib/module/sksg/Recorder/ReanimatedRecorder.d.ts +1 -1
  50. package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +1 -1
  51. package/lib/typescript/src/dom/types/Common.d.ts +1 -0
  52. package/lib/typescript/src/skia/types/Recorder.d.ts +2 -2
  53. package/lib/typescript/src/sksg/Recorder/Core.d.ts +2 -1
  54. package/lib/typescript/src/sksg/Recorder/Debug.d.ts +2 -0
  55. package/lib/typescript/src/sksg/Recorder/ReanimatedRecorder.d.ts +2 -2
  56. package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +2 -2
  57. package/package.json +1 -1
  58. package/src/dom/types/Common.ts +3 -1
  59. package/src/skia/types/Recorder.ts +4 -1
  60. package/src/sksg/Recorder/Core.ts +2 -43
  61. package/src/sksg/Recorder/Debug.ts +90 -0
  62. package/src/sksg/Recorder/Player.ts +57 -2
  63. package/src/sksg/Recorder/ReanimatedRecorder.ts +10 -2
  64. package/src/sksg/Recorder/Recorder.ts +7 -2
  65. package/src/sksg/Recorder/Visitor.ts +18 -6
@@ -23,7 +23,7 @@ class JsiSkPictureFactory : public JsiSkHostObject {
23
23
  public:
24
24
  JSI_HOST_FUNCTION(MakePicture) {
25
25
  // Handle null case - create JsiSkPicture with nullptr
26
- if (arguments[0].isNull()) {
26
+ if (arguments[0].isNull() || arguments[0].isUndefined()) {
27
27
  auto hostObjectInstance =
28
28
  std::make_shared<JsiSkPicture>(getContext(), nullptr);
29
29
  return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
@@ -33,11 +33,29 @@ public:
33
33
  if (!arguments[0].isObject()) {
34
34
  throw jsi::JSError(runtime, "Expected arraybuffer as first parameter");
35
35
  }
36
- auto array = arguments[0].asObject(runtime);
37
- jsi::ArrayBuffer buffer =
38
- array.getProperty(runtime, jsi::PropNameID::forAscii(runtime, "buffer"))
39
- .asObject(runtime)
40
- .getArrayBuffer(runtime);
36
+ auto obj = arguments[0].asObject(runtime);
37
+
38
+ // Check if it's a JsiSkData object first
39
+ if (obj.isHostObject(runtime)) {
40
+ if (auto jsiData = obj.asHostObject<JsiSkData>(runtime)) {
41
+ auto data = jsiData->getObject();
42
+ auto picture = SkPicture::MakeFromData(data.get());
43
+ if (picture != nullptr) {
44
+ auto hostObjectInstance =
45
+ std::make_shared<JsiSkPicture>(getContext(), std::move(picture));
46
+ return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
47
+ runtime, hostObjectInstance, getContext());
48
+ }
49
+ return jsi::Value::undefined();
50
+ }
51
+ }
52
+
53
+ // Get ArrayBuffer - try buffer property first (Uint8Array, etc.), then direct ArrayBuffer
54
+ jsi::ArrayBuffer buffer = obj.hasProperty(runtime, jsi::PropNameID::forAscii(runtime, "buffer"))
55
+ ? obj.getProperty(runtime, jsi::PropNameID::forAscii(runtime, "buffer"))
56
+ .asObject(runtime)
57
+ .getArrayBuffer(runtime)
58
+ : obj.getArrayBuffer(runtime);
41
59
 
42
60
  sk_sp<SkData> data =
43
61
  SkData::MakeWithCopy(buffer.data(runtime), buffer.size(runtime));
@@ -1,5 +1,9 @@
1
1
  #pragma once
2
2
 
3
+ #include <memory>
4
+ #include <optional>
5
+ #include <vector>
6
+
3
7
  namespace RNSkia {
4
8
 
5
9
  enum CommandType {
@@ -56,4 +60,12 @@ public:
56
60
  virtual ~Command() = default;
57
61
  };
58
62
 
63
+ class GroupCommand : public Command {
64
+ public:
65
+ std::optional<float> zIndex;
66
+ std::vector<std::unique_ptr<Command>> children;
67
+
68
+ GroupCommand() : Command(CommandType::Group) {}
69
+ };
70
+
59
71
  } // namespace RNSkia
@@ -110,7 +110,8 @@ public:
110
110
  }
111
111
 
112
112
  JSI_HOST_FUNCTION(saveGroup) {
113
- getObject()->saveGroup();
113
+ const jsi::Value *value = count > 0 ? &arguments[0] : nullptr;
114
+ getObject()->saveGroup(runtime, value);
114
115
  return jsi::Value::undefined();
115
116
  }
116
117