@shopify/react-native-skia 2.2.20 → 2.3.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 (95) hide show
  1. package/apple/SkiaCVPixelBufferUtils.mm +4 -8
  2. package/cpp/api/JsiSkCanvas.h +3 -0
  3. package/cpp/api/JsiSkImage.h +12 -2
  4. package/cpp/api/JsiSkSVG.h +4 -1
  5. package/cpp/api/JsiSkSVGFactory.h +127 -8
  6. package/lib/commonjs/skia/core/SVG.web.d.ts +2 -2
  7. package/lib/commonjs/skia/core/SVG.web.js +23 -14
  8. package/lib/commonjs/skia/core/SVG.web.js.map +1 -1
  9. package/lib/commonjs/skia/types/SVG/SVGFactory.d.ts +3 -2
  10. package/lib/commonjs/skia/types/SVG/SVGFactory.js.map +1 -1
  11. package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +1 -1
  12. package/lib/commonjs/skia/web/JsiSkCanvas.js +7 -1
  13. package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
  14. package/lib/module/skia/core/SVG.web.d.ts +2 -2
  15. package/lib/module/skia/core/SVG.web.js +23 -14
  16. package/lib/module/skia/core/SVG.web.js.map +1 -1
  17. package/lib/module/skia/types/SVG/SVGFactory.d.ts +3 -2
  18. package/lib/module/skia/types/SVG/SVGFactory.js.map +1 -1
  19. package/lib/module/skia/web/JsiSkCanvas.d.ts +1 -1
  20. package/lib/module/skia/web/JsiSkCanvas.js +7 -1
  21. package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
  22. package/lib/typescript/lib/commonjs/skia/core/SVG.web.d.ts +1 -1
  23. package/lib/typescript/lib/commonjs/skia/web/JsiSkCanvas.d.ts +1 -1
  24. package/lib/typescript/lib/module/skia/core/SVG.web.d.ts +1 -1
  25. package/lib/typescript/lib/module/skia/web/JsiSkCanvas.d.ts +1 -1
  26. package/lib/typescript/src/skia/core/SVG.web.d.ts +2 -2
  27. package/lib/typescript/src/skia/types/SVG/SVGFactory.d.ts +3 -2
  28. package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +1 -1
  29. package/libs/apple/libpathops.xcframework/Info.plist +26 -9
  30. package/libs/apple/libpathops.xcframework/ios-arm64_arm64e/libpathops.a +0 -0
  31. package/libs/apple/libpathops.xcframework/ios-arm64_arm64e_x86_64-simulator/libpathops.a +0 -0
  32. package/libs/apple/libpathops.xcframework/ios-arm64_x86_64-maccatalyst/libpathops.a +0 -0
  33. package/libs/apple/libpathops.xcframework/macos-arm64_x86_64/libpathops.a +0 -0
  34. package/libs/apple/libpathops.xcframework/tvos-arm64_arm64e/libpathops.a +0 -0
  35. package/libs/apple/libpathops.xcframework/tvos-arm64_arm64e_x86_64-simulator/libpathops.a +0 -0
  36. package/libs/apple/libskia.xcframework/Info.plist +24 -7
  37. package/libs/apple/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  38. package/libs/apple/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  39. package/libs/apple/libskia.xcframework/ios-arm64_x86_64-maccatalyst/libskia.a +0 -0
  40. package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
  41. package/libs/apple/libskia.xcframework/tvos-arm64_arm64e/libskia.a +0 -0
  42. package/libs/apple/libskia.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  43. package/libs/apple/libskottie.xcframework/Info.plist +32 -15
  44. package/libs/apple/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  45. package/libs/apple/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  46. package/libs/apple/libskottie.xcframework/ios-arm64_x86_64-maccatalyst/libskottie.a +0 -0
  47. package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
  48. package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e/libskottie.a +0 -0
  49. package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  50. package/libs/apple/libskparagraph.xcframework/Info.plist +31 -14
  51. package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  52. package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  53. package/libs/apple/libskparagraph.xcframework/ios-arm64_x86_64-maccatalyst/libskparagraph.a +0 -0
  54. package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
  55. package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e/libskparagraph.a +0 -0
  56. package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  57. package/libs/apple/libsksg.xcframework/Info.plist +26 -9
  58. package/libs/apple/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  59. package/libs/apple/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  60. package/libs/apple/libsksg.xcframework/ios-arm64_x86_64-maccatalyst/libsksg.a +0 -0
  61. package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
  62. package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e/libsksg.a +0 -0
  63. package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  64. package/libs/apple/libskshaper.xcframework/Info.plist +28 -11
  65. package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  66. package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  67. package/libs/apple/libskshaper.xcframework/ios-arm64_x86_64-maccatalyst/libskshaper.a +0 -0
  68. package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
  69. package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e/libskshaper.a +0 -0
  70. package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  71. package/libs/apple/libskunicode_core.xcframework/Info.plist +25 -8
  72. package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
  73. package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
  74. package/libs/apple/libskunicode_core.xcframework/ios-arm64_x86_64-maccatalyst/libskunicode_core.a +0 -0
  75. package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
  76. package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e/libskunicode_core.a +0 -0
  77. package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
  78. package/libs/apple/libskunicode_libgrapheme.xcframework/Info.plist +27 -10
  79. package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
  80. package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
  81. package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_x86_64-maccatalyst/libskunicode_libgrapheme.a +0 -0
  82. package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
  83. package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
  84. package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
  85. package/libs/apple/libsvg.xcframework/Info.plist +29 -12
  86. package/libs/apple/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  87. package/libs/apple/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  88. package/libs/apple/libsvg.xcframework/ios-arm64_x86_64-maccatalyst/libsvg.a +0 -0
  89. package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
  90. package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e/libsvg.a +0 -0
  91. package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  92. package/package.json +1 -1
  93. package/src/skia/core/SVG.web.ts +35 -25
  94. package/src/skia/types/SVG/SVGFactory.ts +11 -2
  95. package/src/skia/web/JsiSkCanvas.ts +3 -1
@@ -30,16 +30,12 @@
30
30
  #include <TargetConditionals.h>
31
31
  #if TARGET_RT_BIG_ENDIAN
32
32
  #define FourCC2Str(fourcc) \
33
- (const char[]) { \
34
- *((char *)&fourcc), *(((char *)&fourcc) + 1), *(((char *)&fourcc) + 2), \
35
- *(((char *)&fourcc) + 3), 0 \
36
- }
33
+ (const char[]){*((char *)&fourcc), *(((char *)&fourcc) + 1), \
34
+ *(((char *)&fourcc) + 2), *(((char *)&fourcc) + 3), 0}
37
35
  #else
38
36
  #define FourCC2Str(fourcc) \
39
- (const char[]) { \
40
- *(((char *)&fourcc) + 3), *(((char *)&fourcc) + 2), \
41
- *(((char *)&fourcc) + 1), *(((char *)&fourcc) + 0), 0 \
42
- }
37
+ (const char[]){*(((char *)&fourcc) + 3), *(((char *)&fourcc) + 2), \
38
+ *(((char *)&fourcc) + 1), *(((char *)&fourcc) + 0), 0}
43
39
  #endif
44
40
 
45
41
  // pragma MARK: TextureHolder
@@ -34,7 +34,10 @@
34
34
  #include "include/core/SkRegion.h"
35
35
  #include "include/core/SkSurface.h"
36
36
  #include "include/core/SkTypeface.h"
37
+
38
+ #if !defined(SK_GRAPHITE)
37
39
  #include "include/gpu/ganesh/GrDirectContext.h"
40
+ #endif
38
41
 
39
42
  #pragma clang diagnostic pop
40
43
 
@@ -17,6 +17,8 @@
17
17
  #if defined(SK_GRAPHITE)
18
18
  #include "RNDawnContext.h"
19
19
  #include "include/gpu/graphite/Context.h"
20
+ #else
21
+ #include "include/gpu/ganesh/GrDirectContext.h"
20
22
  #endif
21
23
 
22
24
  #pragma clang diagnostic push
@@ -241,7 +243,15 @@ public:
241
243
  auto rasterImage = DawnContext::getInstance().MakeRasterImage(getObject());
242
244
  #else
243
245
  auto grContext = getContext()->getDirectContext();
244
- auto rasterImage = getObject()->makeRasterImage(grContext);
246
+ auto image = getObject();
247
+ if (!grContext) {
248
+ throw jsi::JSError(runtime, "No GPU context available");
249
+ }
250
+ if (image && !image->isValid(grContext->asRecorder())) {
251
+ throw jsi::JSError(runtime, "invoked makeNonTextureImage() on an image "
252
+ "that does not belong to this context");
253
+ }
254
+ auto rasterImage = image->makeRasterImage(grContext);
245
255
  #endif
246
256
  auto hostObjectInstance =
247
257
  std::make_shared<JsiSkImage>(getContext(), std::move(rasterImage));
@@ -312,4 +322,4 @@ public:
312
322
  }
