@shopify/react-native-skia 0.1.123 → 0.1.124
Sign up to get free protection for your applications and to get access to all the features.
- package/android/cpp/rnskia-android/RNSkDrawViewImpl.cpp +5 -5
- package/android/cpp/rnskia-android/RNSkDrawViewImpl.h +4 -4
- package/cpp/rnskia/RNSkAnimation.h +0 -2
- package/cpp/rnskia/RNSkDrawView.cpp +10 -13
- package/cpp/rnskia/RNSkDrawView.h +2 -2
- package/cpp/rnskia/RNSkValueApi.h +6 -2
- package/cpp/rnskia/values/RNSkClockValue.h +2 -2
- package/cpp/rnskia/values/RNSkDerivedValue.h +12 -5
- package/cpp/rnskia/values/RNSkReadonlyValue.h +2 -1
- package/cpp/rnskia/values/RNSkValue.h +8 -3
- package/ios/RNSkia-iOS/RNSkDrawViewImpl.h +4 -4
- package/ios/RNSkia-iOS/SkiaDrawView.mm +3 -4
- package/lib/commonjs/renderer/Canvas.js +14 -5
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/components/colorFilters/Lerp.js +1 -1
- package/lib/commonjs/renderer/components/colorFilters/Lerp.js.map +1 -1
- package/lib/commonjs/renderer/components/shaders/Shader.js +2 -2
- package/lib/commonjs/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/commonjs/renderer/processors/Circles.js +3 -2
- package/lib/commonjs/renderer/processors/Circles.js.map +1 -1
- package/lib/commonjs/renderer/processors/Font.js +1 -1
- package/lib/commonjs/renderer/processors/Font.js.map +1 -1
- package/lib/commonjs/renderer/processors/Rects.js +6 -6
- package/lib/commonjs/renderer/processors/Rects.js.map +1 -1
- package/lib/commonjs/values/animation/timing/functions/getResolvedParams.js +3 -3
- package/lib/commonjs/values/animation/timing/functions/getResolvedParams.js.map +1 -1
- package/lib/module/renderer/Canvas.js +10 -4
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/components/colorFilters/Lerp.js +1 -1
- package/lib/module/renderer/components/colorFilters/Lerp.js.map +1 -1
- package/lib/module/renderer/components/shaders/Shader.js +3 -2
- package/lib/module/renderer/components/shaders/Shader.js.map +1 -1
- package/lib/module/renderer/processors/Circles.js +3 -2
- package/lib/module/renderer/processors/Circles.js.map +1 -1
- package/lib/module/renderer/processors/Font.js +1 -1
- package/lib/module/renderer/processors/Font.js.map +1 -1
- package/lib/module/renderer/processors/Rects.js +5 -6
- package/lib/module/renderer/processors/Rects.js.map +1 -1
- package/lib/module/values/animation/timing/functions/getResolvedParams.js +3 -3
- package/lib/module/values/animation/timing/functions/getResolvedParams.js.map +1 -1
- package/lib/typescript/src/renderer/Canvas.d.ts +6 -0
- package/lib/typescript/src/values/animation/types.d.ts +5 -5
- package/package.json +1 -1
- package/src/renderer/Canvas.tsx +11 -4
- package/src/renderer/components/colorFilters/Lerp.tsx +1 -1
- package/src/renderer/components/shaders/Shader.tsx +1 -1
- package/src/renderer/processors/Circles.ts +2 -1
- package/src/renderer/processors/Font.ts +1 -1
- package/src/renderer/processors/Rects.ts +3 -2
- package/src/values/animation/timing/functions/getResolvedParams.ts +2 -2
- package/src/values/animation/types.ts +5 -5
@@ -16,8 +16,8 @@ namespace RNSkia {
|
|
16
16
|
_releaseSurfaceCallback(std::move(releaseSurfaceCallback)) {}
|
17
17
|
|
18
18
|
void RNSkDrawViewImpl::surfaceAvailable(ANativeWindow* surface, int width, int height) {
|
19
|
-
|
20
|
-
|
19
|
+
_scaledWidth = width;
|
20
|
+
_scaledHeight = height;
|
21
21
|
|
22
22
|
if (_renderer == nullptr)
|
23
23
|
{
|
@@ -53,8 +53,8 @@ namespace RNSkia {
|
|
53
53
|
}
|
54
54
|
|
55
55
|
void RNSkDrawViewImpl::surfaceSizeChanged(int width, int height) {
|
56
|
-
|
57
|
-
|
56
|
+
_scaledWidth = width;
|
57
|
+
_scaledHeight = height;
|
58
58
|
|
59
59
|
// Redraw after size change
|
60
60
|
requestRedraw();
|
@@ -62,7 +62,7 @@ namespace RNSkia {
|
|
62
62
|
|
63
63
|
void RNSkDrawViewImpl::drawPicture(const sk_sp <SkPicture> picture) {
|
64
64
|
if(_renderer != nullptr) {
|
65
|
-
_renderer->run(picture,
|
65
|
+
_renderer->run(picture, _scaledWidth, _scaledHeight);
|
66
66
|
}
|
67
67
|
}
|
68
68
|
}
|
@@ -28,9 +28,9 @@ namespace RNSkia {
|
|
28
28
|
}
|
29
29
|
|
30
30
|
protected:
|
31
|
-
|
31
|
+
float getScaledWidth() override { return _scaledWidth; };
|
32
32
|
|
33
|
-
|
33
|
+
float getScaledHeight() override { return _scaledHeight; };
|
34
34
|
|
35
35
|
void drawPicture(const sk_sp <SkPicture> picture) override;
|
36
36
|
|
@@ -40,8 +40,8 @@ namespace RNSkia {
|
|
40
40
|
std::unique_ptr<SkiaOpenGLRenderer> _renderer = nullptr;
|
41
41
|
|
42
42
|
int _nativeId;
|
43
|
-
|
44
|
-
|
43
|
+
float _scaledWidth = -1;
|
44
|
+
float _scaledHeight = -1;
|
45
45
|
|
46
46
|
std::function<void()> _releaseSurfaceCallback;
|
47
47
|
};
|
@@ -67,17 +67,9 @@ void RNSkDrawView::setDrawCallback(std::shared_ptr<jsi::Function> callback) {
|
|
67
67
|
_jsTimingInfo.reset();
|
68
68
|
_gpuTimingInfo.reset();
|
69
69
|
|
70
|
-
// Set up debug font/paints
|
71
|
-
auto font = SkFont();
|
72
|
-
font.setSize(14);
|
73
|
-
auto paint = SkPaint();
|
74
|
-
paint.setColor(SkColors::kRed);
|
75
|
-
|
76
70
|
// Create draw drawCallback wrapper
|
77
71
|
_drawCallback = std::make_shared<RNSkDrawCallback>(
|
78
72
|
[weakSelf = weak_from_this(),
|
79
|
-
paint = std::move(paint),
|
80
|
-
font = std::move(font),
|
81
73
|
callback = std::move(callback)](std::shared_ptr<JsiSkCanvas> canvas,
|
82
74
|
int width,
|
83
75
|
int height,
|
@@ -121,7 +113,12 @@ void RNSkDrawView::setDrawCallback(std::shared_ptr<jsi::Function> callback) {
|
|
121
113
|
stream << "js: " << jsAvg << "ms gpu: " << gpuAvg << "ms " << " total: " << total << "ms";
|
122
114
|
|
123
115
|
std::string debugString = stream.str();
|
124
|
-
|
116
|
+
|
117
|
+
// Set up debug font/paints
|
118
|
+
auto font = SkFont();
|
119
|
+
font.setSize(14);
|
120
|
+
auto paint = SkPaint();
|
121
|
+
paint.setColor(SkColors::kRed);
|
125
122
|
canvas->getCanvas()->drawSimpleText(
|
126
123
|
debugString.c_str(), debugString.size(), SkTextEncoding::kUTF8, 8,
|
127
124
|
18, font, paint);
|
@@ -157,7 +154,7 @@ void RNSkDrawView::drawInCanvas(std::shared_ptr<JsiSkCanvas> canvas,
|
|
157
154
|
|
158
155
|
sk_sp<SkImage> RNSkDrawView::makeImageSnapshot(std::shared_ptr<SkRect> bounds) {
|
159
156
|
// Assert width/height
|
160
|
-
auto surface = SkSurface::MakeRasterN32Premul(
|
157
|
+
auto surface = SkSurface::MakeRasterN32Premul(getScaledWidth(), getScaledHeight());
|
161
158
|
auto canvas = surface->getCanvas();
|
162
159
|
auto jsiCanvas = std::make_shared<JsiSkCanvas>(_platformContext);
|
163
160
|
jsiCanvas->setCanvas(canvas);
|
@@ -165,7 +162,7 @@ sk_sp<SkImage> RNSkDrawView::makeImageSnapshot(std::shared_ptr<SkRect> bounds) {
|
|
165
162
|
milliseconds ms = duration_cast<milliseconds>(
|
166
163
|
system_clock::now().time_since_epoch());
|
167
164
|
|
168
|
-
drawInCanvas(jsiCanvas,
|
165
|
+
drawInCanvas(jsiCanvas, getScaledWidth(), getScaledHeight(), ms.count() / 1000);
|
169
166
|
|
170
167
|
if(bounds != nullptr) {
|
171
168
|
SkIRect b = SkIRect::MakeXYWH(bounds->x(), bounds->y(), bounds->width(), bounds->height());
|
@@ -188,7 +185,7 @@ void RNSkDrawView::performDraw() {
|
|
188
185
|
// move the actual drawing onto the render thread later
|
189
186
|
SkPictureRecorder recorder;
|
190
187
|
SkRTreeFactory factory;
|
191
|
-
SkCanvas* canvas = recorder.beginRecording(
|
188
|
+
SkCanvas* canvas = recorder.beginRecording(getScaledWidth(), getScaledHeight(), &factory);
|
192
189
|
_jsiCanvas->setCanvas(canvas);
|
193
190
|
|
194
191
|
// Get current milliseconds
|
@@ -197,7 +194,7 @@ void RNSkDrawView::performDraw() {
|
|
197
194
|
|
198
195
|
try {
|
199
196
|
// Perform the javascript drawing
|
200
|
-
drawInCanvas(_jsiCanvas,
|
197
|
+
drawInCanvas(_jsiCanvas, getScaledWidth(), getScaledHeight(), ms.count() / 1000.0);
|
201
198
|
} catch(...) {
|
202
199
|
_jsTimingInfo.stopTiming();
|
203
200
|
_jsDrawingLock->unlock();
|
@@ -97,12 +97,12 @@ protected:
|
|
97
97
|
/**
|
98
98
|
Returns the scaled width of the view
|
99
99
|
*/
|
100
|
-
virtual
|
100
|
+
virtual float getScaledWidth() = 0;
|
101
101
|
|
102
102
|
/**
|
103
103
|
Returns the scaled height of the view
|
104
104
|
*/
|
105
|
-
virtual
|
105
|
+
virtual float getScaledHeight() = 0;
|
106
106
|
|
107
107
|
/**
|
108
108
|
Override to render picture to GPU
|
@@ -34,8 +34,12 @@ public:
|
|
34
34
|
}
|
35
35
|
|
36
36
|
JSI_HOST_FUNCTION(createDerivedValue) {
|
37
|
-
|
38
|
-
|
37
|
+
// Creation and initialization is done in two steps to be able to use weak references when setting
|
38
|
+
// up dependencies - since weak_from_this needs our instance to be a shared_ptr before calling
|
39
|
+
// weak_from_this().
|
40
|
+
auto derivedValue = std::make_shared<RNSkDerivedValue>(_platformContext, runtime, arguments, count);
|
41
|
+
derivedValue->initializeDependencies(runtime, arguments, count);
|
42
|
+
return jsi::Object::createFromHostObject(runtime, derivedValue);
|
39
43
|
}
|
40
44
|
|
41
45
|
JSI_HOST_FUNCTION(createAnimation) {
|
@@ -32,7 +32,6 @@ public:
|
|
32
32
|
size_t count) : RNSkReadonlyValue(platformContext),
|
33
33
|
_runtime(runtime),
|
34
34
|
_identifier(identifier) {
|
35
|
-
|
36
35
|
// Start by updating to zero (start value)
|
37
36
|
update(_runtime, static_cast<double>(0));
|
38
37
|
}
|
@@ -72,6 +71,7 @@ public:
|
|
72
71
|
_start += timeSinceStop;
|
73
72
|
|
74
73
|
_state = RNSkClockState::Running;
|
74
|
+
|
75
75
|
getContext()->beginDrawLoop(_identifier, [weakSelf = weak_from_this()](bool invalidated){
|
76
76
|
auto self = weakSelf.lock();
|
77
77
|
if(self) {
|
@@ -135,7 +135,7 @@ protected:
|
|
135
135
|
size_t _identifier;
|
136
136
|
std::chrono::time_point<std::chrono::steady_clock> _start;
|
137
137
|
std::chrono::time_point<std::chrono::steady_clock> _stop;
|
138
|
-
std::atomic<RNSkClockState> _state;
|
138
|
+
std::atomic<RNSkClockState> _state = { RNSkClockState::NotStarted };
|
139
139
|
};
|
140
140
|
|
141
141
|
}
|
@@ -39,6 +39,11 @@ public:
|
|
39
39
|
jsi::detail::throwJSError(runtime, "Expected array of dependencies as second parameter");
|
40
40
|
}
|
41
41
|
|
42
|
+
// Get callback for calculating result
|
43
|
+
_callback = std::make_shared<jsi::Function>(arguments[0].asObject(runtime).asFunction(runtime));
|
44
|
+
}
|
45
|
+
|
46
|
+
void initializeDependencies(jsi::Runtime &runtime, const jsi::Value *arguments, size_t count) {
|
42
47
|
// Save dependencies
|
43
48
|
std::vector<std::shared_ptr<RNSkReadonlyValue>> dependencies;
|
44
49
|
|
@@ -59,14 +64,16 @@ public:
|
|
59
64
|
dependencies.push_back(value);
|
60
65
|
}
|
61
66
|
|
62
|
-
// Get callback for calculating result
|
63
|
-
_callback = std::make_shared<jsi::Function>(arguments[0].asObject(runtime).asFunction(runtime));
|
64
|
-
|
65
67
|
// register change handler on dependencies
|
66
68
|
_unsubscribers.reserve(_unsubscribers.size() + size);
|
67
69
|
for(const auto &dep: dependencies) {
|
68
|
-
|
69
|
-
|
70
|
+
_unsubscribers.push_back(dep->addListener([weakSelf = weak_from_this()](jsi::Runtime& runtime) {
|
71
|
+
auto self = weakSelf.lock();
|
72
|
+
if(self) {
|
73
|
+
auto selfAsThis = std::dynamic_pointer_cast<RNSkDerivedValue>(self);
|
74
|
+
selfAsThis->dependencyUpdated(runtime);
|
75
|
+
}
|
76
|
+
}));
|
70
77
|
}
|
71
78
|
|
72
79
|
// Set initial value
|
@@ -26,7 +26,7 @@ class RNSkReadonlyValue : public JsiSkHostObject,
|
|
26
26
|
public:
|
27
27
|
RNSkReadonlyValue(std::shared_ptr<RNSkPlatformContext> platformContext)
|
28
28
|
: JsiSkHostObject(platformContext),
|
29
|
-
_propNameId(jsi::PropNameID::forUtf8(*platformContext->getJsRuntime(), "value")) {}
|
29
|
+
_propNameId(jsi::PropNameID::forUtf8(*platformContext->getJsRuntime(), "value")) { }
|
30
30
|
|
31
31
|
virtual ~RNSkReadonlyValue() { }
|
32
32
|
|
@@ -106,6 +106,7 @@ public:
|
|
106
106
|
}
|
107
107
|
|
108
108
|
protected:
|
109
|
+
|
109
110
|
/**
|
110
111
|
Notifies listeners about changes
|
111
112
|
@param runtime Current JS Runtime
|
@@ -76,11 +76,16 @@ public:
|
|
76
76
|
|
77
77
|
private:
|
78
78
|
void subscribe(std::shared_ptr<RNSkAnimation> animation) {
|
79
|
-
unsubscribe();
|
80
79
|
if(animation != nullptr) {
|
81
80
|
_animation = animation;
|
82
|
-
|
83
|
-
|
81
|
+
_unsubscribe = std::make_shared<std::function<void()>>(
|
82
|
+
_animation->addListener([weakSelf = weak_from_this()](jsi::Runtime &runtime) {
|
83
|
+
auto self = weakSelf.lock();
|
84
|
+
if(self) {
|
85
|
+
auto selfAsThis = std::dynamic_pointer_cast<RNSkValue>(self);
|
86
|
+
selfAsThis->animationDidUpdate(runtime);
|
87
|
+
}
|
88
|
+
}));
|
84
89
|
// Start the animation
|
85
90
|
_animation->startClock();
|
86
91
|
}
|
@@ -28,16 +28,16 @@ public:
|
|
28
28
|
void setSize(int width, int height);
|
29
29
|
|
30
30
|
protected:
|
31
|
-
|
32
|
-
|
31
|
+
float getScaledWidth() override { return _width * _context->getPixelDensity(); };
|
32
|
+
float getScaledHeight() override { return _height * _context->getPixelDensity(); };
|
33
33
|
|
34
34
|
private:
|
35
35
|
void drawPicture(const sk_sp<SkPicture> picture) override;
|
36
36
|
bool createSkiaSurface();
|
37
37
|
|
38
38
|
int _nativeId;
|
39
|
-
|
40
|
-
|
39
|
+
float _width = -1;
|
40
|
+
float _height = -1;
|
41
41
|
|
42
42
|
#pragma clang diagnostic push
|
43
43
|
#pragma clang diagnostic ignored "-Wunguarded-availability-new"
|
@@ -34,10 +34,9 @@
|
|
34
34
|
object:nil
|
35
35
|
queue:nil
|
36
36
|
usingBlock:^(NSNotification *notification){
|
37
|
-
// Remove local variables
|
38
|
-
|
39
|
-
|
40
|
-
}
|
37
|
+
// Remove local variables when the bridge is teared down.
|
38
|
+
weakSelf->_impl = nullptr;
|
39
|
+
weakSelf->_manager = nullptr;
|
41
40
|
}];
|
42
41
|
}
|
43
42
|
return self;
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.useCanvasSize = exports.useCanvasRef = exports.skiaReconciler = exports.Canvas = void 0;
|
6
|
+
exports.useCanvasSize = exports.useCanvasRef = exports.useCanvas = exports.skiaReconciler = exports.Canvas = void 0;
|
7
7
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
9
9
|
|
@@ -34,14 +34,23 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
34
34
|
// import { debugTree } from "./nodes";
|
35
35
|
const CanvasContext = /*#__PURE__*/_react.default.createContext(null);
|
36
36
|
|
37
|
-
const
|
38
|
-
const
|
37
|
+
const useCanvas = () => {
|
38
|
+
const size = (0, _react.useContext)(CanvasContext);
|
39
39
|
|
40
|
-
if (!
|
40
|
+
if (!size) {
|
41
41
|
throw new Error("Canvas context is not available");
|
42
42
|
}
|
43
43
|
|
44
|
-
return
|
44
|
+
return {
|
45
|
+
size
|
46
|
+
};
|
47
|
+
};
|
48
|
+
|
49
|
+
exports.useCanvas = useCanvas;
|
50
|
+
|
51
|
+
const useCanvasSize = () => {
|
52
|
+
console.warn("useCanvasSize is deprecated, use the size member of useCanvas() instead.");
|
53
|
+
return useCanvas().size;
|
45
54
|
};
|
46
55
|
|
47
56
|
exports.useCanvasSize = useCanvasSize;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Canvas.tsx"],"names":["CanvasContext","React","createContext","
|
1
|
+
{"version":3,"sources":["Canvas.tsx"],"names":["CanvasContext","React","createContext","useCanvas","size","Error","useCanvasSize","console","warn","skiaReconciler","skHostConfig","injectIntoDevTools","bundleType","version","rendererPackageName","render","element","root","container","updateContainer","depMgr","subscribe","useCanvasRef","defaultFontMgr","Skia","FontMgr","RefDefault","Canvas","forwardedRef","children","style","debug","mode","onTouch","fontMgr","canvasCtx","width","height","innerRef","ref","useCombinedRefs","tick","setTick","redraw","t","Container","DependencyManager","createContainer","onDraw","canvas","info","timestamp","touches","current","paint","ctx","opacity","center","draw","unsubscribe","refs","targetRef","useRef","useEffect","forEach"],"mappings":"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","sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n useContext,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n ComponentProps,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport { SkiaView, useDrawCallback } from \"../views\";\nimport type { TouchHandler } from \"../views\";\nimport { Skia } from \"../skia\";\nimport type { FontMgr } from \"../skia/FontMgr/FontMgr\";\nimport { useValue } from \"../values/hooks/useValue\";\nimport type { SkiaReadonlyValue } from \"../values/types\";\nimport { SkiaPaint } from \"../skia/Paint/Paint\";\n\nimport { debug as hostDebug, skHostConfig } from \"./HostConfig\";\n// import { debugTree } from \"./nodes\";\nimport { vec } from \"./processors\";\nimport { Container } from \"./nodes\";\nimport { DependencyManager } from \"./DependencyManager\";\n\nconst CanvasContext = React.createContext<SkiaReadonlyValue<{\n width: number;\n height: number;\n}> | null>(null);\n\nexport const useCanvas = () => {\n const size = useContext(CanvasContext);\n if (!size) {\n throw new Error(\"Canvas context is not available\");\n }\n return { size };\n};\n\nexport const useCanvasSize = () => {\n console.warn(\n \"useCanvasSize is deprecated, use the size member of useCanvas() instead.\"\n );\n return useCanvas().size;\n};\n\nexport const skiaReconciler = ReactReconciler(skHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nconst render = (element: ReactNode, root: OpaqueRoot, container: Container) => {\n skiaReconciler.updateContainer(element, root, null, () => {\n hostDebug(\"updateContainer\");\n\n container.depMgr.subscribe();\n });\n};\n\nexport const useCanvasRef = () => useRef<SkiaView>(null);\n\nexport interface CanvasProps extends ComponentProps<typeof SkiaView> {\n ref?: RefObject<SkiaView>;\n children: ReactNode;\n onTouch?: TouchHandler;\n fontMgr?: FontMgr;\n}\n\nconst defaultFontMgr = Skia.FontMgr.RefDefault();\n\nexport const Canvas = forwardRef<SkiaView, CanvasProps>(\n ({ children, style, debug, mode, onTouch, fontMgr }, forwardedRef) => {\n const canvasCtx = useValue({ width: 0, height: 0 });\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const [tick, setTick] = useState(0);\n const redraw = useCallback(() => setTick((t) => t + 1), []);\n\n const container = useMemo(\n () => new Container(new DependencyManager(ref), redraw),\n [redraw, ref]\n );\n\n const root = useMemo(\n () => skiaReconciler.createContainer(container, 0, false, null),\n [container]\n );\n // Render effect\n useEffect(() => {\n render(\n <CanvasContext.Provider value={canvasCtx}>\n {children}\n </CanvasContext.Provider>,\n root,\n container\n );\n }, [children, root, redraw, container, canvasCtx]);\n\n // Draw callback\n const onDraw = useDrawCallback(\n (canvas, info) => {\n // TODO: if tree is empty (count === 1) maybe we should not render?\n const { width, height, timestamp } = info;\n if (onTouch) {\n onTouch(info.touches);\n }\n if (\n width !== canvasCtx.current.width ||\n height !== canvasCtx.current.height\n ) {\n canvasCtx.current = { width, height };\n }\n const paint = SkiaPaint();\n const ctx = {\n width,\n height,\n timestamp,\n canvas,\n paint,\n opacity: 1,\n ref,\n center: vec(width / 2, height / 2),\n fontMgr: fontMgr ?? defaultFontMgr,\n };\n container.draw(ctx);\n },\n [tick, onTouch]\n );\n\n useEffect(() => {\n return () => {\n container.depMgr.unsubscribe();\n };\n }, [container]);\n\n return (\n <SkiaView\n ref={ref}\n style={style}\n onDraw={onDraw}\n mode={mode}\n debug={debug}\n />\n );\n }\n);\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"]}
|
@@ -25,7 +25,7 @@ const onDeclare = (0, _Declaration.createDeclaration)((_ref, children) => {
|
|
25
25
|
} = _ref;
|
26
26
|
const [src, dst] = children.filter(_ColorFilter.isColorFilter);
|
27
27
|
|
28
|
-
const cf = _skia.Skia.ColorFilter.MakeLerp(t,
|
28
|
+
const cf = _skia.Skia.ColorFilter.MakeLerp(t, src, dst);
|
29
29
|
|
30
30
|
return (0, _Compose.composeColorFilter)(cf, children.filter(c => c !== src && c !== dst));
|
31
31
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Lerp.tsx"],"names":["onDeclare","children","t","src","dst","filter","isColorFilter","cf","Skia","ColorFilter","MakeLerp","c","Lerp","props"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AAEA;;AAEA;;;;;;AAOA,MAAMA,SAAS,GAAG,oCAA6B,OAAQC,QAAR,KAAqB;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAClE,QAAM,CAACC,GAAD,EAAMC,GAAN,IAAaH,QAAQ,CAACI,MAAT,CAAgBC,0BAAhB,CAAnB;;AACA,QAAMC,EAAE,GAAGC,WAAKC,WAAL,CAAiBC,QAAjB,CAA0BR,CAA1B,
|
1
|
+
{"version":3,"sources":["Lerp.tsx"],"names":["onDeclare","children","t","src","dst","filter","isColorFilter","cf","Skia","ColorFilter","MakeLerp","c","Lerp","props"],"mappings":";;;;;;;AAAA;;AAGA;;AACA;;AAEA;;AAEA;;;;;;AAOA,MAAMA,SAAS,GAAG,oCAA6B,OAAQC,QAAR,KAAqB;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAClE,QAAM,CAACC,GAAD,EAAMC,GAAN,IAAaH,QAAQ,CAACI,MAAT,CAAgBC,0BAAhB,CAAnB;;AACA,QAAMC,EAAE,GAAGC,WAAKC,WAAL,CAAiBC,QAAjB,CAA0BR,CAA1B,EAA6BC,GAA7B,EAAkCC,GAAlC,CAAX;;AACA,SAAO,iCACLG,EADK,EAELN,QAAQ,CAACI,MAAT,CAAiBM,CAAD,IAAOA,CAAC,KAAKR,GAAN,IAAaQ,CAAC,KAAKP,GAA1C,CAFK,CAAP;AAID,CAPiB,CAAlB;;AASO,MAAMQ,IAAI,GAAIC,KAAD,IAAqC;AACvD,sBAAO;AAAe,IAAA,SAAS,EAAEb;AAA1B,KAAyCa,KAAzC,EAAP;AACD,CAFM","sourcesContent":["import React from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { Skia } from \"../../../skia\";\nimport { createDeclaration } from \"../../nodes/Declaration\";\nimport type { AnimatedProps } from \"../../processors/Animations/Animations\";\nimport { isColorFilter } from \"../../../skia/ColorFilter/ColorFilter\";\n\nimport { composeColorFilter } from \"./Compose\";\n\nexport interface LerpProps {\n t: number;\n children: ReactNode | ReactNode[];\n}\n\nconst onDeclare = createDeclaration<LerpProps>(({ t }, children) => {\n const [src, dst] = children.filter(isColorFilter);\n const cf = Skia.ColorFilter.MakeLerp(t, src, dst);\n return composeColorFilter(\n cf,\n children.filter((c) => c !== src && c !== dst)\n );\n});\n\nexport const Lerp = (props: AnimatedProps<LerpProps>) => {\n return <skDeclaration onDeclare={onDeclare} {...props} />;\n};\n"]}
|
@@ -17,8 +17,8 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
17
17
|
|
18
18
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
19
19
|
|
20
|
-
// We
|
21
|
-
|
20
|
+
const isVector = obj => // We have an issue to check property existence on JSI backed instances
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
22
22
|
obj.x !== undefined && obj.y !== undefined;
|
23
23
|
|
24
24
|
const processValue = value => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Shader.tsx"],"names":["isVector","obj","x","undefined","y","processValue","value","onDeclare","children","uniforms","source","opaque","transform","processedUniforms","Array","getUniformCount","fill","flatMap","_","i","name","getUniformName","Error","isArray","names","Object","keys","length","usedUniforms","map","unusedUniform","indexOf","filter","n","console","warn","join","makeShaderWithChildren","isShader","Shader","props","defaultProps"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;AACA;;;;;;AAEA
|
1
|
+
{"version":3,"sources":["Shader.tsx"],"names":["isVector","obj","x","undefined","y","processValue","value","onDeclare","children","uniforms","source","opaque","transform","processedUniforms","Array","getUniformCount","fill","flatMap","_","i","name","getUniformName","Error","isArray","names","Object","keys","length","usedUniforms","map","unusedUniform","indexOf","filter","n","console","warn","join","makeShaderWithChildren","isShader","Shader","props","defaultProps"],"mappings":";;;;;;;AAAA;;AAGA;;AAGA;;AACA;;;;;;AAEA,MAAMA,QAAQ,GAAIC,GAAD,IACf;AACA;AACCA,GAAD,CAAaC,CAAb,KAAmBC,SAAnB,IAAiCF,GAAD,CAAaG,CAAb,KAAmBD,SAHrD;;AAaA,MAAME,YAAY,GAAIC,KAAD,IAAqD;AACxE,MAAIN,QAAQ,CAACM,KAAD,CAAZ,EAAqB;AACnB,WAAO,CAACA,KAAK,CAACJ,CAAP,EAAUI,KAAK,CAACF,CAAhB,CAAP;AACD;;AACD,SAAOE,KAAP;AACD,CALD;;AAcA,MAAMC,SAAS,GAAG,oCAChB,OAA6CC,QAA7C,KAA0D;AAAA,MAAzD;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,MAAZ;AAAoBC,IAAAA,MAApB;AAA4B,OAAGC;AAA/B,GAAyD;AACxD,QAAMC,iBAAiB,GAAG,IAAIC,KAAJ,CAAUJ,MAAM,CAACK,eAAP,EAAV,EACvBC,IADuB,CAClB,CADkB,EAEvBC,OAFuB,CAEf,CAACC,CAAD,EAAIC,CAAJ,KAAU;AACjB,UAAMC,IAAI,GAAGV,MAAM,CAACW,cAAP,CAAsBF,CAAtB,CAAb;AACA,UAAMb,KAAK,GAAGG,QAAQ,CAACW,IAAD,CAAtB;;AACA,QAAId,KAAK,KAAKH,SAAd,EAAyB;AACvB,YAAM,IAAImB,KAAJ,CAAW,kCAAiCF,IAAK,EAAjD,CAAN;AACD;;AACD,QAAIN,KAAK,CAACS,OAAN,CAAcjB,KAAd,CAAJ,EAA0B;AACxB,aAAOA,KAAK,CAACW,OAAN,CAAcZ,YAAd,CAAP;AACD;;AACD,WAAOA,YAAY,CAACC,KAAD,CAAnB;AACD,GAZuB,CAA1B;AAaA,QAAMkB,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYjB,QAAZ,CAAd;;AACA,MAAIe,KAAK,CAACG,MAAN,GAAejB,MAAM,CAACK,eAAP,EAAnB,EAA6C;AAC3C,UAAMa,YAAY,GAAG,IAAId,KAAJ,CAAUJ,MAAM,CAACK,eAAP,EAAV,EAClBC,IADkB,CACb,CADa,EAElBa,GAFkB,CAEd,CAACX,CAAD,EAAIC,CAAJ,KAAUT,MAAM,CAACW,cAAP,CAAsBF,CAAtB,CAFI,CAArB;AAGA,UAAMW,aAAa,GAAGN,KAAK,CACxBK,GADmB,CACdT,IAAD,IAAU;AACb,UAAIQ,YAAY,CAACG,OAAb,CAAqBX,IAArB,MAA+B,CAAC,CAApC,EAAuC;AACrC,eAAOA,IAAP;AACD;;AACD,aAAO,IAAP;AACD,KANmB,EAOnBY,MAPmB,CAOXC,CAAD,IAAOA,CAAC,KAAK,IAPD,CAAtB;AAQAC,IAAAA,OAAO,CAACC,IAAR,CACE,oCAAoCL,aAAa,CAACM,IAAd,CAAmB,IAAnB,CADtC;AAGD;;AACD,SAAO1B,MAAM,CAAC2B,sBAAP,CACLxB,iBADK,EAELF,MAFK,EAGLH,QAAQ,CAACwB,MAAT,CAAgBM,cAAhB,CAHK,EAIL,6BAAY1B,SAAZ,CAJK,CAAP;AAMD,CAtCe,CAAlB;;AAyCO,MAAM2B,MAAM,GAAIC,KAAD,IAAuC;AAC3D,sBAAO;AAAe,IAAA,SAAS,EAAEjC;AAA1B,KAAyCiC,KAAzC,EAAP;AACD,CAFM;;;AAIPD,MAAM,CAACE,YAAP,GAAsB;AACpBhC,EAAAA,QAAQ,EAAE;AADU,CAAtB","sourcesContent":["import React from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { isShader } from \"../../../skia\";\nimport type { IRuntimeEffect } from \"../../../skia\";\nimport type { Vector, AnimatedProps, TransformProps } from \"../../processors\";\nimport { createDeclaration } from \"../../nodes/Declaration\";\nimport { localMatrix } from \"../../processors\";\n\nconst isVector = (obj: unknown): obj is Vector =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (obj as any).x !== undefined && (obj as any).y !== undefined;\n\ntype UniformValue = number | Vector | readonly number[];\n\ntype Uniform = UniformValue | readonly UniformValue[];\n\ninterface Uniforms {\n [name: string]: Uniform;\n}\n\nconst processValue = (value: UniformValue): number | readonly number[] => {\n if (isVector(value)) {\n return [value.x, value.y];\n }\n return value;\n};\n\nexport interface ShaderProps extends TransformProps {\n source: IRuntimeEffect;\n uniforms: Uniforms;\n opaque?: boolean;\n children?: ReactNode | ReactNode[];\n}\n\nconst onDeclare = createDeclaration<ShaderProps>(\n ({ uniforms, source, opaque, ...transform }, children) => {\n const processedUniforms = new Array(source.getUniformCount())\n .fill(0)\n .flatMap((_, i) => {\n const name = source.getUniformName(i);\n const value = uniforms[name];\n if (value === undefined) {\n throw new Error(`No value specified for uniform ${name}`);\n }\n if (Array.isArray(value)) {\n return value.flatMap(processValue);\n }\n return processValue(value as UniformValue);\n });\n const names = Object.keys(uniforms);\n if (names.length > source.getUniformCount()) {\n const usedUniforms = new Array(source.getUniformCount())\n .fill(0)\n .map((_, i) => source.getUniformName(i));\n const unusedUniform = names\n .map((name) => {\n if (usedUniforms.indexOf(name) === -1) {\n return name;\n }\n return null;\n })\n .filter((n) => n !== null);\n console.warn(\n \"Unused uniforms were provided: \" + unusedUniform.join(\", \")\n );\n }\n return source.makeShaderWithChildren(\n processedUniforms,\n opaque,\n children.filter(isShader),\n localMatrix(transform)\n );\n }\n);\n\nexport const Shader = (props: AnimatedProps<ShaderProps>) => {\n return <skDeclaration onDeclare={onDeclare} {...props} />;\n};\n\nShader.defaultProps = {\n uniforms: [],\n};\n"]}
|
@@ -7,8 +7,9 @@ exports.processCircle = void 0;
|
|
7
7
|
|
8
8
|
var _Vector = require("./math/Vector");
|
9
9
|
|
10
|
-
const isCircleScalarDef = def => //
|
11
|
-
|
10
|
+
const isCircleScalarDef = def => // We have an issue to check property existence on JSI backed instances
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
12
|
+
def.cx !== undefined;
|
12
13
|
|
13
14
|
const processCircle = def => {
|
14
15
|
if (isCircleScalarDef(def)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Circles.ts"],"names":["isCircleScalarDef","def","cx","processCircle","c","cy","r"],"mappings":";;;;;;;AACA;;AAeA,MAAMA,iBAAiB,GAAIC,GAAD,IACxB;AACCA,GAAD,CAAaC,
|
1
|
+
{"version":3,"sources":["Circles.ts"],"names":["isCircleScalarDef","def","cx","undefined","processCircle","c","cy","r"],"mappings":";;;;;;;AACA;;AAeA,MAAMA,iBAAiB,GAAIC,GAAD,IACxB;AACA;AACCA,GAAD,CAAaC,EAAb,KAAoBC,SAHtB;;AAIO,MAAMC,aAAa,GAAIH,GAAD,IAAoB;AAC/C,MAAID,iBAAiB,CAACC,GAAD,CAArB,EAA4B;AAC1B,WAAO;AAAEI,MAAAA,CAAC,EAAE,iBAAIJ,GAAG,CAACC,EAAR,EAAYD,GAAG,CAACK,EAAhB,CAAL;AAA0BC,MAAAA,CAAC,EAAEN,GAAG,CAACM;AAAjC,KAAP;AACD;;AACD,SAAON,GAAP;AACD,CALM","sourcesContent":["import type { Vector } from \"./math/Vector\";\nimport { vec } from \"./math/Vector\";\n\ninterface PointCircleDef {\n c: Vector;\n r: number;\n}\n\ninterface ScalarCircleDef {\n cx: number;\n cy: number;\n r: number;\n}\n\nexport type CircleDef = PointCircleDef | ScalarCircleDef;\n\nconst isCircleScalarDef = (def: CircleDef): def is ScalarCircleDef =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (def as any).cx !== undefined;\nexport const processCircle = (def: CircleDef) => {\n if (isCircleScalarDef(def)) {\n return { c: vec(def.cx, def.cy), r: def.r };\n }\n return def;\n};\n"]}
|
@@ -7,7 +7,7 @@ exports.processFont = exports.isFont = void 0;
|
|
7
7
|
|
8
8
|
var _Skia = require("../../skia/Skia");
|
9
9
|
|
10
|
-
const isFont = fontDef => // We
|
10
|
+
const isFont = fontDef => // We have an issue to check property existence on JSI backed instances
|
11
11
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
12
12
|
fontDef.font !== undefined;
|
13
13
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Font.ts"],"names":["isFont","fontDef","font","undefined","processFont","fontMgr","selectedFont","familyName","size","typeface","matchFamilyStyle","Error","Skia","Font"],"mappings":";;;;;;;AACA;;AAKO,MAAMA,MAAM,GAAIC,OAAD,IACpB;AACA;AACCA,OAAD,CAAiBC,IAAjB,KAA0BC,SAHrB;;;;AAKA,MAAMC,WAAW,GAAG,CAACC,OAAD,EAAmBJ,OAAnB,KAAwC;AACjE,MAAIK,YAAJ;;AACA,MAAIN,MAAM,CAACC,OAAD,CAAV,EAAqB;AACnBK,IAAAA,YAAY,GAAGL,OAAO,CAACC,IAAvB;AACD,GAFD,MAEO;AACL,UAAM;AAAEK,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAAuBP,OAA7B;AACA,UAAMQ,QAAQ,GAAGJ,OAAO,CAACK,gBAAR,CAAyBH,UAAzB,CAAjB;;AACA,QAAIE,QAAQ,KAAK,IAAjB,EAAuB;AACrB,YAAM,IAAIE,KAAJ,CAAW,yBAAwBJ,UAAW,EAA9C,CAAN;AACD;;AACDD,IAAAA,YAAY,GAAGM,WAAKC,IAAL,CAAUJ,QAAV,EAAoBD,IAApB,CAAf;AACD;;AACD,SAAOF,YAAP;AACD,CAbM","sourcesContent":["import type { SkFont } from \"../../skia\";\nimport { Skia } from \"../../skia/Skia\";\nimport type { FontMgr } from \"../../skia/FontMgr/FontMgr\";\n\nexport type FontDef = { font: SkFont } | { familyName: string; size: number };\n\nexport const isFont = (fontDef: FontDef): fontDef is { font: SkFont } =>\n // We
|
1
|
+
{"version":3,"sources":["Font.ts"],"names":["isFont","fontDef","font","undefined","processFont","fontMgr","selectedFont","familyName","size","typeface","matchFamilyStyle","Error","Skia","Font"],"mappings":";;;;;;;AACA;;AAKO,MAAMA,MAAM,GAAIC,OAAD,IACpB;AACA;AACCA,OAAD,CAAiBC,IAAjB,KAA0BC,SAHrB;;;;AAKA,MAAMC,WAAW,GAAG,CAACC,OAAD,EAAmBJ,OAAnB,KAAwC;AACjE,MAAIK,YAAJ;;AACA,MAAIN,MAAM,CAACC,OAAD,CAAV,EAAqB;AACnBK,IAAAA,YAAY,GAAGL,OAAO,CAACC,IAAvB;AACD,GAFD,MAEO;AACL,UAAM;AAAEK,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAAuBP,OAA7B;AACA,UAAMQ,QAAQ,GAAGJ,OAAO,CAACK,gBAAR,CAAyBH,UAAzB,CAAjB;;AACA,QAAIE,QAAQ,KAAK,IAAjB,EAAuB;AACrB,YAAM,IAAIE,KAAJ,CAAW,yBAAwBJ,UAAW,EAA9C,CAAN;AACD;;AACDD,IAAAA,YAAY,GAAGM,WAAKC,IAAL,CAAUJ,QAAV,EAAoBD,IAApB,CAAf;AACD;;AACD,SAAOF,YAAP;AACD,CAbM","sourcesContent":["import type { SkFont } from \"../../skia\";\nimport { Skia } from \"../../skia/Skia\";\nimport type { FontMgr } from \"../../skia/FontMgr/FontMgr\";\n\nexport type FontDef = { font: SkFont } | { familyName: string; size: number };\n\nexport const isFont = (fontDef: FontDef): fontDef is { font: SkFont } =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (fontDef as any).font !== undefined;\n\nexport const processFont = (fontMgr: FontMgr, fontDef: FontDef) => {\n let selectedFont: SkFont;\n if (isFont(fontDef)) {\n selectedFont = fontDef.font;\n } else {\n const { familyName, size } = fontDef;\n const typeface = fontMgr.matchFamilyStyle(familyName);\n if (typeface === null) {\n throw new Error(`No typeface found for ${familyName}`);\n }\n selectedFont = Skia.Font(typeface, size);\n }\n return selectedFont;\n};\n"]}
|
@@ -9,9 +9,6 @@ var _Vector = require("./math/Vector");
|
|
9
9
|
|
10
10
|
var _Radius = require("./Radius");
|
11
11
|
|
12
|
-
// Here we use any because hasOwnProperty doesn't work on JSI instances not does the (key in obj) syntax
|
13
|
-
// And using Object.keys for such use-case is incredibly slow
|
14
|
-
|
15
12
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
16
13
|
const point = (x, y) => ({
|
17
14
|
x,
|
@@ -63,13 +60,16 @@ const bottomRight = r => isRRect(r) ? (0, _Vector.vec)(r.rect.x + r.rect.width,
|
|
63
60
|
|
64
61
|
exports.bottomRight = bottomRight;
|
65
62
|
|
66
|
-
const center = r => isRRect(r) ? (0, _Vector.vec)(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2) : (0, _Vector.vec)(r.x + r.width / 2, r.y + r.height / 2);
|
63
|
+
const center = r => isRRect(r) ? (0, _Vector.vec)(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2) : (0, _Vector.vec)(r.x + r.width / 2, r.y + r.height / 2); // We have an issue to check property existence on JSI backed instances
|
64
|
+
|
67
65
|
|
68
66
|
exports.center = center;
|
69
67
|
|
70
|
-
const isRRectCtor = def => def.rect === undefined;
|
68
|
+
const isRRectCtor = def => def.rect === undefined; // We have an issue to check property existence on JSI backed instances
|
69
|
+
|
70
|
+
|
71
|
+
const isRectCtor = def => def.rect === undefined; // We have an issue to check property existence on JSI backed instances
|
71
72
|
|
72
|
-
const isRectCtor = def => def.rect === undefined;
|
73
73
|
|
74
74
|
const isRRect = def => def.rect !== undefined;
|
75
75
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Rects.ts"],"names":["point","x","y","rect","width","height","rrect","r","rx","ry","bounds","rects","Math","min","map","max","topLeft","isRRect","topRight","bottomLeft","bottomRight","center","isRRectCtor","def","undefined","isRectCtor","processRect","processRRect"],"mappings":";;;;;;;
|
1
|
+
{"version":3,"sources":["Rects.ts"],"names":["point","x","y","rect","width","height","rrect","r","rx","ry","bounds","rects","Math","min","map","max","topLeft","isRRect","topRight","bottomLeft","bottomRight","center","isRRectCtor","def","undefined","isRectCtor","processRect","processRRect"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { SkRect, SkRRect } from \"../../skia\";\n\nimport { vec } from \"./math/Vector\";\nimport type { Radius } from \"./Radius\";\nimport { processRadius } from \"./Radius\";\n\nexport const point = (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 bounds = (rects: SkRect[]) => {\n const x = Math.min(...rects.map((r) => r.x));\n const y = Math.min(...rects.map((r) => r.y));\n const width = Math.max(...rects.map((r) => r.x + r.width));\n const height = Math.max(...rects.map((r) => r.y + r.height));\n return rect(x, y, width, height);\n};\n\nexport const topLeft = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x, r.rect.y) : vec(r.x, r.y);\nexport const topRight = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x + r.rect.width, r.rect.y) : vec(r.x + r.width, r.y);\nexport const bottomLeft = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x, r.rect.y + r.rect.height)\n : vec(r.x, r.y + r.height);\nexport const bottomRight = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width, r.rect.y + r.rect.height)\n : vec(r.x + r.width, r.y + r.height);\nexport const center = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2)\n : vec(r.x + r.width / 2, r.y + r.height / 2);\n\n// We have an issue to check property existence on JSI backed instances\nconst isRRectCtor = (def: RRectDef): def is RRectCtor =>\n (def as any).rect === undefined;\n// We have an issue to check property existence on JSI backed instances\nconst isRectCtor = (def: RectDef): def is RectCtor =>\n (def as any).rect === undefined;\n// We have an issue to check property existence on JSI backed instances\nexport const isRRect = (def: SkRect | SkRRect): def is SkRRect =>\n (def as any).rect !== undefined;\n\nexport interface RectCtor {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface RRectCtor extends RectCtor {\n r: Radius;\n}\n\nexport type RectDef = RectCtor | { rect: SkRect };\nexport type RRectDef = RRectCtor | { rect: SkRRect };\n\nexport const processRect = (def: RectDef) => {\n if (isRectCtor(def)) {\n return rect(def.x, def.y, def.width, def.height);\n } else {\n return def.rect;\n }\n};\n\nexport const processRRect = (def: RRectDef) => {\n if (isRRectCtor(def)) {\n const r = processRadius(def.r);\n return rrect(rect(def.x, def.y, def.width, def.height), r.x, r.y);\n } else {\n return def.rect;\n }\n};\n"]}
|
@@ -41,10 +41,10 @@ const getResolvedParams = (toOrParams, config) => {
|
|
41
41
|
};
|
42
42
|
|
43
43
|
if (config) {
|
44
|
-
var _config$easing;
|
44
|
+
var _config$duration, _config$easing;
|
45
45
|
|
46
|
-
resolvedConfig.duration = config.duration;
|
47
|
-
resolvedConfig.easing = (_config$easing = config.easing) !== null && _config$easing !== void 0 ? _config$easing :
|
46
|
+
resolvedConfig.duration = (_config$duration = config.duration) !== null && _config$duration !== void 0 ? _config$duration : DefaultTimingConfig.duration;
|
47
|
+
resolvedConfig.easing = (_config$easing = config.easing) !== null && _config$easing !== void 0 ? _config$easing : DefaultTimingConfig.easing;
|
48
48
|
}
|
49
49
|
|
50
50
|
return { ...resolvedParameters,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["getResolvedParams.ts"],"names":["DefaultParameters","to","loop","yoyo","immediate","DefaultTimingConfig","duration","easing","t","getResolvedParams","toOrParams","config","resolvedParameters","from","resolvedConfig"],"mappings":";;;;;;AAMA,MAAMA,iBAAiB,GAAG;AACxBC,EAAAA,EAAE,EAAE,CADoB;AAExBC,EAAAA,IAAI,EAAE,KAFkB;AAGxBC,EAAAA,IAAI,EAAE,KAHkB;AAIxBC,EAAAA,SAAS,EAAE;AAJa,CAA1B;AAOA,MAAMC,mBAAmB,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,IADgB;AAE1BC,EAAAA,MAAM,EAAGC,CAAD,IAAeA;AAFG,CAA5B;AAKA;AACA;AACA;AACA;AACA;;AACO,MAAMC,iBAAiB,GAAG,CAC/BC,UAD+B,EAE/BC,MAF+B,KAGsB;AACrD,MAAIC,kBAA2C,GAAG,EAChD,GAAGZ;AAD6C,GAAlD;;AAIA,MAAI,OAAOU,UAAP,KAAsB,QAA1B,EAAoC;AAClCE,IAAAA,kBAAkB,CAACX,EAAnB,GAAwBS,UAAxB;AACD,GAFD,MAEO;AAAA;;AACLE,IAAAA,kBAAkB,GAAG;AACnBC,MAAAA,IAAI,sBAAEH,UAAU,CAACG,IAAb,+DAAqBD,kBAAkB,CAACC,IADzB;AAEnBZ,MAAAA,EAAE,oBAAES,UAAU,CAACT,EAAb,2DAAmBW,kBAAkB,CAACX,EAFrB;AAGnBC,MAAAA,IAAI,sBAAEQ,UAAU,CAACR,IAAb,+DAAqBU,kBAAkB,CAACV,IAHzB;AAInBC,MAAAA,IAAI,sBAAEO,UAAU,CAACP,IAAb,+DAAqBS,kBAAkB,CAACT;AAJzB,KAArB;AAMD;;AAED,QAAMW,cAAsC,GAAG,EAAE,GAAGT;AAAL,GAA/C;;AACA,MAAIM,MAAJ,EAAY;AAAA;;AACVG,IAAAA,cAAc,CAACR,QAAf,
|
1
|
+
{"version":3,"sources":["getResolvedParams.ts"],"names":["DefaultParameters","to","loop","yoyo","immediate","DefaultTimingConfig","duration","easing","t","getResolvedParams","toOrParams","config","resolvedParameters","from","resolvedConfig"],"mappings":";;;;;;AAMA,MAAMA,iBAAiB,GAAG;AACxBC,EAAAA,EAAE,EAAE,CADoB;AAExBC,EAAAA,IAAI,EAAE,KAFkB;AAGxBC,EAAAA,IAAI,EAAE,KAHkB;AAIxBC,EAAAA,SAAS,EAAE;AAJa,CAA1B;AAOA,MAAMC,mBAAmB,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,IADgB;AAE1BC,EAAAA,MAAM,EAAGC,CAAD,IAAeA;AAFG,CAA5B;AAKA;AACA;AACA;AACA;AACA;;AACO,MAAMC,iBAAiB,GAAG,CAC/BC,UAD+B,EAE/BC,MAF+B,KAGsB;AACrD,MAAIC,kBAA2C,GAAG,EAChD,GAAGZ;AAD6C,GAAlD;;AAIA,MAAI,OAAOU,UAAP,KAAsB,QAA1B,EAAoC;AAClCE,IAAAA,kBAAkB,CAACX,EAAnB,GAAwBS,UAAxB;AACD,GAFD,MAEO;AAAA;;AACLE,IAAAA,kBAAkB,GAAG;AACnBC,MAAAA,IAAI,sBAAEH,UAAU,CAACG,IAAb,+DAAqBD,kBAAkB,CAACC,IADzB;AAEnBZ,MAAAA,EAAE,oBAAES,UAAU,CAACT,EAAb,2DAAmBW,kBAAkB,CAACX,EAFrB;AAGnBC,MAAAA,IAAI,sBAAEQ,UAAU,CAACR,IAAb,+DAAqBU,kBAAkB,CAACV,IAHzB;AAInBC,MAAAA,IAAI,sBAAEO,UAAU,CAACP,IAAb,+DAAqBS,kBAAkB,CAACT;AAJzB,KAArB;AAMD;;AAED,QAAMW,cAAsC,GAAG,EAAE,GAAGT;AAAL,GAA/C;;AACA,MAAIM,MAAJ,EAAY;AAAA;;AACVG,IAAAA,cAAc,CAACR,QAAf,uBAA0BK,MAAM,CAACL,QAAjC,+DAA6CD,mBAAmB,CAACC,QAAjE;AACAQ,IAAAA,cAAc,CAACP,MAAf,qBAAwBI,MAAM,CAACJ,MAA/B,2DAAyCF,mBAAmB,CAACE,MAA7D;AACD;;AAED,SAAO,EAAE,GAAGK,kBAAL;AAAyB,OAAGE;AAA5B,GAAP;AACD,CA1BM","sourcesContent":["import type {\n RequiredAnimationParams,\n AnimationParams,\n TimingConfig,\n} from \"../../types\";\n\nconst DefaultParameters = {\n to: 1,\n loop: false,\n yoyo: false,\n immediate: true,\n};\n\nconst DefaultTimingConfig = {\n duration: 1000,\n easing: (t: number) => t,\n};\n\n/**\n * Resolves parameters from optional values to a single object\n * @param toOrParams Params or to value\n * @param config timing/spring configuration\n */\nexport const getResolvedParams = (\n toOrParams: number | AnimationParams,\n config?: TimingConfig\n): RequiredAnimationParams & Required<TimingConfig> => {\n let resolvedParameters: RequiredAnimationParams = {\n ...DefaultParameters,\n };\n\n if (typeof toOrParams === \"number\") {\n resolvedParameters.to = toOrParams;\n } else {\n resolvedParameters = {\n from: toOrParams.from ?? resolvedParameters.from,\n to: toOrParams.to ?? resolvedParameters.to,\n loop: toOrParams.loop ?? resolvedParameters.loop,\n yoyo: toOrParams.yoyo ?? resolvedParameters.yoyo,\n };\n }\n\n const resolvedConfig: Required<TimingConfig> = { ...DefaultTimingConfig };\n if (config) {\n resolvedConfig.duration = config.duration ?? DefaultTimingConfig.duration;\n resolvedConfig.easing = config.easing ?? DefaultTimingConfig.easing;\n }\n\n return { ...resolvedParameters, ...resolvedConfig };\n};\n"]}
|
@@ -10,14 +10,20 @@ import { vec } from "./processors";
|
|
10
10
|
import { Container } from "./nodes";
|
11
11
|
import { DependencyManager } from "./DependencyManager";
|
12
12
|
const CanvasContext = /*#__PURE__*/React.createContext(null);
|
13
|
-
export const
|
14
|
-
const
|
13
|
+
export const useCanvas = () => {
|
14
|
+
const size = useContext(CanvasContext);
|
15
15
|
|
16
|
-
if (!
|
16
|
+
if (!size) {
|
17
17
|
throw new Error("Canvas context is not available");
|
18
18
|
}
|
19
19
|
|
20
|
-
return
|
20
|
+
return {
|
21
|
+
size
|
22
|
+
};
|
23
|
+
};
|
24
|
+
export const useCanvasSize = () => {
|
25
|
+
console.warn("useCanvasSize is deprecated, use the size member of useCanvas() instead.");
|
26
|
+
return useCanvas().size;
|
21
27
|
};
|
22
28
|
export const skiaReconciler = ReactReconciler(skHostConfig);
|
23
29
|
skiaReconciler.injectIntoDevTools({
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Canvas.tsx"],"names":["React","useEffect","useState","useCallback","useMemo","useContext","forwardRef","useRef","ReactReconciler","SkiaView","useDrawCallback","Skia","useValue","SkiaPaint","debug","hostDebug","skHostConfig","vec","Container","DependencyManager","CanvasContext","createContext","
|
1
|
+
{"version":3,"sources":["Canvas.tsx"],"names":["React","useEffect","useState","useCallback","useMemo","useContext","forwardRef","useRef","ReactReconciler","SkiaView","useDrawCallback","Skia","useValue","SkiaPaint","debug","hostDebug","skHostConfig","vec","Container","DependencyManager","CanvasContext","createContext","useCanvas","size","Error","useCanvasSize","console","warn","skiaReconciler","injectIntoDevTools","bundleType","version","rendererPackageName","render","element","root","container","updateContainer","depMgr","subscribe","useCanvasRef","defaultFontMgr","FontMgr","RefDefault","Canvas","forwardedRef","children","style","mode","onTouch","fontMgr","canvasCtx","width","height","innerRef","ref","useCombinedRefs","tick","setTick","redraw","t","createContainer","onDraw","canvas","info","timestamp","touches","current","paint","ctx","opacity","center","draw","unsubscribe","refs","targetRef","forEach"],"mappings":"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","sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n useContext,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n ComponentProps,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport { SkiaView, useDrawCallback } from \"../views\";\nimport type { TouchHandler } from \"../views\";\nimport { Skia } from \"../skia\";\nimport type { FontMgr } from \"../skia/FontMgr/FontMgr\";\nimport { useValue } from \"../values/hooks/useValue\";\nimport type { SkiaReadonlyValue } from \"../values/types\";\nimport { SkiaPaint } from \"../skia/Paint/Paint\";\n\nimport { debug as hostDebug, skHostConfig } from \"./HostConfig\";\n// import { debugTree } from \"./nodes\";\nimport { vec } from \"./processors\";\nimport { Container } from \"./nodes\";\nimport { DependencyManager } from \"./DependencyManager\";\n\nconst CanvasContext = React.createContext<SkiaReadonlyValue<{\n width: number;\n height: number;\n}> | null>(null);\n\nexport const useCanvas = () => {\n const size = useContext(CanvasContext);\n if (!size) {\n throw new Error(\"Canvas context is not available\");\n }\n return { size };\n};\n\nexport const useCanvasSize = () => {\n console.warn(\n \"useCanvasSize is deprecated, use the size member of useCanvas() instead.\"\n );\n return useCanvas().size;\n};\n\nexport const skiaReconciler = ReactReconciler(skHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nconst render = (element: ReactNode, root: OpaqueRoot, container: Container) => {\n skiaReconciler.updateContainer(element, root, null, () => {\n hostDebug(\"updateContainer\");\n\n container.depMgr.subscribe();\n });\n};\n\nexport const useCanvasRef = () => useRef<SkiaView>(null);\n\nexport interface CanvasProps extends ComponentProps<typeof SkiaView> {\n ref?: RefObject<SkiaView>;\n children: ReactNode;\n onTouch?: TouchHandler;\n fontMgr?: FontMgr;\n}\n\nconst defaultFontMgr = Skia.FontMgr.RefDefault();\n\nexport const Canvas = forwardRef<SkiaView, CanvasProps>(\n ({ children, style, debug, mode, onTouch, fontMgr }, forwardedRef) => {\n const canvasCtx = useValue({ width: 0, height: 0 });\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const [tick, setTick] = useState(0);\n const redraw = useCallback(() => setTick((t) => t + 1), []);\n\n const container = useMemo(\n () => new Container(new DependencyManager(ref), redraw),\n [redraw, ref]\n );\n\n const root = useMemo(\n () => skiaReconciler.createContainer(container, 0, false, null),\n [container]\n );\n // Render effect\n useEffect(() => {\n render(\n <CanvasContext.Provider value={canvasCtx}>\n {children}\n </CanvasContext.Provider>,\n root,\n container\n );\n }, [children, root, redraw, container, canvasCtx]);\n\n // Draw callback\n const onDraw = useDrawCallback(\n (canvas, info) => {\n // TODO: if tree is empty (count === 1) maybe we should not render?\n const { width, height, timestamp } = info;\n if (onTouch) {\n onTouch(info.touches);\n }\n if (\n width !== canvasCtx.current.width ||\n height !== canvasCtx.current.height\n ) {\n canvasCtx.current = { width, height };\n }\n const paint = SkiaPaint();\n const ctx = {\n width,\n height,\n timestamp,\n canvas,\n paint,\n opacity: 1,\n ref,\n center: vec(width / 2, height / 2),\n fontMgr: fontMgr ?? defaultFontMgr,\n };\n container.draw(ctx);\n },\n [tick, onTouch]\n );\n\n useEffect(() => {\n return () => {\n container.depMgr.unsubscribe();\n };\n }, [container]);\n\n return (\n <SkiaView\n ref={ref}\n style={style}\n onDraw={onDraw}\n mode={mode}\n debug={debug}\n />\n );\n }\n);\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"]}
|
@@ -10,7 +10,7 @@ const onDeclare = createDeclaration((_ref, children) => {
|
|
10
10
|
t
|
11
11
|
} = _ref;
|
12
12
|
const [src, dst] = children.filter(isColorFilter);
|
13
|
-
const cf = Skia.ColorFilter.MakeLerp(t,
|
13
|
+
const cf = Skia.ColorFilter.MakeLerp(t, src, dst);
|
14
14
|
return composeColorFilter(cf, children.filter(c => c !== src && c !== dst));
|
15
15
|
});
|
16
16
|
export const Lerp = props => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Lerp.tsx"],"names":["React","Skia","createDeclaration","isColorFilter","composeColorFilter","onDeclare","children","t","src","dst","filter","cf","ColorFilter","MakeLerp","c","Lerp","props"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,IAAT,QAAqB,eAArB;AACA,SAASC,iBAAT,QAAkC,yBAAlC;AAEA,SAASC,aAAT,QAA8B,uCAA9B;AAEA,SAASC,kBAAT,QAAmC,WAAnC;AAOA,MAAMC,SAAS,GAAGH,iBAAiB,CAAY,OAAQI,QAAR,KAAqB;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAClE,QAAM,CAACC,GAAD,EAAMC,GAAN,IAAaH,QAAQ,CAACI,MAAT,CAAgBP,aAAhB,CAAnB;AACA,QAAMQ,EAAE,GAAGV,IAAI,CAACW,WAAL,CAAiBC,QAAjB,CAA0BN,CAA1B,
|
1
|
+
{"version":3,"sources":["Lerp.tsx"],"names":["React","Skia","createDeclaration","isColorFilter","composeColorFilter","onDeclare","children","t","src","dst","filter","cf","ColorFilter","MakeLerp","c","Lerp","props"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,IAAT,QAAqB,eAArB;AACA,SAASC,iBAAT,QAAkC,yBAAlC;AAEA,SAASC,aAAT,QAA8B,uCAA9B;AAEA,SAASC,kBAAT,QAAmC,WAAnC;AAOA,MAAMC,SAAS,GAAGH,iBAAiB,CAAY,OAAQI,QAAR,KAAqB;AAAA,MAApB;AAAEC,IAAAA;AAAF,GAAoB;AAClE,QAAM,CAACC,GAAD,EAAMC,GAAN,IAAaH,QAAQ,CAACI,MAAT,CAAgBP,aAAhB,CAAnB;AACA,QAAMQ,EAAE,GAAGV,IAAI,CAACW,WAAL,CAAiBC,QAAjB,CAA0BN,CAA1B,EAA6BC,GAA7B,EAAkCC,GAAlC,CAAX;AACA,SAAOL,kBAAkB,CACvBO,EADuB,EAEvBL,QAAQ,CAACI,MAAT,CAAiBI,CAAD,IAAOA,CAAC,KAAKN,GAAN,IAAaM,CAAC,KAAKL,GAA1C,CAFuB,CAAzB;AAID,CAPkC,CAAnC;AASA,OAAO,MAAMM,IAAI,GAAIC,KAAD,IAAqC;AACvD,sBAAO;AAAe,IAAA,SAAS,EAAEX;AAA1B,KAAyCW,KAAzC,EAAP;AACD,CAFM","sourcesContent":["import React from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { Skia } from \"../../../skia\";\nimport { createDeclaration } from \"../../nodes/Declaration\";\nimport type { AnimatedProps } from \"../../processors/Animations/Animations\";\nimport { isColorFilter } from \"../../../skia/ColorFilter/ColorFilter\";\n\nimport { composeColorFilter } from \"./Compose\";\n\nexport interface LerpProps {\n t: number;\n children: ReactNode | ReactNode[];\n}\n\nconst onDeclare = createDeclaration<LerpProps>(({ t }, children) => {\n const [src, dst] = children.filter(isColorFilter);\n const cf = Skia.ColorFilter.MakeLerp(t, src, dst);\n return composeColorFilter(\n cf,\n children.filter((c) => c !== src && c !== dst)\n );\n});\n\nexport const Lerp = (props: AnimatedProps<LerpProps>) => {\n return <skDeclaration onDeclare={onDeclare} {...props} />;\n};\n"]}
|
@@ -3,9 +3,10 @@ function _extends() { _extends = Object.assign || function (target) { for (var i
|
|
3
3
|
import React from "react";
|
4
4
|
import { isShader } from "../../../skia";
|
5
5
|
import { createDeclaration } from "../../nodes/Declaration";
|
6
|
-
import { localMatrix } from "../../processors";
|
6
|
+
import { localMatrix } from "../../processors";
|
7
7
|
|
8
|
-
const isVector = obj => //
|
8
|
+
const isVector = obj => // We have an issue to check property existence on JSI backed instances
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
9
10
|
obj.x !== undefined && obj.y !== undefined;
|
10
11
|
|
11
12
|
const processValue = value => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Shader.tsx"],"names":["React","isShader","createDeclaration","localMatrix","isVector","obj","x","undefined","y","processValue","value","onDeclare","children","uniforms","source","opaque","transform","processedUniforms","Array","getUniformCount","fill","flatMap","_","i","name","getUniformName","Error","isArray","names","Object","keys","length","usedUniforms","map","unusedUniform","indexOf","filter","n","console","warn","join","makeShaderWithChildren","Shader","props","defaultProps"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,QAAT,QAAyB,eAAzB;AAGA,SAASC,iBAAT,QAAkC,yBAAlC;AACA,SAASC,WAAT,QAA4B,kBAA5B
|
1
|
+
{"version":3,"sources":["Shader.tsx"],"names":["React","isShader","createDeclaration","localMatrix","isVector","obj","x","undefined","y","processValue","value","onDeclare","children","uniforms","source","opaque","transform","processedUniforms","Array","getUniformCount","fill","flatMap","_","i","name","getUniformName","Error","isArray","names","Object","keys","length","usedUniforms","map","unusedUniform","indexOf","filter","n","console","warn","join","makeShaderWithChildren","Shader","props","defaultProps"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAGA,SAASC,QAAT,QAAyB,eAAzB;AAGA,SAASC,iBAAT,QAAkC,yBAAlC;AACA,SAASC,WAAT,QAA4B,kBAA5B;;AAEA,MAAMC,QAAQ,GAAIC,GAAD,IACf;AACA;AACCA,GAAD,CAAaC,CAAb,KAAmBC,SAAnB,IAAiCF,GAAD,CAAaG,CAAb,KAAmBD,SAHrD;;AAaA,MAAME,YAAY,GAAIC,KAAD,IAAqD;AACxE,MAAIN,QAAQ,CAACM,KAAD,CAAZ,EAAqB;AACnB,WAAO,CAACA,KAAK,CAACJ,CAAP,EAAUI,KAAK,CAACF,CAAhB,CAAP;AACD;;AACD,SAAOE,KAAP;AACD,CALD;;AAcA,MAAMC,SAAS,GAAGT,iBAAiB,CACjC,OAA6CU,QAA7C,KAA0D;AAAA,MAAzD;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,MAAZ;AAAoBC,IAAAA,MAApB;AAA4B,OAAGC;AAA/B,GAAyD;AACxD,QAAMC,iBAAiB,GAAG,IAAIC,KAAJ,CAAUJ,MAAM,CAACK,eAAP,EAAV,EACvBC,IADuB,CAClB,CADkB,EAEvBC,OAFuB,CAEf,CAACC,CAAD,EAAIC,CAAJ,KAAU;AACjB,UAAMC,IAAI,GAAGV,MAAM,CAACW,cAAP,CAAsBF,CAAtB,CAAb;AACA,UAAMb,KAAK,GAAGG,QAAQ,CAACW,IAAD,CAAtB;;AACA,QAAId,KAAK,KAAKH,SAAd,EAAyB;AACvB,YAAM,IAAImB,KAAJ,CAAW,kCAAiCF,IAAK,EAAjD,CAAN;AACD;;AACD,QAAIN,KAAK,CAACS,OAAN,CAAcjB,KAAd,CAAJ,EAA0B;AACxB,aAAOA,KAAK,CAACW,OAAN,CAAcZ,YAAd,CAAP;AACD;;AACD,WAAOA,YAAY,CAACC,KAAD,CAAnB;AACD,GAZuB,CAA1B;AAaA,QAAMkB,KAAK,GAAGC,MAAM,CAACC,IAAP,CAAYjB,QAAZ,CAAd;;AACA,MAAIe,KAAK,CAACG,MAAN,GAAejB,MAAM,CAACK,eAAP,EAAnB,EAA6C;AAC3C,UAAMa,YAAY,GAAG,IAAId,KAAJ,CAAUJ,MAAM,CAACK,eAAP,EAAV,EAClBC,IADkB,CACb,CADa,EAElBa,GAFkB,CAEd,CAACX,CAAD,EAAIC,CAAJ,KAAUT,MAAM,CAACW,cAAP,CAAsBF,CAAtB,CAFI,CAArB;AAGA,UAAMW,aAAa,GAAGN,KAAK,CACxBK,GADmB,CACdT,IAAD,IAAU;AACb,UAAIQ,YAAY,CAACG,OAAb,CAAqBX,IAArB,MAA+B,CAAC,CAApC,EAAuC;AACrC,eAAOA,IAAP;AACD;;AACD,aAAO,IAAP;AACD,KANmB,EAOnBY,MAPmB,CAOXC,CAAD,IAAOA,CAAC,KAAK,IAPD,CAAtB;AAQAC,IAAAA,OAAO,CAACC,IAAR,CACE,oCAAoCL,aAAa,CAACM,IAAd,CAAmB,IAAnB,CADtC;AAGD;;AACD,SAAO1B,MAAM,CAAC2B,sBAAP,CACLxB,iBADK,EAELF,MAFK,EAGLH,QAAQ,CAACwB,MAAT,CAAgBnC,QAAhB,CAHK,EAILE,WAAW,CAACa,SAAD,CAJN,CAAP;AAMD,CAtCgC,CAAnC;AAyCA,OAAO,MAAM0B,MAAM,GAAIC,KAAD,IAAuC;AAC3D,sBAAO;AAAe,IAAA,SAAS,EAAEhC;AAA1B,KAAyCgC,KAAzC,EAAP;AACD,CAFM;AAIPD,MAAM,CAACE,YAAP,GAAsB;AACpB/B,EAAAA,QAAQ,EAAE;AADU,CAAtB","sourcesContent":["import React from \"react\";\nimport type { ReactNode } from \"react\";\n\nimport { isShader } from \"../../../skia\";\nimport type { IRuntimeEffect } from \"../../../skia\";\nimport type { Vector, AnimatedProps, TransformProps } from \"../../processors\";\nimport { createDeclaration } from \"../../nodes/Declaration\";\nimport { localMatrix } from \"../../processors\";\n\nconst isVector = (obj: unknown): obj is Vector =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (obj as any).x !== undefined && (obj as any).y !== undefined;\n\ntype UniformValue = number | Vector | readonly number[];\n\ntype Uniform = UniformValue | readonly UniformValue[];\n\ninterface Uniforms {\n [name: string]: Uniform;\n}\n\nconst processValue = (value: UniformValue): number | readonly number[] => {\n if (isVector(value)) {\n return [value.x, value.y];\n }\n return value;\n};\n\nexport interface ShaderProps extends TransformProps {\n source: IRuntimeEffect;\n uniforms: Uniforms;\n opaque?: boolean;\n children?: ReactNode | ReactNode[];\n}\n\nconst onDeclare = createDeclaration<ShaderProps>(\n ({ uniforms, source, opaque, ...transform }, children) => {\n const processedUniforms = new Array(source.getUniformCount())\n .fill(0)\n .flatMap((_, i) => {\n const name = source.getUniformName(i);\n const value = uniforms[name];\n if (value === undefined) {\n throw new Error(`No value specified for uniform ${name}`);\n }\n if (Array.isArray(value)) {\n return value.flatMap(processValue);\n }\n return processValue(value as UniformValue);\n });\n const names = Object.keys(uniforms);\n if (names.length > source.getUniformCount()) {\n const usedUniforms = new Array(source.getUniformCount())\n .fill(0)\n .map((_, i) => source.getUniformName(i));\n const unusedUniform = names\n .map((name) => {\n if (usedUniforms.indexOf(name) === -1) {\n return name;\n }\n return null;\n })\n .filter((n) => n !== null);\n console.warn(\n \"Unused uniforms were provided: \" + unusedUniform.join(\", \")\n );\n }\n return source.makeShaderWithChildren(\n processedUniforms,\n opaque,\n children.filter(isShader),\n localMatrix(transform)\n );\n }\n);\n\nexport const Shader = (props: AnimatedProps<ShaderProps>) => {\n return <skDeclaration onDeclare={onDeclare} {...props} />;\n};\n\nShader.defaultProps = {\n uniforms: [],\n};\n"]}
|
@@ -1,7 +1,8 @@
|
|
1
1
|
import { vec } from "./math/Vector";
|
2
2
|
|
3
|
-
const isCircleScalarDef = def => //
|
4
|
-
|
3
|
+
const isCircleScalarDef = def => // We have an issue to check property existence on JSI backed instances
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
5
|
+
def.cx !== undefined;
|
5
6
|
|
6
7
|
export const processCircle = def => {
|
7
8
|
if (isCircleScalarDef(def)) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Circles.ts"],"names":["vec","isCircleScalarDef","def","cx","processCircle","c","cy","r"],"mappings":"AACA,SAASA,GAAT,QAAoB,eAApB;;AAeA,MAAMC,iBAAiB,GAAIC,GAAD,IACxB;AACCA,GAAD,CAAaC,
|
1
|
+
{"version":3,"sources":["Circles.ts"],"names":["vec","isCircleScalarDef","def","cx","undefined","processCircle","c","cy","r"],"mappings":"AACA,SAASA,GAAT,QAAoB,eAApB;;AAeA,MAAMC,iBAAiB,GAAIC,GAAD,IACxB;AACA;AACCA,GAAD,CAAaC,EAAb,KAAoBC,SAHtB;;AAIA,OAAO,MAAMC,aAAa,GAAIH,GAAD,IAAoB;AAC/C,MAAID,iBAAiB,CAACC,GAAD,CAArB,EAA4B;AAC1B,WAAO;AAAEI,MAAAA,CAAC,EAAEN,GAAG,CAACE,GAAG,CAACC,EAAL,EAASD,GAAG,CAACK,EAAb,CAAR;AAA0BC,MAAAA,CAAC,EAAEN,GAAG,CAACM;AAAjC,KAAP;AACD;;AACD,SAAON,GAAP;AACD,CALM","sourcesContent":["import type { Vector } from \"./math/Vector\";\nimport { vec } from \"./math/Vector\";\n\ninterface PointCircleDef {\n c: Vector;\n r: number;\n}\n\ninterface ScalarCircleDef {\n cx: number;\n cy: number;\n r: number;\n}\n\nexport type CircleDef = PointCircleDef | ScalarCircleDef;\n\nconst isCircleScalarDef = (def: CircleDef): def is ScalarCircleDef =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (def as any).cx !== undefined;\nexport const processCircle = (def: CircleDef) => {\n if (isCircleScalarDef(def)) {\n return { c: vec(def.cx, def.cy), r: def.r };\n }\n return def;\n};\n"]}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { Skia } from "../../skia/Skia";
|
2
|
-
export const isFont = fontDef => // We
|
2
|
+
export const isFont = fontDef => // We have an issue to check property existence on JSI backed instances
|
3
3
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
4
4
|
fontDef.font !== undefined;
|
5
5
|
export const processFont = (fontMgr, fontDef) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Font.ts"],"names":["Skia","isFont","fontDef","font","undefined","processFont","fontMgr","selectedFont","familyName","size","typeface","matchFamilyStyle","Error","Font"],"mappings":"AACA,SAASA,IAAT,QAAqB,iBAArB;AAKA,OAAO,MAAMC,MAAM,GAAIC,OAAD,IACpB;AACA;AACCA,OAAD,CAAiBC,IAAjB,KAA0BC,SAHrB;AAKP,OAAO,MAAMC,WAAW,GAAG,CAACC,OAAD,EAAmBJ,OAAnB,KAAwC;AACjE,MAAIK,YAAJ;;AACA,MAAIN,MAAM,CAACC,OAAD,CAAV,EAAqB;AACnBK,IAAAA,YAAY,GAAGL,OAAO,CAACC,IAAvB;AACD,GAFD,MAEO;AACL,UAAM;AAAEK,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAAuBP,OAA7B;AACA,UAAMQ,QAAQ,GAAGJ,OAAO,CAACK,gBAAR,CAAyBH,UAAzB,CAAjB;;AACA,QAAIE,QAAQ,KAAK,IAAjB,EAAuB;AACrB,YAAM,IAAIE,KAAJ,CAAW,yBAAwBJ,UAAW,EAA9C,CAAN;AACD;;AACDD,IAAAA,YAAY,GAAGP,IAAI,CAACa,IAAL,CAAUH,QAAV,EAAoBD,IAApB,CAAf;AACD;;AACD,SAAOF,YAAP;AACD,CAbM","sourcesContent":["import type { SkFont } from \"../../skia\";\nimport { Skia } from \"../../skia/Skia\";\nimport type { FontMgr } from \"../../skia/FontMgr/FontMgr\";\n\nexport type FontDef = { font: SkFont } | { familyName: string; size: number };\n\nexport const isFont = (fontDef: FontDef): fontDef is { font: SkFont } =>\n // We
|
1
|
+
{"version":3,"sources":["Font.ts"],"names":["Skia","isFont","fontDef","font","undefined","processFont","fontMgr","selectedFont","familyName","size","typeface","matchFamilyStyle","Error","Font"],"mappings":"AACA,SAASA,IAAT,QAAqB,iBAArB;AAKA,OAAO,MAAMC,MAAM,GAAIC,OAAD,IACpB;AACA;AACCA,OAAD,CAAiBC,IAAjB,KAA0BC,SAHrB;AAKP,OAAO,MAAMC,WAAW,GAAG,CAACC,OAAD,EAAmBJ,OAAnB,KAAwC;AACjE,MAAIK,YAAJ;;AACA,MAAIN,MAAM,CAACC,OAAD,CAAV,EAAqB;AACnBK,IAAAA,YAAY,GAAGL,OAAO,CAACC,IAAvB;AACD,GAFD,MAEO;AACL,UAAM;AAAEK,MAAAA,UAAF;AAAcC,MAAAA;AAAd,QAAuBP,OAA7B;AACA,UAAMQ,QAAQ,GAAGJ,OAAO,CAACK,gBAAR,CAAyBH,UAAzB,CAAjB;;AACA,QAAIE,QAAQ,KAAK,IAAjB,EAAuB;AACrB,YAAM,IAAIE,KAAJ,CAAW,yBAAwBJ,UAAW,EAA9C,CAAN;AACD;;AACDD,IAAAA,YAAY,GAAGP,IAAI,CAACa,IAAL,CAAUH,QAAV,EAAoBD,IAApB,CAAf;AACD;;AACD,SAAOF,YAAP;AACD,CAbM","sourcesContent":["import type { SkFont } from \"../../skia\";\nimport { Skia } from \"../../skia/Skia\";\nimport type { FontMgr } from \"../../skia/FontMgr/FontMgr\";\n\nexport type FontDef = { font: SkFont } | { familyName: string; size: number };\n\nexport const isFont = (fontDef: FontDef): fontDef is { font: SkFont } =>\n // We have an issue to check property existence on JSI backed instances\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (fontDef as any).font !== undefined;\n\nexport const processFont = (fontMgr: FontMgr, fontDef: FontDef) => {\n let selectedFont: SkFont;\n if (isFont(fontDef)) {\n selectedFont = fontDef.font;\n } else {\n const { familyName, size } = fontDef;\n const typeface = fontMgr.matchFamilyStyle(familyName);\n if (typeface === null) {\n throw new Error(`No typeface found for ${familyName}`);\n }\n selectedFont = Skia.Font(typeface, size);\n }\n return selectedFont;\n};\n"]}
|
@@ -1,6 +1,3 @@
|
|
1
|
-
// Here we use any because hasOwnProperty doesn't work on JSI instances not does the (key in obj) syntax
|
2
|
-
// And using Object.keys for such use-case is incredibly slow
|
3
|
-
|
4
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
5
2
|
import { vec } from "./math/Vector";
|
6
3
|
import { processRadius } from "./Radius";
|
@@ -30,11 +27,13 @@ export const topLeft = r => isRRect(r) ? vec(r.rect.x, r.rect.y) : vec(r.x, r.y)
|
|
30
27
|
export const topRight = r => isRRect(r) ? vec(r.rect.x + r.rect.width, r.rect.y) : vec(r.x + r.width, r.y);
|
31
28
|
export const bottomLeft = r => isRRect(r) ? vec(r.rect.x, r.rect.y + r.rect.height) : vec(r.x, r.y + r.height);
|
32
29
|
export const bottomRight = r => isRRect(r) ? vec(r.rect.x + r.rect.width, r.rect.y + r.rect.height) : vec(r.x + r.width, r.y + r.height);
|
33
|
-
export const center = r => isRRect(r) ? vec(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2) : vec(r.x + r.width / 2, r.y + r.height / 2);
|
30
|
+
export const center = r => isRRect(r) ? vec(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2) : vec(r.x + r.width / 2, r.y + r.height / 2); // We have an issue to check property existence on JSI backed instances
|
31
|
+
|
32
|
+
const isRRectCtor = def => def.rect === undefined; // We have an issue to check property existence on JSI backed instances
|
33
|
+
|
34
34
|
|
35
|
-
const
|
35
|
+
const isRectCtor = def => def.rect === undefined; // We have an issue to check property existence on JSI backed instances
|
36
36
|
|
37
|
-
const isRectCtor = def => def.rect === undefined;
|
38
37
|
|
39
38
|
export const isRRect = def => def.rect !== undefined;
|
40
39
|
export const processRect = def => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Rects.ts"],"names":["vec","processRadius","point","x","y","rect","width","height","rrect","r","rx","ry","bounds","rects","Math","min","map","max","topLeft","isRRect","topRight","bottomLeft","bottomRight","center","isRRectCtor","def","undefined","isRectCtor","processRect","processRRect"],"mappings":"AAAA;
|
1
|
+
{"version":3,"sources":["Rects.ts"],"names":["vec","processRadius","point","x","y","rect","width","height","rrect","r","rx","ry","bounds","rects","Math","min","map","max","topLeft","isRRect","topRight","bottomLeft","bottomRight","center","isRRectCtor","def","undefined","isRectCtor","processRect","processRRect"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { SkRect, SkRRect } from \"../../skia\";\n\nimport { vec } from \"./math/Vector\";\nimport type { Radius } from \"./Radius\";\nimport { processRadius } from \"./Radius\";\n\nexport const point = (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 bounds = (rects: SkRect[]) => {\n const x = Math.min(...rects.map((r) => r.x));\n const y = Math.min(...rects.map((r) => r.y));\n const width = Math.max(...rects.map((r) => r.x + r.width));\n const height = Math.max(...rects.map((r) => r.y + r.height));\n return rect(x, y, width, height);\n};\n\nexport const topLeft = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x, r.rect.y) : vec(r.x, r.y);\nexport const topRight = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x + r.rect.width, r.rect.y) : vec(r.x + r.width, r.y);\nexport const bottomLeft = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x, r.rect.y + r.rect.height)\n : vec(r.x, r.y + r.height);\nexport const bottomRight = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width, r.rect.y + r.rect.height)\n : vec(r.x + r.width, r.y + r.height);\nexport const center = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2)\n : vec(r.x + r.width / 2, r.y + r.height / 2);\n\n// We have an issue to check property existence on JSI backed instances\nconst isRRectCtor = (def: RRectDef): def is RRectCtor =>\n (def as any).rect === undefined;\n// We have an issue to check property existence on JSI backed instances\nconst isRectCtor = (def: RectDef): def is RectCtor =>\n (def as any).rect === undefined;\n// We have an issue to check property existence on JSI backed instances\nexport const isRRect = (def: SkRect | SkRRect): def is SkRRect =>\n (def as any).rect !== undefined;\n\nexport interface RectCtor {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface RRectCtor extends RectCtor {\n r: Radius;\n}\n\nexport type RectDef = RectCtor | { rect: SkRect };\nexport type RRectDef = RRectCtor | { rect: SkRRect };\n\nexport const processRect = (def: RectDef) => {\n if (isRectCtor(def)) {\n return rect(def.x, def.y, def.width, def.height);\n } else {\n return def.rect;\n }\n};\n\nexport const processRRect = (def: RRectDef) => {\n if (isRRectCtor(def)) {\n const r = processRadius(def.r);\n return rrect(rect(def.x, def.y, def.width, def.height), r.x, r.y);\n } else {\n return def.rect;\n }\n};\n"]}
|
@@ -35,10 +35,10 @@ export const getResolvedParams = (toOrParams, config) => {
|
|
35
35
|
};
|
36
36
|
|
37
37
|
if (config) {
|
38
|
-
var _config$easing;
|
38
|
+
var _config$duration, _config$easing;
|
39
39
|
|
40
|
-
resolvedConfig.duration = config.duration;
|
41
|
-
resolvedConfig.easing = (_config$easing = config.easing) !== null && _config$easing !== void 0 ? _config$easing :
|
40
|
+
resolvedConfig.duration = (_config$duration = config.duration) !== null && _config$duration !== void 0 ? _config$duration : DefaultTimingConfig.duration;
|
41
|
+
resolvedConfig.easing = (_config$easing = config.easing) !== null && _config$easing !== void 0 ? _config$easing : DefaultTimingConfig.easing;
|
42
42
|
}
|
43
43
|
|
44
44
|
return { ...resolvedParameters,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["getResolvedParams.ts"],"names":["DefaultParameters","to","loop","yoyo","immediate","DefaultTimingConfig","duration","easing","t","getResolvedParams","toOrParams","config","resolvedParameters","from","resolvedConfig"],"mappings":"AAMA,MAAMA,iBAAiB,GAAG;AACxBC,EAAAA,EAAE,EAAE,CADoB;AAExBC,EAAAA,IAAI,EAAE,KAFkB;AAGxBC,EAAAA,IAAI,EAAE,KAHkB;AAIxBC,EAAAA,SAAS,EAAE;AAJa,CAA1B;AAOA,MAAMC,mBAAmB,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,IADgB;AAE1BC,EAAAA,MAAM,EAAGC,CAAD,IAAeA;AAFG,CAA5B;AAKA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,UAD+B,EAE/BC,MAF+B,KAGsB;AACrD,MAAIC,kBAA2C,GAAG,EAChD,GAAGZ;AAD6C,GAAlD;;AAIA,MAAI,OAAOU,UAAP,KAAsB,QAA1B,EAAoC;AAClCE,IAAAA,kBAAkB,CAACX,EAAnB,GAAwBS,UAAxB;AACD,GAFD,MAEO;AAAA;;AACLE,IAAAA,kBAAkB,GAAG;AACnBC,MAAAA,IAAI,sBAAEH,UAAU,CAACG,IAAb,+DAAqBD,kBAAkB,CAACC,IADzB;AAEnBZ,MAAAA,EAAE,oBAAES,UAAU,CAACT,EAAb,2DAAmBW,kBAAkB,CAACX,EAFrB;AAGnBC,MAAAA,IAAI,sBAAEQ,UAAU,CAACR,IAAb,+DAAqBU,kBAAkB,CAACV,IAHzB;AAInBC,MAAAA,IAAI,sBAAEO,UAAU,CAACP,IAAb,+DAAqBS,kBAAkB,CAACT;AAJzB,KAArB;AAMD;;AAED,QAAMW,cAAsC,GAAG,EAAE,GAAGT;AAAL,GAA/C;;AACA,MAAIM,MAAJ,EAAY;AAAA;;AACVG,IAAAA,cAAc,CAACR,QAAf,
|
1
|
+
{"version":3,"sources":["getResolvedParams.ts"],"names":["DefaultParameters","to","loop","yoyo","immediate","DefaultTimingConfig","duration","easing","t","getResolvedParams","toOrParams","config","resolvedParameters","from","resolvedConfig"],"mappings":"AAMA,MAAMA,iBAAiB,GAAG;AACxBC,EAAAA,EAAE,EAAE,CADoB;AAExBC,EAAAA,IAAI,EAAE,KAFkB;AAGxBC,EAAAA,IAAI,EAAE,KAHkB;AAIxBC,EAAAA,SAAS,EAAE;AAJa,CAA1B;AAOA,MAAMC,mBAAmB,GAAG;AAC1BC,EAAAA,QAAQ,EAAE,IADgB;AAE1BC,EAAAA,MAAM,EAAGC,CAAD,IAAeA;AAFG,CAA5B;AAKA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMC,iBAAiB,GAAG,CAC/BC,UAD+B,EAE/BC,MAF+B,KAGsB;AACrD,MAAIC,kBAA2C,GAAG,EAChD,GAAGZ;AAD6C,GAAlD;;AAIA,MAAI,OAAOU,UAAP,KAAsB,QAA1B,EAAoC;AAClCE,IAAAA,kBAAkB,CAACX,EAAnB,GAAwBS,UAAxB;AACD,GAFD,MAEO;AAAA;;AACLE,IAAAA,kBAAkB,GAAG;AACnBC,MAAAA,IAAI,sBAAEH,UAAU,CAACG,IAAb,+DAAqBD,kBAAkB,CAACC,IADzB;AAEnBZ,MAAAA,EAAE,oBAAES,UAAU,CAACT,EAAb,2DAAmBW,kBAAkB,CAACX,EAFrB;AAGnBC,MAAAA,IAAI,sBAAEQ,UAAU,CAACR,IAAb,+DAAqBU,kBAAkB,CAACV,IAHzB;AAInBC,MAAAA,IAAI,sBAAEO,UAAU,CAACP,IAAb,+DAAqBS,kBAAkB,CAACT;AAJzB,KAArB;AAMD;;AAED,QAAMW,cAAsC,GAAG,EAAE,GAAGT;AAAL,GAA/C;;AACA,MAAIM,MAAJ,EAAY;AAAA;;AACVG,IAAAA,cAAc,CAACR,QAAf,uBAA0BK,MAAM,CAACL,QAAjC,+DAA6CD,mBAAmB,CAACC,QAAjE;AACAQ,IAAAA,cAAc,CAACP,MAAf,qBAAwBI,MAAM,CAACJ,MAA/B,2DAAyCF,mBAAmB,CAACE,MAA7D;AACD;;AAED,SAAO,EAAE,GAAGK,kBAAL;AAAyB,OAAGE;AAA5B,GAAP;AACD,CA1BM","sourcesContent":["import type {\n RequiredAnimationParams,\n AnimationParams,\n TimingConfig,\n} from \"../../types\";\n\nconst DefaultParameters = {\n to: 1,\n loop: false,\n yoyo: false,\n immediate: true,\n};\n\nconst DefaultTimingConfig = {\n duration: 1000,\n easing: (t: number) => t,\n};\n\n/**\n * Resolves parameters from optional values to a single object\n * @param toOrParams Params or to value\n * @param config timing/spring configuration\n */\nexport const getResolvedParams = (\n toOrParams: number | AnimationParams,\n config?: TimingConfig\n): RequiredAnimationParams & Required<TimingConfig> => {\n let resolvedParameters: RequiredAnimationParams = {\n ...DefaultParameters,\n };\n\n if (typeof toOrParams === \"number\") {\n resolvedParameters.to = toOrParams;\n } else {\n resolvedParameters = {\n from: toOrParams.from ?? resolvedParameters.from,\n to: toOrParams.to ?? resolvedParameters.to,\n loop: toOrParams.loop ?? resolvedParameters.loop,\n yoyo: toOrParams.yoyo ?? resolvedParameters.yoyo,\n };\n }\n\n const resolvedConfig: Required<TimingConfig> = { ...DefaultTimingConfig };\n if (config) {\n resolvedConfig.duration = config.duration ?? DefaultTimingConfig.duration;\n resolvedConfig.easing = config.easing ?? DefaultTimingConfig.easing;\n }\n\n return { ...resolvedParameters, ...resolvedConfig };\n};\n"]}
|
@@ -6,6 +6,12 @@ import type { TouchHandler } from "../views";
|
|
6
6
|
import type { FontMgr } from "../skia/FontMgr/FontMgr";
|
7
7
|
import type { SkiaReadonlyValue } from "../values/types";
|
8
8
|
import { Container } from "./nodes";
|
9
|
+
export declare const useCanvas: () => {
|
10
|
+
size: SkiaReadonlyValue<{
|
11
|
+
width: number;
|
12
|
+
height: number;
|
13
|
+
}>;
|
14
|
+
};
|
9
15
|
export declare const useCanvasSize: () => SkiaReadonlyValue<{
|
10
16
|
width: number;
|
11
17
|
height: number;
|
@@ -1,11 +1,11 @@
|
|
1
1
|
export interface SpringConfig {
|
2
|
-
mass
|
3
|
-
stiffness
|
4
|
-
damping
|
5
|
-
velocity
|
2
|
+
mass?: number;
|
3
|
+
stiffness?: number;
|
4
|
+
damping?: number;
|
5
|
+
velocity?: number;
|
6
6
|
}
|
7
7
|
export interface TimingConfig {
|
8
|
-
duration
|
8
|
+
duration?: number;
|
9
9
|
easing?: (t: number) => number;
|
10
10
|
}
|
11
11
|
export interface AnimationParams {
|
package/package.json
CHANGED
package/src/renderer/Canvas.tsx
CHANGED
@@ -36,12 +36,19 @@ const CanvasContext = React.createContext<SkiaReadonlyValue<{
|
|
36
36
|
height: number;
|
37
37
|
}> | null>(null);
|
38
38
|
|
39
|
-
export const
|
40
|
-
const
|
41
|
-
if (!
|
39
|
+
export const useCanvas = () => {
|
40
|
+
const size = useContext(CanvasContext);
|
41
|
+
if (!size) {
|
42
42
|
throw new Error("Canvas context is not available");
|
43
43
|
}
|
44
|
-
return
|
44
|
+
return { size };
|
45
|
+
};
|
46
|
+
|
47
|
+
export const useCanvasSize = () => {
|
48
|
+
console.warn(
|
49
|
+
"useCanvasSize is deprecated, use the size member of useCanvas() instead."
|
50
|
+
);
|
51
|
+
return useCanvas().size;
|
45
52
|
};
|
46
53
|
|
47
54
|
export const skiaReconciler = ReactReconciler(skHostConfig);
|
@@ -15,7 +15,7 @@ export interface LerpProps {
|
|
15
15
|
|
16
16
|
const onDeclare = createDeclaration<LerpProps>(({ t }, children) => {
|
17
17
|
const [src, dst] = children.filter(isColorFilter);
|
18
|
-
const cf = Skia.ColorFilter.MakeLerp(t,
|
18
|
+
const cf = Skia.ColorFilter.MakeLerp(t, src, dst);
|
19
19
|
return composeColorFilter(
|
20
20
|
cf,
|
21
21
|
children.filter((c) => c !== src && c !== dst)
|
@@ -7,8 +7,8 @@ import type { Vector, AnimatedProps, TransformProps } from "../../processors";
|
|
7
7
|
import { createDeclaration } from "../../nodes/Declaration";
|
8
8
|
import { localMatrix } from "../../processors";
|
9
9
|
|
10
|
-
// We need to use any here because hasOwnProperty doesn't work on JSI instances
|
11
10
|
const isVector = (obj: unknown): obj is Vector =>
|
11
|
+
// We have an issue to check property existence on JSI backed instances
|
12
12
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
13
13
|
(obj as any).x !== undefined && (obj as any).y !== undefined;
|
14
14
|
|
@@ -15,8 +15,9 @@ interface ScalarCircleDef {
|
|
15
15
|
export type CircleDef = PointCircleDef | ScalarCircleDef;
|
16
16
|
|
17
17
|
const isCircleScalarDef = (def: CircleDef): def is ScalarCircleDef =>
|
18
|
+
// We have an issue to check property existence on JSI backed instances
|
18
19
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
19
|
-
(def as any).cx;
|
20
|
+
(def as any).cx !== undefined;
|
20
21
|
export const processCircle = (def: CircleDef) => {
|
21
22
|
if (isCircleScalarDef(def)) {
|
22
23
|
return { c: vec(def.cx, def.cy), r: def.r };
|
@@ -5,7 +5,7 @@ import type { FontMgr } from "../../skia/FontMgr/FontMgr";
|
|
5
5
|
export type FontDef = { font: SkFont } | { familyName: string; size: number };
|
6
6
|
|
7
7
|
export const isFont = (fontDef: FontDef): fontDef is { font: SkFont } =>
|
8
|
-
// We
|
8
|
+
// We have an issue to check property existence on JSI backed instances
|
9
9
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
10
10
|
(fontDef as any).font !== undefined;
|
11
11
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
// Here we use any because hasOwnProperty doesn't work on JSI instances not does the (key in obj) syntax
|
2
|
-
// And using Object.keys for such use-case is incredibly slow
|
3
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
4
2
|
import type { SkRect, SkRRect } from "../../skia";
|
5
3
|
|
@@ -47,10 +45,13 @@ export const center = (r: SkRect | SkRRect) =>
|
|
47
45
|
? vec(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2)
|
48
46
|
: vec(r.x + r.width / 2, r.y + r.height / 2);
|
49
47
|
|
48
|
+
// We have an issue to check property existence on JSI backed instances
|
50
49
|
const isRRectCtor = (def: RRectDef): def is RRectCtor =>
|
51
50
|
(def as any).rect === undefined;
|
51
|
+
// We have an issue to check property existence on JSI backed instances
|
52
52
|
const isRectCtor = (def: RectDef): def is RectCtor =>
|
53
53
|
(def as any).rect === undefined;
|
54
|
+
// We have an issue to check property existence on JSI backed instances
|
54
55
|
export const isRRect = (def: SkRect | SkRRect): def is SkRRect =>
|
55
56
|
(def as any).rect !== undefined;
|
56
57
|
|
@@ -42,8 +42,8 @@ export const getResolvedParams = (
|
|
42
42
|
|
43
43
|
const resolvedConfig: Required<TimingConfig> = { ...DefaultTimingConfig };
|
44
44
|
if (config) {
|
45
|
-
resolvedConfig.duration = config.duration;
|
46
|
-
resolvedConfig.easing = config.easing ??
|
45
|
+
resolvedConfig.duration = config.duration ?? DefaultTimingConfig.duration;
|
46
|
+
resolvedConfig.easing = config.easing ?? DefaultTimingConfig.easing;
|
47
47
|
}
|
48
48
|
|
49
49
|
return { ...resolvedParameters, ...resolvedConfig };
|
@@ -1,12 +1,12 @@
|
|
1
1
|
export interface SpringConfig {
|
2
|
-
mass
|
3
|
-
stiffness
|
4
|
-
damping
|
5
|
-
velocity
|
2
|
+
mass?: number;
|
3
|
+
stiffness?: number;
|
4
|
+
damping?: number;
|
5
|
+
velocity?: number;
|
6
6
|
}
|
7
7
|
|
8
8
|
export interface TimingConfig {
|
9
|
-
duration
|
9
|
+
duration?: number;
|
10
10
|
easing?: (t: number) => number;
|
11
11
|
}
|
12
12
|
|