@shopify/react-native-skia 0.1.131 → 0.1.134
Sign up to get free protection for your applications and to get access to all the features.
- package/android/CMakeLists.txt +1 -1
- package/android/build.gradle +17 -2
- package/android/cpp/rnskia-android/RNSkDrawViewImpl.cpp +5 -0
- package/cpp/api/JsiSkFont.h +6 -2
- package/cpp/api/JsiSkImage.h +2 -19
- package/cpp/api/JsiSkPaint.h +5 -32
- package/cpp/api/JsiSkPath.h +4 -4
- package/cpp/rnskia/RNSkValueApi.h +6 -6
- package/cpp/rnskia/values/{RNSkDerivedValue.h → RNSkComputedValue.h} +7 -7
- package/cpp/utils/RNSkLog.h +5 -0
- package/ios/RNSkia-iOS/SkiaManager.mm +1 -1
- package/lib/commonjs/mock/index.js +190 -0
- package/lib/commonjs/mock/index.js.map +1 -0
- package/lib/commonjs/skia/core/Data.js +33 -43
- package/lib/commonjs/skia/core/Data.js.map +1 -1
- package/lib/commonjs/skia/core/Typeface.js +1 -1
- package/lib/commonjs/skia/core/Typeface.js.map +1 -1
- package/lib/commonjs/skia/types/Font/Font.js.map +1 -1
- package/lib/commonjs/skia/types/Image/Image.js +5 -5
- package/lib/commonjs/skia/types/Image/Image.js.map +1 -1
- package/lib/commonjs/skia/types/Paint/Paint.js +3 -3
- package/lib/commonjs/skia/types/Paint/Paint.js.map +1 -1
- package/lib/commonjs/skia/types/Path/Path.js +0 -1
- package/lib/commonjs/skia/types/Path/Path.js.map +1 -1
- package/lib/commonjs/skia/types/Shader/Shader.js +1 -7
- package/lib/commonjs/skia/types/Shader/Shader.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkCanvas.js +1 -1
- package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkFont.js +4 -2
- package/lib/commonjs/skia/web/JsiSkFont.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkFontMgr.js +0 -2
- package/lib/commonjs/skia/web/JsiSkFontMgr.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkImage.js +10 -6
- package/lib/commonjs/skia/web/JsiSkImage.js.map +1 -1
- package/lib/commonjs/skia/web/{JsiImageFilterFactory.js → JsiSkImageFilterFactory.js} +1 -1
- package/lib/commonjs/skia/web/JsiSkImageFilterFactory.js.map +1 -0
- package/lib/commonjs/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPath.js +65 -52
- package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkShaderFactory.js +1 -1
- package/lib/commonjs/skia/web/JsiSkShaderFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkVerticesFactory.js +23 -1
- package/lib/commonjs/skia/web/JsiSkVerticesFactory.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkia.js +2 -2
- package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
- package/lib/commonjs/values/api.js +3 -3
- package/lib/commonjs/values/api.js.map +1 -1
- package/lib/commonjs/values/api.web.js +3 -3
- package/lib/commonjs/values/api.web.js.map +1 -1
- package/lib/commonjs/values/hooks/index.js +4 -4
- package/lib/commonjs/values/hooks/index.js.map +1 -1
- package/lib/commonjs/values/hooks/useComputedValue.js +32 -0
- package/lib/commonjs/values/hooks/useComputedValue.js.map +1 -0
- package/lib/commonjs/values/web/{RNSkDerivedValue.js → RNSkComputedValue.js} +4 -4
- package/lib/commonjs/values/web/RNSkComputedValue.js.map +1 -0
- package/lib/commonjs/values/web/api.js +3 -3
- package/lib/commonjs/values/web/api.js.map +1 -1
- package/lib/commonjs/views/SkiaView.web.js +4 -4
- package/lib/commonjs/views/SkiaView.web.js.map +1 -1
- package/lib/commonjs/web/index.js +4 -2
- package/lib/commonjs/web/index.js.map +1 -1
- package/lib/module/mock/index.js +152 -0
- package/lib/module/mock/index.js.map +1 -0
- package/lib/module/skia/core/Data.js +32 -41
- package/lib/module/skia/core/Data.js.map +1 -1
- package/lib/module/skia/core/Typeface.js +1 -1
- package/lib/module/skia/core/Typeface.js.map +1 -1
- package/lib/module/skia/types/Font/Font.js.map +1 -1
- package/lib/module/skia/types/Image/Image.js +5 -5
- package/lib/module/skia/types/Image/Image.js.map +1 -1
- package/lib/module/skia/types/Paint/Paint.js +3 -3
- package/lib/module/skia/types/Paint/Paint.js.map +1 -1
- package/lib/module/skia/types/Path/Path.js +0 -1
- package/lib/module/skia/types/Path/Path.js.map +1 -1
- package/lib/module/skia/types/Shader/Shader.js +1 -7
- package/lib/module/skia/types/Shader/Shader.js.map +1 -1
- package/lib/module/skia/web/JsiSkCanvas.js +1 -1
- package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/module/skia/web/JsiSkFont.js +5 -3
- package/lib/module/skia/web/JsiSkFont.js.map +1 -1
- package/lib/module/skia/web/JsiSkFontMgr.js +0 -2
- package/lib/module/skia/web/JsiSkFontMgr.js.map +1 -1
- package/lib/module/skia/web/JsiSkImage.js +10 -7
- package/lib/module/skia/web/JsiSkImage.js.map +1 -1
- package/lib/module/skia/web/{JsiImageFilterFactory.js → JsiSkImageFilterFactory.js} +1 -1
- package/lib/module/skia/web/JsiSkImageFilterFactory.js.map +1 -0
- package/lib/module/skia/web/JsiSkPaint.js.map +1 -1
- package/lib/module/skia/web/JsiSkPath.js +65 -52
- package/lib/module/skia/web/JsiSkPath.js.map +1 -1
- package/lib/module/skia/web/JsiSkShaderFactory.js +1 -1
- package/lib/module/skia/web/JsiSkShaderFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkVerticesFactory.js +24 -1
- package/lib/module/skia/web/JsiSkVerticesFactory.js.map +1 -1
- package/lib/module/skia/web/JsiSkia.js +1 -1
- package/lib/module/skia/web/JsiSkia.js.map +1 -1
- package/lib/module/values/api.js +1 -1
- package/lib/module/values/api.js.map +1 -1
- package/lib/module/values/api.web.js +1 -1
- package/lib/module/values/api.web.js.map +1 -1
- package/lib/module/values/hooks/index.js +1 -1
- package/lib/module/values/hooks/index.js.map +1 -1
- package/lib/module/values/hooks/useComputedValue.js +18 -0
- package/lib/module/values/hooks/useComputedValue.js.map +1 -0
- package/lib/module/values/web/{RNSkDerivedValue.js → RNSkComputedValue.js} +2 -2
- package/lib/module/values/web/RNSkComputedValue.js.map +1 -0
- package/lib/module/values/web/api.js +3 -3
- package/lib/module/values/web/api.js.map +1 -1
- package/lib/module/views/SkiaView.web.js +4 -4
- package/lib/module/views/SkiaView.web.js.map +1 -1
- package/lib/module/web/index.js +3 -1
- package/lib/module/web/index.js.map +1 -1
- package/lib/typescript/src/mock/index.d.ts +47 -0
- package/lib/typescript/src/skia/core/Data.d.ts +3 -3
- package/lib/typescript/src/skia/types/Font/Font.d.ts +8 -9
- package/lib/typescript/src/skia/types/Image/Image.d.ts +5 -5
- package/lib/typescript/src/skia/types/Paint/Paint.d.ts +3 -3
- package/lib/typescript/src/skia/types/Path/Path.d.ts +1 -2
- package/lib/typescript/src/skia/types/RuntimeEffect/RuntimeEffect.d.ts +1 -0
- package/lib/typescript/src/skia/types/Skia.d.ts +1 -1
- package/lib/typescript/src/skia/web/JsiSkFont.d.ts +1 -1
- package/lib/typescript/src/skia/web/JsiSkImage.d.ts +3 -3
- package/lib/typescript/src/skia/web/{JsiImageFilterFactory.d.ts → JsiSkImageFilterFactory.d.ts} +0 -0
- package/lib/typescript/src/skia/web/JsiSkPaint.d.ts +1 -1
- package/lib/typescript/src/values/api.d.ts +1 -1
- package/lib/typescript/src/values/api.web.d.ts +1 -1
- package/lib/typescript/src/values/hooks/index.d.ts +1 -1
- package/lib/typescript/src/values/hooks/{useDerivedValue.d.ts → useComputedValue.d.ts} +2 -1
- package/lib/typescript/src/values/types.d.ts +2 -2
- package/lib/typescript/src/values/web/{RNSkDerivedValue.d.ts → RNSkComputedValue.d.ts} +1 -1
- package/package.json +2 -1
- package/src/mock/index.ts +156 -0
- package/src/skia/core/Data.ts +67 -50
- package/src/skia/core/Typeface.ts +6 -1
- package/src/skia/types/Font/Font.ts +9 -14
- package/src/skia/types/Image/Image.ts +4 -4
- package/src/skia/types/Paint/Paint.ts +1 -1
- package/src/skia/types/Path/Path.ts +0 -1
- package/src/skia/types/RuntimeEffect/RuntimeEffect.ts +1 -0
- package/src/skia/types/Shader/Shader.ts +3 -5
- package/src/skia/types/Skia.ts +1 -1
- package/src/skia/web/JsiSkCanvas.ts +2 -2
- package/src/skia/web/JsiSkFont.ts +7 -3
- package/src/skia/web/JsiSkFontMgr.ts +0 -4
- package/src/skia/web/JsiSkImage.ts +37 -16
- package/src/skia/web/{JsiImageFilterFactory.ts → JsiSkImageFilterFactory.ts} +0 -0
- package/src/skia/web/JsiSkPaint.ts +1 -1
- package/src/skia/web/JsiSkPath.ts +64 -47
- package/src/skia/web/JsiSkShaderFactory.ts +4 -1
- package/src/skia/web/JsiSkVerticesFactory.ts +15 -1
- package/src/skia/web/JsiSkia.ts +2 -2
- package/src/values/api.ts +1 -1
- package/src/values/api.web.ts +1 -1
- package/src/values/hooks/index.ts +1 -1
- package/src/values/hooks/{useDerivedValue.ts → useComputedValue.ts} +8 -3
- package/src/values/types.ts +2 -2
- package/src/values/web/{RNSkDerivedValue.ts → RNSkComputedValue.ts} +1 -1
- package/src/values/web/api.ts +3 -3
- package/src/views/SkiaView.web.tsx +9 -11
- package/src/web/index.ts +3 -1
- package/lib/commonjs/skia/web/JsiImageFilterFactory.js.map +0 -1
- package/lib/commonjs/values/hooks/useDerivedValue.js +0 -25
- package/lib/commonjs/values/hooks/useDerivedValue.js.map +0 -1
- package/lib/commonjs/values/web/RNSkDerivedValue.js.map +0 -1
- package/lib/module/skia/web/JsiImageFilterFactory.js.map +0 -1
- package/lib/module/values/hooks/useDerivedValue.js +0 -14
- package/lib/module/values/hooks/useDerivedValue.js.map +0 -1
- package/lib/module/values/web/RNSkDerivedValue.js.map +0 -1
package/android/CMakeLists.txt
CHANGED
@@ -50,9 +50,9 @@ target_include_directories(
|
|
50
50
|
${PACKAGE_NAME}
|
51
51
|
PRIVATE
|
52
52
|
|
53
|
-
# When installed in the development environment
|
54
53
|
"${NODE_MODULES_DIR}/react-native/ReactCommon/callinvoker"
|
55
54
|
"${NODE_MODULES_DIR}/react-native/ReactCommon/jsi"
|
55
|
+
"${NODE_MODULES_DIR}/react-native/ReactCommon"
|
56
56
|
"${NODE_MODULES_DIR}/react-native/ReactCommon/react/nativemodule/core"
|
57
57
|
"${NODE_MODULES_DIR}/react-native/ReactAndroid/src/main/java/com/facebook/react/turbomodule/core/jni"
|
58
58
|
|
package/android/build.gradle
CHANGED
@@ -51,6 +51,13 @@ def defaultDir = null
|
|
51
51
|
def androidSourcesDir = null
|
52
52
|
def androidSourcesName = 'React Native sources'
|
53
53
|
|
54
|
+
def buildType = "debug"
|
55
|
+
tasks.all({ task ->
|
56
|
+
if (task.name == "buildCMakeRelease") {
|
57
|
+
buildType = "release"
|
58
|
+
}
|
59
|
+
})
|
60
|
+
|
54
61
|
if (rootProject.ext.has('reactNativeAndroidRoot')) {
|
55
62
|
defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
|
56
63
|
androidSourcesDir = defaultDir.parentFile.toString()
|
@@ -81,6 +88,7 @@ def REACT_NATIVE_VERSION = reactProperties.getProperty("VERSION_NAME").split("\\
|
|
81
88
|
logger.warn("react-native-skia: React Native version: ${REACT_NATIVE_VERSION}")
|
82
89
|
logger.warn("react-native-skia: Is Source build: ${sourceBuild}")
|
83
90
|
logger.warn("react-native-skia: Prebuilt dir: ${prebuiltDir}")
|
91
|
+
logger.warn("react-native-skia: Build type: ${buildType}")
|
84
92
|
|
85
93
|
buildscript {
|
86
94
|
// The Android Gradle plugin is only required when opening the android folder stand-alone.
|
@@ -175,8 +183,15 @@ dependencies {
|
|
175
183
|
//noinspection GradleDynamicVersion
|
176
184
|
extractJNI("com.facebook.fbjni:fbjni:0.2.2")
|
177
185
|
|
178
|
-
|
179
|
-
|
186
|
+
if(REACT_NATIVE_VERSION < 69) {
|
187
|
+
def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include "**/**/*.aar" }).singleFile
|
188
|
+
extractJNI(files(rnAAR))
|
189
|
+
} else {
|
190
|
+
// React Native >= 0.69
|
191
|
+
def rnAarMatcher = "**/react-native/**/*${buildType}.aar"
|
192
|
+
def rnAAR = fileTree("${nodeModules}/react-native/android").matching({ it.include rnAarMatcher }).singleFile
|
193
|
+
extractJNI(files(rnAAR))
|
194
|
+
}
|
180
195
|
}
|
181
196
|
|
182
197
|
afterEvaluate { project ->
|
@@ -53,6 +53,11 @@ namespace RNSkia {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
void RNSkDrawViewImpl::surfaceSizeChanged(int width, int height) {
|
56
|
+
if(width == 0 && height == 0) {
|
57
|
+
// Setting width/height to zero is nothing we need to care about when
|
58
|
+
// it comes to invalidating the surface.
|
59
|
+
return;
|
60
|
+
}
|
56
61
|
_scaledWidth = width;
|
57
62
|
_scaledHeight = height;
|
58
63
|
|
package/cpp/api/JsiSkFont.h
CHANGED
@@ -5,13 +5,15 @@
|
|
5
5
|
#include <vector>
|
6
6
|
|
7
7
|
#include <jsi/jsi.h>
|
8
|
-
|
9
8
|
#include "JsiSkHostObjects.h"
|
9
|
+
#include <RNSkLog.h>
|
10
|
+
|
10
11
|
#include "JsiSkPaint.h"
|
11
12
|
#include "JsiSkRect.h"
|
12
13
|
#include "JsiSkTypeface.h"
|
13
14
|
#include "JsiSkPoint.h"
|
14
15
|
|
16
|
+
|
15
17
|
#pragma clang diagnostic push
|
16
18
|
#pragma clang diagnostic ignored "-Wdocumentation"
|
17
19
|
|
@@ -37,6 +39,7 @@ namespace RNSkia
|
|
37
39
|
|
38
40
|
JSI_HOST_FUNCTION(measureText)
|
39
41
|
{
|
42
|
+
RNSkLogger::warnToJavascriptConsole(runtime, "measureText() is deprecated. Clients should use 'Font.getGlyphWidths' instead (the latter does no shaping)");
|
40
43
|
auto textVal = arguments[0].asString(runtime).utf8(runtime);
|
41
44
|
auto text = textVal.c_str();
|
42
45
|
SkRect rect;
|
@@ -252,6 +255,7 @@ namespace RNSkia
|
|
252
255
|
}
|
253
256
|
|
254
257
|
JSI_EXPORT_FUNCTIONS(
|
258
|
+
JSI_EXPORT_FUNC(JsiSkFont, getSize),
|
255
259
|
JSI_EXPORT_FUNC(JsiSkFont, measureText),
|
256
260
|
JSI_EXPORT_FUNC(JsiSkFont, getMetrics),
|
257
261
|
JSI_EXPORT_FUNC(JsiSkFont, getGlyphIDs),
|
@@ -323,4 +327,4 @@ namespace RNSkia
|
|
323
327
|
}
|
324
328
|
};
|
325
329
|
|
326
|
-
} // namespace RNSkia
|
330
|
+
} // namespace RNSkia
|
package/cpp/api/JsiSkImage.h
CHANGED
@@ -65,9 +65,7 @@ namespace RNSkia
|
|
65
65
|
JSI_HOST_FUNCTION(encodeToBytes)
|
66
66
|
{
|
67
67
|
// Get optional parameters
|
68
|
-
auto format = count >= 1 ?
|
69
|
-
static_cast<int>(arguments[0].asNumber())) : SkEncodedImageFormat::kPNG;
|
70
|
-
|
68
|
+
auto format = count >= 1 ? static_cast<SkEncodedImageFormat>(arguments[0].asNumber()) : SkEncodedImageFormat::kPNG;
|
71
69
|
auto quality = count == 2 ? arguments[1].asNumber() : 100.0;
|
72
70
|
|
73
71
|
// Get data
|
@@ -89,8 +87,7 @@ namespace RNSkia
|
|
89
87
|
JSI_HOST_FUNCTION(encodeToBase64)
|
90
88
|
{
|
91
89
|
// Get optional parameters
|
92
|
-
auto format = count >= 1 ?
|
93
|
-
static_cast<int>(arguments[0].asNumber())) : SkEncodedImageFormat::kPNG;
|
90
|
+
auto format = count >= 1 ? static_cast<SkEncodedImageFormat>(arguments[0].asNumber()) : SkEncodedImageFormat::kPNG;
|
94
91
|
|
95
92
|
auto quality = count == 2 ? arguments[1].asNumber() : 100.0;
|
96
93
|
|
@@ -122,20 +119,6 @@ namespace RNSkia
|
|
122
119
|
.asHostObject<JsiSkImage>(runtime)
|
123
120
|
->getObject();
|
124
121
|
}
|
125
|
-
private:
|
126
|
-
|
127
|
-
SkEncodedImageFormat getFormatFromNumber(int value) {
|
128
|
-
switch(value) {
|
129
|
-
case 0: // PNG
|
130
|
-
return SkEncodedImageFormat::kPNG;
|
131
|
-
case 1: // JPEG
|
132
|
-
return SkEncodedImageFormat::kJPEG;
|
133
|
-
case 2: // WEBP
|
134
|
-
return SkEncodedImageFormat::kWEBP;
|
135
|
-
default:
|
136
|
-
return SkEncodedImageFormat::kPNG;
|
137
|
-
}
|
138
|
-
}
|
139
122
|
};
|
140
123
|
|
141
124
|
} // namespace RNSkia
|
package/cpp/api/JsiSkPaint.h
CHANGED
@@ -84,47 +84,20 @@ public:
|
|
84
84
|
}
|
85
85
|
|
86
86
|
JSI_HOST_FUNCTION(setStyle) {
|
87
|
-
|
88
|
-
|
89
|
-
case 0:
|
90
|
-
getObject()->setStyle(SkPaint::kFill_Style);
|
91
|
-
break;
|
92
|
-
case 1:
|
93
|
-
getObject()->setStyle(SkPaint::kStroke_Style);
|
94
|
-
break;
|
95
|
-
}
|
87
|
+
auto style = arguments[0].asNumber();
|
88
|
+
getObject()->setStyle(static_cast<SkPaint::Style>(style));
|
96
89
|
return jsi::Value::undefined();
|
97
90
|
}
|
98
91
|
|
99
92
|
JSI_HOST_FUNCTION(setStrokeCap) {
|
100
|
-
|
101
|
-
|
102
|
-
case 0:
|
103
|
-
getObject()->setStrokeCap(SkPaint::kButt_Cap);
|
104
|
-
break;
|
105
|
-
case 1:
|
106
|
-
getObject()->setStrokeCap(SkPaint::kRound_Cap);
|
107
|
-
break;
|
108
|
-
case 2:
|
109
|
-
getObject()->setStrokeCap(SkPaint::kSquare_Cap);
|
110
|
-
break;
|
111
|
-
}
|
93
|
+
auto cap = arguments[0].asNumber();
|
94
|
+
getObject()->setStrokeCap(static_cast<SkPaint::Cap>(cap));
|
112
95
|
return jsi::Value::undefined();
|
113
96
|
}
|
114
97
|
|
115
98
|
JSI_HOST_FUNCTION(setStrokeJoin) {
|
116
99
|
int join = arguments[0].asNumber();
|
117
|
-
|
118
|
-
case 0:
|
119
|
-
getObject()->setStrokeJoin(SkPaint::kBevel_Join);
|
120
|
-
break;
|
121
|
-
case 1:
|
122
|
-
getObject()->setStrokeJoin(SkPaint::kMiter_Join);
|
123
|
-
break;
|
124
|
-
case 2:
|
125
|
-
getObject()->setStrokeJoin(SkPaint::kRound_Join);
|
126
|
-
break;
|
127
|
-
}
|
100
|
+
getObject()->setStrokeJoin(static_cast<SkPaint::Join>(join));
|
128
101
|
return jsi::Value::undefined();
|
129
102
|
}
|
130
103
|
|
package/cpp/api/JsiSkPath.h
CHANGED
@@ -480,8 +480,8 @@ public:
|
|
480
480
|
auto cmds = jsi::Array(runtime, path.countVerbs());
|
481
481
|
auto it = SkPath::Iter(path, false);
|
482
482
|
// { "Move", "Line", "Quad", "Conic", "Cubic", "Close", "Done" };
|
483
|
-
const int pointCount[] = { 1 ,
|
484
|
-
const int cmdCount[] = { 3 ,
|
483
|
+
const int pointCount[] = { 1 , 1 , 2 , 2 , 3 , 0 , 0 };
|
484
|
+
const int cmdCount[] = { 3 , 3 , 5 , 6 , 7 , 1 , 0 };
|
485
485
|
SkPoint points[4];
|
486
486
|
SkPath::Verb verb;
|
487
487
|
auto k = 0;
|
@@ -491,8 +491,8 @@ public:
|
|
491
491
|
auto j = 0;
|
492
492
|
cmd.setValueAtIndex(runtime, j++, jsi::Value(verbVal));
|
493
493
|
for (int i = 0; i < pointCount[verbVal]; ++i) {
|
494
|
-
cmd.setValueAtIndex(runtime, j++, jsi::Value(static_cast<double>(points[i].fX)));
|
495
|
-
cmd.setValueAtIndex(runtime, j++, jsi::Value(static_cast<double>(points[i].fY)));
|
494
|
+
cmd.setValueAtIndex(runtime, j++, jsi::Value(static_cast<double>(points[1 + i].fX)));
|
495
|
+
cmd.setValueAtIndex(runtime, j++, jsi::Value(static_cast<double>(points[1 + i].fY)));
|
496
496
|
}
|
497
497
|
if (SkPath::kConic_Verb == verb) {
|
498
498
|
cmd.setValueAtIndex(runtime, j, jsi::Value(static_cast<double>(it.conicWeight())));
|
@@ -4,7 +4,7 @@
|
|
4
4
|
#include <JsiHostObject.h>
|
5
5
|
#include <RNSkPlatformContext.h>
|
6
6
|
#include <RNSkValue.h>
|
7
|
-
#include <
|
7
|
+
#include <RNSkComputedValue.h>
|
8
8
|
#include <RNSkAnimation.h>
|
9
9
|
#include <jsi/jsi.h>
|
10
10
|
|
@@ -33,13 +33,13 @@ public:
|
|
33
33
|
std::make_shared<RNSkValue>(_platformContext, runtime, arguments, count));
|
34
34
|
}
|
35
35
|
|
36
|
-
JSI_HOST_FUNCTION(
|
36
|
+
JSI_HOST_FUNCTION(createComputedValue) {
|
37
37
|
// Creation and initialization is done in two steps to be able to use weak references when setting
|
38
38
|
// up dependencies - since weak_from_this needs our instance to be a shared_ptr before calling
|
39
39
|
// weak_from_this().
|
40
|
-
auto
|
41
|
-
|
42
|
-
return jsi::Object::createFromHostObject(runtime,
|
40
|
+
auto computedValue = std::make_shared<RNSkComputedValue>(_platformContext, runtime, arguments, count);
|
41
|
+
computedValue->initializeDependencies(runtime, arguments, count);
|
42
|
+
return jsi::Object::createFromHostObject(runtime, computedValue);
|
43
43
|
}
|
44
44
|
|
45
45
|
JSI_HOST_FUNCTION(createAnimation) {
|
@@ -61,7 +61,7 @@ public:
|
|
61
61
|
}
|
62
62
|
|
63
63
|
JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(RNSkValueApi, createValue),
|
64
|
-
JSI_EXPORT_FUNC(RNSkValueApi,
|
64
|
+
JSI_EXPORT_FUNC(RNSkValueApi, createComputedValue),
|
65
65
|
JSI_EXPORT_FUNC(RNSkValueApi, createClockValue),
|
66
66
|
JSI_EXPORT_FUNC(RNSkValueApi, createAnimation))
|
67
67
|
|
@@ -19,13 +19,13 @@ using namespace facebook;
|
|
19
19
|
Creates a readonly value that depends on one or more other values. The derived value has a callback
|
20
20
|
function that is used to calculate the new value when any of the dependencies change.
|
21
21
|
*/
|
22
|
-
class
|
22
|
+
class RNSkComputedValue : public RNSkReadonlyValue
|
23
23
|
{
|
24
24
|
public:
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
RNSkComputedValue(std::shared_ptr<RNSkPlatformContext> platformContext,
|
26
|
+
jsi::Runtime &runtime,
|
27
|
+
const jsi::Value *arguments,
|
28
|
+
size_t count
|
29
29
|
)
|
30
30
|
: RNSkReadonlyValue(platformContext) {
|
31
31
|
// Verify input
|
@@ -70,7 +70,7 @@ public:
|
|
70
70
|
_unsubscribers.push_back(dep->addListener([weakSelf = weak_from_this()](jsi::Runtime& runtime) {
|
71
71
|
auto self = weakSelf.lock();
|
72
72
|
if(self) {
|
73
|
-
auto selfAsThis = std::dynamic_pointer_cast<
|
73
|
+
auto selfAsThis = std::dynamic_pointer_cast<RNSkComputedValue>(self);
|
74
74
|
selfAsThis->dependencyUpdated(runtime);
|
75
75
|
}
|
76
76
|
}));
|
@@ -80,7 +80,7 @@ public:
|
|
80
80
|
dependencyUpdated(runtime);
|
81
81
|
}
|
82
82
|
|
83
|
-
virtual ~
|
83
|
+
virtual ~RNSkComputedValue() {
|
84
84
|
// Unregister listeners
|
85
85
|
for(const auto &unsubscribe: _unsubscribers) {
|
86
86
|
unsubscribe();
|
package/cpp/utils/RNSkLog.h
CHANGED
@@ -5,6 +5,8 @@
|
|
5
5
|
#pragma once
|
6
6
|
|
7
7
|
#include <string>
|
8
|
+
#include <jsi/jsi.h>
|
9
|
+
|
8
10
|
#ifdef ANDROID
|
9
11
|
#include <android/log.h>
|
10
12
|
#endif
|
@@ -14,6 +16,9 @@
|
|
14
16
|
#endif
|
15
17
|
|
16
18
|
namespace RNSkia {
|
19
|
+
|
20
|
+
using namespace facebook;
|
21
|
+
|
17
22
|
class RNSkLogger {
|
18
23
|
public:
|
19
24
|
/**
|
@@ -34,7 +34,7 @@
|
|
34
34
|
if (cxxBridge.runtime) {
|
35
35
|
|
36
36
|
auto callInvoker = bridge.jsCallInvoker;
|
37
|
-
jsi::Runtime* jsRuntime = (jsi::Runtime*)cxxBridge.runtime;
|
37
|
+
facebook::jsi::Runtime* jsRuntime = (facebook::jsi::Runtime*)cxxBridge.runtime;
|
38
38
|
|
39
39
|
// Create platform context
|
40
40
|
_platformContext = std::make_shared<RNSkia::PlatformContext>(jsRuntime, callInvoker);
|
@@ -0,0 +1,190 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.vec = exports.useValueEffect = exports.useValue = exports.useTypeface = exports.useTouchHandler = exports.useTiming = exports.useSpring = exports.useSharedValueEffect = exports.useSVG = exports.usePicture = exports.useImage = exports.useFont = exports.useDataCollection = exports.useData = exports.useComputedValue = exports.useClockValue = exports.timing = exports.spring = exports.runTiming = exports.runSpring = exports.runDecay = exports.rrect = exports.rect = exports.decay = exports.Skia = void 0;
|
7
|
+
|
8
|
+
/**
|
9
|
+
* Mock implementation for test runners.
|
10
|
+
*
|
11
|
+
* Example:
|
12
|
+
*
|
13
|
+
* ```js
|
14
|
+
* jest.mock('@shopify/react-native-skia', () => require('@shopify/react-native-skia/lib/commonjs/mock'));
|
15
|
+
* ```
|
16
|
+
*/
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
18
|
+
const MockJSIInstance = {};
|
19
|
+
|
20
|
+
const Noop = () => MockJSIInstance;
|
21
|
+
|
22
|
+
const Skia = {
|
23
|
+
Point: Noop,
|
24
|
+
XYWHRect: Noop,
|
25
|
+
RuntimeShaderBuilder: Noop,
|
26
|
+
RRectXY: Noop,
|
27
|
+
RSXform: Noop,
|
28
|
+
Color: Noop,
|
29
|
+
ContourMeasureIter: Noop,
|
30
|
+
Paint: Noop,
|
31
|
+
PictureRecorder: Noop,
|
32
|
+
Picture: {
|
33
|
+
MakePicture: Noop
|
34
|
+
},
|
35
|
+
Path: {
|
36
|
+
Make: Noop,
|
37
|
+
MakeFromSVGString: Noop,
|
38
|
+
MakeFromOp: Noop,
|
39
|
+
MakeFromCmds: Noop,
|
40
|
+
MakeFromText: Noop
|
41
|
+
},
|
42
|
+
Matrix: Noop,
|
43
|
+
ColorFilter: {
|
44
|
+
MakeMatrix: Noop,
|
45
|
+
MakeBlend: Noop,
|
46
|
+
MakeCompose: Noop,
|
47
|
+
MakeLerp: Noop,
|
48
|
+
MakeLinearToSRGBGamma: Noop,
|
49
|
+
MakeSRGBToLinearGamma: Noop,
|
50
|
+
MakeLumaColorFilter: Noop
|
51
|
+
},
|
52
|
+
Font: Noop,
|
53
|
+
Typeface: {
|
54
|
+
MakeFreeTypeFaceFromData: Noop
|
55
|
+
},
|
56
|
+
MaskFilter: {
|
57
|
+
MakeBlur: Noop
|
58
|
+
},
|
59
|
+
RuntimeEffect: {
|
60
|
+
Make: Noop
|
61
|
+
},
|
62
|
+
ImageFilter: {
|
63
|
+
MakeOffset: Noop,
|
64
|
+
MakeDisplacementMap: Noop,
|
65
|
+
MakeShader: Noop,
|
66
|
+
MakeBlur: Noop,
|
67
|
+
MakeColorFilter: Noop,
|
68
|
+
MakeCompose: Noop,
|
69
|
+
MakeDropShadow: Noop,
|
70
|
+
MakeDropShadowOnly: Noop,
|
71
|
+
MakeErode: Noop,
|
72
|
+
MakeDilate: Noop,
|
73
|
+
MakeBlend: Noop,
|
74
|
+
MakeRuntimeShader: Noop
|
75
|
+
},
|
76
|
+
Shader: {
|
77
|
+
MakeLinearGradient: Noop,
|
78
|
+
MakeRadialGradient: Noop,
|
79
|
+
MakeTwoPointConicalGradient: Noop,
|
80
|
+
MakeSweepGradient: Noop,
|
81
|
+
MakeTurbulence: Noop,
|
82
|
+
MakeFractalNoise: Noop,
|
83
|
+
MakeBlend: Noop,
|
84
|
+
MakeColor: Noop
|
85
|
+
},
|
86
|
+
PathEffect: {
|
87
|
+
MakeCorner: Noop,
|
88
|
+
MakeDash: Noop,
|
89
|
+
MakeDiscrete: Noop,
|
90
|
+
MakeCompose: Noop,
|
91
|
+
MakeSum: Noop,
|
92
|
+
MakeLine2D: Noop,
|
93
|
+
MakePath1D: Noop,
|
94
|
+
MakePath2D: Noop
|
95
|
+
},
|
96
|
+
MakeVertices: Noop,
|
97
|
+
Data: {
|
98
|
+
fromURI: Noop,
|
99
|
+
fromBytes: Noop,
|
100
|
+
fromBase64: Noop
|
101
|
+
},
|
102
|
+
Image: {
|
103
|
+
MakeImageFromEncoded: Noop,
|
104
|
+
MakeImage: Noop
|
105
|
+
},
|
106
|
+
SVG: {
|
107
|
+
MakeFromData: Noop,
|
108
|
+
MakeFromString: Noop
|
109
|
+
},
|
110
|
+
FontMgr: {
|
111
|
+
RefDefault: Noop
|
112
|
+
},
|
113
|
+
TextBlob: {
|
114
|
+
MakeFromText: Noop,
|
115
|
+
MakeFromGlyphs: Noop,
|
116
|
+
MakeFromRSXform: Noop,
|
117
|
+
MakeFromRSXformGlyphs: Noop
|
118
|
+
},
|
119
|
+
Surface: {
|
120
|
+
Make: Noop
|
121
|
+
}
|
122
|
+
};
|
123
|
+
exports.Skia = Skia;
|
124
|
+
|
125
|
+
const vec = (x, y) => ({
|
126
|
+
x,
|
127
|
+
y
|
128
|
+
});
|
129
|
+
|
130
|
+
exports.vec = vec;
|
131
|
+
|
132
|
+
const rect = (x, y, width, height) => ({
|
133
|
+
x,
|
134
|
+
y,
|
135
|
+
width,
|
136
|
+
height
|
137
|
+
});
|
138
|
+
|
139
|
+
exports.rect = rect;
|
140
|
+
|
141
|
+
const rrect = (r, rx, ry) => ({
|
142
|
+
rect: r,
|
143
|
+
rx,
|
144
|
+
ry
|
145
|
+
});
|
146
|
+
|
147
|
+
exports.rrect = rrect;
|
148
|
+
const useTouchHandler = Noop;
|
149
|
+
exports.useTouchHandler = useTouchHandler;
|
150
|
+
const useComputedValue = Noop;
|
151
|
+
exports.useComputedValue = useComputedValue;
|
152
|
+
const useValue = Noop;
|
153
|
+
exports.useValue = useValue;
|
154
|
+
const useClockValue = Noop;
|
155
|
+
exports.useClockValue = useClockValue;
|
156
|
+
const useValueEffect = Noop;
|
157
|
+
exports.useValueEffect = useValueEffect;
|
158
|
+
const useTiming = Noop;
|
159
|
+
exports.useTiming = useTiming;
|
160
|
+
const runTiming = Noop;
|
161
|
+
exports.runTiming = runTiming;
|
162
|
+
const timing = Noop;
|
163
|
+
exports.timing = timing;
|
164
|
+
const useSpring = Noop;
|
165
|
+
exports.useSpring = useSpring;
|
166
|
+
const runSpring = Noop;
|
167
|
+
exports.runSpring = runSpring;
|
168
|
+
const spring = Noop;
|
169
|
+
exports.spring = spring;
|
170
|
+
const runDecay = Noop;
|
171
|
+
exports.runDecay = runDecay;
|
172
|
+
const decay = Noop;
|
173
|
+
exports.decay = decay;
|
174
|
+
const useSharedValueEffect = Noop;
|
175
|
+
exports.useSharedValueEffect = useSharedValueEffect;
|
176
|
+
const useData = Noop;
|
177
|
+
exports.useData = useData;
|
178
|
+
const useDataCollection = Noop;
|
179
|
+
exports.useDataCollection = useDataCollection;
|
180
|
+
const useFont = Noop;
|
181
|
+
exports.useFont = useFont;
|
182
|
+
const useImage = Noop;
|
183
|
+
exports.useImage = useImage;
|
184
|
+
const usePicture = Noop;
|
185
|
+
exports.usePicture = usePicture;
|
186
|
+
const useSVG = Noop;
|
187
|
+
exports.useSVG = useSVG;
|
188
|
+
const useTypeface = Noop;
|
189
|
+
exports.useTypeface = useTypeface;
|
190
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["MockJSIInstance","Noop","Skia","Point","XYWHRect","RuntimeShaderBuilder","RRectXY","RSXform","Color","ContourMeasureIter","Paint","PictureRecorder","Picture","MakePicture","Path","Make","MakeFromSVGString","MakeFromOp","MakeFromCmds","MakeFromText","Matrix","ColorFilter","MakeMatrix","MakeBlend","MakeCompose","MakeLerp","MakeLinearToSRGBGamma","MakeSRGBToLinearGamma","MakeLumaColorFilter","Font","Typeface","MakeFreeTypeFaceFromData","MaskFilter","MakeBlur","RuntimeEffect","ImageFilter","MakeOffset","MakeDisplacementMap","MakeShader","MakeColorFilter","MakeDropShadow","MakeDropShadowOnly","MakeErode","MakeDilate","MakeRuntimeShader","Shader","MakeLinearGradient","MakeRadialGradient","MakeTwoPointConicalGradient","MakeSweepGradient","MakeTurbulence","MakeFractalNoise","MakeColor","PathEffect","MakeCorner","MakeDash","MakeDiscrete","MakeSum","MakeLine2D","MakePath1D","MakePath2D","MakeVertices","Data","fromURI","fromBytes","fromBase64","Image","MakeImageFromEncoded","MakeImage","SVG","MakeFromData","MakeFromString","FontMgr","RefDefault","TextBlob","MakeFromGlyphs","MakeFromRSXform","MakeFromRSXformGlyphs","Surface","vec","x","y","rect","width","height","rrect","r","rx","ry","useTouchHandler","useComputedValue","useValue","useClockValue","useValueEffect","useTiming","runTiming","timing","useSpring","runSpring","spring","runDecay","decay","useSharedValueEffect","useData","useDataCollection","useFont","useImage","usePicture","useSVG","useTypeface"],"mappings":"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","sourcesContent":["/**\n * Mock implementation for test runners.\n *\n * Example:\n *\n * ```js\n * jest.mock('@shopify/react-native-skia', () => require('@shopify/react-native-skia/lib/commonjs/mock'));\n * ```\n */\n\nimport type { Skia as SkiaApi, SkRect } from \"../skia/types\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst MockJSIInstance: any = {};\nconst Noop = () => MockJSIInstance;\n\nexport const Skia: SkiaApi = {\n Point: Noop,\n XYWHRect: Noop,\n RuntimeShaderBuilder: Noop,\n RRectXY: Noop,\n RSXform: Noop,\n Color: Noop,\n ContourMeasureIter: Noop,\n Paint: Noop,\n PictureRecorder: Noop,\n Picture: {\n MakePicture: Noop,\n },\n Path: {\n Make: Noop,\n MakeFromSVGString: Noop,\n MakeFromOp: Noop,\n MakeFromCmds: Noop,\n MakeFromText: Noop,\n },\n Matrix: Noop,\n ColorFilter: {\n MakeMatrix: Noop,\n MakeBlend: Noop,\n MakeCompose: Noop,\n MakeLerp: Noop,\n MakeLinearToSRGBGamma: Noop,\n MakeSRGBToLinearGamma: Noop,\n MakeLumaColorFilter: Noop,\n },\n Font: Noop,\n Typeface: {\n MakeFreeTypeFaceFromData: Noop,\n },\n MaskFilter: {\n MakeBlur: Noop,\n },\n RuntimeEffect: {\n Make: Noop,\n },\n ImageFilter: {\n MakeOffset: Noop,\n MakeDisplacementMap: Noop,\n MakeShader: Noop,\n MakeBlur: Noop,\n MakeColorFilter: Noop,\n MakeCompose: Noop,\n MakeDropShadow: Noop,\n MakeDropShadowOnly: Noop,\n MakeErode: Noop,\n MakeDilate: Noop,\n MakeBlend: Noop,\n MakeRuntimeShader: Noop,\n },\n Shader: {\n MakeLinearGradient: Noop,\n MakeRadialGradient: Noop,\n MakeTwoPointConicalGradient: Noop,\n MakeSweepGradient: Noop,\n MakeTurbulence: Noop,\n MakeFractalNoise: Noop,\n MakeBlend: Noop,\n MakeColor: Noop,\n },\n PathEffect: {\n MakeCorner: Noop,\n MakeDash: Noop,\n MakeDiscrete: Noop,\n MakeCompose: Noop,\n MakeSum: Noop,\n MakeLine2D: Noop,\n MakePath1D: Noop,\n MakePath2D: Noop,\n },\n MakeVertices: Noop,\n Data: {\n fromURI: Noop,\n fromBytes: Noop,\n fromBase64: Noop,\n },\n Image: {\n MakeImageFromEncoded: Noop,\n MakeImage: Noop,\n },\n SVG: {\n MakeFromData: Noop,\n MakeFromString: Noop,\n },\n FontMgr: {\n RefDefault: Noop,\n },\n TextBlob: {\n MakeFromText: Noop,\n MakeFromGlyphs: Noop,\n MakeFromRSXform: Noop,\n MakeFromRSXformGlyphs: Noop,\n },\n Surface: {\n Make: Noop,\n },\n};\n\nexport const vec = (x: number, y: number) => ({ x, y });\n\nexport const rect = (x: number, y: number, width: number, height: number) => ({\n x,\n y,\n width,\n height,\n});\n\nexport const rrect = (r: SkRect, rx: number, ry: number) => ({\n rect: r,\n rx,\n ry,\n});\n\nexport const useTouchHandler = Noop;\nexport const useComputedValue = Noop;\nexport const useValue = Noop;\nexport const useClockValue = Noop;\nexport const useValueEffect = Noop;\nexport const useTiming = Noop;\nexport const runTiming = Noop;\nexport const timing = Noop;\nexport const useSpring = Noop;\nexport const runSpring = Noop;\nexport const spring = Noop;\nexport const runDecay = Noop;\nexport const decay = Noop;\n\nexport const useSharedValueEffect = Noop;\n\nexport const useData = Noop;\nexport const useDataCollection = Noop;\nexport const useFont = Noop;\nexport const useImage = Noop;\nexport const usePicture = Noop;\nexport const useSVG = Noop;\nexport const useTypeface = Noop;\n"]}
|
@@ -15,65 +15,55 @@ const resolveAsset = source => {
|
|
15
15
|
return _reactNative.Platform.OS === "web" ? source.default : _reactNative.Image.resolveAssetSource(source).uri;
|
16
16
|
};
|
17
17
|
|
18
|
-
const
|
19
|
-
|
20
|
-
|
21
|
-
(
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
return typeof source === "string" ? source : resolveAsset(source);
|
28
|
-
});
|
29
|
-
Promise.all(bytesOrURIs.map(bytesOrURI => bytesOrURI instanceof Uint8Array ? _Skia.Skia.Data.fromBytes(bytesOrURI) : _Skia.Skia.Data.fromURI(bytesOrURI))).then(d => setData(factory(d))); // eslint-disable-next-line react-hooks/exhaustive-deps
|
30
|
-
}, deps);
|
31
|
-
return data;
|
18
|
+
const factoryWrapper = (data2, factory, onError) => {
|
19
|
+
const factoryResult = factory(data2);
|
20
|
+
|
21
|
+
if (factoryResult === null) {
|
22
|
+
onError && onError(new Error("Could not load data"));
|
23
|
+
return null;
|
24
|
+
} else {
|
25
|
+
return factoryResult;
|
26
|
+
}
|
32
27
|
};
|
33
28
|
|
34
|
-
|
29
|
+
const loadDataCollection = (sources, factory, onError) => Promise.all(sources.map(source => loadData(source, factory, onError)));
|
30
|
+
|
31
|
+
const loadData = (source, factory, onError) => {
|
32
|
+
if (source instanceof Uint8Array) {
|
33
|
+
return new Promise(resolve => resolve(factoryWrapper(_Skia.Skia.Data.fromBytes(source), factory, onError)));
|
34
|
+
} else {
|
35
|
+
const uri = typeof source === "string" ? source : resolveAsset(source);
|
36
|
+
return _Skia.Skia.Data.fromURI(uri).then(d => factoryWrapper(d, factory, onError));
|
37
|
+
}
|
38
|
+
};
|
35
39
|
|
36
|
-
const
|
40
|
+
const useLoading = function (source, loader) {
|
41
|
+
let deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
37
42
|
const [data, setData] = (0, _react.useState)(null);
|
38
43
|
const prevSourceRef = (0, _react.useRef)();
|
39
44
|
(0, _react.useEffect)(() => {
|
40
|
-
// Track to avoid re-fetching the same data
|
41
45
|
if (prevSourceRef.current !== source) {
|
42
46
|
prevSourceRef.current = source;
|
47
|
+
loader().then(setData);
|
48
|
+
} else {
|
49
|
+
setData(null);
|
50
|
+
} // eslint-disable-next-line react-hooks/exhaustive-deps
|
43
51
|
|
44
|
-
|
45
|
-
const factoryWrapper = data2 => {
|
46
|
-
const factoryResult = factory(data2);
|
47
|
-
|
48
|
-
if (factoryResult === null) {
|
49
|
-
onError && onError(new Error("Could not load data"));
|
50
|
-
setData(null);
|
51
|
-
} else {
|
52
|
-
setData(factoryResult);
|
53
|
-
}
|
54
|
-
};
|
55
|
-
|
56
|
-
if (source instanceof Uint8Array) {
|
57
|
-
factoryWrapper(_Skia.Skia.Data.fromBytes(source));
|
58
|
-
} else {
|
59
|
-
const uri = typeof source === "string" ? source : resolveAsset(source);
|
60
|
-
|
61
|
-
_Skia.Skia.Data.fromURI(uri).then(d => factoryWrapper(d));
|
62
|
-
}
|
63
|
-
} else {
|
64
|
-
// new source is null or undefined -> remove cached data
|
65
|
-
setData(null);
|
66
|
-
}
|
67
|
-
}
|
68
|
-
}, [factory, onError, source]);
|
52
|
+
}, deps);
|
69
53
|
return data;
|
70
54
|
};
|
71
55
|
|
56
|
+
const useDataCollection = (sources, factory, onError, deps) => useLoading(sources, () => loadDataCollection(sources, factory, onError), deps);
|
57
|
+
|
58
|
+
exports.useDataCollection = useDataCollection;
|
59
|
+
|
60
|
+
const useRawData = (source, factory, onError, deps) => useLoading(source, () => loadData(source, factory, onError), deps);
|
61
|
+
|
72
62
|
exports.useRawData = useRawData;
|
73
63
|
|
74
64
|
const identity = data => data;
|
75
65
|
|
76
|
-
const useData = (source, onError) => useRawData(source, identity, onError);
|
66
|
+
const useData = (source, onError, deps) => useRawData(source, identity, onError, deps);
|
77
67
|
|
78
68
|
exports.useData = useData;
|
79
69
|
//# sourceMappingURL=Data.js.map
|