313
323
  };
314
324
 
315
- } // namespace RNSkia
325
+ } // namespace RNSkia
@@ -20,10 +20,13 @@ namespace jsi = facebook::jsi;
20
20
 
21
21
  class JsiSkSVG : public JsiSkWrappingSkPtrHostObject<SkSVGDOM> {
22
22
  public:
23
- JsiSkSVG(std::shared_ptr<RNSkPlatformContext> context, sk_sp<SkSVGDOM> svgdom)
23
+ JsiSkSVG(std::shared_ptr<RNSkPlatformContext> context, sk_sp<SkSVGDOM> svgdom,
24
+ sk_sp<skresources::ResourceProvider> resourceProvider = nullptr)
24
25
  : JsiSkWrappingSkPtrHostObject<SkSVGDOM>(std::move(context),
25
26
  std::move(svgdom)) {}
26
27
 
28
+ ~JsiSkSVG() = default;
29
+
27
30
  EXPORT_JSI_API_TYPENAME(JsiSkSVG, SVG)
28
31
 
29
32
  JSI_HOST_FUNCTION(width) {
@@ -1,6 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #include <memory>
4
+ #include <unordered_map>
4
5
  #include <utility>
5
6
 
6
7
  #include <jsi/jsi.h>
@@ -14,6 +15,7 @@
14
15
  #pragma clang diagnostic ignored "-Wdocumentation"
15
16
 
16
17
  #include "include/core/SkStream.h"
18
+ #include "modules/skresources/include/SkResources.h"
17
19
 
18
20
  #pragma clang diagnostic pop
19
21
 
@@ -21,24 +23,141 @@ namespace RNSkia {
21
23
 
22
24
  namespace jsi = facebook::jsi;
23
25
 
26
+ class SVGAssetProvider : public skresources::ResourceProvider {
27
+ public:
28
+ using AssetMap = std::unordered_map<std::string, sk_sp<SkData>>;
29
+
30
+ static sk_sp<SVGAssetProvider>
31
+ Make(AssetMap assets, skresources::ImageDecodeStrategy strategy =
32
+ skresources::ImageDecodeStrategy::kPreDecode) {
33
+ return sk_sp<SVGAssetProvider>(
34
+ new SVGAssetProvider(std::move(assets), strategy));
35
+ }
36
+
37
+ // Override loadImageAsset() to handle image loading
38
+ sk_sp<skresources::ImageAsset>
39
+ loadImageAsset(const char[] /*path*/, const char name[],
40
+ const char[] /*id*/) const override {
41
+ // Identify resources by name only
42
+ auto it = fAssets.find(name);
43
+ if (it != fAssets.end()) {
44
+ // Create ImageAsset from SkData
45
+ return skresources::MultiFrameImageAsset::Make(it->second, fStrategy);
46
+ }
47
+ return nullptr;
48
+ }
49
+
50
+ private:
51
+ explicit SVGAssetProvider(AssetMap assets,
52
+ skresources::ImageDecodeStrategy strategy)
53
+ : fAssets(std::move(assets)), fStrategy(strategy) {}
54
+ const AssetMap fAssets;
55
+ const skresources::ImageDecodeStrategy fStrategy;
56
+ };
57
+
24
58
  class JsiSkSVGFactory : public JsiSkHostObject {
25
59
  public:
26
- JSI_HOST_FUNCTION(MakeFromData) {
27
- auto data = JsiSkData::fromValue(runtime, arguments[0]);
28
- auto stream = SkMemoryStream::Make(data);
29
- auto svg_dom = SkSVGDOM::Builder().make(*stream);
60
+ // Helper function to parse asset map from JS object
61
+ static SVGAssetProvider::AssetMap parseAssetMap(jsi::Runtime &runtime,
62
+ const jsi::Value &jsValue) {
63
+ SVGAssetProvider::AssetMap assets;
64
+
65
+ if (!jsValue.isObject()) {
66
+ return assets;
67
+ }
68
+
69
+ auto jsAssetMap = jsValue.asObject(runtime);
70
+
71
+ // Convert JS object to C++ AssetMap
72
+ auto propertyNames = jsAssetMap.getPropertyNames(runtime);
73
+ size_t propertyCount = propertyNames.size(runtime);
74
+
75
+ for (size_t i = 0; i < propertyCount; i++) {
76
+ auto propertyName =
77
+ propertyNames.getValueAtIndex(runtime, i).asString(runtime);
78
+ auto key = propertyName.utf8(runtime);
79
+ auto jsValue = jsAssetMap.getProperty(runtime, propertyName);
80
+
81
+ // Skip null or undefined values
82
+ if (jsValue.isNull() || jsValue.isUndefined()) {
83
+ continue;
84
+ }
85
+
86
+ if (jsValue.isObject()) {
87
+ auto jsObject = jsValue.asObject(runtime);
88
+ if (jsObject.isHostObject(runtime)) {
89
+ auto hostObject = jsObject.getHostObject(runtime);
90
+ auto skData = std::dynamic_pointer_cast<JsiSkData>(hostObject);
91
+ if (skData) {
92
+ assets[key] = skData->getObject();
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ return assets;
99
+ }
100
+
101
+ private:
102
+ jsi::Value makeSVGFromStream(jsi::Runtime &runtime,
103
+ std::unique_ptr<SkMemoryStream> stream,
104
+ sk_sp<SkFontMgr> fontMgr,
105
+ SVGAssetProvider::AssetMap assets) {
106
+ auto builder = SkSVGDOM::Builder();
107
+
108
+ if (fontMgr) {
109
+ builder.setFontManager(fontMgr);
110
+ }
111
+
112
+ auto baseProvider = SVGAssetProvider::Make(
113
+ std::move(assets), skresources::ImageDecodeStrategy::kPreDecode);
114
+ auto provider = skresources::DataURIResourceProviderProxy::Make(
115
+ std::move(baseProvider), skresources::ImageDecodeStrategy::kPreDecode,
116
+ fontMgr);
117
+
118
+ // TODO: this sk_sp subclassing issue needs to be fixed.
119
+ provider->ref();
120
+ builder.setResourceProvider(provider);
121
+
122
+ auto svg_dom = builder.make(*stream);
30
123
  auto svg = std::make_shared<JsiSkSVG>(getContext(), std::move(svg_dom));
31
124
  return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, svg,
32
125
  getContext());
33
126
  }
34
127
 
128
+ public:
129
+ JSI_HOST_FUNCTION(MakeFromData) {
130
+ auto data = JsiSkData::fromValue(runtime, arguments[0]);
131
+ auto stream = SkMemoryStream::Make(data);
132
+
133
+ // Parse fontMgr (second parameter)
134
+ auto fontMgr = count > 1 && arguments[1].isObject()
135
+ ? JsiSkFontMgr::fromValue(runtime, arguments[1])
136
+ : nullptr;
137
+
138
+ // Parse assets map (third parameter)
139
+ auto assets = count > 2 ? parseAssetMap(runtime, arguments[2])
140
+ : SVGAssetProvider::AssetMap();
141
+
142
+ return makeSVGFromStream(runtime, std::move(stream), fontMgr,
143
+ std::move(assets));
144
+ }
145
+
35
146
  JSI_HOST_FUNCTION(MakeFromString) {
36
147
  auto svgText = arguments[0].asString(runtime).utf8(runtime);
37
148
  auto stream = SkMemoryStream::MakeDirect(svgText.c_str(), svgText.size());
38
- auto svg_dom = SkSVGDOM::Builder().make(*stream);
39
- auto svg = std::make_shared<JsiSkSVG>(getContext(), std::move(svg_dom));
40
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, svg,
41
- getContext());
149
+
150
+ // Parse fontMgr (second parameter)
151
+ auto fontMgr = count > 1 && arguments[1].isObject()
152
+ ? JsiSkFontMgr::fromValue(runtime, arguments[1])
153
+ : nullptr;
154
+
155
+ // Parse assets map (third parameter)
156
+ auto assets = count > 2 ? parseAssetMap(runtime, arguments[2])
157
+ : SVGAssetProvider::AssetMap();
158
+
159
+ return makeSVGFromStream(runtime, std::move(stream), fontMgr,
160
+ std::move(assets));
42
161
  }
43
162
 
44
163
  size_t getMemoryPressure() const override { return 512; }
@@ -1,2 +1,2 @@
1
- import type { DataSourceParam } from "../types";
2
- export declare const useSVG: (source: DataSourceParam, onError?: (err: Error) => void) => import("../types").SkSVG | null;
1
+ import type { DataSourceParam, SkSVG } from "../types";
2
+ export declare const useSVG: (source: DataSourceParam, onError?: (err: Error) => void) => SkSVG | null;
@@ -4,25 +4,34 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useSVG = void 0;
7
+ var _react = require("react");
7
8
  var _Skia = require("../Skia");
8
9
  const useSVG = (source, onError) => {
10
+ const [svg, setSVG] = (0, _react.useState)(null);
9
11
  if (source === null || source === undefined) {
10
12
  throw new Error(`Invalid svg data source. Got: ${source}`);
11
13
  }
12
- let src;
13
- if (typeof source === "string") {
14
- src = source;
15
- } else if (typeof source === "object" && "default" in source && typeof source.default === "string") {
16
- src = source.default;
17
- } else if (typeof source === "object" && "uri" in source) {
18
- src = source.uri;
19
- } else {
20
- throw new Error(`Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(source, null, 2)}`);
21
- }
22
- const svg = _Skia.Skia.SVG.MakeFromString(src);
23
- if (svg === null && onError !== undefined) {
24
- onError(new Error("Failed to create SVG from source."));
25
- }
14
+ (0, _react.useEffect)(() => {
15
+ (async () => {
16
+ let src;
17
+ if (typeof source === "string") {
18
+ src = source;
19
+ } else if (typeof source === "object" && "default" in source && typeof source.default === "string") {
20
+ src = source.default;
21
+ } else if (typeof source === "object" && "uri" in source) {
22
+ src = source.uri;
23
+ } else {
24
+ throw new Error(`Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(source, null, 2)}`);
25
+ }
26
+ const result = await fetch(src);
27
+ const svgStr = await result.text();
28
+ const newSvg = _Skia.Skia.SVG.MakeFromString(svgStr);
29
+ setSVG(newSvg);
30
+ if (newSvg === null && onError !== undefined) {
31
+ onError(new Error("Failed to create SVG from source."));
32
+ }
33
+ })();
34
+ }, [onError, source]);
26
35
  return svg;
27
36
  };
28
37
  exports.useSVG = useSVG;
@@ -1 +1 @@
1
- {"version":3,"names":["_Skia","require","useSVG","source","onError","undefined","Error","src","default","uri","JSON","stringify","svg","Skia","SVG","MakeFromString","exports"],"sources":["SVG.web.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { DataSourceParam } from \"../types\";\n\nexport const useSVG = (\n source: DataSourceParam,\n onError?: (err: Error) => void\n) => {\n if (source === null || source === undefined) {\n throw new Error(`Invalid svg data source. Got: ${source}`);\n }\n let src: string;\n if (typeof source === \"string\") {\n src = source;\n } else if (\n typeof source === \"object\" &&\n \"default\" in source &&\n typeof source.default === \"string\"\n ) {\n src = source.default;\n } else if (typeof source === \"object\" && \"uri\" in source) {\n src = source.uri;\n } else {\n throw new Error(\n `Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(\n source,\n null,\n 2\n )}`\n );\n }\n const svg = Skia.SVG.MakeFromString(src);\n if (svg === null && onError !== undefined) {\n onError(new Error(\"Failed to create SVG from source.\"));\n }\n return svg;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAGO,MAAMC,MAAM,GAAGA,CACpBC,MAAuB,EACvBC,OAA8B,KAC3B;EACH,IAAID,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAKE,SAAS,EAAE;IAC3C,MAAM,IAAIC,KAAK,CAAC,iCAAiCH,MAAM,EAAE,CAAC;EAC5D;EACA,IAAII,GAAW;EACf,IAAI,OAAOJ,MAAM,KAAK,QAAQ,EAAE;IAC9BI,GAAG,GAAGJ,MAAM;EACd,CAAC,MAAM,IACL,OAAOA,MAAM,KAAK,QAAQ,IAC1B,SAAS,IAAIA,MAAM,IACnB,OAAOA,MAAM,CAACK,OAAO,KAAK,QAAQ,EAClC;IACAD,GAAG,GAAGJ,MAAM,CAACK,OAAO;EACtB,CAAC,MAAM,IAAI,OAAOL,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAIA,MAAM,EAAE;IACxDI,GAAG,GAAGJ,MAAM,CAACM,GAAG;EAClB,CAAC,MAAM;IACL,MAAM,IAAIH,KAAK,CACb,iFAAiFI,IAAI,CAACC,SAAS,CAC7FR,MAAM,EACN,IAAI,EACJ,CACF,CAAC,EACH,CAAC;EACH;EACA,MAAMS,GAAG,GAAGC,UAAI,CAACC,GAAG,CAACC,cAAc,CAACR,GAAG,CAAC;EACxC,IAAIK,GAAG,KAAK,IAAI,IAAIR,OAAO,KAAKC,SAAS,EAAE;IACzCD,OAAO,CAAC,IAAIE,KAAK,CAAC,mCAAmC,CAAC,CAAC;EACzD;EACA,OAAOM,GAAG;AACZ,CAAC;AAACI,OAAA,CAAAd,MAAA,GAAAA,MAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_Skia","useSVG","source","onError","svg","setSVG","useState","undefined","Error","useEffect","src","default","uri","JSON","stringify","result","fetch","svgStr","text","newSvg","Skia","SVG","MakeFromString","exports"],"sources":["SVG.web.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport { Skia } from \"../Skia\";\nimport type { DataSourceParam, SkSVG } from \"../types\";\n\nexport const useSVG = (\n source: DataSourceParam,\n onError?: (err: Error) => void\n) => {\n const [svg, setSVG] = useState<SkSVG | null>(null);\n if (source === null || source === undefined) {\n throw new Error(`Invalid svg data source. Got: ${source}`);\n }\n useEffect(() => {\n (async () => {\n let src: string;\n if (typeof source === \"string\") {\n src = source;\n } else if (\n typeof source === \"object\" &&\n \"default\" in source &&\n typeof source.default === \"string\"\n ) {\n src = source.default;\n } else if (typeof source === \"object\" && \"uri\" in source) {\n src = source.uri;\n } else {\n throw new Error(\n `Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(\n source,\n null,\n 2\n )}`\n );\n }\n const result = await fetch(src);\n const svgStr = await result.text();\n const newSvg = Skia.SVG.MakeFromString(svgStr);\n setSVG(newSvg);\n if (newSvg === null && onError !== undefined) {\n onError(new Error(\"Failed to create SVG from source.\"));\n }\n })();\n }, [onError, source]);\n return svg;\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AAGO,MAAME,MAAM,GAAGA,CACpBC,MAAuB,EACvBC,OAA8B,KAC3B;EACH,MAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAG,IAAAC,eAAQ,EAAe,IAAI,CAAC;EAClD,IAAIJ,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAKK,SAAS,EAAE;IAC3C,MAAM,IAAIC,KAAK,CAAC,iCAAiCN,MAAM,EAAE,CAAC;EAC5D;EACA,IAAAO,gBAAS,EAAC,MAAM;IACd,CAAC,YAAY;MACX,IAAIC,GAAW;MACf,IAAI,OAAOR,MAAM,KAAK,QAAQ,EAAE;QAC9BQ,GAAG,GAAGR,MAAM;MACd,CAAC,MAAM,IACL,OAAOA,MAAM,KAAK,QAAQ,IAC1B,SAAS,IAAIA,MAAM,IACnB,OAAOA,MAAM,CAACS,OAAO,KAAK,QAAQ,EAClC;QACAD,GAAG,GAAGR,MAAM,CAACS,OAAO;MACtB,CAAC,MAAM,IAAI,OAAOT,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAIA,MAAM,EAAE;QACxDQ,GAAG,GAAGR,MAAM,CAACU,GAAG;MAClB,CAAC,MAAM;QACL,MAAM,IAAIJ,KAAK,CACb,iFAAiFK,IAAI,CAACC,SAAS,CAC7FZ,MAAM,EACN,IAAI,EACJ,CACF,CAAC,EACH,CAAC;MACH;MACA,MAAMa,MAAM,GAAG,MAAMC,KAAK,CAACN,GAAG,CAAC;MAC/B,MAAMO,MAAM,GAAG,MAAMF,MAAM,CAACG,IAAI,CAAC,CAAC;MAClC,MAAMC,MAAM,GAAGC,UAAI,CAACC,GAAG,CAACC,cAAc,CAACL,MAAM,CAAC;MAC9CZ,MAAM,CAACc,MAAM,CAAC;MACd,IAAIA,MAAM,KAAK,IAAI,IAAIhB,OAAO,KAAKI,SAAS,EAAE;QAC5CJ,OAAO,CAAC,IAAIK,KAAK,CAAC,mCAAmC,CAAC,CAAC;MACzD;IACF,CAAC,EAAE,CAAC;EACN,CAAC,EAAE,CAACL,OAAO,EAAED,MAAM,CAAC,CAAC;EACrB,OAAOE,GAAG;AACZ,CAAC;AAACmB,OAAA,CAAAtB,MAAA,GAAAA,MAAA","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import type { SkData } from "../Data";
2
+ import type { SkFontMgr } from "../Font/FontMgr";
2
3
  import type { SkSVG } from "./SVG";
3
4
  export interface SVGFactory {
4
- MakeFromData(data: SkData): SkSVG | null;
5
- MakeFromString(str: string): SkSVG | null;
5
+ MakeFromData(data: SkData, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
6
+ MakeFromString(str: string, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n MakeFromData(data: SkData): SkSVG | null;\n MakeFromString(str: string): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\nimport type { SkFontMgr } from \"../Font/FontMgr\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n MakeFromData(\n data: SkData,\n fontMgr?: SkFontMgr | null,\n assets?: Record<string, SkData | null>\n ): SkSVG | null;\n MakeFromString(\n str: string,\n fontMgr?: SkFontMgr | null,\n assets?: Record<string, SkData | null>\n ): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
@@ -26,7 +26,7 @@ export declare class JsiSkCanvas extends HostObject<Canvas, "Canvas"> implements
26
26
  drawText(str: string, x: number, y: number, paint: SkPaint, font: SkFont): void;
27
27
  drawTextBlob(blob: SkTextBlob, x: number, y: number, paint: SkPaint): void;
28
28
  drawGlyphs(glyphs: number[], positions: SkPoint[], x: number, y: number, font: SkFont, paint: SkPaint): void;
29
- drawSvg(svg: SkSVG, _width?: number, _height?: number): void;
29
+ drawSvg(svg: SkSVG, width?: number, height?: number): void;
30
30
  save(): number;
31
31
  saveLayer(paint?: SkPaint, bounds?: SkRect | null, backdrop?: SkImageFilter | null, flags?: SaveLayerFlag): number;
32
32
  restore(): void;
@@ -98,7 +98,13 @@ class JsiSkCanvas extends _Host.HostObject {
98
98
  drawGlyphs(glyphs, positions, x, y, font, paint) {
99
99
  this.ref.drawGlyphs(glyphs, positions.map(p => [p.x, p.y]).flat(), x, y, _JsiSkFont.JsiSkFont.fromValue(font), _JsiSkPaint.JsiSkPaint.fromValue(paint));
100
100
  }
101
- drawSvg(svg, _width, _height) {
101
+ drawSvg(svg, width, height) {
102
+ const ctm = this.ref.getLocalToDevice();
103
+ console.log({
104
+ ctm,
105
+ width,
106
+ height
107
+ });
102
108
  const image = this.CanvasKit.MakeImageFromCanvasImageSource(svg.ref);
103
109
  this.ref.drawImage(image, 0, 0);
104
110
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_Host","_JsiSkPaint","_JsiSkRect","_JsiSkRRect","_JsiSkImage","_JsiSkVertices","_JsiSkPath","_JsiSkFont","_JsiSkTextBlob","_JsiSkPicture","_JsiSkMatrix","_JsiSkImageFilter","_JsiSkPoint","_JsiSkRSXform","JsiSkCanvas","HostObject","constructor","CanvasKit","ref","drawRect","rect","paint","JsiSkRect","fromValue","JsiSkPaint","drawImage","image","x","y","JsiSkImage","drawImageRect","img","src","dest","fastSample","drawImageCubic","left","top","B","C","drawImageOptions","fm","mm","getEnum","drawImageNine","center","filter","Array","from","drawImageRectCubic","drawImageRectOptions","drawPaint","drawLine","x0","y0","x1","y1","drawCircle","cx","cy","radius","drawVertices","verts","mode","JsiSkVertices","drawPatch","cubics","colors","texs","map","flat","flatMap","p","JsiSkPoint","undefined","restoreToCount","saveCount","drawPoints","points","drawArc","oval","startAngle","sweepAngle","useCenter","drawRRect","rrect","JsiSkRRect","drawDRRect","outer","inner","drawOval","drawPath","path","JsiSkPath","drawText","str","font","JsiSkFont","drawTextBlob","blob","JsiSkTextBlob","drawGlyphs","glyphs","positions","drawSvg","svg","_width","_height","MakeImageFromCanvasImageSource","save","saveLayer","bounds","backdrop","flags","JsiSkImageFilter","restore","rotate","rotationInDegrees","rx","ry","scale","sx","sy","skew","translate","dx","dy","drawColor","color","blendMode","clear","clipPath","op","doAntiAlias","clipRect","clipRRect","concat","m","isArray","JsiSkMatrix","drawPicture","skp","JsiSkPicture","drawAtlas","atlas","srcs","dsts","sampling","s","dst","JsiSkRSXform","cls","Uint32Array","length","i","r","g","b","a","ColorAsInt","ckSampling","FilterMode","Linear","mipmap","MipmapMode","None","isCubicSampling","BlendMode","DstOver","readPixels","srcX","srcY","imageInfo","pxInfo","width","height","colorSpace","ColorSpace","SRGB","alphaType","colorType","exports"],"sources":["JsiSkCanvas.ts"],"sourcesContent":["import type {\n Canvas,\n CanvasKit,\n CubicResampler as CKCubicResampler,\n FilterOptions as CKFilterOptions,\n} from \"canvaskit-wasm\";\n\nimport {\n type BlendMode,\n type ClipOp,\n type FilterMode,\n type MipmapMode,\n type PointMode,\n type SaveLayerFlag,\n type ImageInfo,\n type SkCanvas,\n type SkColor,\n type SkFont,\n type SkImage,\n type SkImageFilter,\n type SkMatrix,\n type SkPaint,\n type SkPath,\n type SkPicture,\n type SkPoint,\n type SkRect,\n type InputRRect,\n type SkSVG,\n type SkTextBlob,\n type SkVertices,\n type SkRSXform,\n type CubicResampler,\n type FilterOptions,\n isCubicSampling,\n} from \"../types\";\n\nimport { getEnum, HostObject } from \"./Host\";\nimport { JsiSkPaint } from \"./JsiSkPaint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkImage } from \"./JsiSkImage\";\nimport { JsiSkVertices } from \"./JsiSkVertices\";\nimport { JsiSkPath } from \"./JsiSkPath\";\nimport { JsiSkFont } from \"./JsiSkFont\";\nimport { JsiSkTextBlob } from \"./JsiSkTextBlob\";\nimport { JsiSkPicture } from \"./JsiSkPicture\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\nimport { JsiSkImageFilter } from \"./JsiSkImageFilter\";\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkRSXform } from \"./JsiSkRSXform\";\nimport type { JsiSkSVG } from \"./JsiSkSVG\";\n\nexport class JsiSkCanvas\n extends HostObject<Canvas, \"Canvas\">\n implements SkCanvas\n{\n constructor(CanvasKit: CanvasKit, ref: Canvas) {\n super(CanvasKit, ref, \"Canvas\");\n }\n\n drawRect(rect: SkRect, paint: SkPaint) {\n this.ref.drawRect(\n JsiSkRect.fromValue(this.CanvasKit, rect),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawImage(image: SkImage, x: number, y: number, paint?: SkPaint) {\n this.ref.drawImage(\n JsiSkImage.fromValue(image),\n x,\n y,\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageRect(\n img: SkImage,\n src: SkRect,\n dest: SkRect,\n paint: SkPaint,\n fastSample?: boolean\n ) {\n this.ref.drawImageRect(\n JsiSkImage.fromValue(img),\n JsiSkRect.fromValue(this.CanvasKit, src),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n JsiSkPaint.fromValue(paint),\n fastSample\n );\n }\n\n drawImageCubic(\n img: SkImage,\n left: number,\n top: number,\n B: number,\n C: number,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageCubic(\n JsiSkImage.fromValue(img),\n left,\n top,\n B,\n C,\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageOptions(\n img: SkImage,\n left: number,\n top: number,\n fm: FilterMode,\n mm: MipmapMode,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageOptions(\n JsiSkImage.fromValue(img),\n left,\n top,\n getEnum(this.CanvasKit, \"FilterMode\", fm),\n getEnum(this.CanvasKit, \"MipmapMode\", mm),\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageNine(\n img: SkImage,\n center: SkRect,\n dest: SkRect,\n filter: FilterMode,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageNine(\n JsiSkImage.fromValue(img),\n Array.from(JsiSkRect.fromValue(this.CanvasKit, center)),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n getEnum(this.CanvasKit, \"FilterMode\", filter),\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageRectCubic(\n img: SkImage,\n src: SkRect,\n dest: SkRect,\n B: number,\n C: number,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageRectCubic(\n JsiSkImage.fromValue(img),\n JsiSkRect.fromValue(this.CanvasKit, src),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n B,\n C,\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageRectOptions(\n img: SkImage,\n src: SkRect,\n dest: SkRect,\n fm: FilterMode,\n mm: MipmapMode,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageRectOptions(\n JsiSkImage.fromValue(img),\n JsiSkRect.fromValue(this.CanvasKit, src),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n getEnum(this.CanvasKit, \"FilterMode\", fm),\n getEnum(this.CanvasKit, \"MipmapMode\", mm),\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawPaint(paint: SkPaint) {\n this.ref.drawPaint(JsiSkPaint.fromValue(paint));\n }\n\n drawLine(x0: number, y0: number, x1: number, y1: number, paint: SkPaint) {\n this.ref.drawLine(x0, y0, x1, y1, JsiSkPaint.fromValue(paint));\n }\n\n drawCircle(cx: number, cy: number, radius: number, paint: SkPaint) {\n this.ref.drawCircle(cx, cy, radius, JsiSkPaint.fromValue(paint));\n }\n\n drawVertices(verts: SkVertices, mode: BlendMode, paint: SkPaint) {\n this.ref.drawVertices(\n JsiSkVertices.fromValue(verts),\n getEnum(this.CanvasKit, \"BlendMode\", mode),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawPatch(\n cubics: SkPoint[],\n colors?: SkColor[] | null,\n texs?: SkPoint[] | null,\n mode?: BlendMode | null,\n paint?: SkPaint\n ) {\n this.ref.drawPatch(\n cubics.map(({ x, y }) => [x, y]).flat(),\n colors,\n texs ? texs.flatMap((p) => Array.from(JsiSkPoint.fromValue(p))) : texs,\n mode ? getEnum(this.CanvasKit, \"BlendMode\", mode) : null,\n paint ? JsiSkPaint.fromValue(paint) : undefined\n );\n }\n\n restoreToCount(saveCount: number) {\n this.ref.restoreToCount(saveCount);\n }\n\n drawPoints(mode: PointMode, points: SkPoint[], paint: SkPaint) {\n this.ref.drawPoints(\n getEnum(this.CanvasKit, \"PointMode\", mode),\n points.map(({ x, y }) => [x, y]).flat(),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawArc(\n oval: SkRect,\n startAngle: number,\n sweepAngle: number,\n useCenter: boolean,\n paint: SkPaint\n ) {\n this.ref.drawArc(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n startAngle,\n sweepAngle,\n useCenter,\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawRRect(rrect: InputRRect, paint: SkPaint) {\n this.ref.drawRRect(\n JsiSkRRect.fromValue(this.CanvasKit, rrect),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawDRRect(outer: InputRRect, inner: InputRRect, paint: SkPaint) {\n this.ref.drawDRRect(\n JsiSkRRect.fromValue(this.CanvasKit, outer),\n JsiSkRRect.fromValue(this.CanvasKit, inner),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawOval(oval: SkRect, paint: SkPaint) {\n this.ref.drawOval(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawPath(path: SkPath, paint: SkPaint) {\n this.ref.drawPath(JsiSkPath.fromValue(path), JsiSkPaint.fromValue(paint));\n }\n\n drawText(str: string, x: number, y: number, paint: SkPaint, font: SkFont) {\n this.ref.drawText(\n str,\n x,\n y,\n JsiSkPaint.fromValue(paint),\n JsiSkFont.fromValue(font)\n );\n }\n\n drawTextBlob(blob: SkTextBlob, x: number, y: number, paint: SkPaint) {\n this.ref.drawTextBlob(\n JsiSkTextBlob.fromValue(blob),\n x,\n y,\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawGlyphs(\n glyphs: number[],\n positions: SkPoint[],\n x: number,\n y: number,\n font: SkFont,\n paint: SkPaint\n ) {\n this.ref.drawGlyphs(\n glyphs,\n positions.map((p) => [p.x, p.y]).flat(),\n x,\n y,\n JsiSkFont.fromValue(font),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawSvg(svg: SkSVG, _width?: number, _height?: number) {\n const image = this.CanvasKit.MakeImageFromCanvasImageSource(\n (svg as JsiSkSVG).ref\n );\n this.ref.drawImage(image, 0, 0);\n }\n\n save() {\n return this.ref.save();\n }\n\n saveLayer(\n paint?: SkPaint,\n bounds?: SkRect | null,\n backdrop?: SkImageFilter | null,\n flags?: SaveLayerFlag\n ) {\n return this.ref.saveLayer(\n paint ? JsiSkPaint.fromValue(paint) : undefined,\n bounds ? JsiSkRect.fromValue(this.CanvasKit, bounds) : bounds,\n backdrop ? JsiSkImageFilter.fromValue(backdrop) : backdrop,\n flags\n );\n }\n\n restore() {\n this.ref.restore();\n }\n\n rotate(rotationInDegrees: number, rx: number, ry: number) {\n this.ref.rotate(rotationInDegrees, rx, ry);\n }\n\n scale(sx: number, sy: number) {\n this.ref.scale(sx, sy);\n }\n\n skew(sx: number, sy: number) {\n this.ref.skew(sx, sy);\n }\n\n translate(dx: number, dy: number) {\n this.ref.translate(dx, dy);\n }\n\n drawColor(color: SkColor, blendMode?: BlendMode) {\n this.ref.drawColor(\n color,\n blendMode ? getEnum(this.CanvasKit, \"BlendMode\", blendMode) : undefined\n );\n }\n\n clear(color: SkColor) {\n this.ref.clear(color);\n }\n\n clipPath(path: SkPath, op: ClipOp, doAntiAlias: boolean) {\n this.ref.clipPath(\n JsiSkPath.fromValue(path),\n getEnum(this.CanvasKit, \"PathOp\", op),\n doAntiAlias\n );\n }\n\n clipRect(rect: SkRect, op: ClipOp, doAntiAlias: boolean) {\n this.ref.clipRect(\n JsiSkRect.fromValue(this.CanvasKit, rect),\n getEnum(this.CanvasKit, \"PathOp\", op),\n doAntiAlias\n );\n }\n\n clipRRect(rrect: InputRRect, op: ClipOp, doAntiAlias: boolean) {\n this.ref.clipRRect(\n JsiSkRRect.fromValue(this.CanvasKit, rrect),\n getEnum(this.CanvasKit, \"PathOp\", op),\n doAntiAlias\n );\n }\n\n concat(m: SkMatrix | number[]) {\n this.ref.concat(Array.isArray(m) ? m : JsiSkMatrix.fromValue(m));\n }\n\n drawPicture(skp: SkPicture) {\n this.ref.drawPicture(JsiSkPicture.fromValue(skp));\n }\n\n drawAtlas(\n atlas: SkImage,\n srcs: SkRect[],\n dsts: SkRSXform[],\n paint: SkPaint,\n blendMode?: BlendMode,\n colors?: SkColor[],\n sampling?: CubicResampler | FilterOptions\n ) {\n const src = srcs.flatMap((s) =>\n Array.from(JsiSkRect.fromValue(this.CanvasKit, s))\n );\n const dst = dsts.flatMap((s) => Array.from(JsiSkRSXform.fromValue(s)));\n let cls: Uint32Array | undefined;\n if (colors) {\n cls = new Uint32Array(colors.length);\n for (let i = 0; i < colors.length; i++) {\n const [r, g, b, a] = colors[i];\n cls[i] = this.CanvasKit.ColorAsInt(r * 255, g * 255, b * 255, a * 255);\n }\n }\n let ckSampling: CKCubicResampler | CKFilterOptions = {\n filter: this.CanvasKit.FilterMode.Linear,\n mipmap: this.CanvasKit.MipmapMode.None,\n };\n if (sampling && isCubicSampling(sampling)) {\n ckSampling = sampling;\n } else if (sampling) {\n ckSampling = {\n filter: getEnum(this.CanvasKit, \"FilterMode\", sampling.filter),\n mipmap: sampling.mipmap\n ? getEnum(this.CanvasKit, \"MipmapMode\", sampling.mipmap)\n : this.CanvasKit.MipmapMode.None,\n };\n }\n this.ref.drawAtlas(\n JsiSkImage.fromValue(atlas),\n src,\n dst,\n JsiSkPaint.fromValue(paint),\n blendMode\n ? getEnum(this.CanvasKit, \"BlendMode\", blendMode)\n : this.CanvasKit.BlendMode.DstOver,\n cls,\n ckSampling\n );\n }\n\n readPixels(srcX: number, srcY: number, imageInfo: ImageInfo) {\n const pxInfo = {\n width: imageInfo.width,\n height: imageInfo.height,\n colorSpace: this.CanvasKit.ColorSpace.SRGB,\n alphaType: getEnum(this.CanvasKit, \"AlphaType\", imageInfo.alphaType),\n colorType: getEnum(this.CanvasKit, \"ColorType\", imageInfo.colorType),\n };\n return this.ref.readPixels(srcX, srcY, pxInfo);\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_types","require","_Host","_JsiSkPaint","_JsiSkRect","_JsiSkRRect","_JsiSkImage","_JsiSkVertices","_JsiSkPath","_JsiSkFont","_JsiSkTextBlob","_JsiSkPicture","_JsiSkMatrix","_JsiSkImageFilter","_JsiSkPoint","_JsiSkRSXform","JsiSkCanvas","HostObject","constructor","CanvasKit","ref","drawRect","rect","paint","JsiSkRect","fromValue","JsiSkPaint","drawImage","image","x","y","JsiSkImage","drawImageRect","img","src","dest","fastSample","drawImageCubic","left","top","B","C","drawImageOptions","fm","mm","getEnum","drawImageNine","center","filter","Array","from","drawImageRectCubic","drawImageRectOptions","drawPaint","drawLine","x0","y0","x1","y1","drawCircle","cx","cy","radius","drawVertices","verts","mode","JsiSkVertices","drawPatch","cubics","colors","texs","map","flat","flatMap","p","JsiSkPoint","undefined","restoreToCount","saveCount","drawPoints","points","drawArc","oval","startAngle","sweepAngle","useCenter","drawRRect","rrect","JsiSkRRect","drawDRRect","outer","inner","drawOval","drawPath","path","JsiSkPath","drawText","str","font","JsiSkFont","drawTextBlob","blob","JsiSkTextBlob","drawGlyphs","glyphs","positions","drawSvg","svg","width","height","ctm","getLocalToDevice","console","log","MakeImageFromCanvasImageSource","save","saveLayer","bounds","backdrop","flags","JsiSkImageFilter","restore","rotate","rotationInDegrees","rx","ry","scale","sx","sy","skew","translate","dx","dy","drawColor","color","blendMode","clear","clipPath","op","doAntiAlias","clipRect","clipRRect","concat","m","isArray","JsiSkMatrix","drawPicture","skp","JsiSkPicture","drawAtlas","atlas","srcs","dsts","sampling","s","dst","JsiSkRSXform","cls","Uint32Array","length","i","r","g","b","a","ColorAsInt","ckSampling","FilterMode","Linear","mipmap","MipmapMode","None","isCubicSampling","BlendMode","DstOver","readPixels","srcX","srcY","imageInfo","pxInfo","colorSpace","ColorSpace","SRGB","alphaType","colorType","exports"],"sources":["JsiSkCanvas.ts"],"sourcesContent":["import type {\n Canvas,\n CanvasKit,\n CubicResampler as CKCubicResampler,\n FilterOptions as CKFilterOptions,\n} from \"canvaskit-wasm\";\n\nimport {\n type BlendMode,\n type ClipOp,\n type FilterMode,\n type MipmapMode,\n type PointMode,\n type SaveLayerFlag,\n type ImageInfo,\n type SkCanvas,\n type SkColor,\n type SkFont,\n type SkImage,\n type SkImageFilter,\n type SkMatrix,\n type SkPaint,\n type SkPath,\n type SkPicture,\n type SkPoint,\n type SkRect,\n type InputRRect,\n type SkSVG,\n type SkTextBlob,\n type SkVertices,\n type SkRSXform,\n type CubicResampler,\n type FilterOptions,\n isCubicSampling,\n} from \"../types\";\n\nimport { getEnum, HostObject } from \"./Host\";\nimport { JsiSkPaint } from \"./JsiSkPaint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkImage } from \"./JsiSkImage\";\nimport { JsiSkVertices } from \"./JsiSkVertices\";\nimport { JsiSkPath } from \"./JsiSkPath\";\nimport { JsiSkFont } from \"./JsiSkFont\";\nimport { JsiSkTextBlob } from \"./JsiSkTextBlob\";\nimport { JsiSkPicture } from \"./JsiSkPicture\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\nimport { JsiSkImageFilter } from \"./JsiSkImageFilter\";\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkRSXform } from \"./JsiSkRSXform\";\nimport type { JsiSkSVG } from \"./JsiSkSVG\";\n\nexport class JsiSkCanvas\n extends HostObject<Canvas, \"Canvas\">\n implements SkCanvas\n{\n constructor(CanvasKit: CanvasKit, ref: Canvas) {\n super(CanvasKit, ref, \"Canvas\");\n }\n\n drawRect(rect: SkRect, paint: SkPaint) {\n this.ref.drawRect(\n JsiSkRect.fromValue(this.CanvasKit, rect),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawImage(image: SkImage, x: number, y: number, paint?: SkPaint) {\n this.ref.drawImage(\n JsiSkImage.fromValue(image),\n x,\n y,\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageRect(\n img: SkImage,\n src: SkRect,\n dest: SkRect,\n paint: SkPaint,\n fastSample?: boolean\n ) {\n this.ref.drawImageRect(\n JsiSkImage.fromValue(img),\n JsiSkRect.fromValue(this.CanvasKit, src),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n JsiSkPaint.fromValue(paint),\n fastSample\n );\n }\n\n drawImageCubic(\n img: SkImage,\n left: number,\n top: number,\n B: number,\n C: number,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageCubic(\n JsiSkImage.fromValue(img),\n left,\n top,\n B,\n C,\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageOptions(\n img: SkImage,\n left: number,\n top: number,\n fm: FilterMode,\n mm: MipmapMode,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageOptions(\n JsiSkImage.fromValue(img),\n left,\n top,\n getEnum(this.CanvasKit, \"FilterMode\", fm),\n getEnum(this.CanvasKit, \"MipmapMode\", mm),\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageNine(\n img: SkImage,\n center: SkRect,\n dest: SkRect,\n filter: FilterMode,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageNine(\n JsiSkImage.fromValue(img),\n Array.from(JsiSkRect.fromValue(this.CanvasKit, center)),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n getEnum(this.CanvasKit, \"FilterMode\", filter),\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageRectCubic(\n img: SkImage,\n src: SkRect,\n dest: SkRect,\n B: number,\n C: number,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageRectCubic(\n JsiSkImage.fromValue(img),\n JsiSkRect.fromValue(this.CanvasKit, src),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n B,\n C,\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawImageRectOptions(\n img: SkImage,\n src: SkRect,\n dest: SkRect,\n fm: FilterMode,\n mm: MipmapMode,\n paint?: SkPaint | null\n ) {\n this.ref.drawImageRectOptions(\n JsiSkImage.fromValue(img),\n JsiSkRect.fromValue(this.CanvasKit, src),\n JsiSkRect.fromValue(this.CanvasKit, dest),\n getEnum(this.CanvasKit, \"FilterMode\", fm),\n getEnum(this.CanvasKit, \"MipmapMode\", mm),\n paint ? JsiSkPaint.fromValue(paint) : paint\n );\n }\n\n drawPaint(paint: SkPaint) {\n this.ref.drawPaint(JsiSkPaint.fromValue(paint));\n }\n\n drawLine(x0: number, y0: number, x1: number, y1: number, paint: SkPaint) {\n this.ref.drawLine(x0, y0, x1, y1, JsiSkPaint.fromValue(paint));\n }\n\n drawCircle(cx: number, cy: number, radius: number, paint: SkPaint) {\n this.ref.drawCircle(cx, cy, radius, JsiSkPaint.fromValue(paint));\n }\n\n drawVertices(verts: SkVertices, mode: BlendMode, paint: SkPaint) {\n this.ref.drawVertices(\n JsiSkVertices.fromValue(verts),\n getEnum(this.CanvasKit, \"BlendMode\", mode),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawPatch(\n cubics: SkPoint[],\n colors?: SkColor[] | null,\n texs?: SkPoint[] | null,\n mode?: BlendMode | null,\n paint?: SkPaint\n ) {\n this.ref.drawPatch(\n cubics.map(({ x, y }) => [x, y]).flat(),\n colors,\n texs ? texs.flatMap((p) => Array.from(JsiSkPoint.fromValue(p))) : texs,\n mode ? getEnum(this.CanvasKit, \"BlendMode\", mode) : null,\n paint ? JsiSkPaint.fromValue(paint) : undefined\n );\n }\n\n restoreToCount(saveCount: number) {\n this.ref.restoreToCount(saveCount);\n }\n\n drawPoints(mode: PointMode, points: SkPoint[], paint: SkPaint) {\n this.ref.drawPoints(\n getEnum(this.CanvasKit, \"PointMode\", mode),\n points.map(({ x, y }) => [x, y]).flat(),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawArc(\n oval: SkRect,\n startAngle: number,\n sweepAngle: number,\n useCenter: boolean,\n paint: SkPaint\n ) {\n this.ref.drawArc(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n startAngle,\n sweepAngle,\n useCenter,\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawRRect(rrect: InputRRect, paint: SkPaint) {\n this.ref.drawRRect(\n JsiSkRRect.fromValue(this.CanvasKit, rrect),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawDRRect(outer: InputRRect, inner: InputRRect, paint: SkPaint) {\n this.ref.drawDRRect(\n JsiSkRRect.fromValue(this.CanvasKit, outer),\n JsiSkRRect.fromValue(this.CanvasKit, inner),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawOval(oval: SkRect, paint: SkPaint) {\n this.ref.drawOval(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawPath(path: SkPath, paint: SkPaint) {\n this.ref.drawPath(JsiSkPath.fromValue(path), JsiSkPaint.fromValue(paint));\n }\n\n drawText(str: string, x: number, y: number, paint: SkPaint, font: SkFont) {\n this.ref.drawText(\n str,\n x,\n y,\n JsiSkPaint.fromValue(paint),\n JsiSkFont.fromValue(font)\n );\n }\n\n drawTextBlob(blob: SkTextBlob, x: number, y: number, paint: SkPaint) {\n this.ref.drawTextBlob(\n JsiSkTextBlob.fromValue(blob),\n x,\n y,\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawGlyphs(\n glyphs: number[],\n positions: SkPoint[],\n x: number,\n y: number,\n font: SkFont,\n paint: SkPaint\n ) {\n this.ref.drawGlyphs(\n glyphs,\n positions.map((p) => [p.x, p.y]).flat(),\n x,\n y,\n JsiSkFont.fromValue(font),\n JsiSkPaint.fromValue(paint)\n );\n }\n\n drawSvg(svg: SkSVG, width?: number, height?: number) {\n const ctm = this.ref.getLocalToDevice();\n console.log({ ctm, width, height });\n const image = this.CanvasKit.MakeImageFromCanvasImageSource(\n (svg as JsiSkSVG).ref\n );\n this.ref.drawImage(image, 0, 0);\n }\n\n save() {\n return this.ref.save();\n }\n\n saveLayer(\n paint?: SkPaint,\n bounds?: SkRect | null,\n backdrop?: SkImageFilter | null,\n flags?: SaveLayerFlag\n ) {\n return this.ref.saveLayer(\n paint ? JsiSkPaint.fromValue(paint) : undefined,\n bounds ? JsiSkRect.fromValue(this.CanvasKit, bounds) : bounds,\n backdrop ? JsiSkImageFilter.fromValue(backdrop) : backdrop,\n flags\n );\n }\n\n restore() {\n this.ref.restore();\n }\n\n rotate(rotationInDegrees: number, rx: number, ry: number) {\n this.ref.rotate(rotationInDegrees, rx, ry);\n }\n\n scale(sx: number, sy: number) {\n this.ref.scale(sx, sy);\n }\n\n skew(sx: number, sy: number) {\n this.ref.skew(sx, sy);\n }\n\n translate(dx: number, dy: number) {\n this.ref.translate(dx, dy);\n }\n\n drawColor(color: SkColor, blendMode?: BlendMode) {\n this.ref.drawColor(\n color,\n blendMode ? getEnum(this.CanvasKit, \"BlendMode\", blendMode) : undefined\n );\n }\n\n clear(color: SkColor) {\n this.ref.clear(color);\n }\n\n clipPath(path: SkPath, op: ClipOp, doAntiAlias: boolean) {\n this.ref.clipPath(\n JsiSkPath.fromValue(path),\n getEnum(this.CanvasKit, \"PathOp\", op),\n doAntiAlias\n );\n }\n\n clipRect(rect: SkRect, op: ClipOp, doAntiAlias: boolean) {\n this.ref.clipRect(\n JsiSkRect.fromValue(this.CanvasKit, rect),\n getEnum(this.CanvasKit, \"PathOp\", op),\n doAntiAlias\n );\n }\n\n clipRRect(rrect: InputRRect, op: ClipOp, doAntiAlias: boolean) {\n this.ref.clipRRect(\n JsiSkRRect.fromValue(this.CanvasKit, rrect),\n getEnum(this.CanvasKit, \"PathOp\", op),\n doAntiAlias\n );\n }\n\n concat(m: SkMatrix | number[]) {\n this.ref.concat(Array.isArray(m) ? m : JsiSkMatrix.fromValue(m));\n }\n\n drawPicture(skp: SkPicture) {\n this.ref.drawPicture(JsiSkPicture.fromValue(skp));\n }\n\n drawAtlas(\n atlas: SkImage,\n srcs: SkRect[],\n dsts: SkRSXform[],\n paint: SkPaint,\n blendMode?: BlendMode,\n colors?: SkColor[],\n sampling?: CubicResampler | FilterOptions\n ) {\n const src = srcs.flatMap((s) =>\n Array.from(JsiSkRect.fromValue(this.CanvasKit, s))\n );\n const dst = dsts.flatMap((s) => Array.from(JsiSkRSXform.fromValue(s)));\n let cls: Uint32Array | undefined;\n if (colors) {\n cls = new Uint32Array(colors.length);\n for (let i = 0; i < colors.length; i++) {\n const [r, g, b, a] = colors[i];\n cls[i] = this.CanvasKit.ColorAsInt(r * 255, g * 255, b * 255, a * 255);\n }\n }\n let ckSampling: CKCubicResampler | CKFilterOptions = {\n filter: this.CanvasKit.FilterMode.Linear,\n mipmap: this.CanvasKit.MipmapMode.None,\n };\n if (sampling && isCubicSampling(sampling)) {\n ckSampling = sampling;\n } else if (sampling) {\n ckSampling = {\n filter: getEnum(this.CanvasKit, \"FilterMode\", sampling.filter),\n mipmap: sampling.mipmap\n ? getEnum(this.CanvasKit, \"MipmapMode\", sampling.mipmap)\n : this.CanvasKit.MipmapMode.None,\n };\n }\n this.ref.drawAtlas(\n JsiSkImage.fromValue(atlas),\n src,\n dst,\n JsiSkPaint.fromValue(paint),\n blendMode\n ? getEnum(this.CanvasKit, \"BlendMode\", blendMode)\n : this.CanvasKit.BlendMode.DstOver,\n cls,\n ckSampling\n );\n }\n\n readPixels(srcX: number, srcY: number, imageInfo: ImageInfo) {\n const pxInfo = {\n width: imageInfo.width,\n height: imageInfo.height,\n colorSpace: this.CanvasKit.ColorSpace.SRGB,\n alphaType: getEnum(this.CanvasKit, \"AlphaType\", imageInfo.alphaType),\n colorType: getEnum(this.CanvasKit, \"ColorType\", imageInfo.colorType),\n };\n return this.ref.readPixels(srcX, srcY, pxInfo);\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import type { DataSourceParam } from "../types";
2
- export declare const useSVG: (source: DataSourceParam, onError?: (err: Error) => void) => import("../types").SkSVG | null;
1
+ import type { DataSourceParam, SkSVG } from "../types";
2
+ export declare const useSVG: (source: DataSourceParam, onError?: (err: Error) => void) => SkSVG | null;
@@ -1,22 +1,31 @@
1
+ import { useEffect, useState } from "react";
1
2
  import { Skia } from "../Skia";
2
3
  export const useSVG = (source, onError) => {
4
+ const [svg, setSVG] = useState(null);
3
5
  if (source === null || source === undefined) {
4
6
  throw new Error(`Invalid svg data source. Got: ${source}`);
5
7
  }
6
- let src;
7
- if (typeof source === "string") {
8
- src = source;
9
- } else if (typeof source === "object" && "default" in source && typeof source.default === "string") {
10
- src = source.default;
11
- } else if (typeof source === "object" && "uri" in source) {
12
- src = source.uri;
13
- } else {
14
- throw new Error(`Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(source, null, 2)}`);
15
- }
16
- const svg = Skia.SVG.MakeFromString(src);
17
- if (svg === null && onError !== undefined) {
18
- onError(new Error("Failed to create SVG from source."));
19
- }
8
+ useEffect(() => {
9
+ (async () => {
10
+ let src;
11
+ if (typeof source === "string") {
12
+ src = source;
13
+ } else if (typeof source === "object" && "default" in source && typeof source.default === "string") {
14
+ src = source.default;
15
+ } else if (typeof source === "object" && "uri" in source) {
16
+ src = source.uri;
17
+ } else {
18
+ throw new Error(`Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(source, null, 2)}`);
19
+ }
20
+ const result = await fetch(src);
21
+ const svgStr = await result.text();
22
+ const newSvg = Skia.SVG.MakeFromString(svgStr);
23
+ setSVG(newSvg);
24
+ if (newSvg === null && onError !== undefined) {
25
+ onError(new Error("Failed to create SVG from source."));
26
+ }
27
+ })();
28
+ }, [onError, source]);
20
29
  return svg;
21
30
  };
22
31
  //# sourceMappingURL=SVG.web.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Skia","useSVG","source","onError","undefined","Error","src","default","uri","JSON","stringify","svg","SVG","MakeFromString"],"sources":["SVG.web.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { DataSourceParam } from \"../types\";\n\nexport const useSVG = (\n source: DataSourceParam,\n onError?: (err: Error) => void\n) => {\n if (source === null || source === undefined) {\n throw new Error(`Invalid svg data source. Got: ${source}`);\n }\n let src: string;\n if (typeof source === \"string\") {\n src = source;\n } else if (\n typeof source === \"object\" &&\n \"default\" in source &&\n typeof source.default === \"string\"\n ) {\n src = source.default;\n } else if (typeof source === \"object\" && \"uri\" in source) {\n src = source.uri;\n } else {\n throw new Error(\n `Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(\n source,\n null,\n 2\n )}`\n );\n }\n const svg = Skia.SVG.MakeFromString(src);\n if (svg === null && onError !== undefined) {\n onError(new Error(\"Failed to create SVG from source.\"));\n }\n return svg;\n};\n"],"mappings":"AAAA,SAASA,IAAI,QAAQ,SAAS;AAG9B,OAAO,MAAMC,MAAM,GAAGA,CACpBC,MAAuB,EACvBC,OAA8B,KAC3B;EACH,IAAID,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAKE,SAAS,EAAE;IAC3C,MAAM,IAAIC,KAAK,CAAC,iCAAiCH,MAAM,EAAE,CAAC;EAC5D;EACA,IAAII,GAAW;EACf,IAAI,OAAOJ,MAAM,KAAK,QAAQ,EAAE;IAC9BI,GAAG,GAAGJ,MAAM;EACd,CAAC,MAAM,IACL,OAAOA,MAAM,KAAK,QAAQ,IAC1B,SAAS,IAAIA,MAAM,IACnB,OAAOA,MAAM,CAACK,OAAO,KAAK,QAAQ,EAClC;IACAD,GAAG,GAAGJ,MAAM,CAACK,OAAO;EACtB,CAAC,MAAM,IAAI,OAAOL,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAIA,MAAM,EAAE;IACxDI,GAAG,GAAGJ,MAAM,CAACM,GAAG;EAClB,CAAC,MAAM;IACL,MAAM,IAAIH,KAAK,CACb,iFAAiFI,IAAI,CAACC,SAAS,CAC7FR,MAAM,EACN,IAAI,EACJ,CACF,CAAC,EACH,CAAC;EACH;EACA,MAAMS,GAAG,GAAGX,IAAI,CAACY,GAAG,CAACC,cAAc,CAACP,GAAG,CAAC;EACxC,IAAIK,GAAG,KAAK,IAAI,IAAIR,OAAO,KAAKC,SAAS,EAAE;IACzCD,OAAO,CAAC,IAAIE,KAAK,CAAC,mCAAmC,CAAC,CAAC;EACzD;EACA,OAAOM,GAAG;AACZ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useState","Skia","useSVG","source","onError","svg","setSVG","undefined","Error","src","default","uri","JSON","stringify","result","fetch","svgStr","text","newSvg","SVG","MakeFromString"],"sources":["SVG.web.ts"],"sourcesContent":["import { useEffect, useState } from \"react\";\n\nimport { Skia } from \"../Skia\";\nimport type { DataSourceParam, SkSVG } from \"../types\";\n\nexport const useSVG = (\n source: DataSourceParam,\n onError?: (err: Error) => void\n) => {\n const [svg, setSVG] = useState<SkSVG | null>(null);\n if (source === null || source === undefined) {\n throw new Error(`Invalid svg data source. Got: ${source}`);\n }\n useEffect(() => {\n (async () => {\n let src: string;\n if (typeof source === \"string\") {\n src = source;\n } else if (\n typeof source === \"object\" &&\n \"default\" in source &&\n typeof source.default === \"string\"\n ) {\n src = source.default;\n } else if (typeof source === \"object\" && \"uri\" in source) {\n src = source.uri;\n } else {\n throw new Error(\n `Invalid svg data source. Make sure that the source resolves to a string. Got: ${JSON.stringify(\n source,\n null,\n 2\n )}`\n );\n }\n const result = await fetch(src);\n const svgStr = await result.text();\n const newSvg = Skia.SVG.MakeFromString(svgStr);\n setSVG(newSvg);\n if (newSvg === null && onError !== undefined) {\n onError(new Error(\"Failed to create SVG from source.\"));\n }\n })();\n }, [onError, source]);\n return svg;\n};\n"],"mappings":"AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAE3C,SAASC,IAAI,QAAQ,SAAS;AAG9B,OAAO,MAAMC,MAAM,GAAGA,CACpBC,MAAuB,EACvBC,OAA8B,KAC3B;EACH,MAAM,CAACC,GAAG,EAAEC,MAAM,CAAC,GAAGN,QAAQ,CAAe,IAAI,CAAC;EAClD,IAAIG,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAKI,SAAS,EAAE;IAC3C,MAAM,IAAIC,KAAK,CAAC,iCAAiCL,MAAM,EAAE,CAAC;EAC5D;EACAJ,SAAS,CAAC,MAAM;IACd,CAAC,YAAY;MACX,IAAIU,GAAW;MACf,IAAI,OAAON,MAAM,KAAK,QAAQ,EAAE;QAC9BM,GAAG,GAAGN,MAAM;MACd,CAAC,MAAM,IACL,OAAOA,MAAM,KAAK,QAAQ,IAC1B,SAAS,IAAIA,MAAM,IACnB,OAAOA,MAAM,CAACO,OAAO,KAAK,QAAQ,EAClC;QACAD,GAAG,GAAGN,MAAM,CAACO,OAAO;MACtB,CAAC,MAAM,IAAI,OAAOP,MAAM,KAAK,QAAQ,IAAI,KAAK,IAAIA,MAAM,EAAE;QACxDM,GAAG,GAAGN,MAAM,CAACQ,GAAG;MAClB,CAAC,MAAM;QACL,MAAM,IAAIH,KAAK,CACb,iFAAiFI,IAAI,CAACC,SAAS,CAC7FV,MAAM,EACN,IAAI,EACJ,CACF,CAAC,EACH,CAAC;MACH;MACA,MAAMW,MAAM,GAAG,MAAMC,KAAK,CAACN,GAAG,CAAC;MAC/B,MAAMO,MAAM,GAAG,MAAMF,MAAM,CAACG,IAAI,CAAC,CAAC;MAClC,MAAMC,MAAM,GAAGjB,IAAI,CAACkB,GAAG,CAACC,cAAc,CAACJ,MAAM,CAAC;MAC9CV,MAAM,CAACY,MAAM,CAAC;MACd,IAAIA,MAAM,KAAK,IAAI,IAAId,OAAO,KAAKG,SAAS,EAAE;QAC5CH,OAAO,CAAC,IAAII,KAAK,CAAC,mCAAmC,CAAC,CAAC;MACzD;IACF,CAAC,EAAE,CAAC;EACN,CAAC,EAAE,CAACJ,OAAO,EAAED,MAAM,CAAC,CAAC;EACrB,OAAOE,GAAG;AACZ,CAAC","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import type { SkData } from "../Data";
2
+ import type { SkFontMgr } from "../Font/FontMgr";
2
3
  import type { SkSVG } from "./SVG";
3
4
  export interface SVGFactory {
4
- MakeFromData(data: SkData): SkSVG | null;
5
- MakeFromString(str: string): SkSVG | null;
5
+ MakeFromData(data: SkData, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
6
+ MakeFromString(str: string, fontMgr?: SkFontMgr | null, assets?: Record<string, SkData | null>): SkSVG | null;
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n MakeFromData(data: SkData): SkSVG | null;\n MakeFromString(str: string): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["SVGFactory.ts"],"sourcesContent":["import type { SkData } from \"../Data\";\nimport type { SkFontMgr } from \"../Font/FontMgr\";\n\nimport type { SkSVG } from \"./SVG\";\n\nexport interface SVGFactory {\n MakeFromData(\n data: SkData,\n fontMgr?: SkFontMgr | null,\n assets?: Record<string, SkData | null>\n ): SkSVG | null;\n MakeFromString(\n str: string,\n fontMgr?: SkFontMgr | null,\n assets?: Record<string, SkData | null>\n ): SkSVG | null;\n}\n"],"mappings":"","ignoreList":[]}
@@ -26,7 +26,7 @@ export declare class JsiSkCanvas extends HostObject<Canvas, "Canvas"> implements
26
26
  drawText(str: string, x: number, y: number, paint: SkPaint, font: SkFont): void;
27
27
  drawTextBlob(blob: SkTextBlob, x: number, y: number, paint: SkPaint): void;
28
28
  drawGlyphs(glyphs: number[], positions: SkPoint[], x: number, y: number, font: SkFont, paint: SkPaint): void;
29
- drawSvg(svg: SkSVG, _width?: number, _height?: number): void;
29
+ drawSvg(svg: SkSVG, width?: number, height?: number): void;
30
30
  save(): number;
31
31
  saveLayer(paint?: SkPaint, bounds?: SkRect | null, backdrop?: SkImageFilter | null, flags?: SaveLayerFlag): number;
32
32
  restore(): void;
@@ -92,7 +92,13 @@ export class JsiSkCanvas extends HostObject {
92
92
  drawGlyphs(glyphs, positions, x, y, font, paint) {
93
93
  this.ref.drawGlyphs(glyphs, positions.map(p => [p.x, p.y]).flat(), x, y, JsiSkFont.fromValue(font), JsiSkPaint.fromValue(paint));
94
94
  }
95
- drawSvg(svg, _width, _height) {
95
+ drawSvg(svg, width, height) {
96
+ const ctm = this.ref.getLocalToDevice();
97
+ console.log({
98
+ ctm,
99
+ width,
100
+ height
101
+ });
96
102
  const image = this.CanvasKit.MakeImageFromCanvasImageSource(svg.ref);
97
103
  this.ref.drawImage(image, 0, 0);
98
104
  }