@shopify/react-native-skia 0.1.148 → 0.1.150
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cpp/api/JsiSkFont.h +4 -4
- package/cpp/rnskia/RNSkJsiViewApi.h +2 -2
- package/lib/commonjs/mock/index.js +1 -0
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/commonjs/skia/core/Data.js +10 -1
- package/lib/commonjs/skia/core/Data.js.map +1 -1
- package/lib/commonjs/skia/core/Picture.js +20 -2
- package/lib/commonjs/skia/core/Picture.js.map +1 -1
- package/lib/module/mock/index.js +1 -0
- package/lib/module/mock/index.js.map +1 -1
- package/lib/module/skia/core/Data.js +11 -2
- package/lib/module/skia/core/Data.js.map +1 -1
- package/lib/module/skia/core/Picture.js +15 -1
- package/lib/module/skia/core/Picture.js.map +1 -1
- package/lib/typescript/src/skia/core/Picture.d.ts +9 -2
- package/package.json +1 -1
- package/src/mock/index.ts +1 -0
- package/src/skia/core/Data.ts +11 -2
- package/src/skia/core/Picture.ts +17 -3
package/cpp/api/JsiSkFont.h
CHANGED
@@ -71,7 +71,7 @@ namespace RNSkia
|
|
71
71
|
|
72
72
|
JSI_HOST_FUNCTION(getTextWidth) {
|
73
73
|
auto str = arguments[0].asString(runtime).utf8(runtime);
|
74
|
-
auto numGlyphIDs = str.length();
|
74
|
+
auto numGlyphIDs = getObject()->countText(str.c_str(), str.length(), SkTextEncoding::kUTF8);
|
75
75
|
std::vector<SkGlyphID> glyphs;
|
76
76
|
glyphs.resize(numGlyphIDs);
|
77
77
|
int glyphsSize = static_cast<int>(numGlyphIDs);
|
@@ -111,9 +111,9 @@ namespace RNSkia
|
|
111
111
|
JSI_HOST_FUNCTION(getGlyphIDs)
|
112
112
|
{
|
113
113
|
auto str = arguments[0].asString(runtime).utf8(runtime);
|
114
|
-
|
115
|
-
? arguments[1].asNumber()
|
116
|
-
: str.length();
|
114
|
+
int numGlyphIDs = count > 1 && !arguments[1].isNull() && !arguments[1].isUndefined()
|
115
|
+
? static_cast<int>(arguments[1].asNumber())
|
116
|
+
: getObject()->countText(str.c_str(), str.length(), SkTextEncoding::kUTF8);
|
117
117
|
std::vector<SkGlyphID> glyphIDs;
|
118
118
|
glyphIDs.resize(numGlyphIDs);
|
119
119
|
getObject()->textToGlyphs(str.c_str(), str.length(), SkTextEncoding::kUTF8,
|
@@ -114,9 +114,9 @@ public:
|
|
114
114
|
}
|
115
115
|
|
116
116
|
JSI_HOST_FUNCTION(requestRedraw) {
|
117
|
-
if (count
|
117
|
+
if (count != 1) {
|
118
118
|
_platformContext->raiseError(
|
119
|
-
std::string("requestRedraw: Expected
|
119
|
+
std::string("requestRedraw: Expected 1 arguments, got " + std::to_string(count) + "."));
|
120
120
|
|
121
121
|
return jsi::Value::undefined();
|
122
122
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["Stub","constructor","Proxy","get","apply","set","Noop","Skia","vec","x","y","Mock","BaseSkia","useRawData","useData","useFont","useTypeface","useImage","useSVG","usePicture","rect","width","height","rrect","r","rx","ry","point","add","a","b","sub","neg","dist","Math","hypot","translate","translateX","translateY","bounds","topLeft","topRight","bottomLeft","bottomRight","center","processTransform2d","useSharedValueEffect","Values","ValuesHooks","Selector","timingFunctions","springFunctions","decayFunctions","interpolateFn","interpolatePathFn","interpolateVectorFn","interpolateColors","_value","_inputRange","_outputRange","Float32Array","of","mixColors","_v","_x","_y","ShaderLib","createDrawing","createDeclaration"],"mappings":";;;;;;;AAGA;;AACA;;AACA;;AACA;;AAKA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;;AAlBA;AAoBA,MAAMA,IAAN,CAAW;AACTC,EAAAA,WAAW,GAAG;AACZ,WAAO,IAAIC,KAAJ,CAAU,MAAM,CAAE,CAAlB,EAAoB;AACzBC,MAAAA,GAAG,EAAE,MAAM,IAAIH,IAAJ,EADc;AAEzBI,MAAAA,KAAK,EAAE,MAAM,IAAIJ,IAAJ,EAFY;AAGzBK,MAAAA,GAAG,EAAE,MAAM;AAHc,KAApB,CAAP;AAKD;;AAPQ;;AAUX,MAAMC,IAAe,GAAG,MAAM,CAAE,CAAhC;;AAEO,MAAMC,IAAa,GAAG,IAAIP,IAAJ,EAAtB;;;AAEA,MAAMQ,GAAG,GAAG,CAACC,CAAD,EAAaC,CAAb;AAAA;;AAAA,SAA6B;AAAED,IAAAA,CAAC,EAAEA,CAAF,aAAEA,CAAF,cAAEA,CAAF,GAAO,CAAV;AAAaC,IAAAA,CAAC,UAAEA,CAAF,aAAEA,CAAF,cAAEA,CAAF,GAAOD,CAAP,uCAAY;AAA1B,GAA7B;AAAA,CAAZ;;;AAEA,MAAME,IAOV,GAAG;AACJ;AACA;AACAJ,EAAAA,IAHI;AAIJ,KAAGK,QAJC;AAKJ;AACAC,EAAAA,UAAU,EAAEP,IANR;AAOJQ,EAAAA,OAAO,EAAER,IAPL;AAQJS,EAAAA,OAAO,EAAET,IARL;AASJU,EAAAA,WAAW,EAAEV,IATT;AAUJW,EAAAA,QAAQ,EAAEX,IAVN;AAWJY,EAAAA,MAAM,EAAEZ,IAXJ;AAYJa,EAAAA,UAAU,EAAEb,IAZR;
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["Stub","constructor","Proxy","get","apply","set","Noop","Skia","vec","x","y","Mock","BaseSkia","useRawData","useData","useFont","useTypeface","useImage","useSVG","usePicture","createPicture","rect","width","height","rrect","r","rx","ry","point","add","a","b","sub","neg","dist","Math","hypot","translate","translateX","translateY","bounds","topLeft","topRight","bottomLeft","bottomRight","center","processTransform2d","useSharedValueEffect","Values","ValuesHooks","Selector","timingFunctions","springFunctions","decayFunctions","interpolateFn","interpolatePathFn","interpolateVectorFn","interpolateColors","_value","_inputRange","_outputRange","Float32Array","of","mixColors","_v","_x","_y","ShaderLib","createDrawing","createDeclaration"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Color, Skia as SkiaApi, SkRect, Vector } from \"../skia/types\";\nimport * as Values from \"../values/web\";\nimport * as ValuesHooks from \"../values/hooks\";\nimport { Selector } from \"../values/selector\";\nimport * as BaseSkia from \"../skia/types\";\nimport type * as SkiaExports from \"../skia\";\nimport type * as ExternalExports from \"../external\";\nimport type * as ValueExports from \"../values\";\nimport type * as AnimationExports from \"../animation\";\nimport { useSharedValueEffect } from \"../external/reanimated/useSharedValueEffect\";\nimport * as timingFunctions from \"../animation/timing\";\nimport * as springFunctions from \"../animation/spring\";\nimport * as decayFunctions from \"../animation/decay\";\nimport * as interpolateFn from \"../animation/functions/interpolate\";\nimport * as interpolatePathFn from \"../animation/functions/interpolatePaths\";\nimport * as interpolateVectorFn from \"../animation/functions/interpolateVector\";\nimport { ShaderLib } from \"../renderer/components/shaders/ShaderLib\";\n\nclass Stub {\n constructor() {\n return new Proxy(() => {}, {\n get: () => new Stub(),\n apply: () => new Stub(),\n set: () => true,\n });\n }\n}\n\nconst Noop: () => any = () => {};\n\nexport const Skia: SkiaApi = new Stub() as any;\n\nexport const vec = (x?: number, y?: number) => ({ x: x ?? 0, y: y ?? x ?? 0 });\n\nexport const Mock: typeof SkiaExports &\n typeof ExternalExports &\n typeof ValueExports &\n typeof AnimationExports & {\n createDrawing: () => any;\n createDeclaration: () => any;\n ShaderLib: typeof ShaderLib;\n } = {\n // SkiaExports\n // 1. Skia API. BaseSkia contains the enums, and functions like isPaint etc\n Skia,\n ...BaseSkia,\n // 2. Hooks\n useRawData: Noop,\n useData: Noop,\n useFont: Noop,\n useTypeface: Noop,\n useImage: Noop,\n useSVG: Noop,\n usePicture: Noop,\n createPicture: Noop,\n // 3. Point/Rect/Transform utilities\n vec,\n rect: (x: number, y: number, width: number, height: number) => ({\n x,\n y,\n width,\n height,\n }),\n rrect: (r: SkRect, rx: number, ry: number) => ({\n rect: r,\n rx,\n ry,\n }),\n point: vec,\n add: (a: Vector, b: Vector) => vec(a.x + b.x, a.y + b.y),\n sub: (a: Vector, b: Vector) => vec(a.x - b.x, a.y - b.y),\n neg: (a: Vector) => vec(-a.x, -a.y),\n dist: (a: Vector, b: Vector) => Math.hypot(a.x - b.x, a.y - b.y),\n translate: ({ x, y }: Vector) =>\n [{ translateX: x }, { translateY: y }] as const,\n\n bounds: Noop,\n topLeft: Noop,\n topRight: Noop,\n bottomLeft: Noop,\n bottomRight: Noop,\n center: Noop,\n processTransform2d: Noop,\n // ExternalExports\n useSharedValueEffect,\n // ValueExports\n ...Values,\n ...ValuesHooks,\n Selector,\n // Animations\n ...timingFunctions,\n ...springFunctions,\n ...decayFunctions,\n ...interpolateFn,\n ...interpolatePathFn,\n ...interpolateVectorFn,\n interpolateColors: (\n _value: number,\n _inputRange: number[],\n _outputRange: Color[]\n ) => Float32Array.of(0, 0, 0, 0),\n mixColors: (_v: number, _x: Color, _y: Color) => Float32Array.of(0, 0, 0, 0),\n ShaderLib,\n createDrawing: Noop,\n createDeclaration: Noop,\n};\n"]}
|
@@ -40,9 +40,18 @@ const loadData = (source, factory, onError) => {
|
|
40
40
|
};
|
41
41
|
|
42
42
|
const useLoading = (source, loader) => {
|
43
|
+
const mounted = (0, _react.useRef)(false);
|
43
44
|
const [data, setData] = (0, _react.useState)(null);
|
44
45
|
(0, _react.useEffect)(() => {
|
45
|
-
|
46
|
+
mounted.current = true;
|
47
|
+
loader().then(value => {
|
48
|
+
if (mounted.current) {
|
49
|
+
setData(value);
|
50
|
+
}
|
51
|
+
});
|
52
|
+
return () => {
|
53
|
+
mounted.current = false;
|
54
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
46
55
|
}, [source]);
|
47
56
|
return data;
|
48
57
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Data.ts"],"names":["resolveAsset","source","Image","resolveAssetSource","uri","default","factoryWrapper","data2","factory","onError","factoryResult","Error","loadData","undefined","Promise","resolve","Uint8Array","Skia","Data","fromBytes","fromURI","then","d","useLoading","loader","data","setData","useRawData","identity","useData"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAGA,MAAMA,YAAY,GAAIC,MAAD,IAAwB;AAC3C,SAAO,uBAAWA,MAAX,IACHC,mBAAMC,kBAAN,CAAyBF,MAAzB,EAAiCG,GAD9B,GAEHH,MAAM,CAACI,OAFX;AAGD,CAJD;;AAMA,MAAMC,cAAc,GAAG,CACrBC,KADqB,EAErBC,OAFqB,EAGrBC,OAHqB,KAIlB;AACH,QAAMC,aAAa,GAAGF,OAAO,CAACD,KAAD,CAA7B;;AACA,MAAIG,aAAa,KAAK,IAAtB,EAA4B;AAC1BD,IAAAA,OAAO,IAAIA,OAAO,CAAC,IAAIE,KAAJ,CAAU,qBAAV,CAAD,CAAlB;AACA,WAAO,IAAP;AACD,GAHD,MAGO;AACL,WAAOD,aAAP;AACD;AACF,CAZD;;AAcA,MAAME,QAAQ,GAAG,CACfX,MADe,EAEfO,OAFe,EAGfC,OAHe,KAIO;AACtB,MAAIR,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAKY,SAAlC,EAA6C;AAC3C,WAAO,IAAIC,OAAJ,CAAaC,OAAD,IAAaA,OAAO,CAAC,IAAD,CAAhC,CAAP;AACD,GAFD,MAEO,IAAId,MAAM,YAAYe,UAAtB,EAAkC;AACvC,WAAO,IAAIF,OAAJ,CAAaC,OAAD,IACjBA,OAAO,CAACT,cAAc,CAACW,WAAKC,IAAL,CAAUC,SAAV,CAAoBlB,MAApB,CAAD,EAA8BO,OAA9B,EAAuCC,OAAvC,CAAf,CADF,CAAP;AAGD,GAJM,MAIA;AACL,UAAML,GAAG,GAAG,OAAOH,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCD,YAAY,CAACC,MAAD,CAA9D;AACA,WAAOgB,WAAKC,IAAL,CAAUE,OAAV,CAAkBhB,GAAlB,EAAuBiB,IAAvB,CAA6BC,CAAD,IACjChB,cAAc,CAACgB,CAAD,EAAId,OAAJ,EAAaC,OAAb,CADT,CAAP;AAGD;AACF,CAjBD;;AAkBA,MAAMc,UAAU,GAAG,CACjBtB,MADiB,EAEjBuB,MAFiB,KAGd;AACH,QAAM,CAACC,IAAD,EAAOC,OAAP,IAAkB,qBAAmB,IAAnB,CAAxB;AACA,wBAAU,MAAM;AACdF,IAAAA,MAAM,GAAGH,IAAT,
|
1
|
+
{"version":3,"sources":["Data.ts"],"names":["resolveAsset","source","Image","resolveAssetSource","uri","default","factoryWrapper","data2","factory","onError","factoryResult","Error","loadData","undefined","Promise","resolve","Uint8Array","Skia","Data","fromBytes","fromURI","then","d","useLoading","loader","mounted","data","setData","current","value","useRawData","identity","useData"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAGA,MAAMA,YAAY,GAAIC,MAAD,IAAwB;AAC3C,SAAO,uBAAWA,MAAX,IACHC,mBAAMC,kBAAN,CAAyBF,MAAzB,EAAiCG,GAD9B,GAEHH,MAAM,CAACI,OAFX;AAGD,CAJD;;AAMA,MAAMC,cAAc,GAAG,CACrBC,KADqB,EAErBC,OAFqB,EAGrBC,OAHqB,KAIlB;AACH,QAAMC,aAAa,GAAGF,OAAO,CAACD,KAAD,CAA7B;;AACA,MAAIG,aAAa,KAAK,IAAtB,EAA4B;AAC1BD,IAAAA,OAAO,IAAIA,OAAO,CAAC,IAAIE,KAAJ,CAAU,qBAAV,CAAD,CAAlB;AACA,WAAO,IAAP;AACD,GAHD,MAGO;AACL,WAAOD,aAAP;AACD;AACF,CAZD;;AAcA,MAAME,QAAQ,GAAG,CACfX,MADe,EAEfO,OAFe,EAGfC,OAHe,KAIO;AACtB,MAAIR,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAKY,SAAlC,EAA6C;AAC3C,WAAO,IAAIC,OAAJ,CAAaC,OAAD,IAAaA,OAAO,CAAC,IAAD,CAAhC,CAAP;AACD,GAFD,MAEO,IAAId,MAAM,YAAYe,UAAtB,EAAkC;AACvC,WAAO,IAAIF,OAAJ,CAAaC,OAAD,IACjBA,OAAO,CAACT,cAAc,CAACW,WAAKC,IAAL,CAAUC,SAAV,CAAoBlB,MAApB,CAAD,EAA8BO,OAA9B,EAAuCC,OAAvC,CAAf,CADF,CAAP;AAGD,GAJM,MAIA;AACL,UAAML,GAAG,GAAG,OAAOH,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCD,YAAY,CAACC,MAAD,CAA9D;AACA,WAAOgB,WAAKC,IAAL,CAAUE,OAAV,CAAkBhB,GAAlB,EAAuBiB,IAAvB,CAA6BC,CAAD,IACjChB,cAAc,CAACgB,CAAD,EAAId,OAAJ,EAAaC,OAAb,CADT,CAAP;AAGD;AACF,CAjBD;;AAkBA,MAAMc,UAAU,GAAG,CACjBtB,MADiB,EAEjBuB,MAFiB,KAGd;AACH,QAAMC,OAAO,GAAG,mBAAO,KAAP,CAAhB;AACA,QAAM,CAACC,IAAD,EAAOC,OAAP,IAAkB,qBAAmB,IAAnB,CAAxB;AACA,wBAAU,MAAM;AACdF,IAAAA,OAAO,CAACG,OAAR,GAAkB,IAAlB;AACAJ,IAAAA,MAAM,GAAGH,IAAT,CAAeQ,KAAD,IAAW;AACvB,UAAIJ,OAAO,CAACG,OAAZ,EAAqB;AACnBD,QAAAA,OAAO,CAACE,KAAD,CAAP;AACD;AACF,KAJD;AAKA,WAAO,MAAM;AACXJ,MAAAA,OAAO,CAACG,OAAR,GAAkB,KAAlB;AACD,KAFD,CAPc,CAUd;AACD,GAXD,EAWG,CAAC3B,MAAD,CAXH;AAYA,SAAOyB,IAAP;AACD,CAnBD;;AAqBO,MAAMI,UAAU,GAAG,CACxB7B,MADwB,EAExBO,OAFwB,EAGxBC,OAHwB,KAIrBc,UAAU,CAACtB,MAAD,EAAS,MAAMW,QAAQ,CAACX,MAAD,EAASO,OAAT,EAAkBC,OAAlB,CAAvB,CAJR;;;;AAMP,MAAMsB,QAAQ,GAAIL,IAAD,IAAkBA,IAAnC;;AAEO,MAAMM,OAAO,GAAG,CACrB/B,MADqB,EAErBQ,OAFqB,KAGlBqB,UAAU,CAAC7B,MAAD,EAAS8B,QAAT,EAAmBtB,OAAnB,CAHR","sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { Image } from \"react-native\";\n\nimport { Skia } from \"../Skia\";\nimport { isRNModule } from \"../types\";\nimport type { SkData, DataModule, DataSourceParam } from \"../types\";\n\nconst resolveAsset = (source: DataModule) => {\n return isRNModule(source)\n ? Image.resolveAssetSource(source).uri\n : source.default;\n};\n\nconst factoryWrapper = <T>(\n data2: SkData,\n factory: (data: SkData) => T,\n onError?: (err: Error) => void\n) => {\n const factoryResult = factory(data2);\n if (factoryResult === null) {\n onError && onError(new Error(\"Could not load data\"));\n return null;\n } else {\n return factoryResult;\n }\n};\n\nconst loadData = <T>(\n source: DataSourceParam,\n factory: (data: SkData) => T,\n onError?: (err: Error) => void\n): Promise<T | null> => {\n if (source === null || source === undefined) {\n return new Promise((resolve) => resolve(null));\n } else if (source instanceof Uint8Array) {\n return new Promise((resolve) =>\n resolve(factoryWrapper(Skia.Data.fromBytes(source), factory, onError))\n );\n } else {\n const uri = typeof source === \"string\" ? source : resolveAsset(source);\n return Skia.Data.fromURI(uri).then((d) =>\n factoryWrapper(d, factory, onError)\n );\n }\n};\nconst useLoading = <T>(\n source: DataSourceParam,\n loader: () => Promise<T | null>\n) => {\n const mounted = useRef(false);\n const [data, setData] = useState<T | null>(null);\n useEffect(() => {\n mounted.current = true;\n loader().then((value) => {\n if (mounted.current) {\n setData(value);\n }\n });\n return () => {\n mounted.current = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [source]);\n return data;\n};\n\nexport const useRawData = <T>(\n source: DataSourceParam,\n factory: (data: SkData) => T,\n onError?: (err: Error) => void\n) => useLoading(source, () => loadData(source, factory, onError));\n\nconst identity = (data: SkData) => data;\n\nexport const useData = (\n source: DataSourceParam,\n onError?: (err: Error) => void\n) => useRawData(source, identity, onError);\n"]}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
-
exports.usePicture = void 0;
|
6
|
+
exports.usePicture = exports.createPicture = void 0;
|
7
7
|
|
8
8
|
var _react = require("react");
|
9
9
|
|
@@ -17,14 +17,32 @@ var _Skia = require("../Skia");
|
|
17
17
|
*/
|
18
18
|
const usePicture = function (rect, cb) {
|
19
19
|
let deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
20
|
+
console.warn("usePicture() is deprecated. Use createPicture() instead.");
|
20
21
|
return (0, _react.useMemo)(() => {
|
21
22
|
const recorder = _Skia.Skia.PictureRecorder();
|
22
23
|
|
23
24
|
const canvas = recorder.beginRecording(rect);
|
24
25
|
cb(canvas);
|
25
26
|
return recorder.finishRecordingAsPicture(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
26
|
-
},
|
27
|
+
}, deps);
|
27
28
|
};
|
29
|
+
/**
|
30
|
+
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
31
|
+
* @param rect Picture bounds
|
32
|
+
* @param cb Callback for drawing to the canvas
|
33
|
+
* @returns SkPicture
|
34
|
+
*/
|
35
|
+
|
28
36
|
|
29
37
|
exports.usePicture = usePicture;
|
38
|
+
|
39
|
+
const createPicture = (rect, cb) => {
|
40
|
+
const recorder = _Skia.Skia.PictureRecorder();
|
41
|
+
|
42
|
+
const canvas = recorder.beginRecording(rect);
|
43
|
+
cb(canvas);
|
44
|
+
return recorder.finishRecordingAsPicture();
|
45
|
+
};
|
46
|
+
|
47
|
+
exports.createPicture = createPicture;
|
30
48
|
//# sourceMappingURL=Picture.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Picture.ts"],"names":["usePicture","rect","cb","deps","recorder","Skia","PictureRecorder","canvas","beginRecording","finishRecordingAsPicture"],"mappings":";;;;;;;AACA;;AAEA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,UAAU,GAAG,UACxBC,IADwB,EAExBC,EAFwB,
|
1
|
+
{"version":3,"sources":["Picture.ts"],"names":["usePicture","rect","cb","deps","console","warn","recorder","Skia","PictureRecorder","canvas","beginRecording","finishRecordingAsPicture","createPicture"],"mappings":";;;;;;;AACA;;AAEA;;AAGA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,UAAU,GAAG,UACxBC,IADwB,EAExBC,EAFwB,EAIrB;AAAA,MADHC,IACG,uEADoB,EACpB;AACHC,EAAAA,OAAO,CAACC,IAAR,CAAa,0DAAb;AACA,SAAO,oBAAQ,MAAM;AACnB,UAAMC,QAAQ,GAAGC,WAAKC,eAAL,EAAjB;;AACA,UAAMC,MAAM,GAAGH,QAAQ,CAACI,cAAT,CAAwBT,IAAxB,CAAf;AACAC,IAAAA,EAAE,CAACO,MAAD,CAAF;AACA,WAAOH,QAAQ,CAACK,wBAAT,EAAP,CAJmB,CAKnB;AACD,GANM,EAMJR,IANI,CAAP;AAOD,CAbM;AAeP;AACA;AACA;AACA;AACA;AACA;;;;;AACO,MAAMS,aAAa,GAAG,CAACX,IAAD,EAAeC,EAAf,KAAkD;AAC7E,QAAMI,QAAQ,GAAGC,WAAKC,eAAL,EAAjB;;AACA,QAAMC,MAAM,GAAGH,QAAQ,CAACI,cAAT,CAAwBT,IAAxB,CAAf;AACAC,EAAAA,EAAE,CAACO,MAAD,CAAF;AACA,SAAOH,QAAQ,CAACK,wBAAT,EAAP;AACD,CALM","sourcesContent":["import type { DependencyList } from \"react\";\nimport { useMemo } from \"react\";\n\nimport { Skia } from \"../Skia\";\nimport type { SkCanvas, SkRect } from \"../types\";\n\n/**\n * Memoizes and returns an SkPicture that can be drawn to another canvas.\n * @param rect Picture bounds\n * @param cb Callback for drawing to the canvas\n * @returns SkPicture\n */\nexport const usePicture = (\n rect: SkRect,\n cb: (canvas: SkCanvas) => void,\n deps: DependencyList = []\n) => {\n console.warn(\"usePicture() is deprecated. Use createPicture() instead.\");\n return useMemo(() => {\n const recorder = Skia.PictureRecorder();\n const canvas = recorder.beginRecording(rect);\n cb(canvas);\n return recorder.finishRecordingAsPicture();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n\n/**\n * Memoizes and returns an SkPicture that can be drawn to another canvas.\n * @param rect Picture bounds\n * @param cb Callback for drawing to the canvas\n * @returns SkPicture\n */\nexport const createPicture = (rect: SkRect, cb: (canvas: SkCanvas) => void) => {\n const recorder = Skia.PictureRecorder();\n const canvas = recorder.beginRecording(rect);\n cb(canvas);\n return recorder.finishRecordingAsPicture();\n};\n"]}
|
package/lib/module/mock/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["index.ts"],"names":["Values","ValuesHooks","Selector","BaseSkia","useSharedValueEffect","timingFunctions","springFunctions","decayFunctions","interpolateFn","interpolatePathFn","interpolateVectorFn","ShaderLib","Stub","constructor","Proxy","get","apply","set","Noop","Skia","vec","x","y","Mock","useRawData","useData","useFont","useTypeface","useImage","useSVG","usePicture","rect","width","height","rrect","r","rx","ry","point","add","a","b","sub","neg","dist","Math","hypot","translate","translateX","translateY","bounds","topLeft","topRight","bottomLeft","bottomRight","center","processTransform2d","interpolateColors","_value","_inputRange","_outputRange","Float32Array","of","mixColors","_v","_x","_y","createDrawing","createDeclaration"],"mappings":"AAAA;AAGA,OAAO,KAAKA,MAAZ,MAAwB,eAAxB;AACA,OAAO,KAAKC,WAAZ,MAA6B,iBAA7B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,OAAO,KAAKC,QAAZ,MAA0B,eAA1B;AAKA,SAASC,oBAAT,QAAqC,6CAArC;AACA,OAAO,KAAKC,eAAZ,MAAiC,qBAAjC;AACA,OAAO,KAAKC,eAAZ,MAAiC,qBAAjC;AACA,OAAO,KAAKC,cAAZ,MAAgC,oBAAhC;AACA,OAAO,KAAKC,aAAZ,MAA+B,oCAA/B;AACA,OAAO,KAAKC,iBAAZ,MAAmC,yCAAnC;AACA,OAAO,KAAKC,mBAAZ,MAAqC,0CAArC;AACA,SAASC,SAAT,QAA0B,0CAA1B;;AAEA,MAAMC,IAAN,CAAW;AACTC,EAAAA,WAAW,GAAG;AACZ,WAAO,IAAIC,KAAJ,CAAU,MAAM,CAAE,CAAlB,EAAoB;AACzBC,MAAAA,GAAG,EAAE,MAAM,IAAIH,IAAJ,EADc;AAEzBI,MAAAA,KAAK,EAAE,MAAM,IAAIJ,IAAJ,EAFY;AAGzBK,MAAAA,GAAG,EAAE,MAAM;AAHc,KAApB,CAAP;AAKD;;AAPQ;;AAUX,MAAMC,IAAe,GAAG,MAAM,CAAE,CAAhC;;AAEA,OAAO,MAAMC,IAAa,GAAG,IAAIP,IAAJ,EAAtB;AAEP,OAAO,MAAMQ,GAAG,GAAG,CAACC,CAAD,EAAaC,CAAb;AAAA;;AAAA,SAA6B;AAAED,IAAAA,CAAC,EAAEA,CAAF,aAAEA,CAAF,cAAEA,CAAF,GAAO,CAAV;AAAaC,IAAAA,CAAC,UAAEA,CAAF,aAAEA,CAAF,cAAEA,CAAF,GAAOD,CAAP,uCAAY;AAA1B,GAA7B;AAAA,CAAZ;AAEP,OAAO,MAAME,IAOV,GAAG;AACJ;AACA;AACAJ,EAAAA,IAHI;AAIJ,KAAGhB,QAJC;AAKJ;AACAqB,EAAAA,UAAU,EAAEN,IANR;AAOJO,EAAAA,OAAO,EAAEP,IAPL;AAQJQ,EAAAA,OAAO,EAAER,IARL;AASJS,EAAAA,WAAW,EAAET,IATT;AAUJU,EAAAA,QAAQ,EAAEV,IAVN;AAWJW,EAAAA,MAAM,EAAEX,IAXJ;AAYJY,EAAAA,UAAU,EAAEZ,IAZR;
|
1
|
+
{"version":3,"sources":["index.ts"],"names":["Values","ValuesHooks","Selector","BaseSkia","useSharedValueEffect","timingFunctions","springFunctions","decayFunctions","interpolateFn","interpolatePathFn","interpolateVectorFn","ShaderLib","Stub","constructor","Proxy","get","apply","set","Noop","Skia","vec","x","y","Mock","useRawData","useData","useFont","useTypeface","useImage","useSVG","usePicture","createPicture","rect","width","height","rrect","r","rx","ry","point","add","a","b","sub","neg","dist","Math","hypot","translate","translateX","translateY","bounds","topLeft","topRight","bottomLeft","bottomRight","center","processTransform2d","interpolateColors","_value","_inputRange","_outputRange","Float32Array","of","mixColors","_v","_x","_y","createDrawing","createDeclaration"],"mappings":"AAAA;AAGA,OAAO,KAAKA,MAAZ,MAAwB,eAAxB;AACA,OAAO,KAAKC,WAAZ,MAA6B,iBAA7B;AACA,SAASC,QAAT,QAAyB,oBAAzB;AACA,OAAO,KAAKC,QAAZ,MAA0B,eAA1B;AAKA,SAASC,oBAAT,QAAqC,6CAArC;AACA,OAAO,KAAKC,eAAZ,MAAiC,qBAAjC;AACA,OAAO,KAAKC,eAAZ,MAAiC,qBAAjC;AACA,OAAO,KAAKC,cAAZ,MAAgC,oBAAhC;AACA,OAAO,KAAKC,aAAZ,MAA+B,oCAA/B;AACA,OAAO,KAAKC,iBAAZ,MAAmC,yCAAnC;AACA,OAAO,KAAKC,mBAAZ,MAAqC,0CAArC;AACA,SAASC,SAAT,QAA0B,0CAA1B;;AAEA,MAAMC,IAAN,CAAW;AACTC,EAAAA,WAAW,GAAG;AACZ,WAAO,IAAIC,KAAJ,CAAU,MAAM,CAAE,CAAlB,EAAoB;AACzBC,MAAAA,GAAG,EAAE,MAAM,IAAIH,IAAJ,EADc;AAEzBI,MAAAA,KAAK,EAAE,MAAM,IAAIJ,IAAJ,EAFY;AAGzBK,MAAAA,GAAG,EAAE,MAAM;AAHc,KAApB,CAAP;AAKD;;AAPQ;;AAUX,MAAMC,IAAe,GAAG,MAAM,CAAE,CAAhC;;AAEA,OAAO,MAAMC,IAAa,GAAG,IAAIP,IAAJ,EAAtB;AAEP,OAAO,MAAMQ,GAAG,GAAG,CAACC,CAAD,EAAaC,CAAb;AAAA;;AAAA,SAA6B;AAAED,IAAAA,CAAC,EAAEA,CAAF,aAAEA,CAAF,cAAEA,CAAF,GAAO,CAAV;AAAaC,IAAAA,CAAC,UAAEA,CAAF,aAAEA,CAAF,cAAEA,CAAF,GAAOD,CAAP,uCAAY;AAA1B,GAA7B;AAAA,CAAZ;AAEP,OAAO,MAAME,IAOV,GAAG;AACJ;AACA;AACAJ,EAAAA,IAHI;AAIJ,KAAGhB,QAJC;AAKJ;AACAqB,EAAAA,UAAU,EAAEN,IANR;AAOJO,EAAAA,OAAO,EAAEP,IAPL;AAQJQ,EAAAA,OAAO,EAAER,IARL;AASJS,EAAAA,WAAW,EAAET,IATT;AAUJU,EAAAA,QAAQ,EAAEV,IAVN;AAWJW,EAAAA,MAAM,EAAEX,IAXJ;AAYJY,EAAAA,UAAU,EAAEZ,IAZR;AAaJa,EAAAA,aAAa,EAAEb,IAbX;AAcJ;AACAE,EAAAA,GAfI;AAgBJY,EAAAA,IAAI,EAAE,CAACX,CAAD,EAAYC,CAAZ,EAAuBW,KAAvB,EAAsCC,MAAtC,MAA0D;AAC9Db,IAAAA,CAD8D;AAE9DC,IAAAA,CAF8D;AAG9DW,IAAAA,KAH8D;AAI9DC,IAAAA;AAJ8D,GAA1D,CAhBF;AAsBJC,EAAAA,KAAK,EAAE,CAACC,CAAD,EAAYC,EAAZ,EAAwBC,EAAxB,MAAwC;AAC7CN,IAAAA,IAAI,EAAEI,CADuC;AAE7CC,IAAAA,EAF6C;AAG7CC,IAAAA;AAH6C,GAAxC,CAtBH;AA2BJC,EAAAA,KAAK,EAAEnB,GA3BH;AA4BJoB,EAAAA,GAAG,EAAE,CAACC,CAAD,EAAYC,CAAZ,KAA0BtB,GAAG,CAACqB,CAAC,CAACpB,CAAF,GAAMqB,CAAC,CAACrB,CAAT,EAAYoB,CAAC,CAACnB,CAAF,GAAMoB,CAAC,CAACpB,CAApB,CA5B9B;AA6BJqB,EAAAA,GAAG,EAAE,CAACF,CAAD,EAAYC,CAAZ,KAA0BtB,GAAG,CAACqB,CAAC,CAACpB,CAAF,GAAMqB,CAAC,CAACrB,CAAT,EAAYoB,CAAC,CAACnB,CAAF,GAAMoB,CAAC,CAACpB,CAApB,CA7B9B;AA8BJsB,EAAAA,GAAG,EAAGH,CAAD,IAAerB,GAAG,CAAC,CAACqB,CAAC,CAACpB,CAAJ,EAAO,CAACoB,CAAC,CAACnB,CAAV,CA9BnB;AA+BJuB,EAAAA,IAAI,EAAE,CAACJ,CAAD,EAAYC,CAAZ,KAA0BI,IAAI,CAACC,KAAL,CAAWN,CAAC,CAACpB,CAAF,GAAMqB,CAAC,CAACrB,CAAnB,EAAsBoB,CAAC,CAACnB,CAAF,GAAMoB,CAAC,CAACpB,CAA9B,CA/B5B;AAgCJ0B,EAAAA,SAAS,EAAE;AAAA,QAAC;AAAE3B,MAAAA,CAAF;AAAKC,MAAAA;AAAL,KAAD;AAAA,WACT,CAAC;AAAE2B,MAAAA,UAAU,EAAE5B;AAAd,KAAD,EAAoB;AAAE6B,MAAAA,UAAU,EAAE5B;AAAd,KAApB,CADS;AAAA,GAhCP;AAmCJ6B,EAAAA,MAAM,EAAEjC,IAnCJ;AAoCJkC,EAAAA,OAAO,EAAElC,IApCL;AAqCJmC,EAAAA,QAAQ,EAAEnC,IArCN;AAsCJoC,EAAAA,UAAU,EAAEpC,IAtCR;AAuCJqC,EAAAA,WAAW,EAAErC,IAvCT;AAwCJsC,EAAAA,MAAM,EAAEtC,IAxCJ;AAyCJuC,EAAAA,kBAAkB,EAAEvC,IAzChB;AA0CJ;AACAd,EAAAA,oBA3CI;AA4CJ;AACA,KAAGJ,MA7CC;AA8CJ,KAAGC,WA9CC;AA+CJC,EAAAA,QA/CI;AAgDJ;AACA,KAAGG,eAjDC;AAkDJ,KAAGC,eAlDC;AAmDJ,KAAGC,cAnDC;AAoDJ,KAAGC,aApDC;AAqDJ,KAAGC,iBArDC;AAsDJ,KAAGC,mBAtDC;AAuDJgD,EAAAA,iBAAiB,EAAE,CACjBC,MADiB,EAEjBC,WAFiB,EAGjBC,YAHiB,KAIdC,YAAY,CAACC,EAAb,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CA3DD;AA4DJC,EAAAA,SAAS,EAAE,CAACC,EAAD,EAAaC,EAAb,EAAwBC,EAAxB,KAAsCL,YAAY,CAACC,EAAb,CAAgB,CAAhB,EAAmB,CAAnB,EAAsB,CAAtB,EAAyB,CAAzB,CA5D7C;AA6DJpD,EAAAA,SA7DI;AA8DJyD,EAAAA,aAAa,EAAElD,IA9DX;AA+DJmD,EAAAA,iBAAiB,EAAEnD;AA/Df,CAPC","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Color, Skia as SkiaApi, SkRect, Vector } from \"../skia/types\";\nimport * as Values from \"../values/web\";\nimport * as ValuesHooks from \"../values/hooks\";\nimport { Selector } from \"../values/selector\";\nimport * as BaseSkia from \"../skia/types\";\nimport type * as SkiaExports from \"../skia\";\nimport type * as ExternalExports from \"../external\";\nimport type * as ValueExports from \"../values\";\nimport type * as AnimationExports from \"../animation\";\nimport { useSharedValueEffect } from \"../external/reanimated/useSharedValueEffect\";\nimport * as timingFunctions from \"../animation/timing\";\nimport * as springFunctions from \"../animation/spring\";\nimport * as decayFunctions from \"../animation/decay\";\nimport * as interpolateFn from \"../animation/functions/interpolate\";\nimport * as interpolatePathFn from \"../animation/functions/interpolatePaths\";\nimport * as interpolateVectorFn from \"../animation/functions/interpolateVector\";\nimport { ShaderLib } from \"../renderer/components/shaders/ShaderLib\";\n\nclass Stub {\n constructor() {\n return new Proxy(() => {}, {\n get: () => new Stub(),\n apply: () => new Stub(),\n set: () => true,\n });\n }\n}\n\nconst Noop: () => any = () => {};\n\nexport const Skia: SkiaApi = new Stub() as any;\n\nexport const vec = (x?: number, y?: number) => ({ x: x ?? 0, y: y ?? x ?? 0 });\n\nexport const Mock: typeof SkiaExports &\n typeof ExternalExports &\n typeof ValueExports &\n typeof AnimationExports & {\n createDrawing: () => any;\n createDeclaration: () => any;\n ShaderLib: typeof ShaderLib;\n } = {\n // SkiaExports\n // 1. Skia API. BaseSkia contains the enums, and functions like isPaint etc\n Skia,\n ...BaseSkia,\n // 2. Hooks\n useRawData: Noop,\n useData: Noop,\n useFont: Noop,\n useTypeface: Noop,\n useImage: Noop,\n useSVG: Noop,\n usePicture: Noop,\n createPicture: Noop,\n // 3. Point/Rect/Transform utilities\n vec,\n rect: (x: number, y: number, width: number, height: number) => ({\n x,\n y,\n width,\n height,\n }),\n rrect: (r: SkRect, rx: number, ry: number) => ({\n rect: r,\n rx,\n ry,\n }),\n point: vec,\n add: (a: Vector, b: Vector) => vec(a.x + b.x, a.y + b.y),\n sub: (a: Vector, b: Vector) => vec(a.x - b.x, a.y - b.y),\n neg: (a: Vector) => vec(-a.x, -a.y),\n dist: (a: Vector, b: Vector) => Math.hypot(a.x - b.x, a.y - b.y),\n translate: ({ x, y }: Vector) =>\n [{ translateX: x }, { translateY: y }] as const,\n\n bounds: Noop,\n topLeft: Noop,\n topRight: Noop,\n bottomLeft: Noop,\n bottomRight: Noop,\n center: Noop,\n processTransform2d: Noop,\n // ExternalExports\n useSharedValueEffect,\n // ValueExports\n ...Values,\n ...ValuesHooks,\n Selector,\n // Animations\n ...timingFunctions,\n ...springFunctions,\n ...decayFunctions,\n ...interpolateFn,\n ...interpolatePathFn,\n ...interpolateVectorFn,\n interpolateColors: (\n _value: number,\n _inputRange: number[],\n _outputRange: Color[]\n ) => Float32Array.of(0, 0, 0, 0),\n mixColors: (_v: number, _x: Color, _y: Color) => Float32Array.of(0, 0, 0, 0),\n ShaderLib,\n createDrawing: Noop,\n createDeclaration: Noop,\n};\n"]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { useEffect, useState } from "react";
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
2
2
|
import { Image } from "react-native";
|
3
3
|
import { Skia } from "../Skia";
|
4
4
|
import { isRNModule } from "../types";
|
@@ -30,9 +30,18 @@ const loadData = (source, factory, onError) => {
|
|
30
30
|
};
|
31
31
|
|
32
32
|
const useLoading = (source, loader) => {
|
33
|
+
const mounted = useRef(false);
|
33
34
|
const [data, setData] = useState(null);
|
34
35
|
useEffect(() => {
|
35
|
-
|
36
|
+
mounted.current = true;
|
37
|
+
loader().then(value => {
|
38
|
+
if (mounted.current) {
|
39
|
+
setData(value);
|
40
|
+
}
|
41
|
+
});
|
42
|
+
return () => {
|
43
|
+
mounted.current = false;
|
44
|
+
}; // eslint-disable-next-line react-hooks/exhaustive-deps
|
36
45
|
}, [source]);
|
37
46
|
return data;
|
38
47
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Data.ts"],"names":["useEffect","useState","Image","Skia","isRNModule","resolveAsset","source","resolveAssetSource","uri","default","factoryWrapper","data2","factory","onError","factoryResult","Error","loadData","undefined","Promise","resolve","Uint8Array","Data","fromBytes","fromURI","then","d","useLoading","loader","data","setData","useRawData","identity","useData"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,
|
1
|
+
{"version":3,"sources":["Data.ts"],"names":["useEffect","useRef","useState","Image","Skia","isRNModule","resolveAsset","source","resolveAssetSource","uri","default","factoryWrapper","data2","factory","onError","factoryResult","Error","loadData","undefined","Promise","resolve","Uint8Array","Data","fromBytes","fromURI","then","d","useLoading","loader","mounted","data","setData","current","value","useRawData","identity","useData"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,MAApB,EAA4BC,QAA5B,QAA4C,OAA5C;AACA,SAASC,KAAT,QAAsB,cAAtB;AAEA,SAASC,IAAT,QAAqB,SAArB;AACA,SAASC,UAAT,QAA2B,UAA3B;;AAGA,MAAMC,YAAY,GAAIC,MAAD,IAAwB;AAC3C,SAAOF,UAAU,CAACE,MAAD,CAAV,GACHJ,KAAK,CAACK,kBAAN,CAAyBD,MAAzB,EAAiCE,GAD9B,GAEHF,MAAM,CAACG,OAFX;AAGD,CAJD;;AAMA,MAAMC,cAAc,GAAG,CACrBC,KADqB,EAErBC,OAFqB,EAGrBC,OAHqB,KAIlB;AACH,QAAMC,aAAa,GAAGF,OAAO,CAACD,KAAD,CAA7B;;AACA,MAAIG,aAAa,KAAK,IAAtB,EAA4B;AAC1BD,IAAAA,OAAO,IAAIA,OAAO,CAAC,IAAIE,KAAJ,CAAU,qBAAV,CAAD,CAAlB;AACA,WAAO,IAAP;AACD,GAHD,MAGO;AACL,WAAOD,aAAP;AACD;AACF,CAZD;;AAcA,MAAME,QAAQ,GAAG,CACfV,MADe,EAEfM,OAFe,EAGfC,OAHe,KAIO;AACtB,MAAIP,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAKW,SAAlC,EAA6C;AAC3C,WAAO,IAAIC,OAAJ,CAAaC,OAAD,IAAaA,OAAO,CAAC,IAAD,CAAhC,CAAP;AACD,GAFD,MAEO,IAAIb,MAAM,YAAYc,UAAtB,EAAkC;AACvC,WAAO,IAAIF,OAAJ,CAAaC,OAAD,IACjBA,OAAO,CAACT,cAAc,CAACP,IAAI,CAACkB,IAAL,CAAUC,SAAV,CAAoBhB,MAApB,CAAD,EAA8BM,OAA9B,EAAuCC,OAAvC,CAAf,CADF,CAAP;AAGD,GAJM,MAIA;AACL,UAAML,GAAG,GAAG,OAAOF,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCD,YAAY,CAACC,MAAD,CAA9D;AACA,WAAOH,IAAI,CAACkB,IAAL,CAAUE,OAAV,CAAkBf,GAAlB,EAAuBgB,IAAvB,CAA6BC,CAAD,IACjCf,cAAc,CAACe,CAAD,EAAIb,OAAJ,EAAaC,OAAb,CADT,CAAP;AAGD;AACF,CAjBD;;AAkBA,MAAMa,UAAU,GAAG,CACjBpB,MADiB,EAEjBqB,MAFiB,KAGd;AACH,QAAMC,OAAO,GAAG5B,MAAM,CAAC,KAAD,CAAtB;AACA,QAAM,CAAC6B,IAAD,EAAOC,OAAP,IAAkB7B,QAAQ,CAAW,IAAX,CAAhC;AACAF,EAAAA,SAAS,CAAC,MAAM;AACd6B,IAAAA,OAAO,CAACG,OAAR,GAAkB,IAAlB;AACAJ,IAAAA,MAAM,GAAGH,IAAT,CAAeQ,KAAD,IAAW;AACvB,UAAIJ,OAAO,CAACG,OAAZ,EAAqB;AACnBD,QAAAA,OAAO,CAACE,KAAD,CAAP;AACD;AACF,KAJD;AAKA,WAAO,MAAM;AACXJ,MAAAA,OAAO,CAACG,OAAR,GAAkB,KAAlB;AACD,KAFD,CAPc,CAUd;AACD,GAXQ,EAWN,CAACzB,MAAD,CAXM,CAAT;AAYA,SAAOuB,IAAP;AACD,CAnBD;;AAqBA,OAAO,MAAMI,UAAU,GAAG,CACxB3B,MADwB,EAExBM,OAFwB,EAGxBC,OAHwB,KAIrBa,UAAU,CAACpB,MAAD,EAAS,MAAMU,QAAQ,CAACV,MAAD,EAASM,OAAT,EAAkBC,OAAlB,CAAvB,CAJR;;AAMP,MAAMqB,QAAQ,GAAIL,IAAD,IAAkBA,IAAnC;;AAEA,OAAO,MAAMM,OAAO,GAAG,CACrB7B,MADqB,EAErBO,OAFqB,KAGlBoB,UAAU,CAAC3B,MAAD,EAAS4B,QAAT,EAAmBrB,OAAnB,CAHR","sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport { Image } from \"react-native\";\n\nimport { Skia } from \"../Skia\";\nimport { isRNModule } from \"../types\";\nimport type { SkData, DataModule, DataSourceParam } from \"../types\";\n\nconst resolveAsset = (source: DataModule) => {\n return isRNModule(source)\n ? Image.resolveAssetSource(source).uri\n : source.default;\n};\n\nconst factoryWrapper = <T>(\n data2: SkData,\n factory: (data: SkData) => T,\n onError?: (err: Error) => void\n) => {\n const factoryResult = factory(data2);\n if (factoryResult === null) {\n onError && onError(new Error(\"Could not load data\"));\n return null;\n } else {\n return factoryResult;\n }\n};\n\nconst loadData = <T>(\n source: DataSourceParam,\n factory: (data: SkData) => T,\n onError?: (err: Error) => void\n): Promise<T | null> => {\n if (source === null || source === undefined) {\n return new Promise((resolve) => resolve(null));\n } else if (source instanceof Uint8Array) {\n return new Promise((resolve) =>\n resolve(factoryWrapper(Skia.Data.fromBytes(source), factory, onError))\n );\n } else {\n const uri = typeof source === \"string\" ? source : resolveAsset(source);\n return Skia.Data.fromURI(uri).then((d) =>\n factoryWrapper(d, factory, onError)\n );\n }\n};\nconst useLoading = <T>(\n source: DataSourceParam,\n loader: () => Promise<T | null>\n) => {\n const mounted = useRef(false);\n const [data, setData] = useState<T | null>(null);\n useEffect(() => {\n mounted.current = true;\n loader().then((value) => {\n if (mounted.current) {\n setData(value);\n }\n });\n return () => {\n mounted.current = false;\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [source]);\n return data;\n};\n\nexport const useRawData = <T>(\n source: DataSourceParam,\n factory: (data: SkData) => T,\n onError?: (err: Error) => void\n) => useLoading(source, () => loadData(source, factory, onError));\n\nconst identity = (data: SkData) => data;\n\nexport const useData = (\n source: DataSourceParam,\n onError?: (err: Error) => void\n) => useRawData(source, identity, onError);\n"]}
|
@@ -9,11 +9,25 @@ import { Skia } from "../Skia";
|
|
9
9
|
*/
|
10
10
|
export const usePicture = function (rect, cb) {
|
11
11
|
let deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
12
|
+
console.warn("usePicture() is deprecated. Use createPicture() instead.");
|
12
13
|
return useMemo(() => {
|
13
14
|
const recorder = Skia.PictureRecorder();
|
14
15
|
const canvas = recorder.beginRecording(rect);
|
15
16
|
cb(canvas);
|
16
17
|
return recorder.finishRecordingAsPicture(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
17
|
-
},
|
18
|
+
}, deps);
|
19
|
+
};
|
20
|
+
/**
|
21
|
+
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
22
|
+
* @param rect Picture bounds
|
23
|
+
* @param cb Callback for drawing to the canvas
|
24
|
+
* @returns SkPicture
|
25
|
+
*/
|
26
|
+
|
27
|
+
export const createPicture = (rect, cb) => {
|
28
|
+
const recorder = Skia.PictureRecorder();
|
29
|
+
const canvas = recorder.beginRecording(rect);
|
30
|
+
cb(canvas);
|
31
|
+
return recorder.finishRecordingAsPicture();
|
18
32
|
};
|
19
33
|
//# sourceMappingURL=Picture.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["Picture.ts"],"names":["useMemo","Skia","usePicture","rect","cb","deps","recorder","PictureRecorder","canvas","beginRecording","finishRecordingAsPicture"],"mappings":"AACA,SAASA,OAAT,QAAwB,OAAxB;AAEA,SAASC,IAAT,QAAqB,SAArB;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAG,UACxBC,IADwB,EAExBC,EAFwB,
|
1
|
+
{"version":3,"sources":["Picture.ts"],"names":["useMemo","Skia","usePicture","rect","cb","deps","console","warn","recorder","PictureRecorder","canvas","beginRecording","finishRecordingAsPicture","createPicture"],"mappings":"AACA,SAASA,OAAT,QAAwB,OAAxB;AAEA,SAASC,IAAT,QAAqB,SAArB;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,UAAU,GAAG,UACxBC,IADwB,EAExBC,EAFwB,EAIrB;AAAA,MADHC,IACG,uEADoB,EACpB;AACHC,EAAAA,OAAO,CAACC,IAAR,CAAa,0DAAb;AACA,SAAOP,OAAO,CAAC,MAAM;AACnB,UAAMQ,QAAQ,GAAGP,IAAI,CAACQ,eAAL,EAAjB;AACA,UAAMC,MAAM,GAAGF,QAAQ,CAACG,cAAT,CAAwBR,IAAxB,CAAf;AACAC,IAAAA,EAAE,CAACM,MAAD,CAAF;AACA,WAAOF,QAAQ,CAACI,wBAAT,EAAP,CAJmB,CAKnB;AACD,GANa,EAMXP,IANW,CAAd;AAOD,CAbM;AAeP;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMQ,aAAa,GAAG,CAACV,IAAD,EAAeC,EAAf,KAAkD;AAC7E,QAAMI,QAAQ,GAAGP,IAAI,CAACQ,eAAL,EAAjB;AACA,QAAMC,MAAM,GAAGF,QAAQ,CAACG,cAAT,CAAwBR,IAAxB,CAAf;AACAC,EAAAA,EAAE,CAACM,MAAD,CAAF;AACA,SAAOF,QAAQ,CAACI,wBAAT,EAAP;AACD,CALM","sourcesContent":["import type { DependencyList } from \"react\";\nimport { useMemo } from \"react\";\n\nimport { Skia } from \"../Skia\";\nimport type { SkCanvas, SkRect } from \"../types\";\n\n/**\n * Memoizes and returns an SkPicture that can be drawn to another canvas.\n * @param rect Picture bounds\n * @param cb Callback for drawing to the canvas\n * @returns SkPicture\n */\nexport const usePicture = (\n rect: SkRect,\n cb: (canvas: SkCanvas) => void,\n deps: DependencyList = []\n) => {\n console.warn(\"usePicture() is deprecated. Use createPicture() instead.\");\n return useMemo(() => {\n const recorder = Skia.PictureRecorder();\n const canvas = recorder.beginRecording(rect);\n cb(canvas);\n return recorder.finishRecordingAsPicture();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n};\n\n/**\n * Memoizes and returns an SkPicture that can be drawn to another canvas.\n * @param rect Picture bounds\n * @param cb Callback for drawing to the canvas\n * @returns SkPicture\n */\nexport const createPicture = (rect: SkRect, cb: (canvas: SkCanvas) => void) => {\n const recorder = Skia.PictureRecorder();\n const canvas = recorder.beginRecording(rect);\n cb(canvas);\n return recorder.finishRecordingAsPicture();\n};\n"]}
|
@@ -1,9 +1,16 @@
|
|
1
1
|
import type { DependencyList } from "react";
|
2
|
-
import type { SkCanvas,
|
2
|
+
import type { SkCanvas, SkRect } from "../types";
|
3
3
|
/**
|
4
4
|
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
5
5
|
* @param rect Picture bounds
|
6
6
|
* @param cb Callback for drawing to the canvas
|
7
7
|
* @returns SkPicture
|
8
8
|
*/
|
9
|
-
export declare const usePicture: (rect: SkRect, cb: (canvas: SkCanvas) => void, deps?: DependencyList) => SkPicture;
|
9
|
+
export declare const usePicture: (rect: SkRect, cb: (canvas: SkCanvas) => void, deps?: DependencyList) => import("../types").SkPicture;
|
10
|
+
/**
|
11
|
+
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
12
|
+
* @param rect Picture bounds
|
13
|
+
* @param cb Callback for drawing to the canvas
|
14
|
+
* @returns SkPicture
|
15
|
+
*/
|
16
|
+
export declare const createPicture: (rect: SkRect, cb: (canvas: SkCanvas) => void) => import("../types").SkPicture;
|
package/package.json
CHANGED
package/src/mock/index.ts
CHANGED
package/src/skia/core/Data.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
import { useEffect, useState } from "react";
|
1
|
+
import { useEffect, useRef, useState } from "react";
|
2
2
|
import { Image } from "react-native";
|
3
3
|
|
4
4
|
import { Skia } from "../Skia";
|
@@ -47,9 +47,18 @@ const useLoading = <T>(
|
|
47
47
|
source: DataSourceParam,
|
48
48
|
loader: () => Promise<T | null>
|
49
49
|
) => {
|
50
|
+
const mounted = useRef(false);
|
50
51
|
const [data, setData] = useState<T | null>(null);
|
51
52
|
useEffect(() => {
|
52
|
-
|
53
|
+
mounted.current = true;
|
54
|
+
loader().then((value) => {
|
55
|
+
if (mounted.current) {
|
56
|
+
setData(value);
|
57
|
+
}
|
58
|
+
});
|
59
|
+
return () => {
|
60
|
+
mounted.current = false;
|
61
|
+
};
|
53
62
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
54
63
|
}, [source]);
|
55
64
|
return data;
|
package/src/skia/core/Picture.ts
CHANGED
@@ -2,7 +2,7 @@ import type { DependencyList } from "react";
|
|
2
2
|
import { useMemo } from "react";
|
3
3
|
|
4
4
|
import { Skia } from "../Skia";
|
5
|
-
import type { SkCanvas,
|
5
|
+
import type { SkCanvas, SkRect } from "../types";
|
6
6
|
|
7
7
|
/**
|
8
8
|
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
@@ -14,12 +14,26 @@ export const usePicture = (
|
|
14
14
|
rect: SkRect,
|
15
15
|
cb: (canvas: SkCanvas) => void,
|
16
16
|
deps: DependencyList = []
|
17
|
-
)
|
17
|
+
) => {
|
18
|
+
console.warn("usePicture() is deprecated. Use createPicture() instead.");
|
18
19
|
return useMemo(() => {
|
19
20
|
const recorder = Skia.PictureRecorder();
|
20
21
|
const canvas = recorder.beginRecording(rect);
|
21
22
|
cb(canvas);
|
22
23
|
return recorder.finishRecordingAsPicture();
|
23
24
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
24
|
-
},
|
25
|
+
}, deps);
|
26
|
+
};
|
27
|
+
|
28
|
+
/**
|
29
|
+
* Memoizes and returns an SkPicture that can be drawn to another canvas.
|
30
|
+
* @param rect Picture bounds
|
31
|
+
* @param cb Callback for drawing to the canvas
|
32
|
+
* @returns SkPicture
|
33
|
+
*/
|
34
|
+
export const createPicture = (rect: SkRect, cb: (canvas: SkCanvas) => void) => {
|
35
|
+
const recorder = Skia.PictureRecorder();
|
36
|
+
const canvas = recorder.beginRecording(rect);
|
37
|
+
cb(canvas);
|
38
|
+
return recorder.finishRecordingAsPicture();
|
25
39
|
};
|