@shopify/react-native-skia 0.1.156 → 0.1.158
Sign up to get free protection for your applications and to get access to all the features.
- package/android/build.gradle +10 -5
- package/cpp/api/JsiSkContourMeasure.h +7 -5
- package/lib/commonjs/dom/nodes/DrawingNode.js +1 -5
- package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/RenderNode.js +2 -8
- package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
- package/lib/commonjs/dom/nodes/drawings/Text.js +4 -9
- package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
- package/lib/commonjs/dom/types/Common.js.map +1 -1
- package/lib/commonjs/dom/types/Drawings.js.map +1 -1
- package/lib/commonjs/mock/index.js +0 -1
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.js +10 -2
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.js.map +1 -1
- package/lib/commonjs/renderer/HostConfig.js +10 -1
- package/lib/commonjs/renderer/HostConfig.js.map +1 -1
- package/lib/commonjs/renderer/components/Mask.js +1 -3
- package/lib/commonjs/renderer/components/Mask.js.map +1 -1
- package/lib/commonjs/renderer/components/Paint.js +5 -18
- package/lib/commonjs/renderer/components/Paint.js.map +1 -1
- package/lib/commonjs/renderer/useCanvas.js +18 -2
- package/lib/commonjs/renderer/useCanvas.js.map +1 -1
- package/lib/commonjs/skia/core/Picture.js +1 -24
- package/lib/commonjs/skia/core/Picture.js.map +1 -1
- package/lib/commonjs/skia/core/Rect.js +1 -1
- package/lib/commonjs/skia/core/Rect.js.map +1 -1
- package/lib/commonjs/skia/types/ContourMeasure.js.map +1 -1
- package/lib/commonjs/skia/types/Size.js +2 -0
- package/lib/commonjs/skia/types/Size.js.map +1 -0
- package/lib/commonjs/skia/types/index.js +13 -0
- package/lib/commonjs/skia/types/index.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkColor.js +8 -0
- package/lib/commonjs/skia/web/JsiSkColor.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkContourMeasure.js +4 -7
- package/lib/commonjs/skia/web/JsiSkContourMeasure.js.map +1 -1
- package/lib/commonjs/values/web/RNSkReadonlyValue.js +4 -2
- package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -1
- package/lib/commonjs/views/SkiaBaseWebView.js +2 -2
- package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/animation/spring/runSpring.js +1 -1
- package/lib/module/animation/spring/runSpring.js.map +1 -1
- package/lib/module/animation/spring/useSpring.js +1 -1
- package/lib/module/animation/spring/useSpring.js.map +1 -1
- package/lib/module/animation/timing/createTiming.js +6 -2
- package/lib/module/animation/timing/createTiming.js.map +1 -1
- package/lib/module/animation/timing/functions/getResolvedParams.js +10 -6
- package/lib/module/animation/timing/functions/getResolvedParams.js.map +1 -1
- package/lib/module/animation/timing/useTiming.js +3 -1
- package/lib/module/animation/timing/useTiming.js.map +1 -1
- package/lib/module/dom/nodes/DrawingNode.js +2 -6
- package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
- package/lib/module/dom/nodes/JsiSkDOM.js +2 -2
- package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
- package/lib/module/dom/nodes/RenderNode.js +1 -4
- package/lib/module/dom/nodes/RenderNode.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Gradient.js +2 -2
- package/lib/module/dom/nodes/datatypes/Gradient.js.map +1 -1
- package/lib/module/dom/nodes/drawings/Text.js +4 -9
- package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
- package/lib/module/dom/nodes/paint/Shaders.js +4 -2
- package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
- package/lib/module/dom/types/Common.js.map +1 -1
- package/lib/module/dom/types/Drawings.js.map +1 -1
- package/lib/module/mock/index.js +10 -7
- package/lib/module/mock/index.js.map +1 -1
- package/lib/module/renderer/Canvas.js +10 -2
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/HostComponents.js.map +1 -1
- package/lib/module/renderer/HostConfig.js +9 -1
- package/lib/module/renderer/HostConfig.js.map +1 -1
- package/lib/module/renderer/components/Mask.js +2 -4
- package/lib/module/renderer/components/Mask.js.map +1 -1
- package/lib/module/renderer/components/Paint.js +3 -14
- package/lib/module/renderer/components/Paint.js.map +1 -1
- package/lib/module/renderer/useCanvas.js +13 -0
- package/lib/module/renderer/useCanvas.js.map +1 -1
- package/lib/module/skia/core/Picture.js +0 -18
- package/lib/module/skia/core/Picture.js.map +1 -1
- package/lib/module/skia/core/Rect.js +1 -1
- package/lib/module/skia/core/Rect.js.map +1 -1
- package/lib/module/skia/core/Vector.js +1 -1
- package/lib/module/skia/core/Vector.js.map +1 -1
- package/lib/module/skia/types/ContourMeasure.js.map +1 -1
- package/lib/module/skia/types/Size.js +2 -0
- package/lib/module/skia/types/Size.js.map +1 -0
- package/lib/module/skia/types/index.js +1 -0
- package/lib/module/skia/types/index.js.map +1 -1
- package/lib/module/skia/web/Host.js +1 -1
- package/lib/module/skia/web/Host.js.map +1 -1
- package/lib/module/skia/web/JsiSkColor.js +8 -0
- package/lib/module/skia/web/JsiSkColor.js.map +1 -1
- package/lib/module/skia/web/JsiSkContourMeasure.js +3 -7
- package/lib/module/skia/web/JsiSkContourMeasure.js.map +1 -1
- package/lib/module/skia/web/JsiSkMatrix.js +1 -1
- package/lib/module/skia/web/JsiSkMatrix.js.map +1 -1
- package/lib/module/values/web/RNSkAnimation.js +2 -2
- package/lib/module/values/web/RNSkAnimation.js.map +1 -1
- package/lib/module/values/web/RNSkReadonlyValue.js +4 -2
- package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +5 -3
- package/lib/module/views/SkiaBaseWebView.js.map +1 -1
- package/lib/module/views/useTouchHandler.js +6 -6
- package/lib/module/views/useTouchHandler.js.map +1 -1
- package/lib/module/web/WithSkiaWeb.js +1 -1
- package/lib/module/web/WithSkiaWeb.js.map +1 -1
- package/lib/typescript/src/dom/nodes/RenderNode.d.ts +1 -3
- package/lib/typescript/src/dom/types/Common.d.ts +2 -3
- package/lib/typescript/src/dom/types/Drawings.d.ts +1 -3
- package/lib/typescript/src/renderer/Canvas.d.ts +4 -1
- package/lib/typescript/src/renderer/HostComponents.d.ts +1 -5
- package/lib/typescript/src/renderer/components/Paint.d.ts +3 -4
- package/lib/typescript/src/renderer/useCanvas.d.ts +1 -0
- package/lib/typescript/src/skia/core/Picture.d.ts +0 -8
- package/lib/typescript/src/skia/types/ContourMeasure.d.ts +3 -2
- package/lib/typescript/src/skia/types/Size.d.ts +4 -0
- package/lib/typescript/src/skia/types/index.d.ts +1 -0
- package/lib/typescript/src/skia/web/JsiSkContourMeasure.d.ts +2 -6
- package/package.json +12 -6
- package/src/dom/nodes/DrawingNode.ts +2 -4
- package/src/dom/nodes/RenderNode.ts +1 -13
- package/src/dom/nodes/drawings/Text.ts +4 -4
- package/src/dom/types/Common.ts +2 -4
- package/src/dom/types/Drawings.ts +1 -4
- package/src/mock/index.ts +0 -1
- package/src/renderer/Canvas.tsx +18 -3
- package/src/renderer/HostComponents.ts +1 -4
- package/src/renderer/HostConfig.ts +8 -1
- package/src/renderer/components/Mask.tsx +2 -2
- package/src/renderer/components/Paint.tsx +3 -14
- package/src/renderer/useCanvas.ts +14 -0
- package/src/skia/core/Picture.ts +0 -24
- package/src/skia/core/Rect.ts +1 -1
- package/src/skia/types/ContourMeasure.tsx +3 -2
- package/src/skia/types/Size.ts +4 -0
- package/src/skia/types/index.ts +1 -0
- package/src/skia/web/JsiSkColor.ts +11 -0
- package/src/skia/web/JsiSkContourMeasure.ts +7 -3
- package/src/values/web/RNSkReadonlyValue.ts +4 -2
- package/src/views/SkiaBaseWebView.tsx +2 -2
@@ -12,7 +12,7 @@ const useInternalTouchHandler = function (handlers) {
|
|
12
12
|
history.forEach(touches => {
|
13
13
|
// Enumerate touches
|
14
14
|
for (let i = 0; i < touches.length; i++) {
|
15
|
-
var _prevTouchInfoRef$cur, _prevVelocityRef$curr, _prevVelocityRef$curr2;
|
15
|
+
var _prevTouchInfoRef$cur, _prevTouchInfoRef$cur2, _prevTouch$x, _prevTouch$y, _prevVelocityRef$curr, _prevVelocityRef$curr2, _prevVelocityRef$curr3, _prevVelocityRef$curr4;
|
16
16
|
|
17
17
|
if (!multiTouch && i > 0) {
|
18
18
|
break;
|
@@ -21,9 +21,9 @@ const useInternalTouchHandler = function (handlers) {
|
|
21
21
|
const touch = touches[i];
|
22
22
|
const prevTouch = prevTouchInfoRef.current[touch.id]; // Calculate the velocity from the previous touch.
|
23
23
|
|
24
|
-
const timeDiffseconds = touch.timestamp - ((
|
25
|
-
const distX = touch.x - ((prevTouch === null || prevTouch === void 0 ? void 0 : prevTouch.x)
|
26
|
-
const distY = touch.y - ((prevTouch === null || prevTouch === void 0 ? void 0 : prevTouch.y)
|
24
|
+
const timeDiffseconds = touch.timestamp - ((_prevTouchInfoRef$cur = (_prevTouchInfoRef$cur2 = prevTouchInfoRef.current[touch.id]) === null || _prevTouchInfoRef$cur2 === void 0 ? void 0 : _prevTouchInfoRef$cur2.timestamp) !== null && _prevTouchInfoRef$cur !== void 0 ? _prevTouchInfoRef$cur : touch.timestamp);
|
25
|
+
const distX = touch.x - ((_prevTouch$x = prevTouch === null || prevTouch === void 0 ? void 0 : prevTouch.x) !== null && _prevTouch$x !== void 0 ? _prevTouch$x : touch.x);
|
26
|
+
const distY = touch.y - ((_prevTouch$y = prevTouch === null || prevTouch === void 0 ? void 0 : prevTouch.y) !== null && _prevTouch$y !== void 0 ? _prevTouch$y : touch.y);
|
27
27
|
|
28
28
|
if (touch.type !== TouchType.Start && touch.type !== TouchType.End && touch.type !== TouchType.Cancelled && timeDiffseconds > 0) {
|
29
29
|
prevVelocityRef.current[touch.id] = {
|
@@ -33,8 +33,8 @@ const useInternalTouchHandler = function (handlers) {
|
|
33
33
|
}
|
34
34
|
|
35
35
|
const extendedTouchInfo = { ...touch,
|
36
|
-
velocityX: (
|
37
|
-
velocityY: ((_prevVelocityRef$
|
36
|
+
velocityX: (_prevVelocityRef$curr = (_prevVelocityRef$curr2 = prevVelocityRef.current[touch.id]) === null || _prevVelocityRef$curr2 === void 0 ? void 0 : _prevVelocityRef$curr2.x) !== null && _prevVelocityRef$curr !== void 0 ? _prevVelocityRef$curr : 0,
|
37
|
+
velocityY: (_prevVelocityRef$curr3 = (_prevVelocityRef$curr4 = prevVelocityRef.current[touch.id]) === null || _prevVelocityRef$curr4 === void 0 ? void 0 : _prevVelocityRef$curr4.y) !== null && _prevVelocityRef$curr3 !== void 0 ? _prevVelocityRef$curr3 : 0
|
38
38
|
}; // Save previous touch
|
39
39
|
|
40
40
|
prevTouchInfoRef.current[touch.id] = touch;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["useCallback","useRef","PixelRatio","TouchType","useInternalTouchHandler","handlers","deps","multiTouch","prevTouchInfoRef","prevVelocityRef","history","forEach","touches","i","length","touch","prevTouch","current","id","timeDiffseconds","timestamp","distX","x","distY","y","type","Start","End","Cancelled","get","extendedTouchInfo","velocityX","velocityY","onStart","Active","onActive","onEnd","useTouchHandler","useMultiTouchHandler"],"sources":["useTouchHandler.ts"],"sourcesContent":["import type { DependencyList } from \"react\";\nimport { useCallback, useRef } from \"react\";\nimport { PixelRatio } from \"react-native\";\n\nimport type { Vector } from \"../skia/types\";\n\nimport type {\n ExtendedTouchInfo,\n TouchHandlers,\n TouchHandler,\n TouchInfo,\n} from \"./types\";\nimport { TouchType } from \"./types\";\n\nconst useInternalTouchHandler = (\n handlers: TouchHandlers,\n deps: DependencyList = [],\n multiTouch = false\n): TouchHandler => {\n const prevTouchInfoRef = useRef<{ [key: number]: TouchInfo | undefined }>({});\n const prevVelocityRef = useRef<{ [key: number]: Vector | undefined }>({});\n\n return useCallback((history: Array<Array<TouchInfo>>) => {\n // Process all items in the current touch history\n history.forEach((touches) => {\n // Enumerate touches\n for (let i = 0; i < touches.length; i++) {\n if (!multiTouch && i > 0) {\n break;\n }\n\n const touch = touches[i];\n const prevTouch = prevTouchInfoRef.current[touch.id];\n // Calculate the velocity from the previous touch.\n const timeDiffseconds =\n touch.timestamp -\n (prevTouchInfoRef.current[touch.id]?.timestamp ?? touch.timestamp);\n\n const distX = touch.x - (prevTouch?.x ?? touch.x);\n const distY = touch.y - (prevTouch?.y ?? touch.y);\n\n if (\n touch.type !== TouchType.Start &&\n touch.type !== TouchType.End &&\n touch.type !== TouchType.Cancelled &&\n timeDiffseconds > 0\n ) {\n prevVelocityRef.current[touch.id] = {\n x: distX / timeDiffseconds / PixelRatio.get(),\n y: distY / timeDiffseconds / PixelRatio.get(),\n };\n }\n\n const extendedTouchInfo: ExtendedTouchInfo = {\n ...touch,\n velocityX: prevVelocityRef.current[touch.id]?.x ?? 0,\n velocityY: prevVelocityRef.current[touch.id]?.y ?? 0,\n };\n\n // Save previous touch\n prevTouchInfoRef.current[touch.id] = touch;\n\n if (touch.type === TouchType.Start) {\n delete prevVelocityRef.current[touch.id];\n handlers.onStart && handlers.onStart(touch);\n } else if (touch.type === TouchType.Active) {\n handlers.onActive && handlers.onActive(extendedTouchInfo);\n } else {\n handlers.onEnd && handlers.onEnd(extendedTouchInfo);\n }\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n\n/**\n * Provides a callback for handling touch events in the Skia View.\n * This touch handler only handles single touches.\n * @param handlers Callbacks for the different touch states\n * @param deps optional Dependency array to update the handlers\n * @returns A function that can be used from within the onDraw callback to\n * update and handle touch events. Call it with the touches property from\n * the info object.\n */\nexport const useTouchHandler = (\n handlers: TouchHandlers,\n deps: DependencyList = []\n): TouchHandler => {\n return useInternalTouchHandler(handlers, deps, false);\n};\n\n/**\n * Provides a callback for handling touch events in the Skia View.\n * This touch handler handles multiple touches.\n * @param handlers Callbacks for the different touch states\n * @param deps optional Dependency array to update the handlers\n * @returns A function that can be used from within the onDraw callback to\n * update and handle touch events. Call it with the touches property from\n * the info object.\n */\nexport const useMultiTouchHandler = (\n handlers: TouchHandlers,\n deps: DependencyList = []\n): TouchHandler => {\n return useInternalTouchHandler(handlers, deps, true);\n};\n"],"mappings":"AACA,SAASA,WAAT,EAAsBC,MAAtB,QAAoC,OAApC;AACA,SAASC,UAAT,QAA2B,cAA3B;AAUA,SAASC,SAAT,QAA0B,SAA1B;;AAEA,MAAMC,uBAAuB,GAAG,UAC9BC,QAD8B,EAIb;EAAA,IAFjBC,IAEiB,uEAFM,EAEN;EAAA,IADjBC,UACiB,uEADJ,KACI;EACjB,MAAMC,gBAAgB,GAAGP,MAAM,CAA2C,EAA3C,CAA/B;EACA,MAAMQ,eAAe,GAAGR,MAAM,CAAwC,EAAxC,CAA9B;EAEA,OAAOD,WAAW,CAAEU,OAAD,IAAsC;IACvD;IACAA,OAAO,CAACC,OAAR,CAAiBC,OAAD,IAAa;MAC3B;MACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,OAAO,CAACE,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;QAAA;;QACvC,IAAI,CAACN,UAAD,IAAeM,CAAC,GAAG,CAAvB,EAA0B;UACxB;QACD;;QAED,MAAME,KAAK,GAAGH,OAAO,CAACC,CAAD,CAArB;QACA,MAAMG,SAAS,GAAGR,gBAAgB,CAACS,OAAjB,CAAyBF,KAAK,CAACG,EAA/B,CAAlB,CANuC,CAOvC;;QACA,MAAMC,eAAe,GACnBJ,KAAK,CAACK,SAAN,
|
1
|
+
{"version":3,"names":["useCallback","useRef","PixelRatio","TouchType","useInternalTouchHandler","handlers","deps","multiTouch","prevTouchInfoRef","prevVelocityRef","history","forEach","touches","i","length","touch","prevTouch","current","id","timeDiffseconds","timestamp","distX","x","distY","y","type","Start","End","Cancelled","get","extendedTouchInfo","velocityX","velocityY","onStart","Active","onActive","onEnd","useTouchHandler","useMultiTouchHandler"],"sources":["useTouchHandler.ts"],"sourcesContent":["import type { DependencyList } from \"react\";\nimport { useCallback, useRef } from \"react\";\nimport { PixelRatio } from \"react-native\";\n\nimport type { Vector } from \"../skia/types\";\n\nimport type {\n ExtendedTouchInfo,\n TouchHandlers,\n TouchHandler,\n TouchInfo,\n} from \"./types\";\nimport { TouchType } from \"./types\";\n\nconst useInternalTouchHandler = (\n handlers: TouchHandlers,\n deps: DependencyList = [],\n multiTouch = false\n): TouchHandler => {\n const prevTouchInfoRef = useRef<{ [key: number]: TouchInfo | undefined }>({});\n const prevVelocityRef = useRef<{ [key: number]: Vector | undefined }>({});\n\n return useCallback((history: Array<Array<TouchInfo>>) => {\n // Process all items in the current touch history\n history.forEach((touches) => {\n // Enumerate touches\n for (let i = 0; i < touches.length; i++) {\n if (!multiTouch && i > 0) {\n break;\n }\n\n const touch = touches[i];\n const prevTouch = prevTouchInfoRef.current[touch.id];\n // Calculate the velocity from the previous touch.\n const timeDiffseconds =\n touch.timestamp -\n (prevTouchInfoRef.current[touch.id]?.timestamp ?? touch.timestamp);\n\n const distX = touch.x - (prevTouch?.x ?? touch.x);\n const distY = touch.y - (prevTouch?.y ?? touch.y);\n\n if (\n touch.type !== TouchType.Start &&\n touch.type !== TouchType.End &&\n touch.type !== TouchType.Cancelled &&\n timeDiffseconds > 0\n ) {\n prevVelocityRef.current[touch.id] = {\n x: distX / timeDiffseconds / PixelRatio.get(),\n y: distY / timeDiffseconds / PixelRatio.get(),\n };\n }\n\n const extendedTouchInfo: ExtendedTouchInfo = {\n ...touch,\n velocityX: prevVelocityRef.current[touch.id]?.x ?? 0,\n velocityY: prevVelocityRef.current[touch.id]?.y ?? 0,\n };\n\n // Save previous touch\n prevTouchInfoRef.current[touch.id] = touch;\n\n if (touch.type === TouchType.Start) {\n delete prevVelocityRef.current[touch.id];\n handlers.onStart && handlers.onStart(touch);\n } else if (touch.type === TouchType.Active) {\n handlers.onActive && handlers.onActive(extendedTouchInfo);\n } else {\n handlers.onEnd && handlers.onEnd(extendedTouchInfo);\n }\n }\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n\n/**\n * Provides a callback for handling touch events in the Skia View.\n * This touch handler only handles single touches.\n * @param handlers Callbacks for the different touch states\n * @param deps optional Dependency array to update the handlers\n * @returns A function that can be used from within the onDraw callback to\n * update and handle touch events. Call it with the touches property from\n * the info object.\n */\nexport const useTouchHandler = (\n handlers: TouchHandlers,\n deps: DependencyList = []\n): TouchHandler => {\n return useInternalTouchHandler(handlers, deps, false);\n};\n\n/**\n * Provides a callback for handling touch events in the Skia View.\n * This touch handler handles multiple touches.\n * @param handlers Callbacks for the different touch states\n * @param deps optional Dependency array to update the handlers\n * @returns A function that can be used from within the onDraw callback to\n * update and handle touch events. Call it with the touches property from\n * the info object.\n */\nexport const useMultiTouchHandler = (\n handlers: TouchHandlers,\n deps: DependencyList = []\n): TouchHandler => {\n return useInternalTouchHandler(handlers, deps, true);\n};\n"],"mappings":"AACA,SAASA,WAAT,EAAsBC,MAAtB,QAAoC,OAApC;AACA,SAASC,UAAT,QAA2B,cAA3B;AAUA,SAASC,SAAT,QAA0B,SAA1B;;AAEA,MAAMC,uBAAuB,GAAG,UAC9BC,QAD8B,EAIb;EAAA,IAFjBC,IAEiB,uEAFM,EAEN;EAAA,IADjBC,UACiB,uEADJ,KACI;EACjB,MAAMC,gBAAgB,GAAGP,MAAM,CAA2C,EAA3C,CAA/B;EACA,MAAMQ,eAAe,GAAGR,MAAM,CAAwC,EAAxC,CAA9B;EAEA,OAAOD,WAAW,CAAEU,OAAD,IAAsC;IACvD;IACAA,OAAO,CAACC,OAAR,CAAiBC,OAAD,IAAa;MAC3B;MACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGD,OAAO,CAACE,MAA5B,EAAoCD,CAAC,EAArC,EAAyC;QAAA;;QACvC,IAAI,CAACN,UAAD,IAAeM,CAAC,GAAG,CAAvB,EAA0B;UACxB;QACD;;QAED,MAAME,KAAK,GAAGH,OAAO,CAACC,CAAD,CAArB;QACA,MAAMG,SAAS,GAAGR,gBAAgB,CAACS,OAAjB,CAAyBF,KAAK,CAACG,EAA/B,CAAlB,CANuC,CAOvC;;QACA,MAAMC,eAAe,GACnBJ,KAAK,CAACK,SAAN,uDACCZ,gBAAgB,CAACS,OAAjB,CAAyBF,KAAK,CAACG,EAA/B,CADD,2DACC,uBAAoCE,SADrC,yEACkDL,KAAK,CAACK,SADxD,CADF;QAIA,MAAMC,KAAK,GAAGN,KAAK,CAACO,CAAN,oBAAWN,SAAX,aAAWA,SAAX,uBAAWA,SAAS,CAAEM,CAAtB,uDAA2BP,KAAK,CAACO,CAAjC,CAAd;QACA,MAAMC,KAAK,GAAGR,KAAK,CAACS,CAAN,oBAAWR,SAAX,aAAWA,SAAX,uBAAWA,SAAS,CAAEQ,CAAtB,uDAA2BT,KAAK,CAACS,CAAjC,CAAd;;QAEA,IACET,KAAK,CAACU,IAAN,KAAetB,SAAS,CAACuB,KAAzB,IACAX,KAAK,CAACU,IAAN,KAAetB,SAAS,CAACwB,GADzB,IAEAZ,KAAK,CAACU,IAAN,KAAetB,SAAS,CAACyB,SAFzB,IAGAT,eAAe,GAAG,CAJpB,EAKE;UACAV,eAAe,CAACQ,OAAhB,CAAwBF,KAAK,CAACG,EAA9B,IAAoC;YAClCI,CAAC,EAAED,KAAK,GAAGF,eAAR,GAA0BjB,UAAU,CAAC2B,GAAX,EADK;YAElCL,CAAC,EAAED,KAAK,GAAGJ,eAAR,GAA0BjB,UAAU,CAAC2B,GAAX;UAFK,CAApC;QAID;;QAED,MAAMC,iBAAoC,GAAG,EAC3C,GAAGf,KADwC;UAE3CgB,SAAS,qDAAEtB,eAAe,CAACQ,OAAhB,CAAwBF,KAAK,CAACG,EAA9B,CAAF,2DAAE,uBAAmCI,CAArC,yEAA0C,CAFR;UAG3CU,SAAS,sDAAEvB,eAAe,CAACQ,OAAhB,CAAwBF,KAAK,CAACG,EAA9B,CAAF,2DAAE,uBAAmCM,CAArC,2EAA0C;QAHR,CAA7C,CA3BuC,CAiCvC;;QACAhB,gBAAgB,CAACS,OAAjB,CAAyBF,KAAK,CAACG,EAA/B,IAAqCH,KAArC;;QAEA,IAAIA,KAAK,CAACU,IAAN,KAAetB,SAAS,CAACuB,KAA7B,EAAoC;UAClC,OAAOjB,eAAe,CAACQ,OAAhB,CAAwBF,KAAK,CAACG,EAA9B,CAAP;UACAb,QAAQ,CAAC4B,OAAT,IAAoB5B,QAAQ,CAAC4B,OAAT,CAAiBlB,KAAjB,CAApB;QACD,CAHD,MAGO,IAAIA,KAAK,CAACU,IAAN,KAAetB,SAAS,CAAC+B,MAA7B,EAAqC;UAC1C7B,QAAQ,CAAC8B,QAAT,IAAqB9B,QAAQ,CAAC8B,QAAT,CAAkBL,iBAAlB,CAArB;QACD,CAFM,MAEA;UACLzB,QAAQ,CAAC+B,KAAT,IAAkB/B,QAAQ,CAAC+B,KAAT,CAAeN,iBAAf,CAAlB;QACD;MACF;IACF,CA/CD,EAFuD,CAkDvD;EACD,CAnDiB,EAmDfxB,IAnDe,CAAlB;AAoDD,CA5DD;AA8DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,OAAO,MAAM+B,eAAe,GAAG,UAC7BhC,QAD6B,EAGZ;EAAA,IADjBC,IACiB,uEADM,EACN;EACjB,OAAOF,uBAAuB,CAACC,QAAD,EAAWC,IAAX,EAAiB,KAAjB,CAA9B;AACD,CALM;AAOP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMgC,oBAAoB,GAAG,UAClCjC,QADkC,EAGjB;EAAA,IADjBC,IACiB,uEADM,EACN;EACjB,OAAOF,uBAAuB,CAACC,QAAD,EAAWC,IAAX,EAAiB,IAAjB,CAA9B;AACD,CALM"}
|
@@ -19,7 +19,7 @@ export const WithSkiaWeb = _ref => {
|
|
19
19
|
return getComponent();
|
20
20
|
}), [getComponent, opts]);
|
21
21
|
return /*#__PURE__*/React.createElement(Suspense, {
|
22
|
-
fallback: fallback
|
22
|
+
fallback: fallback !== null && fallback !== void 0 ? fallback : null
|
23
23
|
}, /*#__PURE__*/React.createElement(Inner, null));
|
24
24
|
};
|
25
25
|
//# sourceMappingURL=WithSkiaWeb.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["React","useMemo","lazy","Suspense","Platform","LoadSkiaWeb","WithSkiaWeb","getComponent","fallback","opts","Inner","OS","console","warn"],"sources":["WithSkiaWeb.tsx"],"sourcesContent":["import type { ComponentProps, ComponentType } from \"react\";\nimport React, { useMemo, lazy, Suspense } from \"react\";\nimport { Platform } from \"react-native\";\n\nimport { LoadSkiaWeb } from \"./LoadSkiaWeb\";\n\ninterface WithSkiaProps {\n fallback?: ComponentProps<typeof Suspense>[\"fallback\"];\n getComponent: () => Promise<{ default: ComponentType }>;\n opts?: Parameters<typeof LoadSkiaWeb>[0];\n}\n\nexport const WithSkiaWeb = ({\n getComponent,\n fallback,\n opts,\n}: WithSkiaProps) => {\n const Inner = useMemo(\n // TODO: investigate\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (): any =>\n lazy(async () => {\n if (Platform.OS === \"web\") {\n await LoadSkiaWeb(opts);\n } else {\n console.warn(\n \"<WithSkiaWeb /> is only necessary on web. Consider not using on native.\"\n );\n }\n return getComponent();\n }),\n [getComponent, opts]\n );\n return (\n <Suspense fallback={fallback ?? null}>\n <Inner />\n </Suspense>\n );\n};\n"],"mappings":"AACA,OAAOA,KAAP,IAAgBC,OAAhB,EAAyBC,IAAzB,EAA+BC,QAA/B,QAA+C,OAA/C;AACA,SAASC,QAAT,QAAyB,cAAzB;AAEA,SAASC,WAAT,QAA4B,eAA5B;AAQA,OAAO,MAAMC,WAAW,GAAG,QAIN;EAAA,IAJO;IAC1BC,YAD0B;IAE1BC,QAF0B;IAG1BC;EAH0B,CAIP;EACnB,MAAMC,KAAK,GAAGT,OAAO,EACnB;EACA;EACA,mBACEC,IAAI,CAAC,YAAY;IACf,IAAIE,QAAQ,CAACO,EAAT,KAAgB,KAApB,EAA2B;MACzB,MAAMN,WAAW,CAACI,IAAD,CAAjB;IACD,CAFD,MAEO;MACLG,OAAO,CAACC,IAAR,CACE,yEADF;IAGD;;IACD,OAAON,YAAY,EAAnB;EACD,CATG,CAJa,EAcnB,CAACA,YAAD,EAAeE,IAAf,CAdmB,CAArB;EAgBA,oBACE,oBAAC,QAAD;IAAU,QAAQ,EAAED,
|
1
|
+
{"version":3,"names":["React","useMemo","lazy","Suspense","Platform","LoadSkiaWeb","WithSkiaWeb","getComponent","fallback","opts","Inner","OS","console","warn"],"sources":["WithSkiaWeb.tsx"],"sourcesContent":["import type { ComponentProps, ComponentType } from \"react\";\nimport React, { useMemo, lazy, Suspense } from \"react\";\nimport { Platform } from \"react-native\";\n\nimport { LoadSkiaWeb } from \"./LoadSkiaWeb\";\n\ninterface WithSkiaProps {\n fallback?: ComponentProps<typeof Suspense>[\"fallback\"];\n getComponent: () => Promise<{ default: ComponentType }>;\n opts?: Parameters<typeof LoadSkiaWeb>[0];\n}\n\nexport const WithSkiaWeb = ({\n getComponent,\n fallback,\n opts,\n}: WithSkiaProps) => {\n const Inner = useMemo(\n // TODO: investigate\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (): any =>\n lazy(async () => {\n if (Platform.OS === \"web\") {\n await LoadSkiaWeb(opts);\n } else {\n console.warn(\n \"<WithSkiaWeb /> is only necessary on web. Consider not using on native.\"\n );\n }\n return getComponent();\n }),\n [getComponent, opts]\n );\n return (\n <Suspense fallback={fallback ?? null}>\n <Inner />\n </Suspense>\n );\n};\n"],"mappings":"AACA,OAAOA,KAAP,IAAgBC,OAAhB,EAAyBC,IAAzB,EAA+BC,QAA/B,QAA+C,OAA/C;AACA,SAASC,QAAT,QAAyB,cAAzB;AAEA,SAASC,WAAT,QAA4B,eAA5B;AAQA,OAAO,MAAMC,WAAW,GAAG,QAIN;EAAA,IAJO;IAC1BC,YAD0B;IAE1BC,QAF0B;IAG1BC;EAH0B,CAIP;EACnB,MAAMC,KAAK,GAAGT,OAAO,EACnB;EACA;EACA,mBACEC,IAAI,CAAC,YAAY;IACf,IAAIE,QAAQ,CAACO,EAAT,KAAgB,KAApB,EAA2B;MACzB,MAAMN,WAAW,CAACI,IAAD,CAAjB;IACD,CAFD,MAEO;MACLG,OAAO,CAACC,IAAR,CACE,yEADF;IAGD;;IACD,OAAON,YAAY,EAAnB;EACD,CATG,CAJa,EAcnB,CAACA,YAAD,EAAeE,IAAf,CAdmB,CAArB;EAgBA,oBACE,oBAAC,QAAD;IAAU,QAAQ,EAAED,QAAF,aAAEA,QAAF,cAAEA,QAAF,GAAc;EAAhC,gBACE,oBAAC,KAAD,OADF,CADF;AAKD,CA1BM"}
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import type { RefObject } from "react";
|
2
1
|
import type { SkMatrix, SkRect, SkRRect, SkPath, SkPaint } from "../../skia/types";
|
3
|
-
import type { RenderNode, GroupProps, DrawingContext, NodeType, Node
|
2
|
+
import type { RenderNode, GroupProps, DrawingContext, NodeType, Node } from "../types";
|
4
3
|
import type { NodeContext } from "./Node";
|
5
4
|
import { JsiNode } from "./Node";
|
6
5
|
interface PaintCache {
|
@@ -25,5 +24,4 @@ export declare abstract class JsiRenderNode<P extends GroupProps> extends JsiNod
|
|
25
24
|
render(parentCtx: DrawingContext): void;
|
26
25
|
abstract renderNode(ctx: DrawingContext): void;
|
27
26
|
}
|
28
|
-
export declare const isSkPaint: (obj: RefObject<DeclarationNode<unknown, SkPaint>> | SkPaint) => obj is SkPaint;
|
29
27
|
export {};
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import type { ReactNode
|
1
|
+
import type { ReactNode } from "react";
|
2
2
|
import type { BlendMode, Color, PaintStyle, SkMatrix, SkPaint, SkPath, SkRect, SkRRect, StrokeCap, StrokeJoin, Transforms2d, Vector } from "../../skia/types";
|
3
|
-
import type { DeclarationNode } from "./Node";
|
4
3
|
export declare type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;
|
5
4
|
export declare type PathDef = string | SkPath;
|
6
5
|
export declare type ClipDef = SkRRect | SkRect | PathDef;
|
@@ -53,5 +52,5 @@ export interface PaintProps extends ChildrenProps {
|
|
53
52
|
export interface GroupProps extends PaintProps, TransformProps {
|
54
53
|
clip?: ClipDef;
|
55
54
|
invertClip?: boolean;
|
56
|
-
layer?:
|
55
|
+
layer?: SkPaint | boolean;
|
57
56
|
}
|
@@ -1,10 +1,8 @@
|
|
1
|
-
import type { RefObject } from "react";
|
2
1
|
import type { FillType, SkImage, StrokeOpts, Vector, Color, SkPoint, BlendMode, PointMode, VertexMode, SkFont, SkRRect, SkTextBlob, SkPicture, SkSVG, SkPaint, SkRect } from "../../skia/types";
|
3
2
|
import type { CircleDef, Fit, GroupProps, PathDef, RectDef, RRectDef, SkEnum } from "./Common";
|
4
3
|
import type { DrawingContext } from "./DrawingContext";
|
5
|
-
import type { DeclarationNode } from "./Node";
|
6
4
|
export interface DrawingNodeProps extends GroupProps {
|
7
|
-
paint?: SkPaint
|
5
|
+
paint?: SkPaint;
|
8
6
|
}
|
9
7
|
export declare type ImageProps = DrawingNodeProps & RectDef & {
|
10
8
|
fit: Fit;
|
@@ -3,6 +3,8 @@ import type { RefObject, ReactNode, ComponentProps } from "react";
|
|
3
3
|
import ReactReconciler from "react-reconciler";
|
4
4
|
import { SkiaView } from "../views";
|
5
5
|
import type { TouchHandler } from "../views";
|
6
|
+
import type { SkiaMutableValue } from "../values";
|
7
|
+
import type { SkSize } from "../skia/types";
|
6
8
|
import { Container } from "./Container";
|
7
9
|
export declare const skiaReconciler: ReactReconciler.Reconciler<Container, import("..").Node<unknown>, import("..").Node<unknown>, import("..").Node<unknown>, import("..").Node<unknown>>;
|
8
10
|
export declare const useCanvasRef: () => React.RefObject<SkiaView>;
|
@@ -10,5 +12,6 @@ export interface CanvasProps extends ComponentProps<typeof SkiaView> {
|
|
10
12
|
ref?: RefObject<SkiaView>;
|
11
13
|
children: ReactNode;
|
12
14
|
onTouch?: TouchHandler;
|
15
|
+
onSize?: SkiaMutableValue<SkSize>;
|
13
16
|
}
|
14
|
-
export declare const Canvas: React.ForwardRefExoticComponent<Pick<CanvasProps, "children" | "style" | "mode" | "debug" | "onDraw" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "onTouch"> & React.RefAttributes<SkiaView>>;
|
17
|
+
export declare const Canvas: React.ForwardRefExoticComponent<Pick<CanvasProps, "children" | "style" | "mode" | "debug" | "onDraw" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors" | "onTouch" | "onSize"> & React.RefAttributes<SkiaView>>;
|
@@ -1,9 +1,7 @@
|
|
1
|
-
import type { ForwardedRef } from "react";
|
2
1
|
import { NodeType } from "../dom/types";
|
3
2
|
import type { CircleProps, DrawingNodeProps, ImageProps, PaintProps, PathProps, CustomDrawingNodeProps, LineProps, OvalProps, DiffRectProps, PointsProps, RectProps, RoundedRectProps, TextProps, VerticesProps, BlurMaskFilterProps, BlendImageFilterProps, BlurImageFilterProps, DisplacementMapImageFilterProps, DropShadowImageFilterProps, OffsetImageFilterProps, RuntimeShaderImageFilterProps, MatrixColorFilterProps, ShaderProps, ImageShaderProps, LinearGradientProps, GroupProps, PatchProps, BlendColorFilterProps, DashPathEffectProps, DiscretePathEffectProps, CornerPathEffectProps, Line2DPathEffectProps, Path1DPathEffectProps, Path2DPathEffectProps, TextPathProps, TextBlobProps, GlyphsProps, TwoPointConicalGradientProps, TurbulenceProps, SweepGradientProps, RadialGradientProps, ColorProps, PictureProps, ImageSVGProps, LerpColorFilterProps, BoxProps, BoxShadowProps } from "../dom/types";
|
4
3
|
import type { ChildrenProps } from "../dom/types/Common";
|
5
4
|
import type { BlendProps, MorphologyImageFilterProps } from "../dom/types/ImageFilters";
|
6
|
-
import type { PaintNode } from "../dom/nodes/PaintNode";
|
7
5
|
import type { Container } from "./Container";
|
8
6
|
import type { SkiaProps } from "./processors";
|
9
7
|
declare global {
|
@@ -11,9 +9,7 @@ declare global {
|
|
11
9
|
interface IntrinsicElements {
|
12
10
|
skGroup: SkiaProps<GroupProps>;
|
13
11
|
skLayer: SkiaProps<ChildrenProps>;
|
14
|
-
skPaint: SkiaProps<PaintProps
|
15
|
-
ref: ForwardedRef<PaintNode>;
|
16
|
-
};
|
12
|
+
skPaint: SkiaProps<PaintProps>;
|
17
13
|
skFill: SkiaProps<DrawingNodeProps>;
|
18
14
|
skImage: SkiaProps<ImageProps>;
|
19
15
|
skCircle: SkiaProps<CircleProps>;
|
@@ -1,5 +1,4 @@
|
|
1
|
-
|
1
|
+
/// <reference types="react" />
|
2
|
+
import type { SkiaProps } from "../processors";
|
2
3
|
import type { DrawingNodeProps } from "../../dom/types";
|
3
|
-
|
4
|
-
export declare const usePaintRef: () => React.RefObject<PaintNode>;
|
5
|
-
export declare const Paint: React.ForwardRefExoticComponent<import("../processors").AnimatedProps<DrawingNodeProps, never> & React.RefAttributes<PaintNode>>;
|
4
|
+
export declare const Paint: (props: SkiaProps<DrawingNodeProps>) => JSX.Element;
|
@@ -11,4 +11,5 @@ interface CanvasContext {
|
|
11
11
|
declare const CanvasContext: React.Context<CanvasContext | null>;
|
12
12
|
export declare const CanvasProvider: React.Provider<CanvasContext | null>;
|
13
13
|
export declare const useCanvas: () => CanvasContext;
|
14
|
+
export declare const useSkiaPrivate: () => Skia;
|
14
15
|
export {};
|
@@ -1,12 +1,4 @@
|
|
1
|
-
import type { DependencyList } from "react";
|
2
1
|
import type { SkCanvas, SkRect } from "../types";
|
3
|
-
/**
|
4
|
-
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
5
|
-
* @param rect Picture bounds
|
6
|
-
* @param cb Callback for drawing to the canvas
|
7
|
-
* @returns SkPicture
|
8
|
-
*/
|
9
|
-
export declare const usePicture: (rect: SkRect, cb: (canvas: SkCanvas) => void, deps?: DependencyList) => import("../types").SkPicture;
|
10
2
|
/**
|
11
3
|
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
12
4
|
* @param rect Picture bounds
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { SkJSIInstance } from "./JsiInstance";
|
2
2
|
import type { SkPath } from "./Path/Path";
|
3
|
+
import type { SkPoint } from "./Point";
|
3
4
|
export interface PosTan {
|
4
5
|
px: number;
|
5
6
|
py: number;
|
@@ -9,10 +10,10 @@ export interface PosTan {
|
|
9
10
|
export interface SkContourMeasure extends SkJSIInstance<"ContourMeasure"> {
|
10
11
|
/**
|
11
12
|
* Returns the given position and tangent line for the distance on the given contour.
|
12
|
-
* The return value
|
13
|
+
* The return value an array of 2 vectors: [position, tangent]
|
13
14
|
* @param distance - will be pinned between 0 and length().
|
14
15
|
*/
|
15
|
-
getPosTan(distance: number):
|
16
|
+
getPosTan(distance: number): [position: SkPoint, tangent: SkPoint];
|
16
17
|
/**
|
17
18
|
* Returns an Path representing the segment of this contour.
|
18
19
|
* @param startD - will be pinned between 0 and length()
|
@@ -2,14 +2,10 @@ import type { CanvasKit, ContourMeasure } from "canvaskit-wasm";
|
|
2
2
|
import type { SkContourMeasure } from "../types";
|
3
3
|
import { HostObject } from "./Host";
|
4
4
|
import { JsiSkPath } from "./JsiSkPath";
|
5
|
+
import { JsiSkPoint } from "./JsiSkPoint";
|
5
6
|
export declare class JsiSkContourMeasure extends HostObject<ContourMeasure, "ContourMeasure"> implements SkContourMeasure {
|
6
7
|
constructor(CanvasKit: CanvasKit, ref: ContourMeasure);
|
7
|
-
getPosTan(distance: number):
|
8
|
-
px: number;
|
9
|
-
py: number;
|
10
|
-
tx: number;
|
11
|
-
ty: number;
|
12
|
-
};
|
8
|
+
getPosTan(distance: number): [position: JsiSkPoint, tangent: JsiSkPoint];
|
13
9
|
getSegment(startD: number, stopD: number, startWithMoveTo: boolean): JsiSkPath;
|
14
10
|
isClosed(): boolean;
|
15
11
|
length(): number;
|
package/package.json
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
"setup-skia-web": "./scripts/setup-canvaskit.js"
|
8
8
|
},
|
9
9
|
"title": "React Native Skia",
|
10
|
-
"version": "0.1.
|
10
|
+
"version": "0.1.158",
|
11
11
|
"description": "High-performance React Native Graphics using Skia",
|
12
12
|
"main": "lib/module/index.js",
|
13
13
|
"files": [
|
@@ -67,8 +67,8 @@
|
|
67
67
|
"licenseFilename": "LICENSE.md",
|
68
68
|
"readmeFilename": "README.md",
|
69
69
|
"peerDependencies": {
|
70
|
-
"react": ">=
|
71
|
-
"react-native": ">=0.
|
70
|
+
"react": ">=18.0",
|
71
|
+
"react-native": ">=0.64",
|
72
72
|
"react-native-reanimated": ">=2.0.0"
|
73
73
|
},
|
74
74
|
"peerDependenciesMeta": {
|
@@ -77,9 +77,10 @@
|
|
77
77
|
}
|
78
78
|
},
|
79
79
|
"devDependencies": {
|
80
|
+
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6",
|
80
81
|
"@types/jest": "^28.1.6",
|
81
82
|
"@types/react-native": "0.66.2",
|
82
|
-
"@types/react-reconciler": "0.26.
|
83
|
+
"@types/react-reconciler": "^0.26.7",
|
83
84
|
"eslint": "8.21.0",
|
84
85
|
"eslint-config-react-native-wcandillon": "3.9.0",
|
85
86
|
"eslint-plugin-reanimated": "2.0.0",
|
@@ -92,7 +93,7 @@
|
|
92
93
|
},
|
93
94
|
"dependencies": {
|
94
95
|
"canvaskit-wasm": "0.36.1",
|
95
|
-
"react-reconciler": "0.
|
96
|
+
"react-reconciler": "^0.27.0"
|
96
97
|
},
|
97
98
|
"eslintIgnore": [
|
98
99
|
"node_modules/",
|
@@ -103,7 +104,12 @@
|
|
103
104
|
"output": "lib",
|
104
105
|
"targets": [
|
105
106
|
"commonjs",
|
106
|
-
|
107
|
+
[
|
108
|
+
"module",
|
109
|
+
{
|
110
|
+
"configFile": "./.babelrc"
|
111
|
+
}
|
112
|
+
],
|
107
113
|
"typescript"
|
108
114
|
]
|
109
115
|
},
|
@@ -9,7 +9,7 @@ import type {
|
|
9
9
|
import type { NodeContext } from "./Node";
|
10
10
|
import { JsiDeclarationNode } from "./Node";
|
11
11
|
import { PaintNode } from "./PaintNode";
|
12
|
-
import {
|
12
|
+
import { JsiRenderNode } from "./RenderNode";
|
13
13
|
|
14
14
|
export abstract class JsiDrawingNode<P extends DrawingNodeProps, C>
|
15
15
|
extends JsiRenderNode<P>
|
@@ -52,10 +52,8 @@ export abstract class JsiDrawingNode<P extends DrawingNodeProps, C>
|
|
52
52
|
}
|
53
53
|
|
54
54
|
renderNode(ctx: DrawingContext): void {
|
55
|
-
if (this.props.paint
|
55
|
+
if (this.props.paint) {
|
56
56
|
this.draw({ ...ctx, paint: this.props.paint });
|
57
|
-
} else if (this.props.paint && this.props.paint.current != null) {
|
58
|
-
this.draw({ ...ctx, paint: this.props.paint.current.materialize() });
|
59
57
|
} else {
|
60
58
|
this.draw(ctx);
|
61
59
|
}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import type { RefObject } from "react";
|
2
|
-
|
3
1
|
import type {
|
4
2
|
SkMatrix,
|
5
3
|
SkRect,
|
@@ -21,7 +19,6 @@ import type {
|
|
21
19
|
DrawingContext,
|
22
20
|
NodeType,
|
23
21
|
Node,
|
24
|
-
DeclarationNode,
|
25
22
|
} from "../types";
|
26
23
|
|
27
24
|
import { isPathDef, processPath, processTransformProps } from "./datatypes";
|
@@ -236,17 +233,12 @@ export abstract class JsiRenderNode<P extends GroupProps>
|
|
236
233
|
this.clipRRect !== undefined;
|
237
234
|
const shouldSave = hasTransform || hasClip || !!layer;
|
238
235
|
const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;
|
239
|
-
|
240
236
|
if (shouldSave) {
|
241
237
|
if (layer) {
|
242
238
|
if (typeof layer === "boolean") {
|
243
239
|
canvas.saveLayer();
|
244
|
-
} else if (isSkPaint(layer)) {
|
245
|
-
canvas.saveLayer(layer);
|
246
240
|
} else {
|
247
|
-
canvas.saveLayer(
|
248
|
-
layer.current ? layer.current.materialize() : undefined
|
249
|
-
);
|
241
|
+
canvas.saveLayer(layer);
|
250
242
|
}
|
251
243
|
} else {
|
252
244
|
canvas.save();
|
@@ -274,10 +266,6 @@ export abstract class JsiRenderNode<P extends GroupProps>
|
|
274
266
|
abstract renderNode(ctx: DrawingContext): void;
|
275
267
|
}
|
276
268
|
|
277
|
-
export const isSkPaint = (
|
278
|
-
obj: RefObject<DeclarationNode<unknown, SkPaint>> | SkPaint
|
279
|
-
): obj is SkPaint => "__typename__" in obj && obj.__typename__ === "Paint";
|
280
|
-
|
281
269
|
const concatPaint = (
|
282
270
|
parent: SkPaint,
|
283
271
|
{
|
@@ -57,10 +57,10 @@ export class TextPathNode extends JsiDrawingNode<TextPathProps, SkTextBlob> {
|
|
57
57
|
}
|
58
58
|
// Gives us the (x, y) coordinates as well as the cos/sin of the tangent
|
59
59
|
// line at that position.
|
60
|
-
const
|
61
|
-
const adjustedX =
|
62
|
-
const adjustedY =
|
63
|
-
rsx.push(this.Skia.RSXform(
|
60
|
+
const [p, t] = cont.getPosTan(dist);
|
61
|
+
const adjustedX = p.x - (width / 2) * t.x;
|
62
|
+
const adjustedY = p.y - (width / 2) * t.y;
|
63
|
+
rsx.push(this.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));
|
64
64
|
dist += width / 2;
|
65
65
|
}
|
66
66
|
return this.Skia.TextBlob.MakeFromRSXform(text, rsx, font);
|
package/src/dom/types/Common.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { ReactNode
|
1
|
+
import type { ReactNode } from "react";
|
2
2
|
|
3
3
|
import type {
|
4
4
|
BlendMode,
|
@@ -15,8 +15,6 @@ import type {
|
|
15
15
|
Vector,
|
16
16
|
} from "../../skia/types";
|
17
17
|
|
18
|
-
import type { DeclarationNode } from "./Node";
|
19
|
-
|
20
18
|
export type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;
|
21
19
|
|
22
20
|
export type PathDef = string | SkPath;
|
@@ -86,5 +84,5 @@ export interface PaintProps extends ChildrenProps {
|
|
86
84
|
export interface GroupProps extends PaintProps, TransformProps {
|
87
85
|
clip?: ClipDef;
|
88
86
|
invertClip?: boolean;
|
89
|
-
layer?:
|
87
|
+
layer?: SkPaint | boolean;
|
90
88
|
}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import type { RefObject } from "react";
|
2
|
-
|
3
1
|
import type {
|
4
2
|
FillType,
|
5
3
|
SkImage,
|
@@ -29,10 +27,9 @@ import type {
|
|
29
27
|
SkEnum,
|
30
28
|
} from "./Common";
|
31
29
|
import type { DrawingContext } from "./DrawingContext";
|
32
|
-
import type { DeclarationNode } from "./Node";
|
33
30
|
|
34
31
|
export interface DrawingNodeProps extends GroupProps {
|
35
|
-
paint?: SkPaint
|
32
|
+
paint?: SkPaint;
|
36
33
|
}
|
37
34
|
|
38
35
|
export type ImageProps = DrawingNodeProps &
|
package/src/mock/index.ts
CHANGED
package/src/renderer/Canvas.tsx
CHANGED
@@ -20,7 +20,8 @@ import { SkiaView, useDrawCallback } from "../views";
|
|
20
20
|
import type { TouchHandler } from "../views";
|
21
21
|
import { useValue } from "../values/hooks/useValue";
|
22
22
|
import { Skia } from "../skia/Skia";
|
23
|
-
import type { SkiaValue } from "../values";
|
23
|
+
import type { SkiaValue, SkiaMutableValue } from "../values";
|
24
|
+
import type { SkSize } from "../skia/types";
|
24
25
|
|
25
26
|
import { debug as hostDebug, skHostConfig } from "./HostConfig";
|
26
27
|
// import { debugTree } from "./nodes";
|
@@ -49,10 +50,11 @@ export interface CanvasProps extends ComponentProps<typeof SkiaView> {
|
|
49
50
|
ref?: RefObject<SkiaView>;
|
50
51
|
children: ReactNode;
|
51
52
|
onTouch?: TouchHandler;
|
53
|
+
onSize?: SkiaMutableValue<SkSize>;
|
52
54
|
}
|
53
55
|
|
54
56
|
export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
55
|
-
({ children, style, debug, mode, onTouch }, forwardedRef) => {
|
57
|
+
({ children, style, debug, mode, onTouch, onSize }, forwardedRef) => {
|
56
58
|
const size = useValue({ width: 0, height: 0 });
|
57
59
|
const canvasCtx = useMemo(() => ({ Skia, size }), [size]);
|
58
60
|
const innerRef = useCanvasRef();
|
@@ -77,7 +79,17 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
|
77
79
|
}, [redraw, registerValues]);
|
78
80
|
|
79
81
|
const root = useMemo(
|
80
|
-
() =>
|
82
|
+
() =>
|
83
|
+
skiaReconciler.createContainer(
|
84
|
+
container,
|
85
|
+
0,
|
86
|
+
null,
|
87
|
+
true,
|
88
|
+
null,
|
89
|
+
"",
|
90
|
+
console.error,
|
91
|
+
null
|
92
|
+
),
|
81
93
|
[container]
|
82
94
|
);
|
83
95
|
// Render effect
|
@@ -104,6 +116,9 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
|
|
104
116
|
height !== canvasCtx.size.current.height
|
105
117
|
) {
|
106
118
|
canvasCtx.size.current = { width, height };
|
119
|
+
if (onSize) {
|
120
|
+
onSize.current = { width, height };
|
121
|
+
}
|
107
122
|
}
|
108
123
|
paint.reset();
|
109
124
|
const ctx = {
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import type { ForwardedRef } from "react";
|
2
|
-
|
3
1
|
import { NodeType } from "../dom/types";
|
4
2
|
import type {
|
5
3
|
CircleProps,
|
@@ -55,7 +53,6 @@ import type {
|
|
55
53
|
BlendProps,
|
56
54
|
MorphologyImageFilterProps,
|
57
55
|
} from "../dom/types/ImageFilters";
|
58
|
-
import type { PaintNode } from "../dom/nodes/PaintNode";
|
59
56
|
|
60
57
|
import type { Container } from "./Container";
|
61
58
|
import { exhaustiveCheck } from "./typeddash";
|
@@ -67,7 +64,7 @@ declare global {
|
|
67
64
|
interface IntrinsicElements {
|
68
65
|
skGroup: SkiaProps<GroupProps>;
|
69
66
|
skLayer: SkiaProps<ChildrenProps>;
|
70
|
-
skPaint: SkiaProps<PaintProps
|
67
|
+
skPaint: SkiaProps<PaintProps>;
|
71
68
|
|
72
69
|
// Drawings
|
73
70
|
skFill: SkiaProps<DrawingNodeProps>;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
/*global NodeJS*/
|
2
2
|
import type { HostConfig } from "react-reconciler";
|
3
|
+
import { DefaultEventPriority } from "react-reconciler/constants";
|
3
4
|
|
4
5
|
import type { NodeType, Node } from "../dom/types";
|
5
6
|
import type { SkiaValue } from "../values";
|
@@ -67,7 +68,6 @@ export const skHostConfig: SkiaHostConfig = {
|
|
67
68
|
* This function is used by the reconciler in order to calculate current time for prioritising work.
|
68
69
|
*/
|
69
70
|
now: Date.now,
|
70
|
-
|
71
71
|
supportsMutation: true,
|
72
72
|
isPrimaryRenderer: false,
|
73
73
|
supportsPersistence: false,
|
@@ -232,6 +232,13 @@ export const skHostConfig: SkiaHostConfig = {
|
|
232
232
|
insertBefore: (parent, child, before) => {
|
233
233
|
insertBefore(parent, child, before);
|
234
234
|
},
|
235
|
+
// see https://github.com/pmndrs/react-three-fiber/pull/2360#discussion_r916356874
|
236
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
237
|
+
// @ts-expect-error
|
238
|
+
getCurrentEventPriority: () => DefaultEventPriority,
|
239
|
+
beforeActiveInstanceBlur: () => {},
|
240
|
+
afterActiveInstanceBlur: () => {},
|
241
|
+
detachDeletedInstance: () => {},
|
235
242
|
};
|
236
243
|
|
237
244
|
const materialize = <P>(props: AnimatedProps<P>) => {
|
@@ -2,7 +2,7 @@ import type { ReactNode } from "react";
|
|
2
2
|
import React, { useMemo } from "react";
|
3
3
|
|
4
4
|
import { BlendMode } from "../../skia/types";
|
5
|
-
import {
|
5
|
+
import { useSkiaPrivate } from "../useCanvas";
|
6
6
|
|
7
7
|
import { Group } from "./Group";
|
8
8
|
|
@@ -14,7 +14,7 @@ interface MaskProps {
|
|
14
14
|
}
|
15
15
|
|
16
16
|
export const Mask = ({ children, mask, mode, clip }: MaskProps) => {
|
17
|
-
const
|
17
|
+
const Skia = useSkiaPrivate();
|
18
18
|
const maskPaint = useMemo(() => {
|
19
19
|
const paint = Skia.Paint();
|
20
20
|
paint.setBlendMode(BlendMode.Src);
|
@@ -1,19 +1,8 @@
|
|
1
|
-
|
2
|
-
import React, { useRef, forwardRef } from "react";
|
1
|
+
import React from "react";
|
3
2
|
|
4
3
|
import type { SkiaProps } from "../processors";
|
5
4
|
import type { DrawingNodeProps } from "../../dom/types";
|
6
|
-
import type { PaintNode } from "../../dom/nodes/PaintNode";
|
7
5
|
|
8
|
-
export const
|
9
|
-
|
10
|
-
If you are using the layer property, simply pass the component directly: https://shopify.github.io/react-native-skia/docs/group#layer-effects.
|
11
|
-
If you are using the paint property, please the following paint properties directly: https://shopify.github.io/react-native-skia/docs/paint/overview`);
|
12
|
-
return useRef<PaintNode>(null);
|
6
|
+
export const Paint = (props: SkiaProps<DrawingNodeProps>) => {
|
7
|
+
return <skPaint {...props} />;
|
13
8
|
};
|
14
|
-
|
15
|
-
export const Paint = forwardRef<PaintNode, SkiaProps<DrawingNodeProps>>(
|
16
|
-
(props, ref) => {
|
17
|
-
return <skPaint ref={ref} {...props} />;
|
18
|
-
}
|
19
|
-
);
|
@@ -14,8 +14,22 @@ export const CanvasProvider = CanvasContext.Provider;
|
|
14
14
|
|
15
15
|
export const useCanvas = () => {
|
16
16
|
const ctx = useContext(CanvasContext);
|
17
|
+
console.warn(
|
18
|
+
// eslint-disable-next-line max-len
|
19
|
+
"useCanvas is deprecated. use the onSize property instead: https://shopify.github.io/react-native-skia/docs/canvas/overview"
|
20
|
+
);
|
17
21
|
if (!ctx) {
|
18
22
|
throw new Error("Canvas context is not available");
|
19
23
|
}
|
20
24
|
return ctx;
|
21
25
|
};
|
26
|
+
|
27
|
+
// This private function will be removed once we remove the useCanvas hook and
|
28
|
+
// implement the Mask component as a node (will be faster too)
|
29
|
+
export const useSkiaPrivate = () => {
|
30
|
+
const ctx = useContext(CanvasContext);
|
31
|
+
if (!ctx) {
|
32
|
+
throw new Error("Canvas context is not available");
|
33
|
+
}
|
34
|
+
return ctx.Skia;
|
35
|
+
};
|