@shopify/react-native-skia 0.1.233 → 0.1.234
Sign up to get free protection for your applications and to get access to all the features.
- package/android/CMakeLists.txt +0 -1
- package/android/cpp/jni/JniSkiaManager.cpp +0 -1
- package/android/cpp/rnskia-android/RNSkAndroidView.h +0 -1
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +1 -1
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +1 -2
- package/lib/commonjs/external/reanimated/interpolators.js +3 -1
- package/lib/commonjs/external/reanimated/interpolators.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +5 -4
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/commonjs/skia/web/JsiSkPath.js +10 -2
- package/lib/commonjs/skia/web/JsiSkPath.js.map +1 -1
- package/lib/commonjs/views/SkiaJSDomView.d.ts +31 -0
- package/lib/commonjs/views/SkiaJSDomView.js +161 -0
- package/lib/commonjs/views/SkiaJSDomView.js.map +1 -0
- package/lib/commonjs/views/SkiaJSDomView.web.d.ts +1 -0
- package/lib/commonjs/views/SkiaJSDomView.web.js +14 -0
- package/lib/commonjs/views/SkiaJSDomView.web.js.map +1 -0
- package/lib/module/external/reanimated/interpolators.js +2 -1
- package/lib/module/external/reanimated/interpolators.js.map +1 -1
- package/lib/module/renderer/Canvas.js +4 -3
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/module/skia/web/JsiSkPath.js +10 -2
- package/lib/module/skia/web/JsiSkPath.js.map +1 -1
- package/lib/module/views/SkiaJSDomView.d.ts +31 -0
- package/lib/module/views/SkiaJSDomView.js +136 -0
- package/lib/module/views/SkiaJSDomView.js.map +1 -0
- package/lib/module/views/SkiaJSDomView.web.d.ts +1 -0
- package/lib/module/views/SkiaJSDomView.web.js +2 -0
- package/lib/module/views/SkiaJSDomView.web.js.map +1 -0
- package/lib/typescript/src/skia/web/JsiSkPath.d.ts +2 -2
- package/lib/typescript/src/views/SkiaJSDomView.d.ts +31 -0
- package/lib/typescript/src/views/SkiaJSDomView.web.d.ts +1 -0
- package/package.json +1 -1
- package/src/external/reanimated/interpolators.ts +2 -1
- package/src/renderer/Canvas.tsx +3 -2
- package/src/skia/web/JsiSkPath.ts +23 -3
- package/src/views/SkiaJSDomView.tsx +126 -0
- package/src/views/SkiaJSDomView.web.tsx +1 -0
- package/android/cpp/jni/include/JniSkiaDrawView.h +0 -90
- package/cpp/rnskia/RNSkJsView.cpp +0 -236
- package/cpp/rnskia/RNSkJsView.h +0 -121
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","useEffect","useCallback","useMemo","forwardRef","useRef","SkiaDomView","
|
1
|
+
{"version":3,"names":["React","useEffect","useCallback","useMemo","forwardRef","useRef","SkiaDomView","Skia","SkiaJSDomView","SkiaRoot","NATIVE_DOM","useCanvasRef","useOnSizeEvent","resultValue","onLayout","event","width","height","nativeEvent","layout","value","Canvas","forwardedRef","children","style","debug","mode","onTouch","onSize","_onSize","_onLayout","props","innerRef","ref","useCombinedRefs","redraw","current","getNativeId","id","nativeId","root","render","unmount","dom","refs","targetRef","forEach"],"sources":["Canvas.tsx"],"sourcesContent":["import React, {\n useEffect,\n useCallback,\n useMemo,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n MutableRefObject,\n ForwardedRef,\n FunctionComponent,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\n\nimport { SkiaDomView } from \"../views\";\nimport { Skia } from \"../skia/Skia\";\nimport type { TouchHandler, SkiaBaseViewProps } from \"../views\";\nimport { SkiaJSDomView } from \"../views/SkiaJSDomView\";\n\nimport { SkiaRoot } from \"./Reconciler\";\nimport { NATIVE_DOM } from \"./HostComponents\";\n\nexport const useCanvasRef = () => useRef<SkiaDomView>(null);\n\nexport interface CanvasProps extends SkiaBaseViewProps {\n ref?: RefObject<SkiaDomView>;\n children: ReactNode;\n onTouch?: TouchHandler;\n}\n\nconst useOnSizeEvent = (\n resultValue: SkiaBaseViewProps[\"onSize\"],\n onLayout?: (event: LayoutChangeEvent) => void\n) => {\n return useCallback(\n (event: LayoutChangeEvent) => {\n if (onLayout) {\n onLayout(event);\n }\n const { width, height } = event.nativeEvent.layout;\n\n if (resultValue) {\n resultValue.value = { width, height };\n }\n },\n [onLayout, resultValue]\n );\n};\n\nexport const Canvas = forwardRef<SkiaDomView, CanvasProps>(\n (\n {\n children,\n style,\n debug,\n mode,\n onTouch,\n onSize: _onSize,\n onLayout: _onLayout,\n ...props\n },\n forwardedRef\n ) => {\n const onLayout = useOnSizeEvent(_onSize, _onLayout);\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const redraw = useCallback(() => {\n innerRef.current?.redraw();\n }, [innerRef]);\n const getNativeId = useCallback(() => {\n const id = innerRef.current?.nativeId ?? -1;\n return id;\n }, [innerRef]);\n\n const root = useMemo(\n () => new SkiaRoot(Skia, redraw, getNativeId),\n [redraw, getNativeId]\n );\n\n // Render effect\n useEffect(() => {\n root.render(children);\n }, [children, root, redraw]);\n\n useEffect(() => {\n return () => {\n root.unmount();\n };\n }, [root]);\n\n if (NATIVE_DOM) {\n return (\n <SkiaDomView\n ref={ref}\n style={style}\n root={root.dom}\n onTouch={onTouch}\n onLayout={onLayout}\n mode={mode}\n debug={debug}\n {...props}\n />\n );\n } else {\n return (\n <SkiaJSDomView\n Skia={Skia}\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref={ref as any}\n style={style}\n root={root.dom}\n onTouch={onTouch}\n onLayout={onLayout}\n mode={mode}\n debug={debug}\n {...props}\n />\n );\n }\n }\n) as FunctionComponent<CanvasProps & React.RefAttributes<SkiaDomView>>;\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { CanvasKit, Path } from "canvaskit-wasm";
|
2
|
-
import type { FillType, PathCommand, PathOp, SkMatrix, SkPath, SkPoint, SkRect, InputRRect, StrokeOpts } from "../types";
|
2
|
+
import type { FillType, PathCommand, PathOp, SkMatrix, SkPath, SkPoint, SkRect, InputRRect, StrokeOpts, InputMatrix } from "../types";
|
3
3
|
import { HostObject } from "./Host";
|
4
4
|
import { JsiSkPoint } from "./JsiSkPoint";
|
5
5
|
import { JsiSkRect } from "./JsiSkRect";
|
@@ -51,7 +51,7 @@ export declare class JsiSkPath extends HostObject<Path, "Path"> implements SkPat
|
|
51
51
|
simplify(): boolean;
|
52
52
|
toSVGString(): string;
|
53
53
|
trim(start: number, stop: number, isComplement: boolean): this | null;
|
54
|
-
transform(
|
54
|
+
transform(m: InputMatrix): this;
|
55
55
|
interpolate(end: SkPath, t: number, output?: SkPath): SkPath | JsiSkPath | null;
|
56
56
|
isInterpolatable(path2: SkPath): boolean;
|
57
57
|
toCmds(): PathCommand[];
|
@@ -252,8 +252,16 @@ export class JsiSkPath extends HostObject {
|
|
252
252
|
return result === null ? result : this;
|
253
253
|
}
|
254
254
|
|
255
|
-
transform(
|
256
|
-
|
255
|
+
transform(m) {
|
256
|
+
let matrix = m instanceof JsiSkMatrix ? Array.from(JsiSkMatrix.fromValue(m)) : m;
|
257
|
+
|
258
|
+
if (matrix.length === 16) {
|
259
|
+
matrix = [matrix[0], matrix[1], matrix[3], matrix[4], matrix[5], matrix[7], matrix[12], matrix[13], matrix[15]];
|
260
|
+
} else if (matrix.length !== 9) {
|
261
|
+
throw new Error(`Invalid matrix length: ${matrix.length}`);
|
262
|
+
}
|
263
|
+
|
264
|
+
this.ref.transform(matrix);
|
257
265
|
return this;
|
258
266
|
}
|
259
267
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["PathVerb","getEnum","HostObject","optEnum","JsiSkPoint","JsiSkRect","JsiSkRRect","JsiSkMatrix","CommandCount","Move","Line","Quad","Conic","Cubic","Close","pinT","t","Math","min","max","JsiSkPath","constructor","CanvasKit","ref","delete","addPath","src","matrix","extend","args","fromValue","addArc","oval","startAngleInDegrees","sweepAngleInDegrees","addOval","isCCW","startIndex","countPoints","addPoly","points","close","map","p","Array","from","flat","moveTo","x","y","lineTo","makeAsWinding","result","offset","dx","dy","rArcTo","rx","ry","xAxisRotateInDegrees","useSmallArc","rConicTo","dx1","dy1","dx2","dy2","w","rCubicTo","cpx1","cpy1","cpx2","cpy2","rMoveTo","rLineTo","rQuadTo","x1","y1","x2","y2","setFillType","fill","FillType","setIsVolatile","volatile","stroke","opts","undefined","width","miter_limit","precision","join","StrokeJoin","cap","StrokeCap","reset","rewind","computeTightBounds","arcToOval","forceMoveTo","arcToRotated","arcToTangent","radius","conicTo","contains","copy","cubicTo","dash","on","off","phase","equals","other","getBounds","getFillType","value","quadTo","addRect","rect","addRRect","rrect","getPoint","index","isEmpty","isVolatile","addCircle","r","getLastPt","op","path","PathOp","simplify","toSVGString","trim","start","stop","isComplement","startT","stopT","transform","m3","isArray","interpolate","end","output","Path","MakeFromPathInterpolation","isInterpolatable","path2","CanInterpolate","toCmds","cmds","reduce","acc","cmd","i","push","current","length"],"sources":["JsiSkPath.ts"],"sourcesContent":["import type { CanvasKit, Path } from \"canvaskit-wasm\";\n\nimport { PathVerb } from \"../types\";\nimport type {\n FillType,\n PathCommand,\n PathOp,\n SkMatrix,\n SkPath,\n SkPoint,\n SkRect,\n InputRRect,\n StrokeOpts,\n} from \"../types\";\n\nimport { getEnum, HostObject, optEnum } from \"./Host\";\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\n\nconst CommandCount = {\n [PathVerb.Move]: 3,\n [PathVerb.Line]: 3,\n [PathVerb.Quad]: 5,\n [PathVerb.Conic]: 6,\n [PathVerb.Cubic]: 7,\n [PathVerb.Close]: 1,\n};\n\nconst pinT = (t: number) => Math.min(Math.max(t, 0), 1);\n\nexport class JsiSkPath extends HostObject<Path, \"Path\"> implements SkPath {\n constructor(CanvasKit: CanvasKit, ref: Path) {\n super(CanvasKit, ref, \"Path\");\n }\n\n dispose = () => {\n this.ref.delete();\n };\n\n addPath(src: SkPath, matrix?: SkMatrix, extend = false) {\n const args = [\n JsiSkPath.fromValue(src),\n ...(matrix ? JsiSkMatrix.fromValue<Float32Array>(matrix) : []),\n extend,\n ];\n this.ref.addPath(...args);\n return this;\n }\n\n addArc(\n oval: SkRect,\n startAngleInDegrees: number,\n sweepAngleInDegrees: number\n ) {\n this.ref.addArc(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n startAngleInDegrees,\n sweepAngleInDegrees\n );\n return this;\n }\n\n addOval(oval: SkRect, isCCW?: boolean, startIndex?: number) {\n this.ref.addOval(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n isCCW,\n startIndex\n );\n return this;\n }\n\n countPoints() {\n return this.ref.countPoints();\n }\n\n addPoly(points: SkPoint[], close: boolean) {\n this.ref.addPoly(\n points.map((p) => Array.from(JsiSkPoint.fromValue(p))).flat(),\n close\n );\n return this;\n }\n\n moveTo(x: number, y: number) {\n this.ref.moveTo(x, y);\n return this;\n }\n\n lineTo(x: number, y: number) {\n this.ref.lineTo(x, y);\n return this;\n }\n\n makeAsWinding() {\n const result = this.ref.makeAsWinding();\n return result === null ? result : this;\n }\n\n offset(dx: number, dy: number) {\n this.ref.offset(dx, dy);\n return this;\n }\n\n rArcTo(\n rx: number,\n ry: number,\n xAxisRotateInDegrees: number,\n useSmallArc: boolean,\n isCCW: boolean,\n dx: number,\n dy: number\n ) {\n this.ref.rArcTo(rx, ry, xAxisRotateInDegrees, useSmallArc, isCCW, dx, dy);\n return this;\n }\n\n rConicTo(dx1: number, dy1: number, dx2: number, dy2: number, w: number) {\n this.ref.rConicTo(dx1, dy1, dx2, dy2, w);\n return this;\n }\n\n rCubicTo(\n cpx1: number,\n cpy1: number,\n cpx2: number,\n cpy2: number,\n x: number,\n y: number\n ) {\n this.ref.rCubicTo(cpx1, cpy1, cpx2, cpy2, x, y);\n return this;\n }\n\n rMoveTo(x: number, y: number) {\n this.ref.rMoveTo(x, y);\n return this;\n }\n\n rLineTo(x: number, y: number) {\n this.ref.rLineTo(x, y);\n return this;\n }\n\n rQuadTo(x1: number, y1: number, x2: number, y2: number) {\n this.ref.rQuadTo(x1, y1, x2, y2);\n return this;\n }\n\n setFillType(fill: FillType) {\n this.ref.setFillType(getEnum(this.CanvasKit.FillType, fill));\n return this;\n }\n\n setIsVolatile(volatile: boolean) {\n this.ref.setIsVolatile(volatile);\n return this;\n }\n\n stroke(opts?: StrokeOpts) {\n const result = this.ref.stroke(\n opts === undefined\n ? undefined\n : {\n width: opts.width,\n // eslint-disable-next-line camelcase\n miter_limit: opts.width,\n precision: opts.width,\n join: optEnum(this.CanvasKit.StrokeJoin, opts.join),\n cap: optEnum(this.CanvasKit.StrokeCap, opts.cap),\n }\n );\n return result === null ? result : this;\n }\n\n close() {\n this.ref.close();\n return this;\n }\n\n reset() {\n this.ref.reset();\n return this;\n }\n\n rewind() {\n this.ref.rewind();\n return this;\n }\n\n computeTightBounds(): SkRect {\n return new JsiSkRect(this.CanvasKit, this.ref.computeTightBounds());\n }\n\n arcToOval(\n oval: SkRect,\n startAngleInDegrees: number,\n sweepAngleInDegrees: number,\n forceMoveTo: boolean\n ) {\n this.ref.arcToOval(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n startAngleInDegrees,\n sweepAngleInDegrees,\n forceMoveTo\n );\n return this;\n }\n\n arcToRotated(\n rx: number,\n ry: number,\n xAxisRotateInDegrees: number,\n useSmallArc: boolean,\n isCCW: boolean,\n x: number,\n y: number\n ) {\n this.ref.arcToRotated(\n rx,\n ry,\n xAxisRotateInDegrees,\n useSmallArc,\n isCCW,\n x,\n y\n );\n return this;\n }\n\n arcToTangent(x1: number, y1: number, x2: number, y2: number, radius: number) {\n this.ref.arcToTangent(x1, y1, x2, y2, radius);\n return this;\n }\n\n conicTo(x1: number, y1: number, x2: number, y2: number, w: number) {\n this.ref.conicTo(x1, y1, x2, y2, w);\n return this;\n }\n\n contains(x: number, y: number) {\n return this.ref.contains(x, y);\n }\n\n copy() {\n return new JsiSkPath(this.CanvasKit, this.ref.copy());\n }\n\n cubicTo(\n cpx1: number,\n cpy1: number,\n cpx2: number,\n cpy2: number,\n x: number,\n y: number\n ) {\n this.ref.cubicTo(cpx1, cpy1, cpx2, cpy2, x, y);\n return this;\n }\n\n dash(on: number, off: number, phase: number) {\n return this.ref.dash(on, off, phase);\n }\n\n equals(other: SkPath) {\n return this.ref.equals(JsiSkPath.fromValue(other));\n }\n\n getBounds() {\n return new JsiSkRect(this.CanvasKit, this.ref.getBounds());\n }\n\n getFillType() {\n return this.ref.getFillType().value;\n }\n\n quadTo(x1: number, y1: number, x2: number, y2: number) {\n this.ref.quadTo(x1, y1, x2, y2);\n return this;\n }\n\n addRect(rect: SkRect, isCCW?: boolean) {\n this.ref.addRect(JsiSkRect.fromValue(this.CanvasKit, rect), isCCW);\n return this;\n }\n\n addRRect(rrect: InputRRect, isCCW?: boolean) {\n this.ref.addRRect(JsiSkRRect.fromValue(this.CanvasKit, rrect), isCCW);\n return this;\n }\n\n getPoint(index: number) {\n return new JsiSkPoint(this.CanvasKit, this.ref.getPoint(index));\n }\n\n isEmpty() {\n return this.ref.isEmpty();\n }\n\n isVolatile() {\n return this.ref.isVolatile();\n }\n\n addCircle(x: number, y: number, r: number) {\n this.ref.addCircle(x, y, r);\n return this;\n }\n\n getLastPt() {\n return new JsiSkPoint(\n this.CanvasKit,\n this.ref.getPoint(this.ref.countPoints() - 1)\n );\n }\n\n op(path: SkPath, op: PathOp) {\n return this.ref.op(\n JsiSkPath.fromValue(path),\n getEnum(this.CanvasKit.PathOp, op)\n );\n }\n\n simplify() {\n return this.ref.simplify();\n }\n\n toSVGString() {\n return this.ref.toSVGString();\n }\n\n trim(start: number, stop: number, isComplement: boolean) {\n const startT = pinT(start);\n const stopT = pinT(stop);\n if (startT === 0 && stopT === 1) {\n return this;\n }\n const result = this.ref.trim(startT, stopT, isComplement);\n return result === null ? result : this;\n }\n\n transform(m3: SkMatrix) {\n this.ref.transform(Array.isArray(m3) ? m3 : JsiSkMatrix.fromValue(m3));\n return this;\n }\n\n interpolate(end: SkPath, t: number, output?: SkPath) {\n const path = this.CanvasKit.Path.MakeFromPathInterpolation(\n this.ref,\n JsiSkPath.fromValue(end),\n t\n );\n if (path === null) {\n return null;\n }\n if (output) {\n (output as JsiSkPath).ref = path;\n return output;\n } else {\n return new JsiSkPath(this.CanvasKit, path);\n }\n }\n\n isInterpolatable(path2: SkPath): boolean {\n return this.CanvasKit.Path.CanInterpolate(\n this.ref,\n JsiSkPath.fromValue(path2)\n );\n }\n\n toCmds() {\n const cmds = this.ref.toCmds();\n const result = cmds.reduce<PathCommand[]>((acc, cmd, i) => {\n if (i === 0) {\n acc.push([]);\n }\n const current = acc[acc.length - 1];\n if (current.length === 0) {\n current.push(cmd);\n const length = CommandCount[current[0] as PathVerb];\n if (current.length === length && i !== cmds.length - 1) {\n acc.push([]);\n }\n } else {\n const length = CommandCount[current[0] as PathVerb];\n if (current.length < length) {\n current.push(cmd);\n }\n if (current.length === length && i !== cmds.length - 1) {\n acc.push([]);\n }\n }\n return acc;\n }, []);\n return result;\n }\n}\n"],"mappings":"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"}
|
1
|
+
{"version":3,"names":["PathVerb","getEnum","HostObject","optEnum","JsiSkPoint","JsiSkRect","JsiSkRRect","JsiSkMatrix","CommandCount","Move","Line","Quad","Conic","Cubic","Close","pinT","t","Math","min","max","JsiSkPath","constructor","CanvasKit","ref","delete","addPath","src","matrix","extend","args","fromValue","addArc","oval","startAngleInDegrees","sweepAngleInDegrees","addOval","isCCW","startIndex","countPoints","addPoly","points","close","map","p","Array","from","flat","moveTo","x","y","lineTo","makeAsWinding","result","offset","dx","dy","rArcTo","rx","ry","xAxisRotateInDegrees","useSmallArc","rConicTo","dx1","dy1","dx2","dy2","w","rCubicTo","cpx1","cpy1","cpx2","cpy2","rMoveTo","rLineTo","rQuadTo","x1","y1","x2","y2","setFillType","fill","FillType","setIsVolatile","volatile","stroke","opts","undefined","width","miter_limit","precision","join","StrokeJoin","cap","StrokeCap","reset","rewind","computeTightBounds","arcToOval","forceMoveTo","arcToRotated","arcToTangent","radius","conicTo","contains","copy","cubicTo","dash","on","off","phase","equals","other","getBounds","getFillType","value","quadTo","addRect","rect","addRRect","rrect","getPoint","index","isEmpty","isVolatile","addCircle","r","getLastPt","op","path","PathOp","simplify","toSVGString","trim","start","stop","isComplement","startT","stopT","transform","m","length","Error","interpolate","end","output","Path","MakeFromPathInterpolation","isInterpolatable","path2","CanInterpolate","toCmds","cmds","reduce","acc","cmd","i","push","current"],"sources":["JsiSkPath.ts"],"sourcesContent":["import type { CanvasKit, Matrix3x3, Path } from \"canvaskit-wasm\";\n\nimport { PathVerb } from \"../types\";\nimport type {\n FillType,\n PathCommand,\n PathOp,\n SkMatrix,\n SkPath,\n SkPoint,\n SkRect,\n InputRRect,\n StrokeOpts,\n InputMatrix,\n} from \"../types\";\n\nimport { getEnum, HostObject, optEnum } from \"./Host\";\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\n\nconst CommandCount = {\n [PathVerb.Move]: 3,\n [PathVerb.Line]: 3,\n [PathVerb.Quad]: 5,\n [PathVerb.Conic]: 6,\n [PathVerb.Cubic]: 7,\n [PathVerb.Close]: 1,\n};\n\nconst pinT = (t: number) => Math.min(Math.max(t, 0), 1);\n\nexport class JsiSkPath extends HostObject<Path, \"Path\"> implements SkPath {\n constructor(CanvasKit: CanvasKit, ref: Path) {\n super(CanvasKit, ref, \"Path\");\n }\n\n dispose = () => {\n this.ref.delete();\n };\n\n addPath(src: SkPath, matrix?: SkMatrix, extend = false) {\n const args = [\n JsiSkPath.fromValue(src),\n ...(matrix ? JsiSkMatrix.fromValue<Float32Array>(matrix) : []),\n extend,\n ];\n this.ref.addPath(...args);\n return this;\n }\n\n addArc(\n oval: SkRect,\n startAngleInDegrees: number,\n sweepAngleInDegrees: number\n ) {\n this.ref.addArc(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n startAngleInDegrees,\n sweepAngleInDegrees\n );\n return this;\n }\n\n addOval(oval: SkRect, isCCW?: boolean, startIndex?: number) {\n this.ref.addOval(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n isCCW,\n startIndex\n );\n return this;\n }\n\n countPoints() {\n return this.ref.countPoints();\n }\n\n addPoly(points: SkPoint[], close: boolean) {\n this.ref.addPoly(\n points.map((p) => Array.from(JsiSkPoint.fromValue(p))).flat(),\n close\n );\n return this;\n }\n\n moveTo(x: number, y: number) {\n this.ref.moveTo(x, y);\n return this;\n }\n\n lineTo(x: number, y: number) {\n this.ref.lineTo(x, y);\n return this;\n }\n\n makeAsWinding() {\n const result = this.ref.makeAsWinding();\n return result === null ? result : this;\n }\n\n offset(dx: number, dy: number) {\n this.ref.offset(dx, dy);\n return this;\n }\n\n rArcTo(\n rx: number,\n ry: number,\n xAxisRotateInDegrees: number,\n useSmallArc: boolean,\n isCCW: boolean,\n dx: number,\n dy: number\n ) {\n this.ref.rArcTo(rx, ry, xAxisRotateInDegrees, useSmallArc, isCCW, dx, dy);\n return this;\n }\n\n rConicTo(dx1: number, dy1: number, dx2: number, dy2: number, w: number) {\n this.ref.rConicTo(dx1, dy1, dx2, dy2, w);\n return this;\n }\n\n rCubicTo(\n cpx1: number,\n cpy1: number,\n cpx2: number,\n cpy2: number,\n x: number,\n y: number\n ) {\n this.ref.rCubicTo(cpx1, cpy1, cpx2, cpy2, x, y);\n return this;\n }\n\n rMoveTo(x: number, y: number) {\n this.ref.rMoveTo(x, y);\n return this;\n }\n\n rLineTo(x: number, y: number) {\n this.ref.rLineTo(x, y);\n return this;\n }\n\n rQuadTo(x1: number, y1: number, x2: number, y2: number) {\n this.ref.rQuadTo(x1, y1, x2, y2);\n return this;\n }\n\n setFillType(fill: FillType) {\n this.ref.setFillType(getEnum(this.CanvasKit.FillType, fill));\n return this;\n }\n\n setIsVolatile(volatile: boolean) {\n this.ref.setIsVolatile(volatile);\n return this;\n }\n\n stroke(opts?: StrokeOpts) {\n const result = this.ref.stroke(\n opts === undefined\n ? undefined\n : {\n width: opts.width,\n // eslint-disable-next-line camelcase\n miter_limit: opts.width,\n precision: opts.width,\n join: optEnum(this.CanvasKit.StrokeJoin, opts.join),\n cap: optEnum(this.CanvasKit.StrokeCap, opts.cap),\n }\n );\n return result === null ? result : this;\n }\n\n close() {\n this.ref.close();\n return this;\n }\n\n reset() {\n this.ref.reset();\n return this;\n }\n\n rewind() {\n this.ref.rewind();\n return this;\n }\n\n computeTightBounds(): SkRect {\n return new JsiSkRect(this.CanvasKit, this.ref.computeTightBounds());\n }\n\n arcToOval(\n oval: SkRect,\n startAngleInDegrees: number,\n sweepAngleInDegrees: number,\n forceMoveTo: boolean\n ) {\n this.ref.arcToOval(\n JsiSkRect.fromValue(this.CanvasKit, oval),\n startAngleInDegrees,\n sweepAngleInDegrees,\n forceMoveTo\n );\n return this;\n }\n\n arcToRotated(\n rx: number,\n ry: number,\n xAxisRotateInDegrees: number,\n useSmallArc: boolean,\n isCCW: boolean,\n x: number,\n y: number\n ) {\n this.ref.arcToRotated(\n rx,\n ry,\n xAxisRotateInDegrees,\n useSmallArc,\n isCCW,\n x,\n y\n );\n return this;\n }\n\n arcToTangent(x1: number, y1: number, x2: number, y2: number, radius: number) {\n this.ref.arcToTangent(x1, y1, x2, y2, radius);\n return this;\n }\n\n conicTo(x1: number, y1: number, x2: number, y2: number, w: number) {\n this.ref.conicTo(x1, y1, x2, y2, w);\n return this;\n }\n\n contains(x: number, y: number) {\n return this.ref.contains(x, y);\n }\n\n copy() {\n return new JsiSkPath(this.CanvasKit, this.ref.copy());\n }\n\n cubicTo(\n cpx1: number,\n cpy1: number,\n cpx2: number,\n cpy2: number,\n x: number,\n y: number\n ) {\n this.ref.cubicTo(cpx1, cpy1, cpx2, cpy2, x, y);\n return this;\n }\n\n dash(on: number, off: number, phase: number) {\n return this.ref.dash(on, off, phase);\n }\n\n equals(other: SkPath) {\n return this.ref.equals(JsiSkPath.fromValue(other));\n }\n\n getBounds() {\n return new JsiSkRect(this.CanvasKit, this.ref.getBounds());\n }\n\n getFillType() {\n return this.ref.getFillType().value;\n }\n\n quadTo(x1: number, y1: number, x2: number, y2: number) {\n this.ref.quadTo(x1, y1, x2, y2);\n return this;\n }\n\n addRect(rect: SkRect, isCCW?: boolean) {\n this.ref.addRect(JsiSkRect.fromValue(this.CanvasKit, rect), isCCW);\n return this;\n }\n\n addRRect(rrect: InputRRect, isCCW?: boolean) {\n this.ref.addRRect(JsiSkRRect.fromValue(this.CanvasKit, rrect), isCCW);\n return this;\n }\n\n getPoint(index: number) {\n return new JsiSkPoint(this.CanvasKit, this.ref.getPoint(index));\n }\n\n isEmpty() {\n return this.ref.isEmpty();\n }\n\n isVolatile() {\n return this.ref.isVolatile();\n }\n\n addCircle(x: number, y: number, r: number) {\n this.ref.addCircle(x, y, r);\n return this;\n }\n\n getLastPt() {\n return new JsiSkPoint(\n this.CanvasKit,\n this.ref.getPoint(this.ref.countPoints() - 1)\n );\n }\n\n op(path: SkPath, op: PathOp) {\n return this.ref.op(\n JsiSkPath.fromValue(path),\n getEnum(this.CanvasKit.PathOp, op)\n );\n }\n\n simplify() {\n return this.ref.simplify();\n }\n\n toSVGString() {\n return this.ref.toSVGString();\n }\n\n trim(start: number, stop: number, isComplement: boolean) {\n const startT = pinT(start);\n const stopT = pinT(stop);\n if (startT === 0 && stopT === 1) {\n return this;\n }\n const result = this.ref.trim(startT, stopT, isComplement);\n return result === null ? result : this;\n }\n\n transform(m: InputMatrix) {\n let matrix =\n m instanceof JsiSkMatrix\n ? Array.from(JsiSkMatrix.fromValue<Matrix3x3>(m))\n : (m as Exclude<InputMatrix, SkMatrix>);\n if (matrix.length === 16) {\n matrix = [\n matrix[0],\n matrix[1],\n matrix[3],\n matrix[4],\n matrix[5],\n matrix[7],\n matrix[12],\n matrix[13],\n matrix[15],\n ];\n } else if (matrix.length !== 9) {\n throw new Error(`Invalid matrix length: ${matrix.length}`);\n }\n this.ref.transform(matrix);\n return this;\n }\n\n interpolate(end: SkPath, t: number, output?: SkPath) {\n const path = this.CanvasKit.Path.MakeFromPathInterpolation(\n this.ref,\n JsiSkPath.fromValue(end),\n t\n );\n if (path === null) {\n return null;\n }\n if (output) {\n (output as JsiSkPath).ref = path;\n return output;\n } else {\n return new JsiSkPath(this.CanvasKit, path);\n }\n }\n\n isInterpolatable(path2: SkPath): boolean {\n return this.CanvasKit.Path.CanInterpolate(\n this.ref,\n JsiSkPath.fromValue(path2)\n );\n }\n\n toCmds() {\n const cmds = this.ref.toCmds();\n const result = cmds.reduce<PathCommand[]>((acc, cmd, i) => {\n if (i === 0) {\n acc.push([]);\n }\n const current = acc[acc.length - 1];\n if (current.length === 0) {\n current.push(cmd);\n const length = CommandCount[current[0] as PathVerb];\n if (current.length === length && i !== cmds.length - 1) {\n acc.push([]);\n }\n } else {\n const length = CommandCount[current[0] as PathVerb];\n if (current.length < length) {\n current.push(cmd);\n }\n if (current.length === length && i !== cmds.length - 1) {\n acc.push([]);\n }\n }\n return acc;\n }, []);\n return result;\n }\n}\n"],"mappings":";;AAEA,SAASA,QAAT,QAAyB,UAAzB;AAcA,SAASC,OAAT,EAAkBC,UAAlB,EAA8BC,OAA9B,QAA6C,QAA7C;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,WAAT,QAA4B,eAA5B;AAEA,MAAMC,YAAY,GAAG;EACnB,CAACR,QAAQ,CAACS,IAAV,GAAiB,CADE;EAEnB,CAACT,QAAQ,CAACU,IAAV,GAAiB,CAFE;EAGnB,CAACV,QAAQ,CAACW,IAAV,GAAiB,CAHE;EAInB,CAACX,QAAQ,CAACY,KAAV,GAAkB,CAJC;EAKnB,CAACZ,QAAQ,CAACa,KAAV,GAAkB,CALC;EAMnB,CAACb,QAAQ,CAACc,KAAV,GAAkB;AANC,CAArB;;AASA,MAAMC,IAAI,GAAIC,CAAD,IAAeC,IAAI,CAACC,GAAL,CAASD,IAAI,CAACE,GAAL,CAASH,CAAT,EAAY,CAAZ,CAAT,EAAyB,CAAzB,CAA5B;;AAEA,OAAO,MAAMI,SAAN,SAAwBlB,UAAxB,CAAmE;EACxEmB,WAAW,CAACC,SAAD,EAAuBC,GAAvB,EAAkC;IAC3C,MAAMD,SAAN,EAAiBC,GAAjB,EAAsB,MAAtB;;IAD2C,iCAInC,MAAM;MACd,KAAKA,GAAL,CAASC,MAAT;IACD,CAN4C;EAE5C;;EAMDC,OAAO,CAACC,GAAD,EAAcC,MAAd,EAAiD;IAAA,IAAhBC,MAAgB,uEAAP,KAAO;IACtD,MAAMC,IAAI,GAAG,CACXT,SAAS,CAACU,SAAV,CAAoBJ,GAApB,CADW,EAEX,IAAIC,MAAM,GAAGpB,WAAW,CAACuB,SAAZ,CAAoCH,MAApC,CAAH,GAAiD,EAA3D,CAFW,EAGXC,MAHW,CAAb;IAKA,KAAKL,GAAL,CAASE,OAAT,CAAiB,GAAGI,IAApB;IACA,OAAO,IAAP;EACD;;EAEDE,MAAM,CACJC,IADI,EAEJC,mBAFI,EAGJC,mBAHI,EAIJ;IACA,KAAKX,GAAL,CAASQ,MAAT,CACE1B,SAAS,CAACyB,SAAV,CAAoB,KAAKR,SAAzB,EAAoCU,IAApC,CADF,EAEEC,mBAFF,EAGEC,mBAHF;IAKA,OAAO,IAAP;EACD;;EAEDC,OAAO,CAACH,IAAD,EAAeI,KAAf,EAAgCC,UAAhC,EAAqD;IAC1D,KAAKd,GAAL,CAASY,OAAT,CACE9B,SAAS,CAACyB,SAAV,CAAoB,KAAKR,SAAzB,EAAoCU,IAApC,CADF,EAEEI,KAFF,EAGEC,UAHF;IAKA,OAAO,IAAP;EACD;;EAEDC,WAAW,GAAG;IACZ,OAAO,KAAKf,GAAL,CAASe,WAAT,EAAP;EACD;;EAEDC,OAAO,CAACC,MAAD,EAAoBC,KAApB,EAAoC;IACzC,KAAKlB,GAAL,CAASgB,OAAT,CACEC,MAAM,CAACE,GAAP,CAAYC,CAAD,IAAOC,KAAK,CAACC,IAAN,CAAWzC,UAAU,CAAC0B,SAAX,CAAqBa,CAArB,CAAX,CAAlB,EAAuDG,IAAvD,EADF,EAEEL,KAFF;IAIA,OAAO,IAAP;EACD;;EAEDM,MAAM,CAACC,CAAD,EAAYC,CAAZ,EAAuB;IAC3B,KAAK1B,GAAL,CAASwB,MAAT,CAAgBC,CAAhB,EAAmBC,CAAnB;IACA,OAAO,IAAP;EACD;;EAEDC,MAAM,CAACF,CAAD,EAAYC,CAAZ,EAAuB;IAC3B,KAAK1B,GAAL,CAAS2B,MAAT,CAAgBF,CAAhB,EAAmBC,CAAnB;IACA,OAAO,IAAP;EACD;;EAEDE,aAAa,GAAG;IACd,MAAMC,MAAM,GAAG,KAAK7B,GAAL,CAAS4B,aAAT,EAAf;IACA,OAAOC,MAAM,KAAK,IAAX,GAAkBA,MAAlB,GAA2B,IAAlC;EACD;;EAEDC,MAAM,CAACC,EAAD,EAAaC,EAAb,EAAyB;IAC7B,KAAKhC,GAAL,CAAS8B,MAAT,CAAgBC,EAAhB,EAAoBC,EAApB;IACA,OAAO,IAAP;EACD;;EAEDC,MAAM,CACJC,EADI,EAEJC,EAFI,EAGJC,oBAHI,EAIJC,WAJI,EAKJxB,KALI,EAMJkB,EANI,EAOJC,EAPI,EAQJ;IACA,KAAKhC,GAAL,CAASiC,MAAT,CAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,oBAAxB,EAA8CC,WAA9C,EAA2DxB,KAA3D,EAAkEkB,EAAlE,EAAsEC,EAAtE;IACA,OAAO,IAAP;EACD;;EAEDM,QAAQ,CAACC,GAAD,EAAcC,GAAd,EAA2BC,GAA3B,EAAwCC,GAAxC,EAAqDC,CAArD,EAAgE;IACtE,KAAK3C,GAAL,CAASsC,QAAT,CAAkBC,GAAlB,EAAuBC,GAAvB,EAA4BC,GAA5B,EAAiCC,GAAjC,EAAsCC,CAAtC;IACA,OAAO,IAAP;EACD;;EAEDC,QAAQ,CACNC,IADM,EAENC,IAFM,EAGNC,IAHM,EAINC,IAJM,EAKNvB,CALM,EAMNC,CANM,EAON;IACA,KAAK1B,GAAL,CAAS4C,QAAT,CAAkBC,IAAlB,EAAwBC,IAAxB,EAA8BC,IAA9B,EAAoCC,IAApC,EAA0CvB,CAA1C,EAA6CC,CAA7C;IACA,OAAO,IAAP;EACD;;EAEDuB,OAAO,CAACxB,CAAD,EAAYC,CAAZ,EAAuB;IAC5B,KAAK1B,GAAL,CAASiD,OAAT,CAAiBxB,CAAjB,EAAoBC,CAApB;IACA,OAAO,IAAP;EACD;;EAEDwB,OAAO,CAACzB,CAAD,EAAYC,CAAZ,EAAuB;IAC5B,KAAK1B,GAAL,CAASkD,OAAT,CAAiBzB,CAAjB,EAAoBC,CAApB;IACA,OAAO,IAAP;EACD;;EAEDyB,OAAO,CAACC,EAAD,EAAaC,EAAb,EAAyBC,EAAzB,EAAqCC,EAArC,EAAiD;IACtD,KAAKvD,GAAL,CAASmD,OAAT,CAAiBC,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6BC,EAA7B;IACA,OAAO,IAAP;EACD;;EAEDC,WAAW,CAACC,IAAD,EAAiB;IAC1B,KAAKzD,GAAL,CAASwD,WAAT,CAAqB9E,OAAO,CAAC,KAAKqB,SAAL,CAAe2D,QAAhB,EAA0BD,IAA1B,CAA5B;IACA,OAAO,IAAP;EACD;;EAEDE,aAAa,CAACC,QAAD,EAAoB;IAC/B,KAAK5D,GAAL,CAAS2D,aAAT,CAAuBC,QAAvB;IACA,OAAO,IAAP;EACD;;EAEDC,MAAM,CAACC,IAAD,EAAoB;IACxB,MAAMjC,MAAM,GAAG,KAAK7B,GAAL,CAAS6D,MAAT,CACbC,IAAI,KAAKC,SAAT,GACIA,SADJ,GAEI;MACEC,KAAK,EAAEF,IAAI,CAACE,KADd;MAEE;MACAC,WAAW,EAAEH,IAAI,CAACE,KAHpB;MAIEE,SAAS,EAAEJ,IAAI,CAACE,KAJlB;MAKEG,IAAI,EAAEvF,OAAO,CAAC,KAAKmB,SAAL,CAAeqE,UAAhB,EAA4BN,IAAI,CAACK,IAAjC,CALf;MAMEE,GAAG,EAAEzF,OAAO,CAAC,KAAKmB,SAAL,CAAeuE,SAAhB,EAA2BR,IAAI,CAACO,GAAhC;IANd,CAHS,CAAf;IAYA,OAAOxC,MAAM,KAAK,IAAX,GAAkBA,MAAlB,GAA2B,IAAlC;EACD;;EAEDX,KAAK,GAAG;IACN,KAAKlB,GAAL,CAASkB,KAAT;IACA,OAAO,IAAP;EACD;;EAEDqD,KAAK,GAAG;IACN,KAAKvE,GAAL,CAASuE,KAAT;IACA,OAAO,IAAP;EACD;;EAEDC,MAAM,GAAG;IACP,KAAKxE,GAAL,CAASwE,MAAT;IACA,OAAO,IAAP;EACD;;EAEDC,kBAAkB,GAAW;IAC3B,OAAO,IAAI3F,SAAJ,CAAc,KAAKiB,SAAnB,EAA8B,KAAKC,GAAL,CAASyE,kBAAT,EAA9B,CAAP;EACD;;EAEDC,SAAS,CACPjE,IADO,EAEPC,mBAFO,EAGPC,mBAHO,EAIPgE,WAJO,EAKP;IACA,KAAK3E,GAAL,CAAS0E,SAAT,CACE5F,SAAS,CAACyB,SAAV,CAAoB,KAAKR,SAAzB,EAAoCU,IAApC,CADF,EAEEC,mBAFF,EAGEC,mBAHF,EAIEgE,WAJF;IAMA,OAAO,IAAP;EACD;;EAEDC,YAAY,CACV1C,EADU,EAEVC,EAFU,EAGVC,oBAHU,EAIVC,WAJU,EAKVxB,KALU,EAMVY,CANU,EAOVC,CAPU,EAQV;IACA,KAAK1B,GAAL,CAAS4E,YAAT,CACE1C,EADF,EAEEC,EAFF,EAGEC,oBAHF,EAIEC,WAJF,EAKExB,KALF,EAMEY,CANF,EAOEC,CAPF;IASA,OAAO,IAAP;EACD;;EAEDmD,YAAY,CAACzB,EAAD,EAAaC,EAAb,EAAyBC,EAAzB,EAAqCC,EAArC,EAAiDuB,MAAjD,EAAiE;IAC3E,KAAK9E,GAAL,CAAS6E,YAAT,CAAsBzB,EAAtB,EAA0BC,EAA1B,EAA8BC,EAA9B,EAAkCC,EAAlC,EAAsCuB,MAAtC;IACA,OAAO,IAAP;EACD;;EAEDC,OAAO,CAAC3B,EAAD,EAAaC,EAAb,EAAyBC,EAAzB,EAAqCC,EAArC,EAAiDZ,CAAjD,EAA4D;IACjE,KAAK3C,GAAL,CAAS+E,OAAT,CAAiB3B,EAAjB,EAAqBC,EAArB,EAAyBC,EAAzB,EAA6BC,EAA7B,EAAiCZ,CAAjC;IACA,OAAO,IAAP;EACD;;EAEDqC,QAAQ,CAACvD,CAAD,EAAYC,CAAZ,EAAuB;IAC7B,OAAO,KAAK1B,GAAL,CAASgF,QAAT,CAAkBvD,CAAlB,EAAqBC,CAArB,CAAP;EACD;;EAEDuD,IAAI,GAAG;IACL,OAAO,IAAIpF,SAAJ,CAAc,KAAKE,SAAnB,EAA8B,KAAKC,GAAL,CAASiF,IAAT,EAA9B,CAAP;EACD;;EAEDC,OAAO,CACLrC,IADK,EAELC,IAFK,EAGLC,IAHK,EAILC,IAJK,EAKLvB,CALK,EAMLC,CANK,EAOL;IACA,KAAK1B,GAAL,CAASkF,OAAT,CAAiBrC,IAAjB,EAAuBC,IAAvB,EAA6BC,IAA7B,EAAmCC,IAAnC,EAAyCvB,CAAzC,EAA4CC,CAA5C;IACA,OAAO,IAAP;EACD;;EAEDyD,IAAI,CAACC,EAAD,EAAaC,GAAb,EAA0BC,KAA1B,EAAyC;IAC3C,OAAO,KAAKtF,GAAL,CAASmF,IAAT,CAAcC,EAAd,EAAkBC,GAAlB,EAAuBC,KAAvB,CAAP;EACD;;EAEDC,MAAM,CAACC,KAAD,EAAgB;IACpB,OAAO,KAAKxF,GAAL,CAASuF,MAAT,CAAgB1F,SAAS,CAACU,SAAV,CAAoBiF,KAApB,CAAhB,CAAP;EACD;;EAEDC,SAAS,GAAG;IACV,OAAO,IAAI3G,SAAJ,CAAc,KAAKiB,SAAnB,EAA8B,KAAKC,GAAL,CAASyF,SAAT,EAA9B,CAAP;EACD;;EAEDC,WAAW,GAAG;IACZ,OAAO,KAAK1F,GAAL,CAAS0F,WAAT,GAAuBC,KAA9B;EACD;;EAEDC,MAAM,CAACxC,EAAD,EAAaC,EAAb,EAAyBC,EAAzB,EAAqCC,EAArC,EAAiD;IACrD,KAAKvD,GAAL,CAAS4F,MAAT,CAAgBxC,EAAhB,EAAoBC,EAApB,EAAwBC,EAAxB,EAA4BC,EAA5B;IACA,OAAO,IAAP;EACD;;EAEDsC,OAAO,CAACC,IAAD,EAAejF,KAAf,EAAgC;IACrC,KAAKb,GAAL,CAAS6F,OAAT,CAAiB/G,SAAS,CAACyB,SAAV,CAAoB,KAAKR,SAAzB,EAAoC+F,IAApC,CAAjB,EAA4DjF,KAA5D;IACA,OAAO,IAAP;EACD;;EAEDkF,QAAQ,CAACC,KAAD,EAAoBnF,KAApB,EAAqC;IAC3C,KAAKb,GAAL,CAAS+F,QAAT,CAAkBhH,UAAU,CAACwB,SAAX,CAAqB,KAAKR,SAA1B,EAAqCiG,KAArC,CAAlB,EAA+DnF,KAA/D;IACA,OAAO,IAAP;EACD;;EAEDoF,QAAQ,CAACC,KAAD,EAAgB;IACtB,OAAO,IAAIrH,UAAJ,CAAe,KAAKkB,SAApB,EAA+B,KAAKC,GAAL,CAASiG,QAAT,CAAkBC,KAAlB,CAA/B,CAAP;EACD;;EAEDC,OAAO,GAAG;IACR,OAAO,KAAKnG,GAAL,CAASmG,OAAT,EAAP;EACD;;EAEDC,UAAU,GAAG;IACX,OAAO,KAAKpG,GAAL,CAASoG,UAAT,EAAP;EACD;;EAEDC,SAAS,CAAC5E,CAAD,EAAYC,CAAZ,EAAuB4E,CAAvB,EAAkC;IACzC,KAAKtG,GAAL,CAASqG,SAAT,CAAmB5E,CAAnB,EAAsBC,CAAtB,EAAyB4E,CAAzB;IACA,OAAO,IAAP;EACD;;EAEDC,SAAS,GAAG;IACV,OAAO,IAAI1H,UAAJ,CACL,KAAKkB,SADA,EAEL,KAAKC,GAAL,CAASiG,QAAT,CAAkB,KAAKjG,GAAL,CAASe,WAAT,KAAyB,CAA3C,CAFK,CAAP;EAID;;EAEDyF,EAAE,CAACC,IAAD,EAAeD,EAAf,EAA2B;IAC3B,OAAO,KAAKxG,GAAL,CAASwG,EAAT,CACL3G,SAAS,CAACU,SAAV,CAAoBkG,IAApB,CADK,EAEL/H,OAAO,CAAC,KAAKqB,SAAL,CAAe2G,MAAhB,EAAwBF,EAAxB,CAFF,CAAP;EAID;;EAEDG,QAAQ,GAAG;IACT,OAAO,KAAK3G,GAAL,CAAS2G,QAAT,EAAP;EACD;;EAEDC,WAAW,GAAG;IACZ,OAAO,KAAK5G,GAAL,CAAS4G,WAAT,EAAP;EACD;;EAEDC,IAAI,CAACC,KAAD,EAAgBC,IAAhB,EAA8BC,YAA9B,EAAqD;IACvD,MAAMC,MAAM,GAAGzH,IAAI,CAACsH,KAAD,CAAnB;IACA,MAAMI,KAAK,GAAG1H,IAAI,CAACuH,IAAD,CAAlB;;IACA,IAAIE,MAAM,KAAK,CAAX,IAAgBC,KAAK,KAAK,CAA9B,EAAiC;MAC/B,OAAO,IAAP;IACD;;IACD,MAAMrF,MAAM,GAAG,KAAK7B,GAAL,CAAS6G,IAAT,CAAcI,MAAd,EAAsBC,KAAtB,EAA6BF,YAA7B,CAAf;IACA,OAAOnF,MAAM,KAAK,IAAX,GAAkBA,MAAlB,GAA2B,IAAlC;EACD;;EAEDsF,SAAS,CAACC,CAAD,EAAiB;IACxB,IAAIhH,MAAM,GACRgH,CAAC,YAAYpI,WAAb,GACIqC,KAAK,CAACC,IAAN,CAAWtC,WAAW,CAACuB,SAAZ,CAAiC6G,CAAjC,CAAX,CADJ,GAEKA,CAHP;;IAIA,IAAIhH,MAAM,CAACiH,MAAP,KAAkB,EAAtB,EAA0B;MACxBjH,MAAM,GAAG,CACPA,MAAM,CAAC,CAAD,CADC,EAEPA,MAAM,CAAC,CAAD,CAFC,EAGPA,MAAM,CAAC,CAAD,CAHC,EAIPA,MAAM,CAAC,CAAD,CAJC,EAKPA,MAAM,CAAC,CAAD,CALC,EAMPA,MAAM,CAAC,CAAD,CANC,EAOPA,MAAM,CAAC,EAAD,CAPC,EAQPA,MAAM,CAAC,EAAD,CARC,EASPA,MAAM,CAAC,EAAD,CATC,CAAT;IAWD,CAZD,MAYO,IAAIA,MAAM,CAACiH,MAAP,KAAkB,CAAtB,EAAyB;MAC9B,MAAM,IAAIC,KAAJ,CAAW,0BAAyBlH,MAAM,CAACiH,MAAO,EAAlD,CAAN;IACD;;IACD,KAAKrH,GAAL,CAASmH,SAAT,CAAmB/G,MAAnB;IACA,OAAO,IAAP;EACD;;EAEDmH,WAAW,CAACC,GAAD,EAAc/H,CAAd,EAAyBgI,MAAzB,EAA0C;IACnD,MAAMhB,IAAI,GAAG,KAAK1G,SAAL,CAAe2H,IAAf,CAAoBC,yBAApB,CACX,KAAK3H,GADM,EAEXH,SAAS,CAACU,SAAV,CAAoBiH,GAApB,CAFW,EAGX/H,CAHW,CAAb;;IAKA,IAAIgH,IAAI,KAAK,IAAb,EAAmB;MACjB,OAAO,IAAP;IACD;;IACD,IAAIgB,MAAJ,EAAY;MACTA,MAAD,CAAsBzH,GAAtB,GAA4ByG,IAA5B;MACA,OAAOgB,MAAP;IACD,CAHD,MAGO;MACL,OAAO,IAAI5H,SAAJ,CAAc,KAAKE,SAAnB,EAA8B0G,IAA9B,CAAP;IACD;EACF;;EAEDmB,gBAAgB,CAACC,KAAD,EAAyB;IACvC,OAAO,KAAK9H,SAAL,CAAe2H,IAAf,CAAoBI,cAApB,CACL,KAAK9H,GADA,EAELH,SAAS,CAACU,SAAV,CAAoBsH,KAApB,CAFK,CAAP;EAID;;EAEDE,MAAM,GAAG;IACP,MAAMC,IAAI,GAAG,KAAKhI,GAAL,CAAS+H,MAAT,EAAb;IACA,MAAMlG,MAAM,GAAGmG,IAAI,CAACC,MAAL,CAA2B,CAACC,GAAD,EAAMC,GAAN,EAAWC,CAAX,KAAiB;MACzD,IAAIA,CAAC,KAAK,CAAV,EAAa;QACXF,GAAG,CAACG,IAAJ,CAAS,EAAT;MACD;;MACD,MAAMC,OAAO,GAAGJ,GAAG,CAACA,GAAG,CAACb,MAAJ,GAAa,CAAd,CAAnB;;MACA,IAAIiB,OAAO,CAACjB,MAAR,KAAmB,CAAvB,EAA0B;QACxBiB,OAAO,CAACD,IAAR,CAAaF,GAAb;QACA,MAAMd,MAAM,GAAGpI,YAAY,CAACqJ,OAAO,CAAC,CAAD,CAAR,CAA3B;;QACA,IAAIA,OAAO,CAACjB,MAAR,KAAmBA,MAAnB,IAA6Be,CAAC,KAAKJ,IAAI,CAACX,MAAL,GAAc,CAArD,EAAwD;UACtDa,GAAG,CAACG,IAAJ,CAAS,EAAT;QACD;MACF,CAND,MAMO;QACL,MAAMhB,MAAM,GAAGpI,YAAY,CAACqJ,OAAO,CAAC,CAAD,CAAR,CAA3B;;QACA,IAAIA,OAAO,CAACjB,MAAR,GAAiBA,MAArB,EAA6B;UAC3BiB,OAAO,CAACD,IAAR,CAAaF,GAAb;QACD;;QACD,IAAIG,OAAO,CAACjB,MAAR,KAAmBA,MAAnB,IAA6Be,CAAC,KAAKJ,IAAI,CAACX,MAAL,GAAc,CAArD,EAAwD;UACtDa,GAAG,CAACG,IAAJ,CAAS,EAAT;QACD;MACF;;MACD,OAAOH,GAAP;IACD,CArBc,EAqBZ,EArBY,CAAf;IAsBA,OAAOrG,MAAP;EACD;;AA9XuE"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import type { Skia, SkRect } from "../skia/types";
|
3
|
+
import type { SkiaDomViewProps } from "./types";
|
4
|
+
export declare class SkiaJSDomView extends React.Component<SkiaDomViewProps & {
|
5
|
+
Skia: Skia;
|
6
|
+
}> {
|
7
|
+
constructor(props: SkiaDomViewProps & {
|
8
|
+
Skia: Skia;
|
9
|
+
});
|
10
|
+
private _nativeId;
|
11
|
+
get nativeId(): number;
|
12
|
+
componentDidUpdate(prevProps: SkiaDomViewProps & {
|
13
|
+
Skia: Skia;
|
14
|
+
}): void;
|
15
|
+
/**
|
16
|
+
* Creates a snapshot from the canvas in the surface
|
17
|
+
* @param rect Rect to use as bounds. Optional.
|
18
|
+
* @returns An Image object.
|
19
|
+
*/
|
20
|
+
makeImageSnapshot(rect?: SkRect): import("../skia/types").SkImage;
|
21
|
+
/**
|
22
|
+
* Sends a redraw request to the native SkiaView.
|
23
|
+
*/
|
24
|
+
redraw(): void;
|
25
|
+
private draw;
|
26
|
+
/**
|
27
|
+
* Clear up the dom node when unmounting to release resources.
|
28
|
+
*/
|
29
|
+
componentWillUnmount(): void;
|
30
|
+
render(): React.JSX.Element;
|
31
|
+
}
|
@@ -0,0 +1,136 @@
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
2
|
+
|
3
|
+
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
4
|
+
|
5
|
+
import React from "react";
|
6
|
+
import { Platform } from "../Platform";
|
7
|
+
import SkiaPictureViewNativeComponent from "../specs/SkiaPictureViewNativeComponent";
|
8
|
+
import { JsiDrawingContext } from "../dom/types";
|
9
|
+
import { SkiaViewApi } from "./api";
|
10
|
+
import { SkiaViewNativeId } from "./SkiaViewNativeId";
|
11
|
+
const NativeSkiaPictureView = Platform.OS !== "web" ? SkiaPictureViewNativeComponent : // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
12
|
+
null;
|
13
|
+
export class SkiaJSDomView extends React.Component {
|
14
|
+
constructor(props) {
|
15
|
+
super(props);
|
16
|
+
|
17
|
+
_defineProperty(this, "_nativeId", void 0);
|
18
|
+
|
19
|
+
this._nativeId = SkiaViewNativeId.current++;
|
20
|
+
const {
|
21
|
+
root,
|
22
|
+
onTouch,
|
23
|
+
onSize
|
24
|
+
} = props;
|
25
|
+
|
26
|
+
if (root) {
|
27
|
+
assertSkiaViewApi();
|
28
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "root", root);
|
29
|
+
}
|
30
|
+
|
31
|
+
if (onTouch) {
|
32
|
+
assertSkiaViewApi();
|
33
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onTouch", onTouch);
|
34
|
+
}
|
35
|
+
|
36
|
+
if (onSize) {
|
37
|
+
assertSkiaViewApi();
|
38
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
get nativeId() {
|
43
|
+
return this._nativeId;
|
44
|
+
}
|
45
|
+
|
46
|
+
componentDidUpdate(prevProps) {
|
47
|
+
const {
|
48
|
+
root,
|
49
|
+
onTouch,
|
50
|
+
onSize
|
51
|
+
} = this.props;
|
52
|
+
|
53
|
+
if (root !== prevProps.root && root !== undefined) {
|
54
|
+
assertSkiaViewApi();
|
55
|
+
this.draw();
|
56
|
+
}
|
57
|
+
|
58
|
+
if (onTouch !== prevProps.onTouch) {
|
59
|
+
assertSkiaViewApi();
|
60
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onTouch", onTouch);
|
61
|
+
}
|
62
|
+
|
63
|
+
if (onSize !== prevProps.onSize) {
|
64
|
+
assertSkiaViewApi();
|
65
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
|
66
|
+
}
|
67
|
+
}
|
68
|
+
/**
|
69
|
+
* Creates a snapshot from the canvas in the surface
|
70
|
+
* @param rect Rect to use as bounds. Optional.
|
71
|
+
* @returns An Image object.
|
72
|
+
*/
|
73
|
+
|
74
|
+
|
75
|
+
makeImageSnapshot(rect) {
|
76
|
+
assertSkiaViewApi();
|
77
|
+
return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* Sends a redraw request to the native SkiaView.
|
81
|
+
*/
|
82
|
+
|
83
|
+
|
84
|
+
redraw() {
|
85
|
+
assertSkiaViewApi();
|
86
|
+
this.draw(); //SkiaViewApi.requestRedraw(this._nativeId);
|
87
|
+
}
|
88
|
+
|
89
|
+
draw() {
|
90
|
+
const {
|
91
|
+
root,
|
92
|
+
Skia
|
93
|
+
} = this.props;
|
94
|
+
|
95
|
+
if (root !== undefined) {
|
96
|
+
assertSkiaViewApi();
|
97
|
+
const rec = Skia.PictureRecorder();
|
98
|
+
const canvas = rec.beginRecording();
|
99
|
+
const ctx = new JsiDrawingContext(Skia, canvas);
|
100
|
+
root.render(ctx);
|
101
|
+
const picture = rec.finishRecordingAsPicture();
|
102
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "picture", picture);
|
103
|
+
}
|
104
|
+
}
|
105
|
+
/**
|
106
|
+
* Clear up the dom node when unmounting to release resources.
|
107
|
+
*/
|
108
|
+
|
109
|
+
|
110
|
+
componentWillUnmount() {
|
111
|
+
assertSkiaViewApi();
|
112
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "picture", null);
|
113
|
+
}
|
114
|
+
|
115
|
+
render() {
|
116
|
+
const {
|
117
|
+
mode,
|
118
|
+
debug = false,
|
119
|
+
...viewProps
|
120
|
+
} = this.props;
|
121
|
+
return /*#__PURE__*/React.createElement(NativeSkiaPictureView, _extends({
|
122
|
+
collapsable: false,
|
123
|
+
nativeID: `${this._nativeId}`,
|
124
|
+
mode: mode,
|
125
|
+
debug: debug
|
126
|
+
}, viewProps));
|
127
|
+
}
|
128
|
+
|
129
|
+
}
|
130
|
+
|
131
|
+
const assertSkiaViewApi = () => {
|
132
|
+
if (SkiaViewApi === null || SkiaViewApi.setJsiProperty === null || SkiaViewApi.callJsiMethod === null || SkiaViewApi.requestRedraw === null || SkiaViewApi.makeImageSnapshot === null) {
|
133
|
+
throw Error("Skia View Api was not found.");
|
134
|
+
}
|
135
|
+
};
|
136
|
+
//# sourceMappingURL=SkiaJSDomView.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["React","Platform","SkiaPictureViewNativeComponent","JsiDrawingContext","SkiaViewApi","SkiaViewNativeId","NativeSkiaPictureView","OS","SkiaJSDomView","Component","constructor","props","_nativeId","current","root","onTouch","onSize","assertSkiaViewApi","setJsiProperty","nativeId","componentDidUpdate","prevProps","undefined","draw","makeImageSnapshot","rect","redraw","Skia","rec","PictureRecorder","canvas","beginRecording","ctx","render","picture","finishRecordingAsPicture","componentWillUnmount","mode","debug","viewProps","callJsiMethod","requestRedraw","Error"],"sources":["SkiaJSDomView.tsx"],"sourcesContent":["import React from \"react\";\nimport type { HostComponent } from \"react-native\";\n\nimport type { Skia, SkRect } from \"../skia/types\";\nimport { Platform } from \"../Platform\";\nimport SkiaPictureViewNativeComponent from \"../specs/SkiaPictureViewNativeComponent\";\nimport { JsiDrawingContext } from \"../dom/types\";\n\nimport { SkiaViewApi } from \"./api\";\nimport type { SkiaPictureViewProps, SkiaDomViewProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst NativeSkiaPictureView: HostComponent<SkiaPictureViewProps> =\n Platform.OS !== \"web\"\n ? SkiaPictureViewNativeComponent\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (null as any);\n\nexport class SkiaJSDomView extends React.Component<\n SkiaDomViewProps & { Skia: Skia }\n> {\n constructor(props: SkiaDomViewProps & { Skia: Skia }) {\n super(props);\n this._nativeId = SkiaViewNativeId.current++;\n const { root, onTouch, onSize } = props;\n if (root) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"root\", root);\n }\n if (onTouch) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onTouch\", onTouch);\n }\n if (onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n }\n\n private _nativeId: number;\n\n public get nativeId() {\n return this._nativeId;\n }\n\n componentDidUpdate(prevProps: SkiaDomViewProps & { Skia: Skia }) {\n const { root, onTouch, onSize } = this.props;\n if (root !== prevProps.root && root !== undefined) {\n assertSkiaViewApi();\n this.draw();\n }\n if (onTouch !== prevProps.onTouch) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onTouch\", onTouch);\n }\n if (onSize !== prevProps.onSize) {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"onSize\", onSize);\n }\n }\n\n /**\n * Creates a snapshot from the canvas in the surface\n * @param rect Rect to use as bounds. Optional.\n * @returns An Image object.\n */\n public makeImageSnapshot(rect?: SkRect) {\n assertSkiaViewApi();\n return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);\n }\n\n /**\n * Sends a redraw request to the native SkiaView.\n */\n public redraw() {\n assertSkiaViewApi();\n this.draw();\n //SkiaViewApi.requestRedraw(this._nativeId);\n }\n\n private draw() {\n const { root, Skia } = this.props;\n if (root !== undefined) {\n assertSkiaViewApi();\n const rec = Skia.PictureRecorder();\n const canvas = rec.beginRecording();\n const ctx = new JsiDrawingContext(Skia, canvas);\n root.render(ctx);\n const picture = rec.finishRecordingAsPicture();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", picture);\n }\n }\n\n /**\n * Clear up the dom node when unmounting to release resources.\n */\n componentWillUnmount(): void {\n assertSkiaViewApi();\n SkiaViewApi.setJsiProperty(this._nativeId, \"picture\", null);\n }\n\n render() {\n const { mode, debug = false, ...viewProps } = this.props;\n return (\n <NativeSkiaPictureView\n collapsable={false}\n nativeID={`${this._nativeId}`}\n mode={mode}\n debug={debug}\n {...viewProps}\n />\n );\n }\n}\n\nconst assertSkiaViewApi = () => {\n if (\n SkiaViewApi === null ||\n SkiaViewApi.setJsiProperty === null ||\n SkiaViewApi.callJsiMethod === null ||\n SkiaViewApi.requestRedraw === null ||\n SkiaViewApi.makeImageSnapshot === null\n ) {\n throw Error(\"Skia View Api was not found.\");\n }\n};\n"],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { SkiaDomView as SkiaJSDomView } from "./SkiaDomView";
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"names":["SkiaDomView","SkiaJSDomView"],"sources":["SkiaJSDomView.web.tsx"],"sourcesContent":["export { SkiaDomView as SkiaJSDomView } from \"./SkiaDomView\";\n"],"mappings":"AAAA,SAASA,WAAW,IAAIC,aAAxB,QAA6C,eAA7C"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { CanvasKit, Path } from "canvaskit-wasm";
|
2
|
-
import type { FillType, PathCommand, PathOp, SkMatrix, SkPath, SkPoint, SkRect, InputRRect, StrokeOpts } from "../types";
|
2
|
+
import type { FillType, PathCommand, PathOp, SkMatrix, SkPath, SkPoint, SkRect, InputRRect, StrokeOpts, InputMatrix } from "../types";
|
3
3
|
import { HostObject } from "./Host";
|
4
4
|
import { JsiSkPoint } from "./JsiSkPoint";
|
5
5
|
import { JsiSkRect } from "./JsiSkRect";
|
@@ -51,7 +51,7 @@ export declare class JsiSkPath extends HostObject<Path, "Path"> implements SkPat
|
|
51
51
|
simplify(): boolean;
|
52
52
|
toSVGString(): string;
|
53
53
|
trim(start: number, stop: number, isComplement: boolean): this | null;
|
54
|
-
transform(
|
54
|
+
transform(m: InputMatrix): this;
|
55
55
|
interpolate(end: SkPath, t: number, output?: SkPath): SkPath | JsiSkPath | null;
|
56
56
|
isInterpolatable(path2: SkPath): boolean;
|
57
57
|
toCmds(): PathCommand[];
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import type { Skia, SkRect } from "../skia/types";
|
3
|
+
import type { SkiaDomViewProps } from "./types";
|
4
|
+
export declare class SkiaJSDomView extends React.Component<SkiaDomViewProps & {
|
5
|
+
Skia: Skia;
|
6
|
+
}> {
|
7
|
+
constructor(props: SkiaDomViewProps & {
|
8
|
+
Skia: Skia;
|
9
|
+
});
|
10
|
+
private _nativeId;
|
11
|
+
get nativeId(): number;
|
12
|
+
componentDidUpdate(prevProps: SkiaDomViewProps & {
|
13
|
+
Skia: Skia;
|
14
|
+
}): void;
|
15
|
+
/**
|
16
|
+
* Creates a snapshot from the canvas in the surface
|
17
|
+
* @param rect Rect to use as bounds. Optional.
|
18
|
+
* @returns An Image object.
|
19
|
+
*/
|
20
|
+
makeImageSnapshot(rect?: SkRect): import("../skia/types").SkImage;
|
21
|
+
/**
|
22
|
+
* Sends a redraw request to the native SkiaView.
|
23
|
+
*/
|
24
|
+
redraw(): void;
|
25
|
+
private draw;
|
26
|
+
/**
|
27
|
+
* Clear up the dom node when unmounting to release resources.
|
28
|
+
*/
|
29
|
+
componentWillUnmount(): void;
|
30
|
+
render(): React.JSX.Element;
|
31
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { SkiaDomView as SkiaJSDomView } from "./SkiaDomView";
|
package/package.json
CHANGED
@@ -8,6 +8,7 @@ import { useCallback, useMemo } from "react";
|
|
8
8
|
import type { SkPath, SkPoint } from "../../skia/types";
|
9
9
|
import { interpolatePaths, interpolateVector } from "../../animation";
|
10
10
|
import { Skia } from "../../skia";
|
11
|
+
import { Platform } from "../../Platform";
|
11
12
|
|
12
13
|
import {
|
13
14
|
useAnimatedReaction,
|
@@ -18,7 +19,7 @@ import {
|
|
18
19
|
|
19
20
|
export const notifyChange = (value: SharedValue<unknown>) => {
|
20
21
|
"worklet";
|
21
|
-
if (_WORKLET) {
|
22
|
+
if (_WORKLET || Platform.OS === "web") {
|
22
23
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
23
24
|
(value as any)._value = value.value;
|
24
25
|
}
|
package/src/renderer/Canvas.tsx
CHANGED
@@ -15,9 +15,9 @@ import type {
|
|
15
15
|
import type { LayoutChangeEvent } from "react-native";
|
16
16
|
|
17
17
|
import { SkiaDomView } from "../views";
|
18
|
-
import { SkiaDomView as SkiaDomViewWeb } from "../views/SkiaDomView.web";
|
19
18
|
import { Skia } from "../skia/Skia";
|
20
19
|
import type { TouchHandler, SkiaBaseViewProps } from "../views";
|
20
|
+
import { SkiaJSDomView } from "../views/SkiaJSDomView";
|
21
21
|
|
22
22
|
import { SkiaRoot } from "./Reconciler";
|
23
23
|
import { NATIVE_DOM } from "./HostComponents";
|
@@ -105,7 +105,8 @@ export const Canvas = forwardRef<SkiaDomView, CanvasProps>(
|
|
105
105
|
);
|
106
106
|
} else {
|
107
107
|
return (
|
108
|
-
<
|
108
|
+
<SkiaJSDomView
|
109
|
+
Skia={Skia}
|
109
110
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
110
111
|
ref={ref as any}
|
111
112
|
style={style}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { CanvasKit, Path } from "canvaskit-wasm";
|
1
|
+
import type { CanvasKit, Matrix3x3, Path } from "canvaskit-wasm";
|
2
2
|
|
3
3
|
import { PathVerb } from "../types";
|
4
4
|
import type {
|
@@ -11,6 +11,7 @@ import type {
|
|
11
11
|
SkRect,
|
12
12
|
InputRRect,
|
13
13
|
StrokeOpts,
|
14
|
+
InputMatrix,
|
14
15
|
} from "../types";
|
15
16
|
|
16
17
|
import { getEnum, HostObject, optEnum } from "./Host";
|
@@ -339,8 +340,27 @@ export class JsiSkPath extends HostObject<Path, "Path"> implements SkPath {
|
|
339
340
|
return result === null ? result : this;
|
340
341
|
}
|
341
342
|
|
342
|
-
transform(
|
343
|
-
|
343
|
+
transform(m: InputMatrix) {
|
344
|
+
let matrix =
|
345
|
+
m instanceof JsiSkMatrix
|
346
|
+
? Array.from(JsiSkMatrix.fromValue<Matrix3x3>(m))
|
347
|
+
: (m as Exclude<InputMatrix, SkMatrix>);
|
348
|
+
if (matrix.length === 16) {
|
349
|
+
matrix = [
|
350
|
+
matrix[0],
|
351
|
+
matrix[1],
|
352
|
+
matrix[3],
|
353
|
+
matrix[4],
|
354
|
+
matrix[5],
|
355
|
+
matrix[7],
|
356
|
+
matrix[12],
|
357
|
+
matrix[13],
|
358
|
+
matrix[15],
|
359
|
+
];
|
360
|
+
} else if (matrix.length !== 9) {
|
361
|
+
throw new Error(`Invalid matrix length: ${matrix.length}`);
|
362
|
+
}
|
363
|
+
this.ref.transform(matrix);
|
344
364
|
return this;
|
345
365
|
}
|
346
366
|
|
@@ -0,0 +1,126 @@
|
|
1
|
+
import React from "react";
|
2
|
+
import type { HostComponent } from "react-native";
|
3
|
+
|
4
|
+
import type { Skia, SkRect } from "../skia/types";
|
5
|
+
import { Platform } from "../Platform";
|
6
|
+
import SkiaPictureViewNativeComponent from "../specs/SkiaPictureViewNativeComponent";
|
7
|
+
import { JsiDrawingContext } from "../dom/types";
|
8
|
+
|
9
|
+
import { SkiaViewApi } from "./api";
|
10
|
+
import type { SkiaPictureViewProps, SkiaDomViewProps } from "./types";
|
11
|
+
import { SkiaViewNativeId } from "./SkiaViewNativeId";
|
12
|
+
|
13
|
+
const NativeSkiaPictureView: HostComponent<SkiaPictureViewProps> =
|
14
|
+
Platform.OS !== "web"
|
15
|
+
? SkiaPictureViewNativeComponent
|
16
|
+
: // eslint-disable-next-line @typescript-eslint/no-explicit-any
|
17
|
+
(null as any);
|
18
|
+
|
19
|
+
export class SkiaJSDomView extends React.Component<
|
20
|
+
SkiaDomViewProps & { Skia: Skia }
|
21
|
+
> {
|
22
|
+
constructor(props: SkiaDomViewProps & { Skia: Skia }) {
|
23
|
+
super(props);
|
24
|
+
this._nativeId = SkiaViewNativeId.current++;
|
25
|
+
const { root, onTouch, onSize } = props;
|
26
|
+
if (root) {
|
27
|
+
assertSkiaViewApi();
|
28
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "root", root);
|
29
|
+
}
|
30
|
+
if (onTouch) {
|
31
|
+
assertSkiaViewApi();
|
32
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onTouch", onTouch);
|
33
|
+
}
|
34
|
+
if (onSize) {
|
35
|
+
assertSkiaViewApi();
|
36
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
40
|
+
private _nativeId: number;
|
41
|
+
|
42
|
+
public get nativeId() {
|
43
|
+
return this._nativeId;
|
44
|
+
}
|
45
|
+
|
46
|
+
componentDidUpdate(prevProps: SkiaDomViewProps & { Skia: Skia }) {
|
47
|
+
const { root, onTouch, onSize } = this.props;
|
48
|
+
if (root !== prevProps.root && root !== undefined) {
|
49
|
+
assertSkiaViewApi();
|
50
|
+
this.draw();
|
51
|
+
}
|
52
|
+
if (onTouch !== prevProps.onTouch) {
|
53
|
+
assertSkiaViewApi();
|
54
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onTouch", onTouch);
|
55
|
+
}
|
56
|
+
if (onSize !== prevProps.onSize) {
|
57
|
+
assertSkiaViewApi();
|
58
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
|
59
|
+
}
|
60
|
+
}
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Creates a snapshot from the canvas in the surface
|
64
|
+
* @param rect Rect to use as bounds. Optional.
|
65
|
+
* @returns An Image object.
|
66
|
+
*/
|
67
|
+
public makeImageSnapshot(rect?: SkRect) {
|
68
|
+
assertSkiaViewApi();
|
69
|
+
return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);
|
70
|
+
}
|
71
|
+
|
72
|
+
/**
|
73
|
+
* Sends a redraw request to the native SkiaView.
|
74
|
+
*/
|
75
|
+
public redraw() {
|
76
|
+
assertSkiaViewApi();
|
77
|
+
this.draw();
|
78
|
+
//SkiaViewApi.requestRedraw(this._nativeId);
|
79
|
+
}
|
80
|
+
|
81
|
+
private draw() {
|
82
|
+
const { root, Skia } = this.props;
|
83
|
+
if (root !== undefined) {
|
84
|
+
assertSkiaViewApi();
|
85
|
+
const rec = Skia.PictureRecorder();
|
86
|
+
const canvas = rec.beginRecording();
|
87
|
+
const ctx = new JsiDrawingContext(Skia, canvas);
|
88
|
+
root.render(ctx);
|
89
|
+
const picture = rec.finishRecordingAsPicture();
|
90
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "picture", picture);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
|
94
|
+
/**
|
95
|
+
* Clear up the dom node when unmounting to release resources.
|
96
|
+
*/
|
97
|
+
componentWillUnmount(): void {
|
98
|
+
assertSkiaViewApi();
|
99
|
+
SkiaViewApi.setJsiProperty(this._nativeId, "picture", null);
|
100
|
+
}
|
101
|
+
|
102
|
+
render() {
|
103
|
+
const { mode, debug = false, ...viewProps } = this.props;
|
104
|
+
return (
|
105
|
+
<NativeSkiaPictureView
|
106
|
+
collapsable={false}
|
107
|
+
nativeID={`${this._nativeId}`}
|
108
|
+
mode={mode}
|
109
|
+
debug={debug}
|
110
|
+
{...viewProps}
|
111
|
+
/>
|
112
|
+
);
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
const assertSkiaViewApi = () => {
|
117
|
+
if (
|
118
|
+
SkiaViewApi === null ||
|
119
|
+
SkiaViewApi.setJsiProperty === null ||
|
120
|
+
SkiaViewApi.callJsiMethod === null ||
|
121
|
+
SkiaViewApi.requestRedraw === null ||
|
122
|
+
SkiaViewApi.makeImageSnapshot === null
|
123
|
+
) {
|
124
|
+
throw Error("Skia View Api was not found.");
|
125
|
+
}
|
126
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export { SkiaDomView as SkiaJSDomView } from "./SkiaDomView";
|