@shopify/react-native-skia 1.8.2 → 1.9.0
Sign up to get free protection for your applications and to get access to all the features.
- package/android/cpp/rnskia-android/MainThreadDispatcher.h +1 -1
- package/android/cpp/rnskia-android/OpenGLContext.h +4 -4
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +3 -3
- package/cpp/api/JsiSkCanvas.h +27 -25
- package/cpp/api/JsiSkImage.h +24 -0
- package/cpp/api/JsiSkPaint.h +1 -1
- package/cpp/rnskia/dom/nodes/JsiAtlasNode.h +5 -1
- package/cpp/rnskia/dom/nodes/JsiImageNode.h +8 -4
- package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +9 -38
- package/cpp/rnskia/dom/props/SamplingProp.h +54 -0
- package/ios/RNSkia-iOS/SkiaManager.mm +2 -4
- package/lib/commonjs/dom/types/Drawings.d.ts +3 -1
- package/lib/commonjs/dom/types/Drawings.js.map +1 -1
- package/lib/commonjs/dom/types/Shaders.d.ts +2 -3
- package/lib/commonjs/dom/types/Shaders.js.map +1 -1
- package/lib/commonjs/renderer/components/image/ImageShader.d.ts +1 -1
- package/lib/commonjs/renderer/components/image/ImageShader.js +0 -4
- package/lib/commonjs/renderer/components/image/ImageShader.js.map +1 -1
- package/lib/commonjs/skia/types/Canvas.d.ts +2 -2
- package/lib/commonjs/skia/types/Canvas.js.map +1 -1
- package/lib/commonjs/skia/types/Image/Image.d.ts +18 -0
- package/lib/commonjs/skia/types/Image/Image.js +24 -1
- package/lib/commonjs/skia/types/Image/Image.js.map +1 -1
- package/lib/commonjs/skia/types/Picture/PictureRecorder.d.ts +2 -1
- package/lib/commonjs/skia/types/Picture/PictureRecorder.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkCanvas.d.ts +2 -2
- package/lib/commonjs/skia/web/JsiSkCanvas.js +15 -2
- package/lib/commonjs/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/commonjs/sksg/Container.d.ts +17 -14
- package/lib/commonjs/sksg/Container.js +59 -61
- package/lib/commonjs/sksg/Container.js.map +1 -1
- package/lib/commonjs/sksg/HostConfig.js +4 -9
- package/lib/commonjs/sksg/HostConfig.js.map +1 -1
- package/lib/commonjs/sksg/Reconciler.js +1 -2
- package/lib/commonjs/sksg/Reconciler.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Recorder.d.ts +11 -0
- package/lib/commonjs/sksg/Recorder/Recorder.js +9 -0
- package/lib/commonjs/sksg/Recorder/Recorder.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js +11 -4
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js +8 -3
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/module/dom/types/Drawings.d.ts +3 -1
- package/lib/module/dom/types/Drawings.js.map +1 -1
- package/lib/module/dom/types/Shaders.d.ts +2 -3
- package/lib/module/dom/types/Shaders.js.map +1 -1
- package/lib/module/renderer/components/image/ImageShader.d.ts +1 -1
- package/lib/module/renderer/components/image/ImageShader.js +0 -4
- package/lib/module/renderer/components/image/ImageShader.js.map +1 -1
- package/lib/module/skia/types/Canvas.d.ts +2 -2
- package/lib/module/skia/types/Canvas.js.map +1 -1
- package/lib/module/skia/types/Image/Image.d.ts +18 -0
- package/lib/module/skia/types/Image/Image.js +21 -0
- package/lib/module/skia/types/Image/Image.js.map +1 -1
- package/lib/module/skia/types/Picture/PictureRecorder.d.ts +2 -1
- package/lib/module/skia/types/Picture/PictureRecorder.js.map +1 -1
- package/lib/module/skia/web/JsiSkCanvas.d.ts +2 -2
- package/lib/module/skia/web/JsiSkCanvas.js +15 -2
- package/lib/module/skia/web/JsiSkCanvas.js.map +1 -1
- package/lib/module/sksg/Container.d.ts +17 -14
- package/lib/module/sksg/Container.js +56 -59
- package/lib/module/sksg/Container.js.map +1 -1
- package/lib/module/sksg/HostConfig.js +4 -9
- package/lib/module/sksg/HostConfig.js.map +1 -1
- package/lib/module/sksg/Reconciler.js +2 -3
- package/lib/module/sksg/Reconciler.js.map +1 -1
- package/lib/module/sksg/Recorder/Recorder.d.ts +11 -0
- package/lib/module/sksg/Recorder/Recorder.js +9 -0
- package/lib/module/sksg/Recorder/Recorder.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Drawing.js +12 -5
- package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js +9 -4
- package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/typescript/lib/commonjs/renderer/components/image/ImageShader.d.ts +1 -3
- package/lib/typescript/lib/commonjs/skia/types/Image/Image.d.ts +21 -0
- package/lib/typescript/lib/commonjs/skia/web/JsiSkCanvas.d.ts +1 -1
- package/lib/typescript/lib/commonjs/sksg/Container.d.ts +15 -10
- package/lib/typescript/lib/commonjs/sksg/HostConfig.d.ts +4 -4
- package/lib/typescript/lib/commonjs/sksg/Reconciler.d.ts +21 -2
- package/lib/typescript/lib/commonjs/sksg/Recorder/Recorder.d.ts +5 -0
- package/lib/typescript/lib/module/mock/index.d.ts +18 -3
- package/lib/typescript/lib/module/renderer/components/image/ImageShader.d.ts +1 -3
- package/lib/typescript/lib/module/skia/types/Image/Image.d.ts +21 -0
- package/lib/typescript/lib/module/skia/web/JsiSkCanvas.d.ts +1 -1
- package/lib/typescript/lib/module/sksg/Container.d.ts +15 -10
- package/lib/typescript/lib/module/sksg/HostConfig.d.ts +4 -4
- package/lib/typescript/lib/module/sksg/Reconciler.d.ts +21 -2
- package/lib/typescript/lib/module/sksg/Recorder/Recorder.d.ts +5 -0
- package/lib/typescript/src/dom/types/Drawings.d.ts +3 -1
- package/lib/typescript/src/dom/types/Shaders.d.ts +2 -3
- package/lib/typescript/src/renderer/components/image/ImageShader.d.ts +1 -1
- package/lib/typescript/src/skia/types/Canvas.d.ts +2 -2
- package/lib/typescript/src/skia/types/Image/Image.d.ts +18 -0
- package/lib/typescript/src/skia/types/Picture/PictureRecorder.d.ts +2 -1
- package/lib/typescript/src/skia/web/JsiSkCanvas.d.ts +2 -2
- package/lib/typescript/src/sksg/Container.d.ts +17 -14
- package/lib/typescript/src/sksg/Recorder/Recorder.d.ts +11 -0
- package/libs/apple/libskia.xcframework/Info.plist +35 -2
- package/libs/apple/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
- package/libs/apple/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/apple/libskia.xcframework/macos-arm64_x86_64/libskia.a +0 -0
- package/libs/apple/libskia.xcframework/tvos-arm64_arm64e/libskia.a +0 -0
- package/libs/apple/libskia.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
- package/libs/apple/libskottie.xcframework/Info.plist +36 -3
- package/libs/apple/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
- package/libs/apple/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/apple/libskottie.xcframework/macos-arm64_x86_64/libskottie.a +0 -0
- package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e/libskottie.a +0 -0
- package/libs/apple/libskottie.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
- package/libs/apple/libskparagraph.xcframework/Info.plist +40 -7
- package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/apple/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/apple/libskparagraph.xcframework/macos-arm64_x86_64/libskparagraph.a +0 -0
- package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e/libskparagraph.a +0 -0
- package/libs/apple/libskparagraph.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
- package/libs/apple/libsksg.xcframework/Info.plist +35 -2
- package/libs/apple/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
- package/libs/apple/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/apple/libsksg.xcframework/macos-arm64_x86_64/libsksg.a +0 -0
- package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e/libsksg.a +0 -0
- package/libs/apple/libsksg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
- package/libs/apple/libskshaper.xcframework/Info.plist +33 -0
- package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
- package/libs/apple/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/apple/libskshaper.xcframework/macos-arm64_x86_64/libskshaper.a +0 -0
- package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e/libskshaper.a +0 -0
- package/libs/apple/libskshaper.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
- package/libs/apple/libskunicode_core.xcframework/Info.plist +36 -3
- package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e/libskunicode_core.a +0 -0
- package/libs/apple/libskunicode_core.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
- package/libs/apple/libskunicode_core.xcframework/macos-arm64_x86_64/libskunicode_core.a +0 -0
- package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e/libskunicode_core.a +0 -0
- package/libs/apple/libskunicode_core.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_core.a +0 -0
- package/libs/apple/libskunicode_libgrapheme.xcframework/Info.plist +35 -2
- package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
- package/libs/apple/libskunicode_libgrapheme.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
- package/libs/apple/libskunicode_libgrapheme.xcframework/macos-arm64_x86_64/libskunicode_libgrapheme.a +0 -0
- package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e/libskunicode_libgrapheme.a +0 -0
- package/libs/apple/libskunicode_libgrapheme.xcframework/tvos-arm64_arm64e_x86_64-simulator/libskunicode_libgrapheme.a +0 -0
- package/libs/apple/libsvg.xcframework/Info.plist +36 -3
- package/libs/apple/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
- package/libs/apple/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/libs/apple/libsvg.xcframework/macos-arm64_x86_64/libsvg.a +0 -0
- package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e/libsvg.a +0 -0
- package/libs/apple/libsvg.xcframework/tvos-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
- package/package.json +1 -1
- package/react-native-skia.podspec +2 -2
- package/src/__tests__/snapshots/animated-images/bird.png +0 -0
- package/src/__tests__/snapshots/demos/product.png +0 -0
- package/src/__tests__/snapshots/demos/product2.png +0 -0
- package/src/__tests__/snapshots/images/bundle-android.png +0 -0
- package/src/__tests__/snapshots/images/bundle-ios.png +0 -0
- package/src/__tests__/snapshots/images/bundle-node.png +0 -0
- package/src/__tests__/snapshots/images/filter.png +0 -0
- package/src/dom/types/Drawings.ts +3 -0
- package/src/dom/types/Shaders.ts +2 -4
- package/src/renderer/__tests__/e2e/Text.spec.tsx +1 -1
- package/src/renderer/components/image/ImageShader.tsx +2 -15
- package/src/skia/types/Canvas.ts +2 -3
- package/src/skia/types/Image/Image.ts +14 -0
- package/src/skia/types/Picture/PictureRecorder.ts +2 -1
- package/src/skia/web/JsiSkCanvas.ts +50 -29
- package/src/sksg/Container.ts +64 -67
- package/src/sksg/HostConfig.ts +4 -9
- package/src/sksg/Reconciler.ts +3 -3
- package/src/sksg/Recorder/Recorder.ts +20 -0
- package/src/sksg/Recorder/commands/Drawing.ts +33 -4
- package/src/sksg/Recorder/commands/Shaders.ts +21 -8
- package/lib/commonjs/sksg/Recorder/Recording.d.ts +0 -7
- package/lib/commonjs/sksg/Recorder/Recording.js +0 -12
- package/lib/commonjs/sksg/Recorder/Recording.js.map +0 -1
- package/lib/module/sksg/Recorder/Recording.d.ts +0 -7
- package/lib/module/sksg/Recorder/Recording.js +0 -5
- package/lib/module/sksg/Recorder/Recording.js.map +0 -1
- package/lib/typescript/lib/commonjs/sksg/Recorder/Recording.d.ts +0 -5
- package/lib/typescript/lib/module/sksg/Recorder/Recording.d.ts +0 -4
- package/lib/typescript/src/sksg/Recorder/Recording.d.ts +0 -7
- package/src/sksg/Recorder/Recording.ts +0 -13
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["Rea","
|
1
|
+
{"version":3,"names":["Rea","HAS_REANIMATED_3","Recorder","visit","replay","createDrawingContext","drawOnscreen","Skia","nativeId","recording","rec","PictureRecorder","canvas","beginRecording","ctx","paintPool","commands","picture","finishRecordingAsPicture","SkiaViewApi","setJsiProperty","dispose","Container","constructor","_defineProperty","drawOnCanvas","Error","StaticContainer","redraw","recorder","root","getRecording","isOnScreen","ReanimatedContainer","mapperId","stopMapper","record","animationValues","size","startMapper","Array","from","createContainer"],"sources":["Container.ts"],"sourcesContent":["import Rea from \"../external/reanimated/ReanimatedProxy\";\nimport type { Skia, SkCanvas } from \"../skia/types\";\nimport { HAS_REANIMATED_3 } from \"../external/reanimated/renderHelpers\";\n\nimport type { Node } from \"./Node\";\nimport type { Recording } from \"./Recorder/Recorder\";\nimport { Recorder } from \"./Recorder/Recorder\";\nimport { visit } from \"./Recorder/Visitor\";\nimport { replay } from \"./Recorder/Player\";\nimport { createDrawingContext } from \"./Recorder/DrawingContext\";\n\nconst drawOnscreen = (Skia: Skia, nativeId: number, recording: Recording) => {\n \"worklet\";\n\n const rec = Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n // const start = performance.now();\n\n const ctx = createDrawingContext(Skia, recording.paintPool, canvas);\n //console.log(recording.commands);\n replay(ctx, recording.commands);\n const picture = rec.finishRecordingAsPicture();\n //const end = performance.now();\n //console.log(\"Recording time: \", end - start);\n SkiaViewApi.setJsiProperty(nativeId, \"picture\", picture);\n rec.dispose();\n picture.dispose();\n};\n\nexport abstract class Container {\n public root: Node[] = [];\n protected recording: Recording | null = null;\n\n constructor(protected Skia: Skia, protected nativeId: number) {}\n\n drawOnCanvas(canvas: SkCanvas) {\n if (!this.recording) {\n throw new Error(\"No recording to draw\");\n }\n const ctx = createDrawingContext(\n this.Skia,\n this.recording.paintPool,\n canvas\n );\n //console.log(this._recording);\n replay(ctx, this.recording.commands);\n }\n\n abstract redraw(): void;\n}\n\nclass StaticContainer extends Container {\n constructor(Skia: Skia, nativeId: number) {\n super(Skia, nativeId);\n }\n\n redraw() {\n const recorder = new Recorder();\n visit(recorder, this.root);\n this.recording = recorder.getRecording();\n const isOnScreen = this.nativeId !== -1;\n if (isOnScreen) {\n const rec = this.Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n this.drawOnCanvas(canvas);\n const picture = rec.finishRecordingAsPicture();\n SkiaViewApi.setJsiProperty(this.nativeId, \"picture\", picture);\n }\n }\n}\n\nclass ReanimatedContainer extends Container {\n private mapperId: number | null = null;\n\n constructor(Skia: Skia, nativeId: number) {\n super(Skia, nativeId);\n }\n\n redraw() {\n if (this.mapperId !== null) {\n Rea.stopMapper(this.mapperId);\n }\n const recorder = new Recorder();\n visit(recorder, this.root);\n const record = recorder.getRecording();\n const { animationValues } = record;\n this.recording = {\n commands: record.commands,\n paintPool: record.paintPool,\n };\n if (animationValues.size > 0) {\n const { nativeId, Skia, recording } = this;\n this.mapperId = Rea.startMapper(() => {\n \"worklet\";\n drawOnscreen(Skia, nativeId, recording!);\n }, Array.from(animationValues));\n }\n }\n}\n\nexport const createContainer = (Skia: Skia, nativeId: number) => {\n return HAS_REANIMATED_3 && nativeId !== -1\n ? new ReanimatedContainer(Skia, nativeId)\n : new StaticContainer(Skia, nativeId);\n};\n"],"mappings":"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","ignoreList":[]}
|
@@ -36,14 +36,13 @@ export const sksgHostConfig = {
|
|
36
36
|
// return SpanNode({}, text) as SkNode;
|
37
37
|
throw new Error("Text nodes are not supported yet");
|
38
38
|
},
|
39
|
-
createInstance(type, propsWithChildren,
|
39
|
+
createInstance(type, propsWithChildren, _container, _hostContext, _internalInstanceHandle) {
|
40
40
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
41
41
|
const {
|
42
42
|
children,
|
43
43
|
...props
|
44
44
|
} = propsWithChildren;
|
45
45
|
debug("createInstance", type);
|
46
|
-
container.registerValues(props);
|
47
46
|
const instance = {
|
48
47
|
type,
|
49
48
|
props,
|
@@ -62,7 +61,7 @@ export const sksgHostConfig = {
|
|
62
61
|
// if finalizeInitialChildren = true
|
63
62
|
debug("commitMount");
|
64
63
|
},
|
65
|
-
prepareForCommit(
|
64
|
+
prepareForCommit(_container) {
|
66
65
|
debug("prepareForCommit");
|
67
66
|
return null;
|
68
67
|
},
|
@@ -77,9 +76,8 @@ export const sksgHostConfig = {
|
|
77
76
|
commitTextUpdate: (_textInstance, _oldText, _newText) => {
|
78
77
|
// textInstance.instance = newText;
|
79
78
|
},
|
80
|
-
clearContainer:
|
79
|
+
clearContainer: _container => {
|
81
80
|
debug("clearContainer");
|
82
|
-
container.clear();
|
83
81
|
},
|
84
82
|
prepareUpdate(_instance, _type, oldProps, newProps, container, _hostContext) {
|
85
83
|
debug("prepareUpdate");
|
@@ -87,8 +85,6 @@ export const sksgHostConfig = {
|
|
87
85
|
if (propsAreEqual) {
|
88
86
|
return null;
|
89
87
|
}
|
90
|
-
container.unregisterValues(oldProps);
|
91
|
-
container.registerValues(newProps);
|
92
88
|
return container;
|
93
89
|
},
|
94
90
|
preparePortalMount: () => {
|
@@ -114,7 +110,6 @@ export const sksgHostConfig = {
|
|
114
110
|
container.root = newChildren;
|
115
111
|
},
|
116
112
|
replaceContainerChildren(container, newChildren) {
|
117
|
-
debug("replaceContainerChildren");
|
118
113
|
container.root = newChildren;
|
119
114
|
},
|
120
115
|
cloneHiddenInstance(_instance, _type, _props) {
|
@@ -129,7 +124,7 @@ export const sksgHostConfig = {
|
|
129
124
|
getCurrentEventPriority: () => DefaultEventPriority,
|
130
125
|
beforeActiveInstanceBlur: () => {},
|
131
126
|
afterActiveInstanceBlur: () => {},
|
132
|
-
detachDeletedInstance:
|
127
|
+
detachDeletedInstance: _node => {},
|
133
128
|
getInstanceFromNode: function (_node) {
|
134
129
|
throw new Error("Function not implemented.");
|
135
130
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["DefaultEventPriority","shallowEq","DEBUG","debug","args","console","log","sksgHostConfig","supportsMutation","isPrimaryRenderer","supportsPersistence","supportsHydration","scheduleTimeout","setTimeout","cancelTimeout","clearTimeout","noTimeout","getRootHostContext","_rootContainerInstance","getChildHostContext","_parentHostContext","_type","shouldSetTextContent","_props","createTextInstance","_text","_hostContext","_internalInstanceHandle","Error","createInstance","type","propsWithChildren","container","children","props","registerValues","instance","appendInitialChild","parentInstance","child","push","finalizeInitialChildren","commitMount","prepareForCommit","_containerInfo","resetAfterCommit","redraw","getPublicInstance","node","commitTextUpdate","_textInstance","_oldText","_newText","clearContainer","clear","prepareUpdate","_instance","oldProps","newProps","propsAreEqual","unregisterValues","preparePortalMount","cloneInstance","_updatePayload","_oldProps","keepChildren","_recyclableInstance","createContainerChildSet","appendChildToContainerChildSet","childSet","finalizeContainerChildren","newChildren","root","replaceContainerChildren","cloneHiddenInstance","cloneHiddenTextInstance","getCurrentEventPriority","beforeActiveInstanceBlur","afterActiveInstanceBlur","detachDeletedInstance","getInstanceFromNode","_node","prepareScopeUpdate","_scopeInstance","getInstanceFromScope"],"sources":["HostConfig.ts"],"sourcesContent":["/*global NodeJS*/\nimport type { Fiber, HostConfig } from \"react-reconciler\";\nimport { DefaultEventPriority } from \"react-reconciler/constants\";\n\nimport type { NodeType } from \"../dom/types\";\nimport { shallowEq } from \"../renderer/typeddash\";\n\nimport type { Node } from \"./Node\";\nimport type { Container } from \"./Container\";\n\nconst DEBUG = false;\nexport const debug = (...args: Parameters<typeof console.log>) => {\n if (DEBUG) {\n console.log(...args);\n }\n};\n\ntype Instance = Node;\n\ntype Props = object;\ntype TextInstance = Node;\ntype SuspenseInstance = Instance;\ntype HydratableInstance = Instance;\ntype PublicInstance = Instance;\ntype HostContext = null;\ntype UpdatePayload = Container;\ntype ChildSet = Node[];\ntype TimeoutHandle = NodeJS.Timeout;\ntype NoTimeout = -1;\n\ntype SkiaHostConfig = HostConfig<\n NodeType,\n Props,\n Container,\n Instance,\n TextInstance,\n SuspenseInstance,\n HydratableInstance,\n PublicInstance,\n HostContext,\n UpdatePayload,\n ChildSet,\n TimeoutHandle,\n NoTimeout\n>;\n\nexport const sksgHostConfig: SkiaHostConfig = {\n /**\n * This function is used by the reconciler in order to calculate current time for prioritising work.\n */\n supportsMutation: false,\n isPrimaryRenderer: false,\n supportsPersistence: true,\n supportsHydration: false,\n //supportsMicrotask: true,\n scheduleTimeout: setTimeout,\n cancelTimeout: clearTimeout,\n noTimeout: -1,\n\n getRootHostContext: (_rootContainerInstance: Container) => {\n debug(\"getRootHostContext\");\n return null;\n },\n\n getChildHostContext(_parentHostContext, _type, _rootContainerInstance) {\n debug(\"getChildHostContext\");\n return null;\n },\n\n shouldSetTextContent(_type, _props) {\n return false;\n },\n\n createTextInstance(\n _text,\n _rootContainerInstance,\n _hostContext,\n _internalInstanceHandle\n ) {\n debug(\"createTextInstance\");\n // return SpanNode({}, text) as SkNode;\n throw new Error(\"Text nodes are not supported yet\");\n },\n\n createInstance(\n type,\n propsWithChildren,\n container,\n _hostContext,\n _internalInstanceHandle\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { children, ...props } = propsWithChildren as any;\n debug(\"createInstance\", type);\n container.registerValues(props);\n const instance = {\n type,\n props,\n children: [],\n };\n return instance;\n },\n\n appendInitialChild(parentInstance: Instance, child: Instance | TextInstance) {\n parentInstance.children.push(child);\n },\n\n finalizeInitialChildren(\n parentInstance,\n _type,\n _props,\n _rootContainerInstance,\n _hostContext\n ) {\n debug(\"finalizeInitialChildren\", parentInstance);\n return false;\n },\n\n commitMount() {\n // if finalizeInitialChildren = true\n debug(\"commitMount\");\n },\n\n prepareForCommit(_containerInfo) {\n debug(\"prepareForCommit\");\n return null;\n },\n\n resetAfterCommit(container) {\n debug(\"resetAfterCommit\");\n container.redraw();\n },\n\n getPublicInstance(node: Instance) {\n debug(\"getPublicInstance\");\n return node;\n },\n\n commitTextUpdate: (\n _textInstance: TextInstance,\n _oldText: string,\n _newText: string\n ) => {\n // textInstance.instance = newText;\n },\n\n clearContainer: (container) => {\n debug(\"clearContainer\");\n container.clear();\n },\n\n prepareUpdate(\n _instance: Instance,\n _type: string,\n oldProps: Props,\n newProps: Props,\n container: Container,\n _hostContext: HostContext\n ) {\n debug(\"prepareUpdate\");\n const propsAreEqual = shallowEq(oldProps, newProps);\n if (propsAreEqual) {\n return null;\n }\n container.unregisterValues(oldProps);\n container.registerValues(newProps);\n return container;\n },\n\n preparePortalMount: () => {\n debug(\"preparePortalMount\");\n },\n\n cloneInstance(\n instance,\n _updatePayload,\n _type,\n _oldProps,\n newProps,\n _internalInstanceHandle,\n keepChildren: boolean,\n _recyclableInstance: null | Instance\n ) {\n debug(\"cloneInstance\");\n\n return {\n type: instance.type,\n props: newProps,\n children: keepChildren ? [...instance.children] : [],\n };\n },\n\n createContainerChildSet(): ChildSet {\n debug(\"createContainerChildSet\");\n return [];\n },\n\n appendChildToContainerChildSet(\n childSet: ChildSet,\n child: Instance | TextInstance\n ): void {\n childSet.push(child);\n },\n\n finalizeContainerChildren(container: Container, newChildren: ChildSet) {\n debug(\"finalizeContainerChildren\");\n container.root = newChildren;\n },\n\n replaceContainerChildren(container: Container, newChildren: ChildSet) {\n debug(\"replaceContainerChildren\");\n container.root = newChildren;\n },\n\n cloneHiddenInstance(\n _instance: Instance,\n _type: string,\n _props: Props\n ): Instance {\n debug(\"cloneHiddenInstance\");\n throw new Error(\"Not yet implemented.\");\n },\n\n cloneHiddenTextInstance(_instance: Instance, _text: string): TextInstance {\n debug(\"cloneHiddenTextInstance\");\n throw new Error(\"Not yet implemented.\");\n },\n // see https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874\n getCurrentEventPriority: () => DefaultEventPriority,\n beforeActiveInstanceBlur: () => {},\n afterActiveInstanceBlur: () => {},\n detachDeletedInstance: () => {},\n getInstanceFromNode: function (_node): Fiber | null | undefined {\n throw new Error(\"Function not implemented.\");\n },\n prepareScopeUpdate: function (_scopeInstance, _instance): void {\n throw new Error(\"Function not implemented.\");\n },\n getInstanceFromScope: function (_scopeInstance): Instance | null {\n throw new Error(\"Function not implemented.\");\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["DefaultEventPriority","shallowEq","DEBUG","debug","args","console","log","sksgHostConfig","supportsMutation","isPrimaryRenderer","supportsPersistence","supportsHydration","scheduleTimeout","setTimeout","cancelTimeout","clearTimeout","noTimeout","getRootHostContext","_rootContainerInstance","getChildHostContext","_parentHostContext","_type","shouldSetTextContent","_props","createTextInstance","_text","_hostContext","_internalInstanceHandle","Error","createInstance","type","propsWithChildren","_container","children","props","instance","appendInitialChild","parentInstance","child","push","finalizeInitialChildren","commitMount","prepareForCommit","resetAfterCommit","container","redraw","getPublicInstance","node","commitTextUpdate","_textInstance","_oldText","_newText","clearContainer","prepareUpdate","_instance","oldProps","newProps","propsAreEqual","preparePortalMount","cloneInstance","_updatePayload","_oldProps","keepChildren","_recyclableInstance","createContainerChildSet","appendChildToContainerChildSet","childSet","finalizeContainerChildren","newChildren","root","replaceContainerChildren","cloneHiddenInstance","cloneHiddenTextInstance","getCurrentEventPriority","beforeActiveInstanceBlur","afterActiveInstanceBlur","detachDeletedInstance","_node","getInstanceFromNode","prepareScopeUpdate","_scopeInstance","getInstanceFromScope"],"sources":["HostConfig.ts"],"sourcesContent":["/*global NodeJS*/\nimport type { Fiber, HostConfig } from \"react-reconciler\";\nimport { DefaultEventPriority } from \"react-reconciler/constants\";\n\nimport type { NodeType } from \"../dom/types\";\nimport { shallowEq } from \"../renderer/typeddash\";\n\nimport type { Node } from \"./Node\";\nimport type { Container } from \"./Container\";\n\nconst DEBUG = false;\nexport const debug = (...args: Parameters<typeof console.log>) => {\n if (DEBUG) {\n console.log(...args);\n }\n};\n\ntype Instance = Node;\n\ntype Props = object;\ntype TextInstance = Node;\ntype SuspenseInstance = Instance;\ntype HydratableInstance = Instance;\ntype PublicInstance = Instance;\ntype HostContext = null;\ntype UpdatePayload = Container;\ntype ChildSet = Node[];\ntype TimeoutHandle = NodeJS.Timeout;\ntype NoTimeout = -1;\n\ntype SkiaHostConfig = HostConfig<\n NodeType,\n Props,\n Container,\n Instance,\n TextInstance,\n SuspenseInstance,\n HydratableInstance,\n PublicInstance,\n HostContext,\n UpdatePayload,\n ChildSet,\n TimeoutHandle,\n NoTimeout\n>;\n\nexport const sksgHostConfig: SkiaHostConfig = {\n /**\n * This function is used by the reconciler in order to calculate current time for prioritising work.\n */\n supportsMutation: false,\n isPrimaryRenderer: false,\n supportsPersistence: true,\n supportsHydration: false,\n //supportsMicrotask: true,\n scheduleTimeout: setTimeout,\n cancelTimeout: clearTimeout,\n noTimeout: -1,\n\n getRootHostContext: (_rootContainerInstance: Container) => {\n debug(\"getRootHostContext\");\n return null;\n },\n\n getChildHostContext(_parentHostContext, _type, _rootContainerInstance) {\n debug(\"getChildHostContext\");\n return null;\n },\n\n shouldSetTextContent(_type, _props) {\n return false;\n },\n\n createTextInstance(\n _text,\n _rootContainerInstance,\n _hostContext,\n _internalInstanceHandle\n ) {\n debug(\"createTextInstance\");\n // return SpanNode({}, text) as SkNode;\n throw new Error(\"Text nodes are not supported yet\");\n },\n\n createInstance(\n type,\n propsWithChildren,\n _container,\n _hostContext,\n _internalInstanceHandle\n ) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { children, ...props } = propsWithChildren as any;\n debug(\"createInstance\", type);\n const instance = {\n type,\n props,\n children: [],\n };\n return instance;\n },\n\n appendInitialChild(parentInstance: Instance, child: Instance | TextInstance) {\n parentInstance.children.push(child);\n },\n\n finalizeInitialChildren(\n parentInstance,\n _type,\n _props,\n _rootContainerInstance,\n _hostContext\n ) {\n debug(\"finalizeInitialChildren\", parentInstance);\n return false;\n },\n\n commitMount() {\n // if finalizeInitialChildren = true\n debug(\"commitMount\");\n },\n\n prepareForCommit(_container: Container) {\n debug(\"prepareForCommit\");\n return null;\n },\n\n resetAfterCommit(container) {\n debug(\"resetAfterCommit\");\n container.redraw();\n },\n\n getPublicInstance(node: Instance) {\n debug(\"getPublicInstance\");\n return node;\n },\n\n commitTextUpdate: (\n _textInstance: TextInstance,\n _oldText: string,\n _newText: string\n ) => {\n // textInstance.instance = newText;\n },\n\n clearContainer: (_container) => {\n debug(\"clearContainer\");\n },\n\n prepareUpdate(\n _instance: Instance,\n _type: string,\n oldProps: Props,\n newProps: Props,\n container: Container,\n _hostContext: HostContext\n ) {\n debug(\"prepareUpdate\");\n const propsAreEqual = shallowEq(oldProps, newProps);\n if (propsAreEqual) {\n return null;\n }\n return container;\n },\n\n preparePortalMount: () => {\n debug(\"preparePortalMount\");\n },\n\n cloneInstance(\n instance,\n _updatePayload,\n _type,\n _oldProps,\n newProps,\n _internalInstanceHandle,\n keepChildren: boolean,\n _recyclableInstance: null | Instance\n ) {\n debug(\"cloneInstance\");\n\n return {\n type: instance.type,\n props: newProps,\n children: keepChildren ? [...instance.children] : [],\n };\n },\n\n createContainerChildSet(): ChildSet {\n debug(\"createContainerChildSet\");\n return [];\n },\n\n appendChildToContainerChildSet(\n childSet: ChildSet,\n child: Instance | TextInstance\n ): void {\n childSet.push(child);\n },\n\n finalizeContainerChildren(container: Container, newChildren: ChildSet) {\n debug(\"finalizeContainerChildren\");\n container.root = newChildren;\n },\n\n replaceContainerChildren(container: Container, newChildren: ChildSet) {\n container.root = newChildren;\n },\n\n cloneHiddenInstance(\n _instance: Instance,\n _type: string,\n _props: Props\n ): Instance {\n debug(\"cloneHiddenInstance\");\n throw new Error(\"Not yet implemented.\");\n },\n\n cloneHiddenTextInstance(_instance: Instance, _text: string): TextInstance {\n debug(\"cloneHiddenTextInstance\");\n throw new Error(\"Not yet implemented.\");\n },\n // see https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874\n getCurrentEventPriority: () => DefaultEventPriority,\n beforeActiveInstanceBlur: () => {},\n afterActiveInstanceBlur: () => {},\n detachDeletedInstance: (_node: Instance) => {},\n getInstanceFromNode: function (_node): Fiber | null | undefined {\n throw new Error(\"Function not implemented.\");\n },\n prepareScopeUpdate: function (_scopeInstance, _instance): void {\n throw new Error(\"Function not implemented.\");\n },\n getInstanceFromScope: function (_scopeInstance): Instance | null {\n throw new Error(\"Function not implemented.\");\n },\n};\n"],"mappings":"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","ignoreList":[]}
|
@@ -4,7 +4,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
4
4
|
import ReactReconciler from "react-reconciler";
|
5
5
|
import { NodeType } from "../dom/types";
|
6
6
|
import { debug, sksgHostConfig } from "./HostConfig";
|
7
|
-
import {
|
7
|
+
import { createContainer } from "./Container";
|
8
8
|
const skiaReconciler = ReactReconciler(sksgHostConfig);
|
9
9
|
skiaReconciler.injectIntoDevTools({
|
10
10
|
bundleType: 1,
|
@@ -16,7 +16,7 @@ export class SkiaSGRoot {
|
|
16
16
|
this.Skia = Skia;
|
17
17
|
_defineProperty(this, "root", void 0);
|
18
18
|
_defineProperty(this, "container", void 0);
|
19
|
-
this.container =
|
19
|
+
this.container = createContainer(Skia, nativeId);
|
20
20
|
this.root = skiaReconciler.createContainer(this.container, 0, null, true, null, "", console.error, null);
|
21
21
|
}
|
22
22
|
get sg() {
|
@@ -44,7 +44,6 @@ export class SkiaSGRoot {
|
|
44
44
|
return recorder.finishRecordingAsPicture();
|
45
45
|
}
|
46
46
|
unmount() {
|
47
|
-
this.container.unmounted = true;
|
48
47
|
skiaReconciler.updateContainer(null, this.root, null, () => {
|
49
48
|
debug("unmountContainer");
|
50
49
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["ReactReconciler","NodeType","debug","sksgHostConfig","
|
1
|
+
{"version":3,"names":["ReactReconciler","NodeType","debug","sksgHostConfig","createContainer","skiaReconciler","injectIntoDevTools","bundleType","version","rendererPackageName","SkiaSGRoot","constructor","Skia","nativeId","_defineProperty","container","root","console","error","sg","children","type","Group","props","isDeclaration","render","element","updateContainer","drawOnCanvas","canvas","getPicture","recorder","PictureRecorder","beginRecording","finishRecordingAsPicture","unmount"],"sources":["Reconciler.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport type { SkCanvas, Skia } from \"../skia/types\";\nimport { NodeType } from \"../dom/types\";\n\nimport { debug, sksgHostConfig } from \"./HostConfig\";\nimport type { Container } from \"./Container\";\nimport { createContainer } from \"./Container\";\n\nconst skiaReconciler = ReactReconciler(sksgHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nexport class SkiaSGRoot {\n private root: OpaqueRoot;\n private container: Container;\n\n constructor(public Skia: Skia, nativeId = -1) {\n this.container = createContainer(Skia, nativeId);\n this.root = skiaReconciler.createContainer(\n this.container,\n 0,\n null,\n true,\n null,\n \"\",\n console.error,\n null\n );\n }\n\n get sg() {\n const children = this.container.root;\n return { type: NodeType.Group, props: {}, children, isDeclaration: false };\n }\n\n render(element: ReactNode) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n skiaReconciler.updateContainer(element as any, this.root, null, () => {\n debug(\"updateContainer\");\n });\n }\n\n drawOnCanvas(canvas: SkCanvas) {\n this.container.drawOnCanvas(canvas);\n }\n\n getPicture() {\n const recorder = this.Skia.PictureRecorder();\n const canvas = recorder.beginRecording();\n this.drawOnCanvas(canvas);\n return recorder.finishRecordingAsPicture();\n }\n\n unmount() {\n skiaReconciler.updateContainer(null, this.root, null, () => {\n debug(\"unmountContainer\");\n });\n }\n}\n"],"mappings":";;;AAEA,OAAOA,eAAe,MAAM,kBAAkB;AAG9C,SAASC,QAAQ,QAAQ,cAAc;AAEvC,SAASC,KAAK,EAAEC,cAAc,QAAQ,cAAc;AAEpD,SAASC,eAAe,QAAQ,aAAa;AAE7C,MAAMC,cAAc,GAAGL,eAAe,CAACG,cAAc,CAAC;AAEtDE,cAAc,CAACC,kBAAkB,CAAC;EAChCC,UAAU,EAAE,CAAC;EACbC,OAAO,EAAE,OAAO;EAChBC,mBAAmB,EAAE;AACvB,CAAC,CAAC;AAEF,OAAO,MAAMC,UAAU,CAAC;EAItBC,WAAWA,CAAQC,IAAU,EAAEC,QAAQ,GAAG,CAAC,CAAC,EAAE;IAAA,KAA3BD,IAAU,GAAVA,IAAU;IAAAE,eAAA;IAAAA,eAAA;IAC3B,IAAI,CAACC,SAAS,GAAGX,eAAe,CAACQ,IAAI,EAAEC,QAAQ,CAAC;IAChD,IAAI,CAACG,IAAI,GAAGX,cAAc,CAACD,eAAe,CACxC,IAAI,CAACW,SAAS,EACd,CAAC,EACD,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,EAAE,EACFE,OAAO,CAACC,KAAK,EACb,IACF,CAAC;EACH;EAEA,IAAIC,EAAEA,CAAA,EAAG;IACP,MAAMC,QAAQ,GAAG,IAAI,CAACL,SAAS,CAACC,IAAI;IACpC,OAAO;MAAEK,IAAI,EAAEpB,QAAQ,CAACqB,KAAK;MAAEC,KAAK,EAAE,CAAC,CAAC;MAAEH,QAAQ;MAAEI,aAAa,EAAE;IAAM,CAAC;EAC5E;EAEAC,MAAMA,CAACC,OAAkB,EAAE;IACzB;IACArB,cAAc,CAACsB,eAAe,CAACD,OAAO,EAAS,IAAI,CAACV,IAAI,EAAE,IAAI,EAAE,MAAM;MACpEd,KAAK,CAAC,iBAAiB,CAAC;IAC1B,CAAC,CAAC;EACJ;EAEA0B,YAAYA,CAACC,MAAgB,EAAE;IAC7B,IAAI,CAACd,SAAS,CAACa,YAAY,CAACC,MAAM,CAAC;EACrC;EAEAC,UAAUA,CAAA,EAAG;IACX,MAAMC,QAAQ,GAAG,IAAI,CAACnB,IAAI,CAACoB,eAAe,CAAC,CAAC;IAC5C,MAAMH,MAAM,GAAGE,QAAQ,CAACE,cAAc,CAAC,CAAC;IACxC,IAAI,CAACL,YAAY,CAACC,MAAM,CAAC;IACzB,OAAOE,QAAQ,CAACG,wBAAwB,CAAC,CAAC;EAC5C;EAEAC,OAAOA,CAAA,EAAG;IACR9B,cAAc,CAACsB,eAAe,CAAC,IAAI,EAAE,IAAI,CAACX,IAAI,EAAE,IAAI,EAAE,MAAM;MAC1Dd,KAAK,CAAC,kBAAkB,CAAC;IAC3B,CAAC,CAAC;EACJ;AACF","ignoreList":[]}
|
@@ -2,9 +2,19 @@ import type { SharedValue } from "react-native-reanimated";
|
|
2
2
|
import { NodeType } from "../../dom/types";
|
3
3
|
import type { BlurMaskFilterProps, CircleProps, CTMProps, ImageProps, PaintProps, PointsProps, PathProps, RectProps, RoundedRectProps, OvalProps, LineProps, PatchProps, VerticesProps, DiffRectProps, TextProps, TextPathProps, TextBlobProps, GlyphsProps, PictureProps, ImageSVGProps, ParagraphProps, AtlasProps, BoxProps, BoxShadowProps } from "../../dom/types";
|
4
4
|
import type { AnimatedProps } from "../../renderer";
|
5
|
+
import type { SkPaint } from "../../skia/types";
|
5
6
|
import type { Command } from "./Core";
|
7
|
+
export interface Recording {
|
8
|
+
commands: Command[];
|
9
|
+
paintPool: SkPaint[];
|
10
|
+
}
|
11
|
+
interface AnimationValues {
|
12
|
+
animationValues: Set<SharedValue<unknown>>;
|
13
|
+
}
|
6
14
|
export declare class Recorder {
|
7
15
|
commands: Command[];
|
16
|
+
animationValues: Set<SharedValue<unknown>>;
|
17
|
+
getRecording(): Recording & AnimationValues;
|
8
18
|
private processProps;
|
9
19
|
private add;
|
10
20
|
savePaint(props: AnimatedProps<PaintProps>): void;
|
@@ -48,3 +58,4 @@ export declare class Recorder {
|
|
48
58
|
drawParagraph(props: AnimatedProps<ParagraphProps>): void;
|
49
59
|
drawAtlas(props: AnimatedProps<AtlasProps>): void;
|
50
60
|
}
|
61
|
+
export {};
|
@@ -8,6 +8,14 @@ import { CommandType } from "./Core";
|
|
8
8
|
export class Recorder {
|
9
9
|
constructor() {
|
10
10
|
_defineProperty(this, "commands", []);
|
11
|
+
_defineProperty(this, "animationValues", new Set());
|
12
|
+
}
|
13
|
+
getRecording() {
|
14
|
+
return {
|
15
|
+
commands: this.commands,
|
16
|
+
paintPool: [],
|
17
|
+
animationValues: this.animationValues
|
18
|
+
};
|
11
19
|
}
|
12
20
|
processProps(props) {
|
13
21
|
const animatedProps = {};
|
@@ -15,6 +23,7 @@ export class Recorder {
|
|
15
23
|
for (const key in props) {
|
16
24
|
const prop = props[key];
|
17
25
|
if (isSharedValue(prop)) {
|
26
|
+
this.animationValues.add(prop);
|
18
27
|
props[key] = prop.value;
|
19
28
|
animatedProps[key] = prop;
|
20
29
|
hasAnimatedProps = true;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["NodeType","isSharedValue","isColorFilter","isImageFilter","isPathEffect","isShader","CommandType","Recorder","constructor","_defineProperty","processProps","props","animatedProps","hasAnimatedProps","key","prop","value","undefined","add","command","commands","push","savePaint","type","SavePaint","restorePaint","RestorePaint","restorePaintDeclaration","RestorePaintDeclaration","materializePaint","MaterializePaint","pushPathEffect","pathEffectType","Error","PushPathEffect","pushImageFilter","imageFilterType","PushImageFilter","pushColorFilter","colorFilterType","PushColorFilter","pushShader","shaderType","Blend","PushShader","pushBlurMaskFilter","PushBlurMaskFilter","composePathEffect","ComposePathEffect","composeColorFilter","ComposeColorFilter","composeImageFilter","ComposeImageFilter","saveCTM","SaveCTM","restoreCTM","RestoreCTM","drawPaint","DrawPaint","saveLayer","SaveLayer","saveBackdropFilter","SaveBackdropFilter","drawBox","boxProps","shadows","forEach","shadow","DrawBox","drawImage","DrawImage","drawCircle","DrawCircle","drawPoints","DrawPoints","drawPath","DrawPath","drawRect","DrawRect","drawRRect","DrawRRect","drawOval","DrawOval","drawLine","DrawLine","drawPatch","DrawPatch","drawVertices","DrawVertices","drawDiffRect","DrawDiffRect","drawText","DrawText","drawTextPath","DrawTextPath","drawTextBlob","DrawTextBlob","drawGlyphs","DrawGlyphs","drawPicture","DrawPicture","drawImageSVG","DrawImageSVG","drawParagraph","DrawParagraph","drawAtlas","DrawAtlas"],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport { NodeType } from \"../../dom/types\";\nimport type {\n BlurMaskFilterProps,\n CircleProps,\n CTMProps,\n ImageProps,\n PaintProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\nimport { isColorFilter, isImageFilter, isPathEffect, isShader } from \"../Node\";\n\nimport { CommandType } from \"./Core\";\nimport type { Command } from \"./Core\";\n\nexport class Recorder {\n commands: Command[] = [];\n\n private processProps(props: Record<string, unknown>) {\n const animatedProps: Record<string, SharedValue<unknown>> = {};\n let hasAnimatedProps = false;\n\n for (const key in props) {\n const prop = props[key];\n if (isSharedValue(prop)) {\n props[key] = prop.value;\n animatedProps[key] = prop;\n hasAnimatedProps = true;\n }\n }\n\n return {\n props,\n animatedProps: hasAnimatedProps ? animatedProps : undefined,\n };\n }\n\n private add(command: Command) {\n if (command.props) {\n const { animatedProps } = this.processProps(\n command.props as Record<string, unknown>\n );\n if (animatedProps) {\n command.animatedProps = animatedProps;\n }\n }\n this.commands.push(command);\n }\n\n savePaint(props: AnimatedProps<PaintProps>) {\n this.add({ type: CommandType.SavePaint, props });\n }\n\n restorePaint() {\n this.add({ type: CommandType.RestorePaint });\n }\n\n restorePaintDeclaration() {\n this.add({ type: CommandType.RestorePaintDeclaration });\n }\n\n materializePaint() {\n this.add({ type: CommandType.MaterializePaint });\n }\n\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>) {\n if (!isPathEffect(pathEffectType)) {\n throw new Error(\"Invalid color filter type: \" + pathEffectType);\n }\n this.add({\n type: CommandType.PushPathEffect,\n pathEffectType,\n props,\n });\n }\n\n pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isImageFilter(imageFilterType)) {\n throw new Error(\"Invalid color filter type: \" + imageFilterType);\n }\n this.add({\n type: CommandType.PushImageFilter,\n imageFilterType,\n props,\n });\n }\n\n pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isColorFilter(colorFilterType)) {\n throw new Error(\"Invalid color filter type: \" + colorFilterType);\n }\n this.add({\n type: CommandType.PushColorFilter,\n colorFilterType,\n props,\n });\n }\n\n pushShader(shaderType: NodeType, props: AnimatedProps<unknown>) {\n if (!isShader(shaderType) && !(shaderType === NodeType.Blend)) {\n throw new Error(\"Invalid color filter type: \" + shaderType);\n }\n this.add({ type: CommandType.PushShader, shaderType, props });\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>) {\n this.add({ type: CommandType.PushBlurMaskFilter, props });\n }\n\n composePathEffect() {\n this.add({ type: CommandType.ComposePathEffect });\n }\n\n composeColorFilter() {\n this.add({ type: CommandType.ComposeColorFilter });\n }\n\n composeImageFilter() {\n this.add({ type: CommandType.ComposeImageFilter });\n }\n\n saveCTM(props: AnimatedProps<CTMProps>) {\n this.add({ type: CommandType.SaveCTM, props });\n }\n\n restoreCTM() {\n this.add({ type: CommandType.RestoreCTM });\n }\n\n drawPaint() {\n this.add({ type: CommandType.DrawPaint });\n }\n\n saveLayer() {\n this.add({ type: CommandType.SaveLayer });\n }\n\n saveBackdropFilter() {\n this.add({ type: CommandType.SaveBackdropFilter });\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n animatedProps?: Record<string, SharedValue<unknown>>;\n }[]\n ) {\n shadows.forEach((shadow) => {\n if (shadow.props) {\n if (shadow.props) {\n const { animatedProps } = this.processProps(\n shadow.props as unknown as Record<string, unknown>\n );\n if (animatedProps) {\n shadow.animatedProps = animatedProps;\n }\n }\n }\n });\n this.add({ type: CommandType.DrawBox, props: boxProps, shadows });\n }\n\n drawImage(props: AnimatedProps<ImageProps>) {\n this.add({ type: CommandType.DrawImage, props });\n }\n\n drawCircle(props: AnimatedProps<CircleProps>) {\n this.add({ type: CommandType.DrawCircle, props });\n }\n drawPoints(props: AnimatedProps<PointsProps>) {\n this.add({ type: CommandType.DrawPoints, props });\n }\n\n drawPath(props: AnimatedProps<PathProps>) {\n this.add({ type: CommandType.DrawPath, props });\n }\n\n drawRect(props: AnimatedProps<RectProps>) {\n this.add({ type: CommandType.DrawRect, props });\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>) {\n this.add({ type: CommandType.DrawRRect, props });\n }\n\n drawOval(props: AnimatedProps<OvalProps>) {\n this.add({ type: CommandType.DrawOval, props });\n }\n\n drawLine(props: AnimatedProps<LineProps>) {\n this.add({ type: CommandType.DrawLine, props });\n }\n\n drawPatch(props: AnimatedProps<PatchProps>) {\n this.add({ type: CommandType.DrawPatch, props });\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>) {\n this.add({ type: CommandType.DrawVertices, props });\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>) {\n this.add({ type: CommandType.DrawDiffRect, props });\n }\n\n drawText(props: AnimatedProps<TextProps>) {\n this.add({ type: CommandType.DrawText, props });\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>) {\n this.add({ type: CommandType.DrawTextPath, props });\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>) {\n this.add({ type: CommandType.DrawTextBlob, props });\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>) {\n this.add({ type: CommandType.DrawGlyphs, props });\n }\n\n drawPicture(props: AnimatedProps<PictureProps>) {\n this.add({ type: CommandType.DrawPicture, props });\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>) {\n this.add({ type: CommandType.DrawImageSVG, props });\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>) {\n this.add({ type: CommandType.DrawParagraph, props });\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>) {\n this.add({ type: CommandType.DrawAtlas, props });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["NodeType","isSharedValue","isColorFilter","isImageFilter","isPathEffect","isShader","CommandType","Recorder","constructor","_defineProperty","Set","getRecording","commands","paintPool","animationValues","processProps","props","animatedProps","hasAnimatedProps","key","prop","add","value","undefined","command","push","savePaint","type","SavePaint","restorePaint","RestorePaint","restorePaintDeclaration","RestorePaintDeclaration","materializePaint","MaterializePaint","pushPathEffect","pathEffectType","Error","PushPathEffect","pushImageFilter","imageFilterType","PushImageFilter","pushColorFilter","colorFilterType","PushColorFilter","pushShader","shaderType","Blend","PushShader","pushBlurMaskFilter","PushBlurMaskFilter","composePathEffect","ComposePathEffect","composeColorFilter","ComposeColorFilter","composeImageFilter","ComposeImageFilter","saveCTM","SaveCTM","restoreCTM","RestoreCTM","drawPaint","DrawPaint","saveLayer","SaveLayer","saveBackdropFilter","SaveBackdropFilter","drawBox","boxProps","shadows","forEach","shadow","DrawBox","drawImage","DrawImage","drawCircle","DrawCircle","drawPoints","DrawPoints","drawPath","DrawPath","drawRect","DrawRect","drawRRect","DrawRRect","drawOval","DrawOval","drawLine","DrawLine","drawPatch","DrawPatch","drawVertices","DrawVertices","drawDiffRect","DrawDiffRect","drawText","DrawText","drawTextPath","DrawTextPath","drawTextBlob","DrawTextBlob","drawGlyphs","DrawGlyphs","drawPicture","DrawPicture","drawImageSVG","DrawImageSVG","drawParagraph","DrawParagraph","drawAtlas","DrawAtlas"],"sources":["Recorder.ts"],"sourcesContent":["import type { SharedValue } from \"react-native-reanimated\";\n\nimport { NodeType } from \"../../dom/types\";\nimport type {\n BlurMaskFilterProps,\n CircleProps,\n CTMProps,\n ImageProps,\n PaintProps,\n PointsProps,\n PathProps,\n RectProps,\n RoundedRectProps,\n OvalProps,\n LineProps,\n PatchProps,\n VerticesProps,\n DiffRectProps,\n TextProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n PictureProps,\n ImageSVGProps,\n ParagraphProps,\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n} from \"../../dom/types\";\nimport type { AnimatedProps } from \"../../renderer\";\nimport { isSharedValue } from \"../utils\";\nimport { isColorFilter, isImageFilter, isPathEffect, isShader } from \"../Node\";\nimport type { SkPaint } from \"../../skia/types\";\n\nimport { CommandType } from \"./Core\";\nimport type { Command } from \"./Core\";\n\nexport interface Recording {\n commands: Command[];\n paintPool: SkPaint[];\n}\n\ninterface AnimationValues {\n animationValues: Set<SharedValue<unknown>>;\n}\n\nexport class Recorder {\n commands: Command[] = [];\n animationValues: Set<SharedValue<unknown>> = new Set();\n\n getRecording(): Recording & AnimationValues {\n return {\n commands: this.commands,\n paintPool: [],\n animationValues: this.animationValues,\n };\n }\n\n private processProps(props: Record<string, unknown>) {\n const animatedProps: Record<string, SharedValue<unknown>> = {};\n let hasAnimatedProps = false;\n\n for (const key in props) {\n const prop = props[key];\n if (isSharedValue(prop)) {\n this.animationValues.add(prop);\n props[key] = prop.value;\n animatedProps[key] = prop;\n hasAnimatedProps = true;\n }\n }\n\n return {\n props,\n animatedProps: hasAnimatedProps ? animatedProps : undefined,\n };\n }\n\n private add(command: Command) {\n if (command.props) {\n const { animatedProps } = this.processProps(\n command.props as Record<string, unknown>\n );\n if (animatedProps) {\n command.animatedProps = animatedProps;\n }\n }\n this.commands.push(command);\n }\n\n savePaint(props: AnimatedProps<PaintProps>) {\n this.add({ type: CommandType.SavePaint, props });\n }\n\n restorePaint() {\n this.add({ type: CommandType.RestorePaint });\n }\n\n restorePaintDeclaration() {\n this.add({ type: CommandType.RestorePaintDeclaration });\n }\n\n materializePaint() {\n this.add({ type: CommandType.MaterializePaint });\n }\n\n pushPathEffect(pathEffectType: NodeType, props: AnimatedProps<unknown>) {\n if (!isPathEffect(pathEffectType)) {\n throw new Error(\"Invalid color filter type: \" + pathEffectType);\n }\n this.add({\n type: CommandType.PushPathEffect,\n pathEffectType,\n props,\n });\n }\n\n pushImageFilter(imageFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isImageFilter(imageFilterType)) {\n throw new Error(\"Invalid color filter type: \" + imageFilterType);\n }\n this.add({\n type: CommandType.PushImageFilter,\n imageFilterType,\n props,\n });\n }\n\n pushColorFilter(colorFilterType: NodeType, props: AnimatedProps<unknown>) {\n if (!isColorFilter(colorFilterType)) {\n throw new Error(\"Invalid color filter type: \" + colorFilterType);\n }\n this.add({\n type: CommandType.PushColorFilter,\n colorFilterType,\n props,\n });\n }\n\n pushShader(shaderType: NodeType, props: AnimatedProps<unknown>) {\n if (!isShader(shaderType) && !(shaderType === NodeType.Blend)) {\n throw new Error(\"Invalid color filter type: \" + shaderType);\n }\n this.add({ type: CommandType.PushShader, shaderType, props });\n }\n\n pushBlurMaskFilter(props: AnimatedProps<BlurMaskFilterProps>) {\n this.add({ type: CommandType.PushBlurMaskFilter, props });\n }\n\n composePathEffect() {\n this.add({ type: CommandType.ComposePathEffect });\n }\n\n composeColorFilter() {\n this.add({ type: CommandType.ComposeColorFilter });\n }\n\n composeImageFilter() {\n this.add({ type: CommandType.ComposeImageFilter });\n }\n\n saveCTM(props: AnimatedProps<CTMProps>) {\n this.add({ type: CommandType.SaveCTM, props });\n }\n\n restoreCTM() {\n this.add({ type: CommandType.RestoreCTM });\n }\n\n drawPaint() {\n this.add({ type: CommandType.DrawPaint });\n }\n\n saveLayer() {\n this.add({ type: CommandType.SaveLayer });\n }\n\n saveBackdropFilter() {\n this.add({ type: CommandType.SaveBackdropFilter });\n }\n\n drawBox(\n boxProps: AnimatedProps<BoxProps>,\n shadows: {\n props: BoxShadowProps;\n animatedProps?: Record<string, SharedValue<unknown>>;\n }[]\n ) {\n shadows.forEach((shadow) => {\n if (shadow.props) {\n if (shadow.props) {\n const { animatedProps } = this.processProps(\n shadow.props as unknown as Record<string, unknown>\n );\n if (animatedProps) {\n shadow.animatedProps = animatedProps;\n }\n }\n }\n });\n this.add({ type: CommandType.DrawBox, props: boxProps, shadows });\n }\n\n drawImage(props: AnimatedProps<ImageProps>) {\n this.add({ type: CommandType.DrawImage, props });\n }\n\n drawCircle(props: AnimatedProps<CircleProps>) {\n this.add({ type: CommandType.DrawCircle, props });\n }\n drawPoints(props: AnimatedProps<PointsProps>) {\n this.add({ type: CommandType.DrawPoints, props });\n }\n\n drawPath(props: AnimatedProps<PathProps>) {\n this.add({ type: CommandType.DrawPath, props });\n }\n\n drawRect(props: AnimatedProps<RectProps>) {\n this.add({ type: CommandType.DrawRect, props });\n }\n\n drawRRect(props: AnimatedProps<RoundedRectProps>) {\n this.add({ type: CommandType.DrawRRect, props });\n }\n\n drawOval(props: AnimatedProps<OvalProps>) {\n this.add({ type: CommandType.DrawOval, props });\n }\n\n drawLine(props: AnimatedProps<LineProps>) {\n this.add({ type: CommandType.DrawLine, props });\n }\n\n drawPatch(props: AnimatedProps<PatchProps>) {\n this.add({ type: CommandType.DrawPatch, props });\n }\n\n drawVertices(props: AnimatedProps<VerticesProps>) {\n this.add({ type: CommandType.DrawVertices, props });\n }\n\n drawDiffRect(props: AnimatedProps<DiffRectProps>) {\n this.add({ type: CommandType.DrawDiffRect, props });\n }\n\n drawText(props: AnimatedProps<TextProps>) {\n this.add({ type: CommandType.DrawText, props });\n }\n\n drawTextPath(props: AnimatedProps<TextPathProps>) {\n this.add({ type: CommandType.DrawTextPath, props });\n }\n\n drawTextBlob(props: AnimatedProps<TextBlobProps>) {\n this.add({ type: CommandType.DrawTextBlob, props });\n }\n\n drawGlyphs(props: AnimatedProps<GlyphsProps>) {\n this.add({ type: CommandType.DrawGlyphs, props });\n }\n\n drawPicture(props: AnimatedProps<PictureProps>) {\n this.add({ type: CommandType.DrawPicture, props });\n }\n\n drawImageSVG(props: AnimatedProps<ImageSVGProps>) {\n this.add({ type: CommandType.DrawImageSVG, props });\n }\n\n drawParagraph(props: AnimatedProps<ParagraphProps>) {\n this.add({ type: CommandType.DrawParagraph, props });\n }\n\n drawAtlas(props: AnimatedProps<AtlasProps>) {\n this.add({ type: CommandType.DrawAtlas, props });\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { deflate, enumKey, fitRects, inflate, NodeType, processCircle, processPath, processRect, processRRect } from "../../../dom/nodes";
|
2
2
|
import { saturate } from "../../../renderer/processors";
|
3
|
-
import { BlendMode, BlurStyle, ClipOp, FillType, isRRect, PointMode, VertexMode } from "../../../skia/types";
|
3
|
+
import { BlendMode, BlurStyle, ClipOp, FillType, FilterMode, isCubicSampling, isRRect, MipmapMode, PointMode, VertexMode } from "../../../skia/types";
|
4
4
|
import { materialize } from "../../utils";
|
5
5
|
export const drawLine = (ctx, props) => {
|
6
6
|
"worklet";
|
@@ -76,7 +76,8 @@ export const drawImage = (ctx, props) => {
|
|
76
76
|
"worklet";
|
77
77
|
|
78
78
|
const {
|
79
|
-
image
|
79
|
+
image,
|
80
|
+
sampling
|
80
81
|
} = props;
|
81
82
|
if (image) {
|
82
83
|
var _props$fit;
|
@@ -91,7 +92,12 @@ export const drawImage = (ctx, props) => {
|
|
91
92
|
width: image.width(),
|
92
93
|
height: image.height()
|
93
94
|
}, rect);
|
94
|
-
|
95
|
+
if (sampling && isCubicSampling(sampling)) {
|
96
|
+
ctx.canvas.drawImageRectCubic(image, src, dst, sampling.B, sampling.C, ctx.paint);
|
97
|
+
} else {
|
98
|
+
var _sampling$filter, _sampling$mipmap;
|
99
|
+
ctx.canvas.drawImageRectOptions(image, src, dst, (_sampling$filter = sampling === null || sampling === void 0 ? void 0 : sampling.filter) !== null && _sampling$filter !== void 0 ? _sampling$filter : FilterMode.Linear, (_sampling$mipmap = sampling === null || sampling === void 0 ? void 0 : sampling.mipmap) !== null && _sampling$mipmap !== void 0 ? _sampling$mipmap : MipmapMode.None, ctx.paint);
|
100
|
+
}
|
95
101
|
}
|
96
102
|
};
|
97
103
|
export const drawPoints = (ctx, props) => {
|
@@ -345,11 +351,12 @@ export const drawAtlas = (ctx, props) => {
|
|
345
351
|
sprites,
|
346
352
|
transforms,
|
347
353
|
colors,
|
348
|
-
blendMode
|
354
|
+
blendMode,
|
355
|
+
sampling
|
349
356
|
} = props;
|
350
357
|
const blend = blendMode ? BlendMode[enumKey(blendMode)] : undefined;
|
351
358
|
if (image) {
|
352
|
-
ctx.canvas.drawAtlas(image, sprites, transforms, ctx.paint, blend, colors);
|
359
|
+
ctx.canvas.drawAtlas(image, sprites, transforms, ctx.paint, blend, colors, sampling);
|
353
360
|
}
|
354
361
|
};
|
355
362
|
export const drawCircle = (ctx, props) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["deflate","enumKey","fitRects","inflate","NodeType","processCircle","processPath","processRect","processRRect","saturate","BlendMode","BlurStyle","ClipOp","FillType","isRRect","PointMode","VertexMode","materialize","drawLine","ctx","props","p1","p2","canvas","x","y","paint","drawOval","rect","Skia","drawBox","children","box","defaultBox","opacity","getAlphaf","RRectXY","shadows","map","node","type","BoxShadow","filter","n","shadow","inner","color","blur","spread","dx","dy","lPaint","Paint","setColor","Color","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","Normal","drawRRect","delta","Point","Math","abs","save","clipRRect","Intersect","outer","drawDRRect","restore","drawImage","image","_props$fit","fit","src","dst","width","height","drawImageRect","drawPoints","points","mode","drawVertices","textures","colors","indices","blendMode","vertexMode","Triangles","vertices","MakeVertices","c","undefined","defaultBlendMode","DstOver","SrcOver","blend","drawDiffRect","drawTextPath","path","font","initialOffset","text","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","derived","TextBlob","MakeFromRSXform","drawTextBlob","drawText","drawPatch","texture","patch","pos","c2","c1","drawPath","start","trimStart","end","trimEnd","fillType","stroke","pathProps","hasStartOffset","hasEndOffset","hasStrokeOptions","hasFillType","willMutatePath","pristinePath","copy","setFillType","trim","drawRect","blob","drawGlyphs","glyphs","reduce","acc","glyph","id","positions","drawImageSVG","svg","translate","drawSvg","drawParagraph","paragraph","layout","drawPicture","picture","drawAtlas","sprites","transforms","drawCircle","r","drawFill","_props","drawPaint"],"sources":["Drawing.ts"],"sourcesContent":["import {\n deflate,\n enumKey,\n fitRects,\n inflate,\n NodeType,\n processCircle,\n processPath,\n processRect,\n processRRect,\n} from \"../../../dom/nodes\";\nimport type {\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n CircleProps,\n DiffRectProps,\n DrawingNodeProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n OvalProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextBlobProps,\n TextPathProps,\n TextProps,\n VerticesProps,\n} from \"../../../dom/types\";\nimport { saturate } from \"../../../renderer/processors\";\nimport type { SkPoint, SkRSXform } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ClipOp,\n FillType,\n isRRect,\n PointMode,\n VertexMode,\n} from \"../../../skia/types\";\nimport type { Node } from \"../../Node\";\nimport { materialize } from \"../../utils\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const drawLine = (ctx: DrawingContext, props: LineProps) => {\n \"worklet\";\n const { p1, p2 } = props;\n ctx.canvas.drawLine(p1.x, p1.y, p2.x, p2.y, ctx.paint);\n};\n\nexport const drawOval = (ctx: DrawingContext, props: OvalProps) => {\n \"worklet\";\n const rect = processRect(ctx.Skia, props);\n ctx.canvas.drawOval(rect, ctx.paint);\n};\n\nexport const drawBox = (\n ctx: DrawingContext,\n props: BoxProps,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children: Node<any>[]\n) => {\n \"worklet\";\n const { paint, Skia, canvas } = ctx;\n const { box: defaultBox } = props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox) ? defaultBox : Skia.RRectXY(defaultBox, 0, 0);\n const shadows = children\n .map((node) => {\n if (node.type === NodeType.BoxShadow) {\n return materialize(node.props);\n }\n return null;\n })\n .filter((n): n is BoxShadowProps => n !== null);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(inflate(Skia, box, spread, spread, dx, dy), lPaint);\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(Skia, box, spread, spread, dx, dy);\n const outer = inflate(Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n};\n\nexport const drawImage = (ctx: DrawingContext, props: ImageProps) => {\n \"worklet\";\n const { image } = props;\n if (image) {\n const fit = props.fit ?? \"contain\";\n const rect = processRect(ctx.Skia, props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n ctx.canvas.drawImageRect(image, src, dst, ctx.paint);\n }\n};\n\nexport const drawPoints = (ctx: DrawingContext, props: PointsProps) => {\n \"worklet\";\n const { points, mode } = props;\n ctx.canvas.drawPoints(PointMode[enumKey(mode)], points, ctx.paint);\n};\n\nexport const drawVertices = (ctx: DrawingContext, props: VerticesProps) => {\n \"worklet\";\n const { mode, textures, colors, indices, blendMode } = props;\n const vertexMode = mode ? VertexMode[enumKey(mode)] : VertexMode.Triangles;\n const vertices = ctx.Skia.MakeVertices(\n vertexMode,\n props.vertices,\n textures,\n colors ? colors.map((c) => ctx.Skia.Color(c)) : undefined,\n indices\n );\n const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n\n ctx.canvas.drawVertices(vertices, blend, ctx.paint);\n};\n\nexport const drawDiffRect = (ctx: DrawingContext, props: DiffRectProps) => {\n \"worklet\";\n const { outer, inner } = props;\n ctx.canvas.drawDRRect(outer, inner, ctx.paint);\n};\n\nexport const drawTextPath = (ctx: DrawingContext, props: TextPathProps) => {\n \"worklet\";\n const path = processPath(ctx.Skia, props.path);\n const { font, initialOffset } = props;\n if (font) {\n let { text } = props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = ctx.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(ctx.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n const derived = ctx.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n ctx.canvas.drawTextBlob(derived, 0, 0, ctx.paint);\n }\n};\n\nexport const drawText = (ctx: DrawingContext, props: TextProps) => {\n \"worklet\";\n const { text, x, y, font } = props;\n if (font != null) {\n ctx.canvas.drawText(text, x, y, ctx.paint, font);\n }\n};\n\nexport const drawPatch = (ctx: DrawingContext, props: PatchProps) => {\n \"worklet\";\n const { texture, blendMode, patch } = props;\n const defaultBlendMode = props.colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const mode = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n // Patch requires a path with the following constraints:\n // M tl\n // C c1 c2 br\n // C c1 c2 bl\n // C c1 c2 tl (the redundant point in the last command is removed)\n\n const points = [\n patch[0].pos,\n patch[0].c2,\n patch[1].c1,\n patch[1].pos,\n patch[1].c2,\n patch[2].c1,\n patch[2].pos,\n patch[2].c2,\n patch[3].c1,\n patch[3].pos,\n patch[3].c2,\n patch[0].c1,\n ];\n const colors = props.colors\n ? props.colors.map((c) => ctx.Skia.Color(c))\n : undefined;\n ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);\n};\n\nexport const drawPath = (ctx: DrawingContext, props: PathProps) => {\n \"worklet\";\n const {\n start: trimStart,\n end: trimEnd,\n fillType,\n stroke,\n ...pathProps\n } = props;\n const start = saturate(trimStart);\n const end = saturate(trimEnd);\n const hasStartOffset = start !== 0;\n const hasEndOffset = end !== 1;\n const hasStrokeOptions = stroke !== undefined;\n const hasFillType = !!fillType;\n const willMutatePath =\n hasStartOffset || hasEndOffset || hasStrokeOptions || hasFillType;\n const pristinePath = processPath(ctx.Skia, pathProps.path);\n const path = willMutatePath ? pristinePath.copy() : pristinePath;\n if (hasFillType) {\n path.setFillType(FillType[enumKey(fillType)]);\n }\n if (hasStrokeOptions) {\n path.stroke(stroke);\n }\n if (hasStartOffset || hasEndOffset) {\n path.trim(start, end, false);\n }\n ctx.canvas.drawPath(path, ctx.paint);\n};\n\nexport const drawRect = (ctx: DrawingContext, props: RectProps) => {\n \"worklet\";\n const derived = processRect(ctx.Skia, props);\n ctx.canvas.drawRect(derived, ctx.paint);\n};\n\nexport const drawRRect = (ctx: DrawingContext, props: RoundedRectProps) => {\n \"worklet\";\n const derived = processRRect(ctx.Skia, props);\n ctx.canvas.drawRRect(derived, ctx.paint);\n};\n\nexport const drawTextBlob = (ctx: DrawingContext, props: TextBlobProps) => {\n \"worklet\";\n const { blob, x, y } = props;\n ctx.canvas.drawTextBlob(blob, x, y, ctx.paint);\n};\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport const drawGlyphs = (ctx: DrawingContext, props: GlyphsProps) => {\n \"worklet\";\n const derived = props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n const { glyphs, positions } = derived;\n const { x, y, font } = props;\n if (font) {\n ctx.canvas.drawGlyphs(glyphs, positions, x, y, font, ctx.paint);\n }\n};\n\nexport const drawImageSVG = (ctx: DrawingContext, props: ImageSVGProps) => {\n \"worklet\";\n const { canvas } = ctx;\n const { svg } = props;\n const { x, y, width, height } = props.rect\n ? props.rect\n : { x: props.x, y: props.y, width: props.width, height: props.height };\n if (svg === null) {\n return;\n }\n canvas.save();\n if (x && y) {\n canvas.translate(x, y);\n }\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n};\n\nexport const drawParagraph = (ctx: DrawingContext, props: ParagraphProps) => {\n \"worklet\";\n const { paragraph, x, y, width } = props;\n if (paragraph) {\n paragraph.layout(width);\n paragraph.paint(ctx.canvas, x, y);\n }\n};\n\nexport const drawPicture = (ctx: DrawingContext, props: PictureProps) => {\n \"worklet\";\n const { picture } = props;\n ctx.canvas.drawPicture(picture);\n};\n\nexport const drawAtlas = (ctx: DrawingContext, props: AtlasProps) => {\n \"worklet\";\n const { image, sprites, transforms, colors, blendMode } = props;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : undefined;\n if (image) {\n ctx.canvas.drawAtlas(image, sprites, transforms, ctx.paint, blend, colors);\n }\n};\n\nexport const drawCircle = (ctx: DrawingContext, props: CircleProps) => {\n \"worklet\";\n const { c } = processCircle(props);\n const { r } = props;\n ctx.canvas.drawCircle(c.x, c.y, r, ctx.paint);\n};\n\nexport const drawFill = (ctx: DrawingContext, _props: DrawingNodeProps) => {\n \"worklet\";\n ctx.canvas.drawPaint(ctx.paint);\n};\n"],"mappings":"AAAA,SACEA,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,OAAO,EACPC,QAAQ,EACRC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,YAAY,QACP,oBAAoB;AAyB3B,SAASC,QAAQ,QAAQ,8BAA8B;AAEvD,SACEC,SAAS,EACTC,SAAS,EACTC,MAAM,EACNC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,UAAU,QACL,qBAAqB;AAE5B,SAASC,WAAW,QAAQ,aAAa;AAGzC,OAAO,MAAMC,QAAQ,GAAGA,CAACC,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAM;IAAEC,EAAE;IAAEC;EAAG,CAAC,GAAGF,KAAK;EACxBD,GAAG,CAACI,MAAM,CAACL,QAAQ,CAACG,EAAE,CAACG,CAAC,EAAEH,EAAE,CAACI,CAAC,EAAEH,EAAE,CAACE,CAAC,EAAEF,EAAE,CAACG,CAAC,EAAEN,GAAG,CAACO,KAAK,CAAC;AACxD,CAAC;AAED,OAAO,MAAMC,QAAQ,GAAGA,CAACR,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAMQ,IAAI,GAAGrB,WAAW,CAACY,GAAG,CAACU,IAAI,EAAET,KAAK,CAAC;EACzCD,GAAG,CAACI,MAAM,CAACI,QAAQ,CAACC,IAAI,EAAET,GAAG,CAACO,KAAK,CAAC;AACtC,CAAC;AAED,OAAO,MAAMI,OAAO,GAAGA,CACrBX,GAAmB,EACnBC,KAAe,EAEfW,QAAqB,KAClB;EACH,SAAS;;EACT,MAAM;IAAEL,KAAK;IAAEG,IAAI;IAAEN;EAAO,CAAC,GAAGJ,GAAG;EACnC,MAAM;IAAEa,GAAG,EAAEC;EAAW,CAAC,GAAGb,KAAK;EACjC,MAAMc,OAAO,GAAGR,KAAK,CAACS,SAAS,CAAC,CAAC;EACjC,MAAMH,GAAG,GAAGlB,OAAO,CAACmB,UAAU,CAAC,GAAGA,UAAU,GAAGJ,IAAI,CAACO,OAAO,CAACH,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;EAC7E,MAAMI,OAAO,GAAGN,QAAQ,CACrBO,GAAG,CAAEC,IAAI,IAAK;IACb,IAAIA,IAAI,CAACC,IAAI,KAAKpC,QAAQ,CAACqC,SAAS,EAAE;MACpC,OAAOxB,WAAW,CAACsB,IAAI,CAACnB,KAAK,CAAC;IAChC;IACA,OAAO,IAAI;EACb,CAAC,CAAC,CACDsB,MAAM,CAAEC,CAAC,IAA0BA,CAAC,KAAK,IAAI,CAAC;EACjDN,OAAO,CACJK,MAAM,CAAEE,MAAM,IAAK,CAACA,MAAM,CAACC,KAAK,CAAC,CACjCP,GAAG,CAAEM,MAAM,IAAK;IACf,MAAM;MAAEE,KAAK,GAAG,OAAO;MAAEC,IAAI;MAAEC,MAAM,GAAG,CAAC;MAAEC,EAAE,GAAG,CAAC;MAAEC,EAAE,GAAG;IAAE,CAAC,GAAGN,MAAM;IACpE,MAAMO,MAAM,GAAGtB,IAAI,CAACuB,KAAK,CAAC,CAAC;IAC3BD,MAAM,CAACE,QAAQ,CAACxB,IAAI,CAACyB,KAAK,CAACR,KAAK,CAAC,CAAC;IAClCK,MAAM,CAACI,SAAS,CAAC7B,KAAK,CAACS,SAAS,CAAC,CAAC,GAAGD,OAAO,CAAC;IAC7CiB,MAAM,CAACK,aAAa,CAClB3B,IAAI,CAAC4B,UAAU,CAACC,QAAQ,CAAC/C,SAAS,CAACgD,MAAM,EAAEZ,IAAI,EAAE,IAAI,CACvD,CAAC;IACDxB,MAAM,CAACqC,SAAS,CAACzD,OAAO,CAAC0B,IAAI,EAAEG,GAAG,EAAEgB,MAAM,EAAEA,MAAM,EAAEC,EAAE,EAAEC,EAAE,CAAC,EAAEC,MAAM,CAAC;EACtE,CAAC,CAAC;EAEJ5B,MAAM,CAACqC,SAAS,CAAC5B,GAAG,EAAEN,KAAK,CAAC;EAE5BW,OAAO,CACJK,MAAM,CAAEE,MAAM,IAAKA,MAAM,CAACC,KAAK,CAAC,CAChCP,GAAG,CAAEM,MAAM,IAAK;IACf,MAAM;MAAEE,KAAK,GAAG,OAAO;MAAEC,IAAI;MAAEC,MAAM,GAAG,CAAC;MAAEC,EAAE,GAAG,CAAC;MAAEC,EAAE,GAAG;IAAE,CAAC,GAAGN,MAAM;IACpE,MAAMiB,KAAK,GAAGhC,IAAI,CAACiC,KAAK,CAAC,EAAE,GAAGC,IAAI,CAACC,GAAG,CAACf,EAAE,CAAC,EAAE,EAAE,GAAGc,IAAI,CAACC,GAAG,CAACd,EAAE,CAAC,CAAC;IAC9D3B,MAAM,CAAC0C,IAAI,CAAC,CAAC;IACb1C,MAAM,CAAC2C,SAAS,CAAClC,GAAG,EAAEpB,MAAM,CAACuD,SAAS,EAAE,KAAK,CAAC;IAC9C,MAAMhB,MAAM,GAAGtB,IAAI,CAACuB,KAAK,CAAC,CAAC;IAC3BD,MAAM,CAACE,QAAQ,CAACxB,IAAI,CAACyB,KAAK,CAACR,KAAK,CAAC,CAAC;IAClCK,MAAM,CAACI,SAAS,CAAC7B,KAAK,CAACS,SAAS,CAAC,CAAC,GAAGD,OAAO,CAAC;IAE7CiB,MAAM,CAACK,aAAa,CAClB3B,IAAI,CAAC4B,UAAU,CAACC,QAAQ,CAAC/C,SAAS,CAACgD,MAAM,EAAEZ,IAAI,EAAE,IAAI,CACvD,CAAC;IACD,MAAMF,KAAK,GAAG7C,OAAO,CAAC6B,IAAI,EAAEG,GAAG,EAAEgB,MAAM,EAAEA,MAAM,EAAEC,EAAE,EAAEC,EAAE,CAAC;IACxD,MAAMkB,KAAK,GAAGjE,OAAO,CAAC0B,IAAI,EAAEG,GAAG,EAAE6B,KAAK,CAACrC,CAAC,EAAEqC,KAAK,CAACpC,CAAC,CAAC;IAClDF,MAAM,CAAC8C,UAAU,CAACD,KAAK,EAAEvB,KAAK,EAAEM,MAAM,CAAC;IACvC5B,MAAM,CAAC+C,OAAO,CAAC,CAAC;EAClB,CAAC,CAAC;AACN,CAAC;AAED,OAAO,MAAMC,SAAS,GAAGA,CAACpD,GAAmB,EAAEC,KAAiB,KAAK;EACnE,SAAS;;EACT,MAAM;IAAEoD;EAAM,CAAC,GAAGpD,KAAK;EACvB,IAAIoD,KAAK,EAAE;IAAA,IAAAC,UAAA;IACT,MAAMC,GAAG,IAAAD,UAAA,GAAGrD,KAAK,CAACsD,GAAG,cAAAD,UAAA,cAAAA,UAAA,GAAI,SAAS;IAClC,MAAM7C,IAAI,GAAGrB,WAAW,CAACY,GAAG,CAACU,IAAI,EAAET,KAAK,CAAC;IACzC,MAAM;MAAEuD,GAAG;MAAEC;IAAI,CAAC,GAAG1E,QAAQ,CAC3BwE,GAAG,EACH;MACElD,CAAC,EAAE,CAAC;MACJC,CAAC,EAAE,CAAC;MACJoD,KAAK,EAAEL,KAAK,CAACK,KAAK,CAAC,CAAC;MACpBC,MAAM,EAAEN,KAAK,CAACM,MAAM,CAAC;IACvB,CAAC,EACDlD,IACF,CAAC;IACDT,GAAG,CAACI,MAAM,CAACwD,aAAa,CAACP,KAAK,EAAEG,GAAG,EAAEC,GAAG,EAAEzD,GAAG,CAACO,KAAK,CAAC;EACtD;AACF,CAAC;AAED,OAAO,MAAMsD,UAAU,GAAGA,CAAC7D,GAAmB,EAAEC,KAAkB,KAAK;EACrE,SAAS;;EACT,MAAM;IAAE6D,MAAM;IAAEC;EAAK,CAAC,GAAG9D,KAAK;EAC9BD,GAAG,CAACI,MAAM,CAACyD,UAAU,CAACjE,SAAS,CAACd,OAAO,CAACiF,IAAI,CAAC,CAAC,EAAED,MAAM,EAAE9D,GAAG,CAACO,KAAK,CAAC;AACpE,CAAC;AAED,OAAO,MAAMyD,YAAY,GAAGA,CAAChE,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAE8D,IAAI;IAAEE,QAAQ;IAAEC,MAAM;IAAEC,OAAO;IAAEC;EAAU,CAAC,GAAGnE,KAAK;EAC5D,MAAMoE,UAAU,GAAGN,IAAI,GAAGlE,UAAU,CAACf,OAAO,CAACiF,IAAI,CAAC,CAAC,GAAGlE,UAAU,CAACyE,SAAS;EAC1E,MAAMC,QAAQ,GAAGvE,GAAG,CAACU,IAAI,CAAC8D,YAAY,CACpCH,UAAU,EACVpE,KAAK,CAACsE,QAAQ,EACdN,QAAQ,EACRC,MAAM,GAAGA,MAAM,CAAC/C,GAAG,CAAEsD,CAAC,IAAKzE,GAAG,CAACU,IAAI,CAACyB,KAAK,CAACsC,CAAC,CAAC,CAAC,GAAGC,SAAS,EACzDP,OACF,CAAC;EACD,MAAMQ,gBAAgB,GAAGT,MAAM,GAAG3E,SAAS,CAACqF,OAAO,GAAGrF,SAAS,CAACsF,OAAO;EACvE,MAAMC,KAAK,GAAGV,SAAS,GAAG7E,SAAS,CAACT,OAAO,CAACsF,SAAS,CAAC,CAAC,GAAGO,gBAAgB;EAE1E3E,GAAG,CAACI,MAAM,CAAC4D,YAAY,CAACO,QAAQ,EAAEO,KAAK,EAAE9E,GAAG,CAACO,KAAK,CAAC;AACrD,CAAC;AAED,OAAO,MAAMwE,YAAY,GAAGA,CAAC/E,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAEgD,KAAK;IAAEvB;EAAM,CAAC,GAAGzB,KAAK;EAC9BD,GAAG,CAACI,MAAM,CAAC8C,UAAU,CAACD,KAAK,EAAEvB,KAAK,EAAE1B,GAAG,CAACO,KAAK,CAAC;AAChD,CAAC;AAED,OAAO,MAAMyE,YAAY,GAAGA,CAAChF,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAMgF,IAAI,GAAG9F,WAAW,CAACa,GAAG,CAACU,IAAI,EAAET,KAAK,CAACgF,IAAI,CAAC;EAC9C,MAAM;IAAEC,IAAI;IAAEC;EAAc,CAAC,GAAGlF,KAAK;EACrC,IAAIiF,IAAI,EAAE;IACR,IAAI;MAAEE;IAAK,CAAC,GAAGnF,KAAK;IACpB,MAAMoF,GAAG,GAAGH,IAAI,CAACI,WAAW,CAACF,IAAI,CAAC;IAClC,MAAMG,MAAM,GAAGL,IAAI,CAACM,cAAc,CAACH,GAAG,CAAC;IACvC,MAAMI,GAAgB,GAAG,EAAE;IAC3B,MAAMC,IAAI,GAAG1F,GAAG,CAACU,IAAI,CAACiF,kBAAkB,CAACV,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,IAAIW,IAAI,GAAGF,IAAI,CAACG,IAAI,CAAC,CAAC;IACtB,IAAIC,IAAI,GAAGX,aAAa;IACxB,KAAK,IAAIY,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGX,IAAI,CAACY,MAAM,IAAIJ,IAAI,EAAEG,CAAC,EAAE,EAAE;MAC5C,MAAMrC,KAAK,GAAG6B,MAAM,CAACQ,CAAC,CAAC;MACvBD,IAAI,IAAIpC,KAAK,GAAG,CAAC;MACjB,IAAIoC,IAAI,GAAGF,IAAI,CAACI,MAAM,CAAC,CAAC,EAAE;QACxB;QACAJ,IAAI,GAAGF,IAAI,CAACG,IAAI,CAAC,CAAC;QAClB,IAAI,CAACD,IAAI,EAAE;UACT;UACA;UACAR,IAAI,GAAGA,IAAI,CAACa,SAAS,CAAC,CAAC,EAAEF,CAAC,CAAC;UAC3B;QACF;QACAD,IAAI,GAAGpC,KAAK,GAAG,CAAC;MAClB;MACA;MACA;MACA,MAAM,CAACwC,CAAC,EAAEC,CAAC,CAAC,GAAGP,IAAI,CAACQ,SAAS,CAACN,IAAI,CAAC;MACnC,MAAMO,SAAS,GAAGH,CAAC,CAAC7F,CAAC,GAAIqD,KAAK,GAAG,CAAC,GAAIyC,CAAC,CAAC9F,CAAC;MACzC,MAAMiG,SAAS,GAAGJ,CAAC,CAAC5F,CAAC,GAAIoD,KAAK,GAAG,CAAC,GAAIyC,CAAC,CAAC7F,CAAC;MACzCmF,GAAG,CAACc,IAAI,CAACvG,GAAG,CAACU,IAAI,CAAC8F,OAAO,CAACL,CAAC,CAAC9F,CAAC,EAAE8F,CAAC,CAAC7F,CAAC,EAAE+F,SAAS,EAAEC,SAAS,CAAC,CAAC;MAC1DR,IAAI,IAAIpC,KAAK,GAAG,CAAC;IACnB;IACA,MAAM+C,OAAO,GAAGzG,GAAG,CAACU,IAAI,CAACgG,QAAQ,CAACC,eAAe,CAACvB,IAAI,EAAEK,GAAG,EAAEP,IAAI,CAAC;IAClElF,GAAG,CAACI,MAAM,CAACwG,YAAY,CAACH,OAAO,EAAE,CAAC,EAAE,CAAC,EAAEzG,GAAG,CAACO,KAAK,CAAC;EACnD;AACF,CAAC;AAED,OAAO,MAAMsG,QAAQ,GAAGA,CAAC7G,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAM;IAAEmF,IAAI;IAAE/E,CAAC;IAAEC,CAAC;IAAE4E;EAAK,CAAC,GAAGjF,KAAK;EAClC,IAAIiF,IAAI,IAAI,IAAI,EAAE;IAChBlF,GAAG,CAACI,MAAM,CAACyG,QAAQ,CAACzB,IAAI,EAAE/E,CAAC,EAAEC,CAAC,EAAEN,GAAG,CAACO,KAAK,EAAE2E,IAAI,CAAC;EAClD;AACF,CAAC;AAED,OAAO,MAAM4B,SAAS,GAAGA,CAAC9G,GAAmB,EAAEC,KAAiB,KAAK;EACnE,SAAS;;EACT,MAAM;IAAE8G,OAAO;IAAE3C,SAAS;IAAE4C;EAAM,CAAC,GAAG/G,KAAK;EAC3C,MAAM0E,gBAAgB,GAAG1E,KAAK,CAACiE,MAAM,GAAG3E,SAAS,CAACqF,OAAO,GAAGrF,SAAS,CAACsF,OAAO;EAC7E,MAAMd,IAAI,GAAGK,SAAS,GAAG7E,SAAS,CAACT,OAAO,CAACsF,SAAS,CAAC,CAAC,GAAGO,gBAAgB;EACzE;EACA;EACA;EACA;EACA;;EAEA,MAAMb,MAAM,GAAG,CACbkD,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,EACXH,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,EACXH,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,EACXH,KAAK,CAAC,CAAC,CAAC,CAACC,GAAG,EACZD,KAAK,CAAC,CAAC,CAAC,CAACE,EAAE,EACXF,KAAK,CAAC,CAAC,CAAC,CAACG,EAAE,CACZ;EACD,MAAMjD,MAAM,GAAGjE,KAAK,CAACiE,MAAM,GACvBjE,KAAK,CAACiE,MAAM,CAAC/C,GAAG,CAAEsD,CAAC,IAAKzE,GAAG,CAACU,IAAI,CAACyB,KAAK,CAACsC,CAAC,CAAC,CAAC,GAC1CC,SAAS;EACb1E,GAAG,CAACI,MAAM,CAAC0G,SAAS,CAAChD,MAAM,EAAEI,MAAM,EAAE6C,OAAO,EAAEhD,IAAI,EAAE/D,GAAG,CAACO,KAAK,CAAC;AAChE,CAAC;AAED,OAAO,MAAM6G,QAAQ,GAAGA,CAACpH,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAM;IACJoH,KAAK,EAAEC,SAAS;IAChBC,GAAG,EAAEC,OAAO;IACZC,QAAQ;IACRC,MAAM;IACN,GAAGC;EACL,CAAC,GAAG1H,KAAK;EACT,MAAMoH,KAAK,GAAG/H,QAAQ,CAACgI,SAAS,CAAC;EACjC,MAAMC,GAAG,GAAGjI,QAAQ,CAACkI,OAAO,CAAC;EAC7B,MAAMI,cAAc,GAAGP,KAAK,KAAK,CAAC;EAClC,MAAMQ,YAAY,GAAGN,GAAG,KAAK,CAAC;EAC9B,MAAMO,gBAAgB,GAAGJ,MAAM,KAAKhD,SAAS;EAC7C,MAAMqD,WAAW,GAAG,CAAC,CAACN,QAAQ;EAC9B,MAAMO,cAAc,GAClBJ,cAAc,IAAIC,YAAY,IAAIC,gBAAgB,IAAIC,WAAW;EACnE,MAAME,YAAY,GAAG9I,WAAW,CAACa,GAAG,CAACU,IAAI,EAAEiH,SAAS,CAAC1C,IAAI,CAAC;EAC1D,MAAMA,IAAI,GAAG+C,cAAc,GAAGC,YAAY,CAACC,IAAI,CAAC,CAAC,GAAGD,YAAY;EAChE,IAAIF,WAAW,EAAE;IACf9C,IAAI,CAACkD,WAAW,CAACzI,QAAQ,CAACZ,OAAO,CAAC2I,QAAQ,CAAC,CAAC,CAAC;EAC/C;EACA,IAAIK,gBAAgB,EAAE;IACpB7C,IAAI,CAACyC,MAAM,CAACA,MAAM,CAAC;EACrB;EACA,IAAIE,cAAc,IAAIC,YAAY,EAAE;IAClC5C,IAAI,CAACmD,IAAI,CAACf,KAAK,EAAEE,GAAG,EAAE,KAAK,CAAC;EAC9B;EACAvH,GAAG,CAACI,MAAM,CAACgH,QAAQ,CAACnC,IAAI,EAAEjF,GAAG,CAACO,KAAK,CAAC;AACtC,CAAC;AAED,OAAO,MAAM8H,QAAQ,GAAGA,CAACrI,GAAmB,EAAEC,KAAgB,KAAK;EACjE,SAAS;;EACT,MAAMwG,OAAO,GAAGrH,WAAW,CAACY,GAAG,CAACU,IAAI,EAAET,KAAK,CAAC;EAC5CD,GAAG,CAACI,MAAM,CAACiI,QAAQ,CAAC5B,OAAO,EAAEzG,GAAG,CAACO,KAAK,CAAC;AACzC,CAAC;AAED,OAAO,MAAMkC,SAAS,GAAGA,CAACzC,GAAmB,EAAEC,KAAuB,KAAK;EACzE,SAAS;;EACT,MAAMwG,OAAO,GAAGpH,YAAY,CAACW,GAAG,CAACU,IAAI,EAAET,KAAK,CAAC;EAC7CD,GAAG,CAACI,MAAM,CAACqC,SAAS,CAACgE,OAAO,EAAEzG,GAAG,CAACO,KAAK,CAAC;AAC1C,CAAC;AAED,OAAO,MAAMqG,YAAY,GAAGA,CAAC5G,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAEqI,IAAI;IAAEjI,CAAC;IAAEC;EAAE,CAAC,GAAGL,KAAK;EAC5BD,GAAG,CAACI,MAAM,CAACwG,YAAY,CAAC0B,IAAI,EAAEjI,CAAC,EAAEC,CAAC,EAAEN,GAAG,CAACO,KAAK,CAAC;AAChD,CAAC;AAOD,OAAO,MAAMgI,UAAU,GAAGA,CAACvI,GAAmB,EAAEC,KAAkB,KAAK;EACrE,SAAS;;EACT,MAAMwG,OAAO,GAAGxG,KAAK,CAACuI,MAAM,CAACC,MAAM,CACjC,CAACC,GAAG,EAAEC,KAAK,KAAK;IACd,MAAM;MAAEC,EAAE;MAAE3B;IAAI,CAAC,GAAG0B,KAAK;IACzBD,GAAG,CAACF,MAAM,CAACjC,IAAI,CAACqC,EAAE,CAAC;IACnBF,GAAG,CAACG,SAAS,CAACtC,IAAI,CAACU,GAAG,CAAC;IACvB,OAAOyB,GAAG;EACZ,CAAC,EACD;IAAEF,MAAM,EAAE,EAAE;IAAEK,SAAS,EAAE;EAAG,CAC9B,CAAC;EACD,MAAM;IAAEL,MAAM;IAAEK;EAAU,CAAC,GAAGpC,OAAO;EACrC,MAAM;IAAEpG,CAAC;IAAEC,CAAC;IAAE4E;EAAK,CAAC,GAAGjF,KAAK;EAC5B,IAAIiF,IAAI,EAAE;IACRlF,GAAG,CAACI,MAAM,CAACmI,UAAU,CAACC,MAAM,EAAEK,SAAS,EAAExI,CAAC,EAAEC,CAAC,EAAE4E,IAAI,EAAElF,GAAG,CAACO,KAAK,CAAC;EACjE;AACF,CAAC;AAED,OAAO,MAAMuI,YAAY,GAAGA,CAAC9I,GAAmB,EAAEC,KAAoB,KAAK;EACzE,SAAS;;EACT,MAAM;IAAEG;EAAO,CAAC,GAAGJ,GAAG;EACtB,MAAM;IAAE+I;EAAI,CAAC,GAAG9I,KAAK;EACrB,MAAM;IAAEI,CAAC;IAAEC,CAAC;IAAEoD,KAAK;IAAEC;EAAO,CAAC,GAAG1D,KAAK,CAACQ,IAAI,GACtCR,KAAK,CAACQ,IAAI,GACV;IAAEJ,CAAC,EAAEJ,KAAK,CAACI,CAAC;IAAEC,CAAC,EAAEL,KAAK,CAACK,CAAC;IAAEoD,KAAK,EAAEzD,KAAK,CAACyD,KAAK;IAAEC,MAAM,EAAE1D,KAAK,CAAC0D;EAAO,CAAC;EACxE,IAAIoF,GAAG,KAAK,IAAI,EAAE;IAChB;EACF;EACA3I,MAAM,CAAC0C,IAAI,CAAC,CAAC;EACb,IAAIzC,CAAC,IAAIC,CAAC,EAAE;IACVF,MAAM,CAAC4I,SAAS,CAAC3I,CAAC,EAAEC,CAAC,CAAC;EACxB;EACAF,MAAM,CAAC6I,OAAO,CAACF,GAAG,EAAErF,KAAK,EAAEC,MAAM,CAAC;EAClCvD,MAAM,CAAC+C,OAAO,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,MAAM+F,aAAa,GAAGA,CAAClJ,GAAmB,EAAEC,KAAqB,KAAK;EAC3E,SAAS;;EACT,MAAM;IAAEkJ,SAAS;IAAE9I,CAAC;IAAEC,CAAC;IAAEoD;EAAM,CAAC,GAAGzD,KAAK;EACxC,IAAIkJ,SAAS,EAAE;IACbA,SAAS,CAACC,MAAM,CAAC1F,KAAK,CAAC;IACvByF,SAAS,CAAC5I,KAAK,CAACP,GAAG,CAACI,MAAM,EAAEC,CAAC,EAAEC,CAAC,CAAC;EACnC;AACF,CAAC;AAED,OAAO,MAAM+I,WAAW,GAAGA,CAACrJ,GAAmB,EAAEC,KAAmB,KAAK;EACvE,SAAS;;EACT,MAAM;IAAEqJ;EAAQ,CAAC,GAAGrJ,KAAK;EACzBD,GAAG,CAACI,MAAM,CAACiJ,WAAW,CAACC,OAAO,CAAC;AACjC,CAAC;AAED,OAAO,MAAMC,SAAS,GAAGA,CAACvJ,GAAmB,EAAEC,KAAiB,KAAK;EACnE,SAAS;;EACT,MAAM;IAAEoD,KAAK;IAAEmG,OAAO;IAAEC,UAAU;IAAEvF,MAAM;IAAEE;EAAU,CAAC,GAAGnE,KAAK;EAC/D,MAAM6E,KAAK,GAAGV,SAAS,GAAG7E,SAAS,CAACT,OAAO,CAACsF,SAAS,CAAC,CAAC,GAAGM,SAAS;EACnE,IAAIrB,KAAK,EAAE;IACTrD,GAAG,CAACI,MAAM,CAACmJ,SAAS,CAAClG,KAAK,EAAEmG,OAAO,EAAEC,UAAU,EAAEzJ,GAAG,CAACO,KAAK,EAAEuE,KAAK,EAAEZ,MAAM,CAAC;EAC5E;AACF,CAAC;AAED,OAAO,MAAMwF,UAAU,GAAGA,CAAC1J,GAAmB,EAAEC,KAAkB,KAAK;EACrE,SAAS;;EACT,MAAM;IAAEwE;EAAE,CAAC,GAAGvF,aAAa,CAACe,KAAK,CAAC;EAClC,MAAM;IAAE0J;EAAE,CAAC,GAAG1J,KAAK;EACnBD,GAAG,CAACI,MAAM,CAACsJ,UAAU,CAACjF,CAAC,CAACpE,CAAC,EAAEoE,CAAC,CAACnE,CAAC,EAAEqJ,CAAC,EAAE3J,GAAG,CAACO,KAAK,CAAC;AAC/C,CAAC;AAED,OAAO,MAAMqJ,QAAQ,GAAGA,CAAC5J,GAAmB,EAAE6J,MAAwB,KAAK;EACzE,SAAS;;EACT7J,GAAG,CAACI,MAAM,CAAC0J,SAAS,CAAC9J,GAAG,CAACO,KAAK,CAAC;AACjC,CAAC","ignoreList":[]}
|
1
|
+
{"version":3,"names":["deflate","enumKey","fitRects","inflate","NodeType","processCircle","processPath","processRect","processRRect","saturate","BlendMode","BlurStyle","ClipOp","FillType","FilterMode","isCubicSampling","isRRect","MipmapMode","PointMode","VertexMode","materialize","drawLine","ctx","props","p1","p2","canvas","x","y","paint","drawOval","rect","Skia","drawBox","children","box","defaultBox","opacity","getAlphaf","RRectXY","shadows","map","node","type","BoxShadow","filter","n","shadow","inner","color","blur","spread","dx","dy","lPaint","Paint","setColor","Color","setAlphaf","setMaskFilter","MaskFilter","MakeBlur","Normal","drawRRect","delta","Point","Math","abs","save","clipRRect","Intersect","outer","drawDRRect","restore","drawImage","image","sampling","_props$fit","fit","src","dst","width","height","drawImageRectCubic","B","C","_sampling$filter","_sampling$mipmap","drawImageRectOptions","Linear","mipmap","None","drawPoints","points","mode","drawVertices","textures","colors","indices","blendMode","vertexMode","Triangles","vertices","MakeVertices","c","undefined","defaultBlendMode","DstOver","SrcOver","blend","drawDiffRect","drawTextPath","path","font","initialOffset","text","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","derived","TextBlob","MakeFromRSXform","drawTextBlob","drawText","drawPatch","texture","patch","pos","c2","c1","drawPath","start","trimStart","end","trimEnd","fillType","stroke","pathProps","hasStartOffset","hasEndOffset","hasStrokeOptions","hasFillType","willMutatePath","pristinePath","copy","setFillType","trim","drawRect","blob","drawGlyphs","glyphs","reduce","acc","glyph","id","positions","drawImageSVG","svg","translate","drawSvg","drawParagraph","paragraph","layout","drawPicture","picture","drawAtlas","sprites","transforms","drawCircle","r","drawFill","_props","drawPaint"],"sources":["Drawing.ts"],"sourcesContent":["import {\n deflate,\n enumKey,\n fitRects,\n inflate,\n NodeType,\n processCircle,\n processPath,\n processRect,\n processRRect,\n} from \"../../../dom/nodes\";\nimport type {\n AtlasProps,\n BoxProps,\n BoxShadowProps,\n CircleProps,\n DiffRectProps,\n DrawingNodeProps,\n GlyphsProps,\n ImageProps,\n ImageSVGProps,\n LineProps,\n OvalProps,\n ParagraphProps,\n PatchProps,\n PathProps,\n PictureProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextBlobProps,\n TextPathProps,\n TextProps,\n VerticesProps,\n} from \"../../../dom/types\";\nimport { saturate } from \"../../../renderer/processors\";\nimport type { SkPoint, SkRSXform } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ClipOp,\n FillType,\n FilterMode,\n isCubicSampling,\n isRRect,\n MipmapMode,\n PointMode,\n VertexMode,\n} from \"../../../skia/types\";\nimport type { Node } from \"../../Node\";\nimport { materialize } from \"../../utils\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nexport const drawLine = (ctx: DrawingContext, props: LineProps) => {\n \"worklet\";\n const { p1, p2 } = props;\n ctx.canvas.drawLine(p1.x, p1.y, p2.x, p2.y, ctx.paint);\n};\n\nexport const drawOval = (ctx: DrawingContext, props: OvalProps) => {\n \"worklet\";\n const rect = processRect(ctx.Skia, props);\n ctx.canvas.drawOval(rect, ctx.paint);\n};\n\nexport const drawBox = (\n ctx: DrawingContext,\n props: BoxProps,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n children: Node<any>[]\n) => {\n \"worklet\";\n const { paint, Skia, canvas } = ctx;\n const { box: defaultBox } = props;\n const opacity = paint.getAlphaf();\n const box = isRRect(defaultBox) ? defaultBox : Skia.RRectXY(defaultBox, 0, 0);\n const shadows = children\n .map((node) => {\n if (node.type === NodeType.BoxShadow) {\n return materialize(node.props);\n }\n return null;\n })\n .filter((n): n is BoxShadowProps => n !== null);\n shadows\n .filter((shadow) => !shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n canvas.drawRRect(inflate(Skia, box, spread, spread, dx, dy), lPaint);\n });\n\n canvas.drawRRect(box, paint);\n\n shadows\n .filter((shadow) => shadow.inner)\n .map((shadow) => {\n const { color = \"black\", blur, spread = 0, dx = 0, dy = 0 } = shadow;\n const delta = Skia.Point(10 + Math.abs(dx), 10 + Math.abs(dy));\n canvas.save();\n canvas.clipRRect(box, ClipOp.Intersect, false);\n const lPaint = Skia.Paint();\n lPaint.setColor(Skia.Color(color));\n lPaint.setAlphaf(paint.getAlphaf() * opacity);\n\n lPaint.setMaskFilter(\n Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)\n );\n const inner = deflate(Skia, box, spread, spread, dx, dy);\n const outer = inflate(Skia, box, delta.x, delta.y);\n canvas.drawDRRect(outer, inner, lPaint);\n canvas.restore();\n });\n};\n\nexport const drawImage = (ctx: DrawingContext, props: ImageProps) => {\n \"worklet\";\n const { image, sampling } = props;\n if (image) {\n const fit = props.fit ?? \"contain\";\n const rect = processRect(ctx.Skia, props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n if (sampling && isCubicSampling(sampling)) {\n ctx.canvas.drawImageRectCubic(\n image,\n src,\n dst,\n sampling.B,\n sampling.C,\n ctx.paint\n );\n } else {\n ctx.canvas.drawImageRectOptions(\n image,\n src,\n dst,\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n ctx.paint\n );\n }\n }\n};\n\nexport const drawPoints = (ctx: DrawingContext, props: PointsProps) => {\n \"worklet\";\n const { points, mode } = props;\n ctx.canvas.drawPoints(PointMode[enumKey(mode)], points, ctx.paint);\n};\n\nexport const drawVertices = (ctx: DrawingContext, props: VerticesProps) => {\n \"worklet\";\n const { mode, textures, colors, indices, blendMode } = props;\n const vertexMode = mode ? VertexMode[enumKey(mode)] : VertexMode.Triangles;\n const vertices = ctx.Skia.MakeVertices(\n vertexMode,\n props.vertices,\n textures,\n colors ? colors.map((c) => ctx.Skia.Color(c)) : undefined,\n indices\n );\n const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n\n ctx.canvas.drawVertices(vertices, blend, ctx.paint);\n};\n\nexport const drawDiffRect = (ctx: DrawingContext, props: DiffRectProps) => {\n \"worklet\";\n const { outer, inner } = props;\n ctx.canvas.drawDRRect(outer, inner, ctx.paint);\n};\n\nexport const drawTextPath = (ctx: DrawingContext, props: TextPathProps) => {\n \"worklet\";\n const path = processPath(ctx.Skia, props.path);\n const { font, initialOffset } = props;\n if (font) {\n let { text } = props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = ctx.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(ctx.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n const derived = ctx.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n ctx.canvas.drawTextBlob(derived, 0, 0, ctx.paint);\n }\n};\n\nexport const drawText = (ctx: DrawingContext, props: TextProps) => {\n \"worklet\";\n const { text, x, y, font } = props;\n if (font != null) {\n ctx.canvas.drawText(text, x, y, ctx.paint, font);\n }\n};\n\nexport const drawPatch = (ctx: DrawingContext, props: PatchProps) => {\n \"worklet\";\n const { texture, blendMode, patch } = props;\n const defaultBlendMode = props.colors ? BlendMode.DstOver : BlendMode.SrcOver;\n const mode = blendMode ? BlendMode[enumKey(blendMode)] : defaultBlendMode;\n // Patch requires a path with the following constraints:\n // M tl\n // C c1 c2 br\n // C c1 c2 bl\n // C c1 c2 tl (the redundant point in the last command is removed)\n\n const points = [\n patch[0].pos,\n patch[0].c2,\n patch[1].c1,\n patch[1].pos,\n patch[1].c2,\n patch[2].c1,\n patch[2].pos,\n patch[2].c2,\n patch[3].c1,\n patch[3].pos,\n patch[3].c2,\n patch[0].c1,\n ];\n const colors = props.colors\n ? props.colors.map((c) => ctx.Skia.Color(c))\n : undefined;\n ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);\n};\n\nexport const drawPath = (ctx: DrawingContext, props: PathProps) => {\n \"worklet\";\n const {\n start: trimStart,\n end: trimEnd,\n fillType,\n stroke,\n ...pathProps\n } = props;\n const start = saturate(trimStart);\n const end = saturate(trimEnd);\n const hasStartOffset = start !== 0;\n const hasEndOffset = end !== 1;\n const hasStrokeOptions = stroke !== undefined;\n const hasFillType = !!fillType;\n const willMutatePath =\n hasStartOffset || hasEndOffset || hasStrokeOptions || hasFillType;\n const pristinePath = processPath(ctx.Skia, pathProps.path);\n const path = willMutatePath ? pristinePath.copy() : pristinePath;\n if (hasFillType) {\n path.setFillType(FillType[enumKey(fillType)]);\n }\n if (hasStrokeOptions) {\n path.stroke(stroke);\n }\n if (hasStartOffset || hasEndOffset) {\n path.trim(start, end, false);\n }\n ctx.canvas.drawPath(path, ctx.paint);\n};\n\nexport const drawRect = (ctx: DrawingContext, props: RectProps) => {\n \"worklet\";\n const derived = processRect(ctx.Skia, props);\n ctx.canvas.drawRect(derived, ctx.paint);\n};\n\nexport const drawRRect = (ctx: DrawingContext, props: RoundedRectProps) => {\n \"worklet\";\n const derived = processRRect(ctx.Skia, props);\n ctx.canvas.drawRRect(derived, ctx.paint);\n};\n\nexport const drawTextBlob = (ctx: DrawingContext, props: TextBlobProps) => {\n \"worklet\";\n const { blob, x, y } = props;\n ctx.canvas.drawTextBlob(blob, x, y, ctx.paint);\n};\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport const drawGlyphs = (ctx: DrawingContext, props: GlyphsProps) => {\n \"worklet\";\n const derived = props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n const { glyphs, positions } = derived;\n const { x, y, font } = props;\n if (font) {\n ctx.canvas.drawGlyphs(glyphs, positions, x, y, font, ctx.paint);\n }\n};\n\nexport const drawImageSVG = (ctx: DrawingContext, props: ImageSVGProps) => {\n \"worklet\";\n const { canvas } = ctx;\n const { svg } = props;\n const { x, y, width, height } = props.rect\n ? props.rect\n : { x: props.x, y: props.y, width: props.width, height: props.height };\n if (svg === null) {\n return;\n }\n canvas.save();\n if (x && y) {\n canvas.translate(x, y);\n }\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n};\n\nexport const drawParagraph = (ctx: DrawingContext, props: ParagraphProps) => {\n \"worklet\";\n const { paragraph, x, y, width } = props;\n if (paragraph) {\n paragraph.layout(width);\n paragraph.paint(ctx.canvas, x, y);\n }\n};\n\nexport const drawPicture = (ctx: DrawingContext, props: PictureProps) => {\n \"worklet\";\n const { picture } = props;\n ctx.canvas.drawPicture(picture);\n};\n\nexport const drawAtlas = (ctx: DrawingContext, props: AtlasProps) => {\n \"worklet\";\n const { image, sprites, transforms, colors, blendMode, sampling } = props;\n const blend = blendMode ? BlendMode[enumKey(blendMode)] : undefined;\n if (image) {\n ctx.canvas.drawAtlas(\n image,\n sprites,\n transforms,\n ctx.paint,\n blend,\n colors,\n sampling\n );\n }\n};\n\nexport const drawCircle = (ctx: DrawingContext, props: CircleProps) => {\n \"worklet\";\n const { c } = processCircle(props);\n const { r } = props;\n ctx.canvas.drawCircle(c.x, c.y, r, ctx.paint);\n};\n\nexport const drawFill = (ctx: DrawingContext, _props: DrawingNodeProps) => {\n \"worklet\";\n ctx.canvas.drawPaint(ctx.paint);\n};\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { enumKey, fitRects, getRect, processGradientProps, processTransformProps, rect2rect } from "../../../dom/nodes";
|
2
2
|
import { NodeType } from "../../../dom/types";
|
3
|
-
import { BlendMode, FilterMode, MipmapMode, processUniforms, TileMode } from "../../../skia/types";
|
3
|
+
import { BlendMode, FilterMode, isCubicSampling, MipmapMode, processUniforms, TileMode } from "../../../skia/types";
|
4
4
|
import { composeDeclarations } from "../../utils";
|
5
5
|
import { CommandType } from "../Core";
|
6
6
|
const declareShader = (ctx, props) => {
|
@@ -132,8 +132,7 @@ const declareImageShader = (ctx, props) => {
|
|
132
132
|
image,
|
133
133
|
tx,
|
134
134
|
ty,
|
135
|
-
|
136
|
-
mm,
|
135
|
+
sampling,
|
137
136
|
...imageShaderProps
|
138
137
|
} = props;
|
139
138
|
if (!image) {
|
@@ -155,7 +154,13 @@ const declareImageShader = (ctx, props) => {
|
|
155
154
|
const lm = ctx.Skia.Matrix();
|
156
155
|
lm.concat(m3);
|
157
156
|
processTransformProps(lm, imageShaderProps);
|
158
|
-
|
157
|
+
let shader;
|
158
|
+
if (sampling && isCubicSampling(sampling)) {
|
159
|
+
shader = image.makeShaderCubic(TileMode[enumKey(tx)], TileMode[enumKey(ty)], sampling.B, sampling.C, lm);
|
160
|
+
} else {
|
161
|
+
var _sampling$filter, _sampling$mipmap;
|
162
|
+
shader = image.makeShaderCubic(TileMode[enumKey(tx)], TileMode[enumKey(ty)], (_sampling$filter = sampling === null || sampling === void 0 ? void 0 : sampling.filter) !== null && _sampling$filter !== void 0 ? _sampling$filter : FilterMode.Linear, (_sampling$mipmap = sampling === null || sampling === void 0 ? void 0 : sampling.mipmap) !== null && _sampling$mipmap !== void 0 ? _sampling$mipmap : MipmapMode.None, lm);
|
163
|
+
}
|
159
164
|
ctx.shaders.push(shader);
|
160
165
|
};
|
161
166
|
const declareBlend = (ctx, props) => {
|