@shopify/react-native-skia 0.1.157 → 0.1.158
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/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 +9 -1
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/HostComponents.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/dom/nodes/DrawingNode.js +2 -6
- package/lib/module/dom/nodes/DrawingNode.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/drawings/Text.js +4 -9
- package/lib/module/dom/nodes/drawings/Text.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 +0 -1
- package/lib/module/mock/index.js.map +1 -1
- package/lib/module/renderer/Canvas.js +9 -1
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/HostComponents.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/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/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/values/web/RNSkReadonlyValue.js +4 -2
- package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -1
- package/lib/module/views/SkiaBaseWebView.js +2 -2
- package/lib/module/views/SkiaBaseWebView.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 +2 -2
- 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 +7 -2
- package/src/renderer/HostComponents.ts +1 -4
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StrokeCap","StrokeJoin","PaintStyle","BlendMode","ClipOp","isRRect","isPathDef","processPath","processTransformProps","JsiNode","JsiDeclarationNode","enumKey","paintProps","JsiRenderNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","setInvalidate","insertChildBefore","before","clip","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","_children","forEach","isColorFilter","cf","materialize","colorFilter","ColorFilter","MakeCompose","isShader","shader","isPathEffect","pe","pathEffect","PathEffect","isImageFilter","filter","imageFilter","ImageFilter","isMaskFilter","maskFilter","render","parentCtx","invertClip","layer","transform","canvas","parent","paint","paintCtx","concatPaint","hasTransform","hasClip","shouldSave","op","Difference","Intersect","saveLayer","isSkPaint","current","save","concat","renderNode","restore","obj","__typename__","alpha","copy","setShader","setColor","cl","getColor","setStrokeWidth","setAntiAlias","setBlendMode","setColorFilter","setImageFilter","setMaskFilter","setPathEffect","setAlphaf","setStrokeCap","setStrokeJoin","setStrokeMiter","setStyle"],"sources":["RenderNode.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type {\n SkMatrix,\n SkRect,\n SkRRect,\n SkPath,\n SkPaint,\n} from \"../../skia/types\";\nimport {\n StrokeCap,\n StrokeJoin,\n PaintStyle,\n BlendMode,\n ClipOp,\n isRRect,\n} from \"../../skia/types\";\nimport type {\n RenderNode,\n GroupProps,\n DrawingContext,\n NodeType,\n Node,\n DeclarationNode,\n} from \"../types\";\n\nimport { isPathDef, processPath, processTransformProps } from \"./datatypes\";\nimport type { NodeContext } from \"./Node\";\nimport { JsiNode, JsiDeclarationNode } from \"./Node\";\nimport type { PaintContext } from \"./PaintContext\";\nimport { enumKey } from \"./datatypes/Enum\";\n\nconst paintProps = [\n \"color\",\n \"strokeWidth\",\n \"blendMode\",\n \"strokeCap\",\n \"strokeJoin\",\n \"strokeMiter\",\n \"style\",\n \"antiAlias\",\n \"opacity\",\n];\n\ninterface PaintCache {\n parent: SkPaint;\n child: SkPaint;\n}\n\nexport abstract class JsiRenderNode<P extends GroupProps>\n extends JsiNode<P>\n implements RenderNode<P>\n{\n paintCache: PaintCache | null = null;\n matrix: SkMatrix;\n clipRect?: SkRect;\n clipRRect?: SkRRect;\n clipPath?: SkPath;\n\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, type, props);\n this.matrix = this.Skia.Matrix();\n this.onPropChange();\n }\n\n setProps(props: P) {\n super.setProps(props);\n this.onPropChange();\n this.paintCache = null;\n }\n\n setProp<K extends keyof P>(key: K, value: P[K]) {\n const hasChanged = super.setProp(key, value);\n if (hasChanged) {\n this.onPropChange();\n if (paintProps.includes(key as string)) {\n this.paintCache = null;\n }\n }\n return hasChanged;\n }\n\n protected onPropChange() {\n this.matrix.identity();\n this.clipPath = undefined;\n this.clipRect = undefined;\n this.clipRRect = undefined;\n this.computeMatrix();\n this.computeClip();\n }\n\n addChild(child: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.insertChildBefore(child, before);\n }\n\n private computeClip() {\n const { clip } = this.props;\n if (clip) {\n if (isPathDef(clip)) {\n this.clipPath = processPath(this.Skia, clip);\n } else if (isRRect(clip)) {\n this.clipRRect = clip;\n } else {\n this.clipRect = clip;\n }\n }\n }\n\n private computeMatrix() {\n processTransformProps(this.matrix, this.props);\n }\n\n private getPaintCtx() {\n let ctx: PaintContext | undefined;\n const {\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n antiAlias,\n } = this.props;\n if (\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n opacity !== undefined ||\n antiAlias !== undefined\n ) {\n ctx = {};\n if (color !== undefined) {\n ctx.color = this.Skia.Color(color);\n }\n if (strokeWidth !== undefined) {\n ctx.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n ctx.blendMode = BlendMode[enumKey(blendMode)];\n }\n if (style !== undefined) {\n ctx.style = PaintStyle[enumKey(style)];\n }\n if (strokeJoin !== undefined) {\n ctx.strokeJoin = StrokeJoin[enumKey(strokeJoin)];\n }\n if (strokeCap !== undefined) {\n ctx.strokeCap = StrokeCap[enumKey(strokeCap)];\n }\n if (strokeMiter !== undefined) {\n ctx.strokeMiter = strokeMiter;\n }\n if (opacity !== undefined) {\n ctx.opacity = opacity;\n }\n if (antiAlias !== undefined) {\n ctx.antiAlias = antiAlias;\n }\n }\n this._children.forEach((child) => {\n if (child instanceof JsiDeclarationNode) {\n if (child.isColorFilter()) {\n ctx = ctx || {};\n const cf = child.materialize();\n ctx.colorFilter = ctx.colorFilter\n ? this.Skia.ColorFilter.MakeCompose(cf, ctx.colorFilter)\n : cf;\n } else if (child.isShader()) {\n ctx = ctx || {};\n const shader = child.materialize();\n ctx.shader = shader;\n } else if (child.isPathEffect()) {\n ctx = ctx || {};\n const pe = child.materialize();\n ctx.pathEffect = ctx.pathEffect\n ? this.Skia.PathEffect.MakeCompose(pe, ctx.pathEffect)\n : pe;\n } else if (child.isImageFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.imageFilter = ctx.imageFilter\n ? this.Skia.ImageFilter.MakeCompose(filter, ctx.imageFilter)\n : filter;\n } else if (child.isMaskFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.maskFilter = filter;\n }\n }\n });\n return ctx;\n }\n\n render(parentCtx: DrawingContext) {\n const { invertClip, layer, matrix, transform } = this.props;\n const { canvas } = parentCtx;\n\n const opacity =\n this.props.opacity !== undefined\n ? parentCtx.opacity * this.props.opacity\n : parentCtx.opacity;\n\n if (\n this.paintCache === null ||\n this.paintCache.parent !== parentCtx.paint\n ) {\n const paintCtx = this.getPaintCtx();\n const child = paintCtx\n ? concatPaint(parentCtx.paint, paintCtx, parentCtx.opacity)\n : parentCtx.paint;\n this.paintCache = { parent: parentCtx.paint, child };\n }\n const paint = this.paintCache.child;\n // TODO: can we only recreate a new context here if needed?\n const ctx = { ...parentCtx, opacity, paint };\n const hasTransform = matrix !== undefined || transform !== undefined;\n const hasClip =\n this.clipRect !== undefined ||\n this.clipPath !== undefined ||\n this.clipRRect !== undefined;\n const shouldSave = hasTransform || hasClip || !!layer;\n const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;\n\n if (shouldSave) {\n if (layer) {\n if (typeof layer === \"boolean\") {\n canvas.saveLayer();\n } else if (isSkPaint(layer)) {\n canvas.saveLayer(layer);\n } else {\n canvas.saveLayer(\n layer.current ? layer.current.materialize() : undefined\n );\n }\n } else {\n canvas.save();\n }\n }\n\n if (this.matrix) {\n canvas.concat(this.matrix);\n }\n if (this.clipRect) {\n canvas.clipRect(this.clipRect, op, true);\n } else if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n } else if (this.clipPath) {\n canvas.clipPath(this.clipPath, op, true);\n }\n\n this.renderNode(ctx);\n\n if (shouldSave) {\n canvas.restore();\n }\n }\n\n abstract renderNode(ctx: DrawingContext): void;\n}\n\nexport const isSkPaint = (\n obj: RefObject<DeclarationNode<unknown, SkPaint>> | SkPaint\n): obj is SkPaint => \"__typename__\" in obj && obj.__typename__ === \"Paint\";\n\nconst concatPaint = (\n parent: SkPaint,\n {\n color,\n strokeWidth,\n shader,\n antiAlias,\n blendMode,\n colorFilter,\n imageFilter,\n maskFilter,\n pathEffect,\n opacity: alpha,\n strokeCap,\n strokeJoin,\n strokeMiter,\n style,\n }: PaintContext,\n opacity: number\n) => {\n const paint = parent.copy();\n if (color !== undefined) {\n paint.setShader(null);\n color[3] *= opacity;\n paint.setColor(color);\n } else {\n const cl = paint.getColor();\n cl[3] *= opacity;\n paint.setColor(cl);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (shader !== undefined) {\n paint.setShader(shader);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(blendMode);\n }\n if (colorFilter !== undefined) {\n paint.setColorFilter(colorFilter);\n }\n if (imageFilter !== undefined) {\n paint.setImageFilter(imageFilter);\n }\n if (maskFilter !== undefined) {\n paint.setMaskFilter(maskFilter);\n }\n if (pathEffect !== undefined) {\n paint.setPathEffect(pathEffect);\n }\n if (alpha !== undefined) {\n paint.setAlphaf(alpha * opacity);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(strokeCap);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(strokeJoin);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (style !== undefined) {\n paint.setStyle(style);\n }\n return paint;\n};\n"],"mappings":";;AASA,SACEA,SADF,EAEEC,UAFF,EAGEC,UAHF,EAIEC,SAJF,EAKEC,MALF,EAMEC,OANF,QAOO,kBAPP;AAiBA,SAASC,SAAT,EAAoBC,WAApB,EAAiCC,qBAAjC,QAA8D,aAA9D;AAEA,SAASC,OAAT,EAAkBC,kBAAlB,QAA4C,QAA5C;AAEA,SAASC,OAAT,QAAwB,kBAAxB;AAEA,MAAMC,UAAU,GAAG,CACjB,OADiB,EAEjB,aAFiB,EAGjB,WAHiB,EAIjB,WAJiB,EAKjB,YALiB,EAMjB,aANiB,EAOjB,OAPiB,EAQjB,WARiB,EASjB,SATiB,CAAnB;AAiBA,OAAO,MAAeC,aAAf,SACGJ,OADH,CAGP;EAOEK,WAAW,CAACC,GAAD,EAAmBC,IAAnB,EAAmCC,KAAnC,EAA6C;IACtD,MAAMF,GAAN,EAAWC,IAAX,EAAiBC,KAAjB;;IADsD,oCANxB,IAMwB;;IAAA;;IAAA;;IAAA;;IAAA;;IAEtD,KAAKC,MAAL,GAAc,KAAKC,IAAL,CAAUC,MAAV,EAAd;IACA,KAAKC,YAAL;EACD;;EAEDC,QAAQ,CAACL,KAAD,EAAW;IACjB,MAAMK,QAAN,CAAeL,KAAf;IACA,KAAKI,YAAL;IACA,KAAKE,UAAL,GAAkB,IAAlB;EACD;;EAEDC,OAAO,CAAoBC,GAApB,EAA4BC,KAA5B,EAAyC;IAC9C,MAAMC,UAAU,GAAG,MAAMH,OAAN,CAAcC,GAAd,EAAmBC,KAAnB,CAAnB;;IACA,IAAIC,UAAJ,EAAgB;MACd,KAAKN,YAAL;;MACA,IAAIT,UAAU,CAACgB,QAAX,CAAoBH,GAApB,CAAJ,EAAwC;QACtC,KAAKF,UAAL,GAAkB,IAAlB;MACD;IACF;;IACD,OAAOI,UAAP;EACD;;EAESN,YAAY,GAAG;IACvB,KAAKH,MAAL,CAAYW,QAAZ;IACA,KAAKC,QAAL,GAAgBC,SAAhB;IACA,KAAKC,QAAL,GAAgBD,SAAhB;IACA,KAAKE,SAAL,GAAiBF,SAAjB;IACA,KAAKG,aAAL;IACA,KAAKC,WAAL;EACD;;EAEDC,QAAQ,CAACC,KAAD,EAAuB;IAC7B,IAAIA,KAAK,YAAY3B,kBAArB,EAAyC;MACvC2B,KAAK,CAACC,aAAN,CAAoB,MAAO,KAAKf,UAAL,GAAkB,IAA7C;IACD;;IACD,MAAMa,QAAN,CAAeC,KAAf;EACD;;EAEDE,iBAAiB,CAACF,KAAD,EAAuBG,MAAvB,EAA8C;IAC7D,IAAIH,KAAK,YAAY3B,kBAArB,EAAyC;MACvC2B,KAAK,CAACC,aAAN,CAAoB,MAAO,KAAKf,UAAL,GAAkB,IAA7C;IACD;;IACD,MAAMgB,iBAAN,CAAwBF,KAAxB,EAA+BG,MAA/B;EACD;;EAEOL,WAAW,GAAG;IACpB,MAAM;MAAEM;IAAF,IAAW,KAAKxB,KAAtB;;IACA,IAAIwB,IAAJ,EAAU;MACR,IAAInC,SAAS,CAACmC,IAAD,CAAb,EAAqB;QACnB,KAAKX,QAAL,GAAgBvB,WAAW,CAAC,KAAKY,IAAN,EAAYsB,IAAZ,CAA3B;MACD,CAFD,MAEO,IAAIpC,OAAO,CAACoC,IAAD,CAAX,EAAmB;QACxB,KAAKR,SAAL,GAAiBQ,IAAjB;MACD,CAFM,MAEA;QACL,KAAKT,QAAL,GAAgBS,IAAhB;MACD;IACF;EACF;;EAEOP,aAAa,GAAG;IACtB1B,qBAAqB,CAAC,KAAKU,MAAN,EAAc,KAAKD,KAAnB,CAArB;EACD;;EAEOyB,WAAW,GAAG;IACpB,IAAI3B,GAAJ;IACA,MAAM;MACJ4B,KADI;MAEJC,WAFI;MAGJC,SAHI;MAIJC,KAJI;MAKJC,UALI;MAMJC,SANI;MAOJC,WAPI;MAQJC,OARI;MASJC;IATI,IAUF,KAAKlC,KAVT;;IAWA,IACE0B,KAAK,KAAKZ,SAAV,IACAa,WAAW,KAAKb,SADhB,IAEAc,SAAS,KAAKd,SAFd,IAGAe,KAAK,KAAKf,SAHV,IAIAgB,UAAU,KAAKhB,SAJf,IAKAiB,SAAS,KAAKjB,SALd,IAMAkB,WAAW,KAAKlB,SANhB,IAOAmB,OAAO,KAAKnB,SAPZ,IAQAoB,SAAS,KAAKpB,SAThB,EAUE;MACAhB,GAAG,GAAG,EAAN;;MACA,IAAI4B,KAAK,KAAKZ,SAAd,EAAyB;QACvBhB,GAAG,CAAC4B,KAAJ,GAAY,KAAKxB,IAAL,CAAUiC,KAAV,CAAgBT,KAAhB,CAAZ;MACD;;MACD,IAAIC,WAAW,KAAKb,SAApB,EAA+B;QAC7BhB,GAAG,CAAC6B,WAAJ,GAAkBA,WAAlB;MACD;;MACD,IAAIC,SAAS,KAAKd,SAAlB,EAA6B;QAC3BhB,GAAG,CAAC8B,SAAJ,GAAgB1C,SAAS,CAACQ,OAAO,CAACkC,SAAD,CAAR,CAAzB;MACD;;MACD,IAAIC,KAAK,KAAKf,SAAd,EAAyB;QACvBhB,GAAG,CAAC+B,KAAJ,GAAY5C,UAAU,CAACS,OAAO,CAACmC,KAAD,CAAR,CAAtB;MACD;;MACD,IAAIC,UAAU,KAAKhB,SAAnB,EAA8B;QAC5BhB,GAAG,CAACgC,UAAJ,GAAiB9C,UAAU,CAACU,OAAO,CAACoC,UAAD,CAAR,CAA3B;MACD;;MACD,IAAIC,SAAS,KAAKjB,SAAlB,EAA6B;QAC3BhB,GAAG,CAACiC,SAAJ,GAAgBhD,SAAS,CAACW,OAAO,CAACqC,SAAD,CAAR,CAAzB;MACD;;MACD,IAAIC,WAAW,KAAKlB,SAApB,EAA+B;QAC7BhB,GAAG,CAACkC,WAAJ,GAAkBA,WAAlB;MACD;;MACD,IAAIC,OAAO,KAAKnB,SAAhB,EAA2B;QACzBhB,GAAG,CAACmC,OAAJ,GAAcA,OAAd;MACD;;MACD,IAAIC,SAAS,KAAKpB,SAAlB,EAA6B;QAC3BhB,GAAG,CAACoC,SAAJ,GAAgBA,SAAhB;MACD;IACF;;IACD,KAAKE,SAAL,CAAeC,OAAf,CAAwBjB,KAAD,IAAW;MAChC,IAAIA,KAAK,YAAY3B,kBAArB,EAAyC;QACvC,IAAI2B,KAAK,CAACkB,aAAN,EAAJ,EAA2B;UACzBxC,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMyC,EAAE,GAAGnB,KAAK,CAACoB,WAAN,EAAX;UACA1C,GAAG,CAAC2C,WAAJ,GAAkB3C,GAAG,CAAC2C,WAAJ,GACd,KAAKvC,IAAL,CAAUwC,WAAV,CAAsBC,WAAtB,CAAkCJ,EAAlC,EAAsCzC,GAAG,CAAC2C,WAA1C,CADc,GAEdF,EAFJ;QAGD,CAND,MAMO,IAAInB,KAAK,CAACwB,QAAN,EAAJ,EAAsB;UAC3B9C,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAM+C,MAAM,GAAGzB,KAAK,CAACoB,WAAN,EAAf;UACA1C,GAAG,CAAC+C,MAAJ,GAAaA,MAAb;QACD,CAJM,MAIA,IAAIzB,KAAK,CAAC0B,YAAN,EAAJ,EAA0B;UAC/BhD,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMiD,EAAE,GAAG3B,KAAK,CAACoB,WAAN,EAAX;UACA1C,GAAG,CAACkD,UAAJ,GAAiBlD,GAAG,CAACkD,UAAJ,GACb,KAAK9C,IAAL,CAAU+C,UAAV,CAAqBN,WAArB,CAAiCI,EAAjC,EAAqCjD,GAAG,CAACkD,UAAzC,CADa,GAEbD,EAFJ;QAGD,CANM,MAMA,IAAI3B,KAAK,CAAC8B,aAAN,EAAJ,EAA2B;UAChCpD,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMqD,MAAM,GAAG/B,KAAK,CAACoB,WAAN,EAAf;UACA1C,GAAG,CAACsD,WAAJ,GAAkBtD,GAAG,CAACsD,WAAJ,GACd,KAAKlD,IAAL,CAAUmD,WAAV,CAAsBV,WAAtB,CAAkCQ,MAAlC,EAA0CrD,GAAG,CAACsD,WAA9C,CADc,GAEdD,MAFJ;QAGD,CANM,MAMA,IAAI/B,KAAK,CAACkC,YAAN,EAAJ,EAA0B;UAC/BxD,GAAG,GAAGA,GAAG,IAAI,EAAb;UACA,MAAMqD,MAAM,GAAG/B,KAAK,CAACoB,WAAN,EAAf;UACA1C,GAAG,CAACyD,UAAJ,GAAiBJ,MAAjB;QACD;MACF;IACF,CA9BD;;IA+BA,OAAOrD,GAAP;EACD;;EAED0D,MAAM,CAACC,SAAD,EAA4B;IAChC,MAAM;MAAEC,UAAF;MAAcC,KAAd;MAAqB1D,MAArB;MAA6B2D;IAA7B,IAA2C,KAAK5D,KAAtD;IACA,MAAM;MAAE6D;IAAF,IAAaJ,SAAnB;IAEA,MAAMxB,OAAO,GACX,KAAKjC,KAAL,CAAWiC,OAAX,KAAuBnB,SAAvB,GACI2C,SAAS,CAACxB,OAAV,GAAoB,KAAKjC,KAAL,CAAWiC,OADnC,GAEIwB,SAAS,CAACxB,OAHhB;;IAKA,IACE,KAAK3B,UAAL,KAAoB,IAApB,IACA,KAAKA,UAAL,CAAgBwD,MAAhB,KAA2BL,SAAS,CAACM,KAFvC,EAGE;MACA,MAAMC,QAAQ,GAAG,KAAKvC,WAAL,EAAjB;MACA,MAAML,KAAK,GAAG4C,QAAQ,GAClBC,WAAW,CAACR,SAAS,CAACM,KAAX,EAAkBC,QAAlB,EAA4BP,SAAS,CAACxB,OAAtC,CADO,GAElBwB,SAAS,CAACM,KAFd;MAGA,KAAKzD,UAAL,GAAkB;QAAEwD,MAAM,EAAEL,SAAS,CAACM,KAApB;QAA2B3C;MAA3B,CAAlB;IACD;;IACD,MAAM2C,KAAK,GAAG,KAAKzD,UAAL,CAAgBc,KAA9B,CAnBgC,CAoBhC;;IACA,MAAMtB,GAAG,GAAG,EAAE,GAAG2D,SAAL;MAAgBxB,OAAhB;MAAyB8B;IAAzB,CAAZ;IACA,MAAMG,YAAY,GAAGjE,MAAM,KAAKa,SAAX,IAAwB8C,SAAS,KAAK9C,SAA3D;IACA,MAAMqD,OAAO,GACX,KAAKpD,QAAL,KAAkBD,SAAlB,IACA,KAAKD,QAAL,KAAkBC,SADlB,IAEA,KAAKE,SAAL,KAAmBF,SAHrB;IAIA,MAAMsD,UAAU,GAAGF,YAAY,IAAIC,OAAhB,IAA2B,CAAC,CAACR,KAAhD;IACA,MAAMU,EAAE,GAAGX,UAAU,GAAGvE,MAAM,CAACmF,UAAV,GAAuBnF,MAAM,CAACoF,SAAnD;;IAEA,IAAIH,UAAJ,EAAgB;MACd,IAAIT,KAAJ,EAAW;QACT,IAAI,OAAOA,KAAP,KAAiB,SAArB,EAAgC;UAC9BE,MAAM,CAACW,SAAP;QACD,CAFD,MAEO,IAAIC,SAAS,CAACd,KAAD,CAAb,EAAsB;UAC3BE,MAAM,CAACW,SAAP,CAAiBb,KAAjB;QACD,CAFM,MAEA;UACLE,MAAM,CAACW,SAAP,CACEb,KAAK,CAACe,OAAN,GAAgBf,KAAK,CAACe,OAAN,CAAclC,WAAd,EAAhB,GAA8C1B,SADhD;QAGD;MACF,CAVD,MAUO;QACL+C,MAAM,CAACc,IAAP;MACD;IACF;;IAED,IAAI,KAAK1E,MAAT,EAAiB;MACf4D,MAAM,CAACe,MAAP,CAAc,KAAK3E,MAAnB;IACD;;IACD,IAAI,KAAKc,QAAT,EAAmB;MACjB8C,MAAM,CAAC9C,QAAP,CAAgB,KAAKA,QAArB,EAA+BsD,EAA/B,EAAmC,IAAnC;IACD,CAFD,MAEO,IAAI,KAAKrD,SAAT,EAAoB;MACzB6C,MAAM,CAAC7C,SAAP,CAAiB,KAAKA,SAAtB,EAAiCqD,EAAjC,EAAqC,IAArC;IACD,CAFM,MAEA,IAAI,KAAKxD,QAAT,EAAmB;MACxBgD,MAAM,CAAChD,QAAP,CAAgB,KAAKA,QAArB,EAA+BwD,EAA/B,EAAmC,IAAnC;IACD;;IAED,KAAKQ,UAAL,CAAgB/E,GAAhB;;IAEA,IAAIsE,UAAJ,EAAgB;MACdP,MAAM,CAACiB,OAAP;IACD;EACF;;AA3NH;AAgOA,OAAO,MAAML,SAAS,GACpBM,GADuB,IAEJ,kBAAkBA,GAAlB,IAAyBA,GAAG,CAACC,YAAJ,KAAqB,OAF5D;;AAIP,MAAMf,WAAW,GAAG,CAClBH,MADkB,QAkBlB7B,OAlBkB,KAmBf;EAAA,IAjBH;IACEP,KADF;IAEEC,WAFF;IAGEkB,MAHF;IAIEX,SAJF;IAKEN,SALF;IAMEa,WANF;IAOEW,WAPF;IAQEG,UARF;IASEP,UATF;IAUEf,OAAO,EAAEgD,KAVX;IAWElD,SAXF;IAYED,UAZF;IAaEE,WAbF;IAcEH;EAdF,CAiBG;EACH,MAAMkC,KAAK,GAAGD,MAAM,CAACoB,IAAP,EAAd;;EACA,IAAIxD,KAAK,KAAKZ,SAAd,EAAyB;IACvBiD,KAAK,CAACoB,SAAN,CAAgB,IAAhB;IACAzD,KAAK,CAAC,CAAD,CAAL,IAAYO,OAAZ;IACA8B,KAAK,CAACqB,QAAN,CAAe1D,KAAf;EACD,CAJD,MAIO;IACL,MAAM2D,EAAE,GAAGtB,KAAK,CAACuB,QAAN,EAAX;IACAD,EAAE,CAAC,CAAD,CAAF,IAASpD,OAAT;IACA8B,KAAK,CAACqB,QAAN,CAAeC,EAAf;EACD;;EACD,IAAI1D,WAAW,KAAKb,SAApB,EAA+B;IAC7BiD,KAAK,CAACwB,cAAN,CAAqB5D,WAArB;EACD;;EACD,IAAIkB,MAAM,KAAK/B,SAAf,EAA0B;IACxBiD,KAAK,CAACoB,SAAN,CAAgBtC,MAAhB;EACD;;EACD,IAAIX,SAAS,KAAKpB,SAAlB,EAA6B;IAC3BiD,KAAK,CAACyB,YAAN,CAAmBtD,SAAnB;EACD;;EACD,IAAIN,SAAS,KAAKd,SAAlB,EAA6B;IAC3BiD,KAAK,CAAC0B,YAAN,CAAmB7D,SAAnB;EACD;;EACD,IAAIa,WAAW,KAAK3B,SAApB,EAA+B;IAC7BiD,KAAK,CAAC2B,cAAN,CAAqBjD,WAArB;EACD;;EACD,IAAIW,WAAW,KAAKtC,SAApB,EAA+B;IAC7BiD,KAAK,CAAC4B,cAAN,CAAqBvC,WAArB;EACD;;EACD,IAAIG,UAAU,KAAKzC,SAAnB,EAA8B;IAC5BiD,KAAK,CAAC6B,aAAN,CAAoBrC,UAApB;EACD;;EACD,IAAIP,UAAU,KAAKlC,SAAnB,EAA8B;IAC5BiD,KAAK,CAAC8B,aAAN,CAAoB7C,UAApB;EACD;;EACD,IAAIiC,KAAK,KAAKnE,SAAd,EAAyB;IACvBiD,KAAK,CAAC+B,SAAN,CAAgBb,KAAK,GAAGhD,OAAxB;EACD;;EACD,IAAIF,SAAS,KAAKjB,SAAlB,EAA6B;IAC3BiD,KAAK,CAACgC,YAAN,CAAmBhE,SAAnB;EACD;;EACD,IAAID,UAAU,KAAKhB,SAAnB,EAA8B;IAC5BiD,KAAK,CAACiC,aAAN,CAAoBlE,UAApB;EACD;;EACD,IAAIE,WAAW,KAAKlB,SAApB,EAA+B;IAC7BiD,KAAK,CAACkC,cAAN,CAAqBjE,WAArB;EACD;;EACD,IAAIH,KAAK,KAAKf,SAAd,EAAyB;IACvBiD,KAAK,CAACmC,QAAN,CAAerE,KAAf;EACD;;EACD,OAAOkC,KAAP;AACD,CAtED"}
|
|
1
|
+
{"version":3,"names":["StrokeCap","StrokeJoin","PaintStyle","BlendMode","ClipOp","isRRect","isPathDef","processPath","processTransformProps","JsiNode","JsiDeclarationNode","enumKey","paintProps","JsiRenderNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","setInvalidate","insertChildBefore","before","clip","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","_children","forEach","isColorFilter","cf","materialize","colorFilter","ColorFilter","MakeCompose","isShader","shader","isPathEffect","pe","pathEffect","PathEffect","isImageFilter","filter","imageFilter","ImageFilter","isMaskFilter","maskFilter","render","parentCtx","invertClip","layer","transform","canvas","parent","paint","paintCtx","concatPaint","hasTransform","hasClip","shouldSave","op","Difference","Intersect","saveLayer","save","concat","renderNode","restore","alpha","copy","setShader","setColor","cl","getColor","setStrokeWidth","setAntiAlias","setBlendMode","setColorFilter","setImageFilter","setMaskFilter","setPathEffect","setAlphaf","setStrokeCap","setStrokeJoin","setStrokeMiter","setStyle"],"sources":["RenderNode.ts"],"sourcesContent":["import type {\n SkMatrix,\n SkRect,\n SkRRect,\n SkPath,\n SkPaint,\n} from \"../../skia/types\";\nimport {\n StrokeCap,\n StrokeJoin,\n PaintStyle,\n BlendMode,\n ClipOp,\n isRRect,\n} from \"../../skia/types\";\nimport type {\n RenderNode,\n GroupProps,\n DrawingContext,\n NodeType,\n Node,\n} from \"../types\";\n\nimport { isPathDef, processPath, processTransformProps } from \"./datatypes\";\nimport type { NodeContext } from \"./Node\";\nimport { JsiNode, JsiDeclarationNode } from \"./Node\";\nimport type { PaintContext } from \"./PaintContext\";\nimport { enumKey } from \"./datatypes/Enum\";\n\nconst paintProps = [\n \"color\",\n \"strokeWidth\",\n \"blendMode\",\n \"strokeCap\",\n \"strokeJoin\",\n \"strokeMiter\",\n \"style\",\n \"antiAlias\",\n \"opacity\",\n];\n\ninterface PaintCache {\n parent: SkPaint;\n child: SkPaint;\n}\n\nexport abstract class JsiRenderNode<P extends GroupProps>\n extends JsiNode<P>\n implements RenderNode<P>\n{\n paintCache: PaintCache | null = null;\n matrix: SkMatrix;\n clipRect?: SkRect;\n clipRRect?: SkRRect;\n clipPath?: SkPath;\n\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, type, props);\n this.matrix = this.Skia.Matrix();\n this.onPropChange();\n }\n\n setProps(props: P) {\n super.setProps(props);\n this.onPropChange();\n this.paintCache = null;\n }\n\n setProp<K extends keyof P>(key: K, value: P[K]) {\n const hasChanged = super.setProp(key, value);\n if (hasChanged) {\n this.onPropChange();\n if (paintProps.includes(key as string)) {\n this.paintCache = null;\n }\n }\n return hasChanged;\n }\n\n protected onPropChange() {\n this.matrix.identity();\n this.clipPath = undefined;\n this.clipRect = undefined;\n this.clipRRect = undefined;\n this.computeMatrix();\n this.computeClip();\n }\n\n addChild(child: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>) {\n if (child instanceof JsiDeclarationNode) {\n child.setInvalidate(() => (this.paintCache = null));\n }\n super.insertChildBefore(child, before);\n }\n\n private computeClip() {\n const { clip } = this.props;\n if (clip) {\n if (isPathDef(clip)) {\n this.clipPath = processPath(this.Skia, clip);\n } else if (isRRect(clip)) {\n this.clipRRect = clip;\n } else {\n this.clipRect = clip;\n }\n }\n }\n\n private computeMatrix() {\n processTransformProps(this.matrix, this.props);\n }\n\n private getPaintCtx() {\n let ctx: PaintContext | undefined;\n const {\n color,\n strokeWidth,\n blendMode,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n opacity,\n antiAlias,\n } = this.props;\n if (\n color !== undefined ||\n strokeWidth !== undefined ||\n blendMode !== undefined ||\n style !== undefined ||\n strokeJoin !== undefined ||\n strokeCap !== undefined ||\n strokeMiter !== undefined ||\n opacity !== undefined ||\n antiAlias !== undefined\n ) {\n ctx = {};\n if (color !== undefined) {\n ctx.color = this.Skia.Color(color);\n }\n if (strokeWidth !== undefined) {\n ctx.strokeWidth = strokeWidth;\n }\n if (blendMode !== undefined) {\n ctx.blendMode = BlendMode[enumKey(blendMode)];\n }\n if (style !== undefined) {\n ctx.style = PaintStyle[enumKey(style)];\n }\n if (strokeJoin !== undefined) {\n ctx.strokeJoin = StrokeJoin[enumKey(strokeJoin)];\n }\n if (strokeCap !== undefined) {\n ctx.strokeCap = StrokeCap[enumKey(strokeCap)];\n }\n if (strokeMiter !== undefined) {\n ctx.strokeMiter = strokeMiter;\n }\n if (opacity !== undefined) {\n ctx.opacity = opacity;\n }\n if (antiAlias !== undefined) {\n ctx.antiAlias = antiAlias;\n }\n }\n this._children.forEach((child) => {\n if (child instanceof JsiDeclarationNode) {\n if (child.isColorFilter()) {\n ctx = ctx || {};\n const cf = child.materialize();\n ctx.colorFilter = ctx.colorFilter\n ? this.Skia.ColorFilter.MakeCompose(cf, ctx.colorFilter)\n : cf;\n } else if (child.isShader()) {\n ctx = ctx || {};\n const shader = child.materialize();\n ctx.shader = shader;\n } else if (child.isPathEffect()) {\n ctx = ctx || {};\n const pe = child.materialize();\n ctx.pathEffect = ctx.pathEffect\n ? this.Skia.PathEffect.MakeCompose(pe, ctx.pathEffect)\n : pe;\n } else if (child.isImageFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.imageFilter = ctx.imageFilter\n ? this.Skia.ImageFilter.MakeCompose(filter, ctx.imageFilter)\n : filter;\n } else if (child.isMaskFilter()) {\n ctx = ctx || {};\n const filter = child.materialize();\n ctx.maskFilter = filter;\n }\n }\n });\n return ctx;\n }\n\n render(parentCtx: DrawingContext) {\n const { invertClip, layer, matrix, transform } = this.props;\n const { canvas } = parentCtx;\n\n const opacity =\n this.props.opacity !== undefined\n ? parentCtx.opacity * this.props.opacity\n : parentCtx.opacity;\n\n if (\n this.paintCache === null ||\n this.paintCache.parent !== parentCtx.paint\n ) {\n const paintCtx = this.getPaintCtx();\n const child = paintCtx\n ? concatPaint(parentCtx.paint, paintCtx, parentCtx.opacity)\n : parentCtx.paint;\n this.paintCache = { parent: parentCtx.paint, child };\n }\n const paint = this.paintCache.child;\n // TODO: can we only recreate a new context here if needed?\n const ctx = { ...parentCtx, opacity, paint };\n const hasTransform = matrix !== undefined || transform !== undefined;\n const hasClip =\n this.clipRect !== undefined ||\n this.clipPath !== undefined ||\n this.clipRRect !== undefined;\n const shouldSave = hasTransform || hasClip || !!layer;\n const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;\n if (shouldSave) {\n if (layer) {\n if (typeof layer === \"boolean\") {\n canvas.saveLayer();\n } else {\n canvas.saveLayer(layer);\n }\n } else {\n canvas.save();\n }\n }\n\n if (this.matrix) {\n canvas.concat(this.matrix);\n }\n if (this.clipRect) {\n canvas.clipRect(this.clipRect, op, true);\n } else if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n } else if (this.clipPath) {\n canvas.clipPath(this.clipPath, op, true);\n }\n\n this.renderNode(ctx);\n\n if (shouldSave) {\n canvas.restore();\n }\n }\n\n abstract renderNode(ctx: DrawingContext): void;\n}\n\nconst concatPaint = (\n parent: SkPaint,\n {\n color,\n strokeWidth,\n shader,\n antiAlias,\n blendMode,\n colorFilter,\n imageFilter,\n maskFilter,\n pathEffect,\n opacity: alpha,\n strokeCap,\n strokeJoin,\n strokeMiter,\n style,\n }: PaintContext,\n opacity: number\n) => {\n const paint = parent.copy();\n if (color !== undefined) {\n paint.setShader(null);\n color[3] *= opacity;\n paint.setColor(color);\n } else {\n const cl = paint.getColor();\n cl[3] *= opacity;\n paint.setColor(cl);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (shader !== undefined) {\n paint.setShader(shader);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(blendMode);\n }\n if (colorFilter !== undefined) {\n paint.setColorFilter(colorFilter);\n }\n if (imageFilter !== undefined) {\n paint.setImageFilter(imageFilter);\n }\n if (maskFilter !== undefined) {\n paint.setMaskFilter(maskFilter);\n }\n if (pathEffect !== undefined) {\n paint.setPathEffect(pathEffect);\n }\n if (alpha !== undefined) {\n paint.setAlphaf(alpha * opacity);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(strokeCap);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(strokeJoin);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (style !== undefined) {\n paint.setStyle(style);\n }\n return paint;\n};\n"],"mappings":"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"}
|
|
@@ -66,15 +66,10 @@ export class TextPathNode extends JsiDrawingNode {
|
|
|
66
66
|
// line at that position.
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
ty
|
|
74
|
-
} = cont.getPosTan(dist);
|
|
75
|
-
const adjustedX = px - width / 2 * tx;
|
|
76
|
-
const adjustedY = py - width / 2 * ty;
|
|
77
|
-
rsx.push(this.Skia.RSXform(tx, ty, adjustedX, adjustedY));
|
|
69
|
+
const [p, t] = cont.getPosTan(dist);
|
|
70
|
+
const adjustedX = p.x - width / 2 * t.x;
|
|
71
|
+
const adjustedY = p.y - width / 2 * t.y;
|
|
72
|
+
rsx.push(this.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));
|
|
78
73
|
dist += width / 2;
|
|
79
74
|
}
|
|
80
75
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NodeType","processPath","JsiDrawingNode","TextNode","constructor","ctx","props","Text","deriveProps","draw","canvas","paint","text","x","y","font","drawText","TextPathNode","TextPath","path","Skia","initialOffset","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","width","substring","
|
|
1
|
+
{"version":3,"names":["NodeType","processPath","JsiDrawingNode","TextNode","constructor","ctx","props","Text","deriveProps","draw","canvas","paint","text","x","y","font","drawText","TextPathNode","TextPath","path","Skia","initialOffset","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","width","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","TextBlob","MakeFromRSXform","derived","Error","drawTextBlob","TextBlobNode","blob","GlyphsNode","Glyphs","glyphs","reduce","acc","glyph","id","pos","positions","drawGlyphs"],"sources":["Text.ts"],"sourcesContent":["import type { SkRSXform, SkTextBlob, SkPoint } from \"../../../skia/types\";\nimport type {\n DrawingContext,\n TextBlobProps,\n TextPathProps,\n TextProps,\n} from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processPath } from \"../datatypes\";\nimport type { GlyphsProps } from \"../../types/Drawings\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class TextNode extends JsiDrawingNode<TextProps, null> {\n constructor(ctx: NodeContext, props: TextProps) {\n super(ctx, NodeType.Text, props);\n }\n\n protected deriveProps() {\n return null;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { text, x, y, font } = this.props;\n canvas.drawText(text, x, y, paint, font);\n }\n}\n\nexport class TextPathNode extends JsiDrawingNode<TextPathProps, SkTextBlob> {\n constructor(ctx: NodeContext, props: TextPathProps) {\n super(ctx, NodeType.TextPath, props);\n }\n\n deriveProps() {\n const path = processPath(this.Skia, this.props.path);\n const { font, initialOffset } = this.props;\n let { text } = this.props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = this.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(this.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n return this.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"TextPathNode: blob is null\");\n }\n canvas.drawTextBlob(this.derived, 0, 0, paint);\n }\n}\n\nexport class TextBlobNode extends JsiDrawingNode<TextBlobProps, null> {\n constructor(ctx: NodeContext, props: TextBlobProps) {\n super(ctx, NodeType.TextBlob, props);\n }\n\n protected deriveProps() {\n return null;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { blob, x, y } = this.props;\n canvas.drawTextBlob(blob, x, y, paint);\n }\n}\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport class GlyphsNode extends JsiDrawingNode<GlyphsProps, ProcessedGlyphs> {\n constructor(ctx: NodeContext, props: GlyphsProps) {\n super(ctx, NodeType.Glyphs, props);\n }\n\n deriveProps() {\n return this.props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"GlyphsNode: processedGlyphs is null\");\n }\n const { glyphs, positions } = this.derived;\n const { x, y, font } = this.props;\n canvas.drawGlyphs(glyphs, positions, x, y, font, paint);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["Common.ts"],"sourcesContent":["import type { ReactNode
|
|
1
|
+
{"version":3,"names":[],"sources":["Common.ts"],"sourcesContent":["import type { ReactNode } from \"react\";\n\nimport type {\n BlendMode,\n Color,\n PaintStyle,\n SkMatrix,\n SkPaint,\n SkPath,\n SkRect,\n SkRRect,\n StrokeCap,\n StrokeJoin,\n Transforms2d,\n Vector,\n} from \"../../skia/types\";\n\nexport type SkEnum<T> = Uncapitalize<keyof T extends string ? keyof T : never>;\n\nexport type PathDef = string | SkPath;\n\nexport type ClipDef = SkRRect | SkRect | PathDef;\n\nexport type Fit =\n | \"cover\"\n | \"contain\"\n | \"fill\"\n | \"fitHeight\"\n | \"fitWidth\"\n | \"none\"\n | \"scaleDown\";\n\nexport type Radius = number | Vector;\n\nexport interface ChildrenProps {\n children?: ReactNode | ReactNode[];\n}\n\nexport interface RectCtor {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nexport interface RRectCtor extends RectCtor {\n r: Radius;\n}\n\nexport type RectDef = RectCtor | { rect: SkRect };\nexport type RRectDef = RRectCtor | { rect: SkRRect };\n\nexport interface PointCircleDef {\n c: Vector;\n r: number;\n}\n\nexport interface ScalarCircleDef {\n cx: number;\n cy: number;\n r: number;\n}\n\nexport type CircleDef = PointCircleDef | ScalarCircleDef;\n\nexport interface TransformProps {\n transform?: Transforms2d;\n origin?: Vector;\n matrix?: SkMatrix;\n}\n\nexport interface PaintProps extends ChildrenProps {\n color?: Color;\n strokeWidth?: number;\n blendMode?: SkEnum<typeof BlendMode>;\n style?: SkEnum<typeof PaintStyle>;\n strokeJoin?: SkEnum<typeof StrokeJoin>;\n strokeCap?: SkEnum<typeof StrokeCap>;\n strokeMiter?: number;\n opacity?: number;\n antiAlias?: boolean;\n}\n\nexport interface GroupProps extends PaintProps, TransformProps {\n clip?: ClipDef;\n invertClip?: boolean;\n layer?: SkPaint | boolean;\n}\n"],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {\n FillType,\n SkImage,\n StrokeOpts,\n Vector,\n Color,\n SkPoint,\n BlendMode,\n PointMode,\n VertexMode,\n SkFont,\n SkRRect,\n SkTextBlob,\n SkPicture,\n SkSVG,\n SkPaint,\n SkRect,\n} from \"../../skia/types\";\n\nimport type {\n CircleDef,\n Fit,\n GroupProps,\n PathDef,\n RectDef,\n RRectDef,\n SkEnum,\n} from \"./Common\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\nexport interface DrawingNodeProps extends GroupProps {\n paint?: SkPaint;\n}\n\nexport type ImageProps = DrawingNodeProps &\n RectDef & {\n fit: Fit;\n image: SkImage;\n };\n\nexport type CircleProps = CircleDef & DrawingNodeProps;\n\nexport interface PathProps extends DrawingNodeProps {\n path: PathDef;\n start: number;\n end: number;\n stroke?: StrokeOpts;\n fillType?: SkEnum<typeof FillType>;\n}\n\nexport interface CustomDrawingNodeProps extends DrawingNodeProps {\n drawing: (ctx: DrawingContext) => void;\n}\n\nexport interface LineProps extends DrawingNodeProps {\n p1: Vector;\n p2: Vector;\n}\n\nexport type OvalProps = RectDef & DrawingNodeProps;\n\nexport type RectProps = RectDef & DrawingNodeProps;\n\nexport type RoundedRectProps = RRectDef & DrawingNodeProps;\n\nexport interface CubicBezierHandle {\n pos: Vector;\n c1: Vector;\n c2: Vector;\n}\n\nexport interface PatchProps extends DrawingNodeProps {\n colors?: Color[];\n patch: [\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle\n ];\n texture?: readonly [SkPoint, SkPoint, SkPoint, SkPoint];\n blendMode?: SkEnum<typeof BlendMode>;\n}\n\nexport interface VerticesProps extends DrawingNodeProps {\n colors?: string[];\n vertices: SkPoint[];\n textures?: SkPoint[];\n mode: SkEnum<typeof VertexMode>;\n blendMode?: SkEnum<typeof BlendMode>;\n indices?: number[];\n}\n\nexport type ImageSVGProps = RectDef & {\n svg: SkSVG;\n} & DrawingNodeProps;\n\nexport interface PictureProps extends DrawingNodeProps {\n picture: SkPicture;\n}\n\nexport interface PointsProps extends DrawingNodeProps {\n points: SkPoint[];\n mode: SkEnum<typeof PointMode>;\n}\n\nexport interface DiffRectProps extends DrawingNodeProps {\n inner: SkRRect;\n outer: SkRRect;\n}\n\nexport interface TextProps extends DrawingNodeProps {\n font: SkFont;\n text: string;\n x: number;\n y: number;\n}\n\nexport interface TextPathProps extends DrawingNodeProps {\n font: SkFont;\n text: string;\n path: PathDef;\n initialOffset: number;\n}\n\nexport interface TextBlobProps extends DrawingNodeProps {\n blob: SkTextBlob;\n x: number;\n y: number;\n}\n\nexport interface Glyph {\n id: number;\n pos: SkPoint;\n}\n\nexport interface GlyphsProps extends DrawingNodeProps {\n font: SkFont;\n x: number;\n y: number;\n glyphs: Glyph[];\n}\n\nexport interface BoxProps extends DrawingNodeProps {\n box: SkRRect | SkRect;\n}\n\nexport interface BoxShadowProps {\n dx?: number;\n dy?: number;\n spread?: number;\n blur: number;\n color?: Color;\n inner?: boolean;\n}\n"],"mappings":""}
|
package/lib/module/mock/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"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","
|
|
1
|
+
{"version":3,"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","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"],"sources":["index.ts"],"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 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"],"mappings":"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"}
|
|
@@ -29,7 +29,8 @@ export const Canvas = /*#__PURE__*/forwardRef((_ref, forwardedRef) => {
|
|
|
29
29
|
style,
|
|
30
30
|
debug,
|
|
31
31
|
mode,
|
|
32
|
-
onTouch
|
|
32
|
+
onTouch,
|
|
33
|
+
onSize
|
|
33
34
|
} = _ref;
|
|
34
35
|
const size = useValue({
|
|
35
36
|
width: 0,
|
|
@@ -81,6 +82,13 @@ export const Canvas = /*#__PURE__*/forwardRef((_ref, forwardedRef) => {
|
|
|
81
82
|
width,
|
|
82
83
|
height
|
|
83
84
|
};
|
|
85
|
+
|
|
86
|
+
if (onSize) {
|
|
87
|
+
onSize.current = {
|
|
88
|
+
width,
|
|
89
|
+
height
|
|
90
|
+
};
|
|
91
|
+
}
|
|
84
92
|
}
|
|
85
93
|
|
|
86
94
|
paint.reset();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useState","useCallback","useMemo","forwardRef","useRef","ReactReconciler","SkiaView","useDrawCallback","useValue","Skia","debug","hostDebug","skHostConfig","Container","DependencyManager","CanvasProvider","skiaReconciler","injectIntoDevTools","bundleType","version","rendererPackageName","render","element","root","container","updateContainer","depMgr","update","useCanvasRef","Canvas","forwardedRef","children","style","mode","onTouch","size","width","height","canvasCtx","innerRef","ref","useCombinedRefs","tick","setTick","redraw","t","registerValues","values","current","Error","createContainer","console","error","paint","Paint","onDraw","canvas","info","timestamp","touches","reset","ctx","opacity","center","x","y","draw","remove","refs","targetRef","forEach"],"sources":["Canvas.tsx"],"sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n ComponentProps,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport { SkiaView, useDrawCallback } from \"../views\";\nimport type { TouchHandler } from \"../views\";\nimport { useValue } from \"../values/hooks/useValue\";\nimport { Skia } from \"../skia/Skia\";\nimport type { SkiaValue } from \"../values\";\n\nimport { debug as hostDebug, skHostConfig } from \"./HostConfig\";\n// import { debugTree } from \"./nodes\";\nimport { Container } from \"./Container\";\nimport { DependencyManager } from \"./DependencyManager\";\nimport { CanvasProvider } from \"./useCanvas\";\n\nexport const skiaReconciler = ReactReconciler(skHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nconst render = (element: ReactNode, root: OpaqueRoot, container: Container) => {\n skiaReconciler.updateContainer(element, root, null, () => {\n hostDebug(\"updateContainer\");\n container.depMgr.update();\n });\n};\n\nexport const useCanvasRef = () => useRef<SkiaView>(null);\n\nexport interface CanvasProps extends ComponentProps<typeof SkiaView> {\n ref?: RefObject<SkiaView>;\n children: ReactNode;\n onTouch?: TouchHandler;\n}\n\nexport const Canvas = forwardRef<SkiaView, CanvasProps>(\n ({ children, style, debug, mode, onTouch }, forwardedRef) => {\n const size = useValue({ width: 0, height: 0 });\n const canvasCtx = useMemo(() => ({ Skia, size }), [size]);\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const [tick, setTick] = useState(0);\n const redraw = useCallback(() => {\n setTick((t) => t + 1);\n }, []);\n\n const registerValues = useCallback(\n (values: Array<SkiaValue<unknown>>) => {\n if (ref.current === null) {\n throw new Error(\"Canvas ref is not set\");\n }\n return ref.current.registerValues(values);\n },\n [ref]\n );\n\n const container = useMemo(() => {\n return new Container(Skia, new DependencyManager(registerValues), redraw);\n }, [redraw, registerValues]);\n\n const root = useMemo(\n () =>\n skiaReconciler.createContainer(\n container,\n 0,\n null,\n true,\n null,\n \"\",\n console.error,\n null\n ),\n [container]\n );\n // Render effect\n useEffect(() => {\n render(\n <CanvasProvider value={canvasCtx}>{children}</CanvasProvider>,\n root,\n container\n );\n }, [children, root, redraw, container, canvasCtx]);\n\n const paint = useMemo(() => Skia.Paint(), []);\n\n // Draw callback\n const onDraw = useDrawCallback(\n (canvas, info) => {\n // TODO: if tree is empty (count === 1) maybe we should not render?\n const { width, height, timestamp } = info;\n if (onTouch) {\n onTouch(info.touches);\n }\n if (\n width !== canvasCtx.size.current.width ||\n height !== canvasCtx.size.current.height\n ) {\n canvasCtx.size.current = { width, height };\n }\n paint.reset();\n const ctx = {\n width,\n height,\n timestamp,\n canvas,\n paint,\n opacity: 1,\n ref,\n center: { x: width / 2, y: height / 2 },\n Skia,\n };\n container.draw(ctx);\n },\n [tick, onTouch]\n );\n\n useEffect(() => {\n return () => {\n skiaReconciler.updateContainer(null, root, null, () => {\n container.depMgr.remove();\n });\n };\n }, [container, root]);\n\n return (\n <SkiaView\n ref={ref}\n style={style}\n onDraw={onDraw}\n mode={mode}\n debug={debug}\n />\n );\n }\n);\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IACEC,SADF,EAEEC,QAFF,EAGEC,WAHF,EAIEC,OAJF,EAKEC,UALF,EAMEC,MANF,QAOO,OAPP;AAgBA,OAAOC,eAAP,MAA4B,kBAA5B;AAEA,SAASC,QAAT,EAAmBC,eAAnB,QAA0C,UAA1C;AAEA,SAASC,QAAT,QAAyB,0BAAzB;AACA,SAASC,IAAT,QAAqB,cAArB;
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","useCallback","useMemo","forwardRef","useRef","ReactReconciler","SkiaView","useDrawCallback","useValue","Skia","debug","hostDebug","skHostConfig","Container","DependencyManager","CanvasProvider","skiaReconciler","injectIntoDevTools","bundleType","version","rendererPackageName","render","element","root","container","updateContainer","depMgr","update","useCanvasRef","Canvas","forwardedRef","children","style","mode","onTouch","onSize","size","width","height","canvasCtx","innerRef","ref","useCombinedRefs","tick","setTick","redraw","t","registerValues","values","current","Error","createContainer","console","error","paint","Paint","onDraw","canvas","info","timestamp","touches","reset","ctx","opacity","center","x","y","draw","remove","refs","targetRef","forEach"],"sources":["Canvas.tsx"],"sourcesContent":["import React, {\n useEffect,\n useState,\n useCallback,\n useMemo,\n forwardRef,\n useRef,\n} from \"react\";\nimport type {\n RefObject,\n ReactNode,\n ComponentProps,\n MutableRefObject,\n ForwardedRef,\n} from \"react\";\nimport type { OpaqueRoot } from \"react-reconciler\";\nimport ReactReconciler from \"react-reconciler\";\n\nimport { SkiaView, useDrawCallback } from \"../views\";\nimport type { TouchHandler } from \"../views\";\nimport { useValue } from \"../values/hooks/useValue\";\nimport { Skia } from \"../skia/Skia\";\nimport type { SkiaValue, SkiaMutableValue } from \"../values\";\nimport type { SkSize } from \"../skia/types\";\n\nimport { debug as hostDebug, skHostConfig } from \"./HostConfig\";\n// import { debugTree } from \"./nodes\";\nimport { Container } from \"./Container\";\nimport { DependencyManager } from \"./DependencyManager\";\nimport { CanvasProvider } from \"./useCanvas\";\n\nexport const skiaReconciler = ReactReconciler(skHostConfig);\n\nskiaReconciler.injectIntoDevTools({\n bundleType: 1,\n version: \"0.0.1\",\n rendererPackageName: \"react-native-skia\",\n});\n\nconst render = (element: ReactNode, root: OpaqueRoot, container: Container) => {\n skiaReconciler.updateContainer(element, root, null, () => {\n hostDebug(\"updateContainer\");\n container.depMgr.update();\n });\n};\n\nexport const useCanvasRef = () => useRef<SkiaView>(null);\n\nexport interface CanvasProps extends ComponentProps<typeof SkiaView> {\n ref?: RefObject<SkiaView>;\n children: ReactNode;\n onTouch?: TouchHandler;\n onSize?: SkiaMutableValue<SkSize>;\n}\n\nexport const Canvas = forwardRef<SkiaView, CanvasProps>(\n ({ children, style, debug, mode, onTouch, onSize }, forwardedRef) => {\n const size = useValue({ width: 0, height: 0 });\n const canvasCtx = useMemo(() => ({ Skia, size }), [size]);\n const innerRef = useCanvasRef();\n const ref = useCombinedRefs(forwardedRef, innerRef);\n const [tick, setTick] = useState(0);\n const redraw = useCallback(() => {\n setTick((t) => t + 1);\n }, []);\n\n const registerValues = useCallback(\n (values: Array<SkiaValue<unknown>>) => {\n if (ref.current === null) {\n throw new Error(\"Canvas ref is not set\");\n }\n return ref.current.registerValues(values);\n },\n [ref]\n );\n\n const container = useMemo(() => {\n return new Container(Skia, new DependencyManager(registerValues), redraw);\n }, [redraw, registerValues]);\n\n const root = useMemo(\n () =>\n skiaReconciler.createContainer(\n container,\n 0,\n null,\n true,\n null,\n \"\",\n console.error,\n null\n ),\n [container]\n );\n // Render effect\n useEffect(() => {\n render(\n <CanvasProvider value={canvasCtx}>{children}</CanvasProvider>,\n root,\n container\n );\n }, [children, root, redraw, container, canvasCtx]);\n\n const paint = useMemo(() => Skia.Paint(), []);\n\n // Draw callback\n const onDraw = useDrawCallback(\n (canvas, info) => {\n // TODO: if tree is empty (count === 1) maybe we should not render?\n const { width, height, timestamp } = info;\n if (onTouch) {\n onTouch(info.touches);\n }\n if (\n width !== canvasCtx.size.current.width ||\n height !== canvasCtx.size.current.height\n ) {\n canvasCtx.size.current = { width, height };\n if (onSize) {\n onSize.current = { width, height };\n }\n }\n paint.reset();\n const ctx = {\n width,\n height,\n timestamp,\n canvas,\n paint,\n opacity: 1,\n ref,\n center: { x: width / 2, y: height / 2 },\n Skia,\n };\n container.draw(ctx);\n },\n [tick, onTouch]\n );\n\n useEffect(() => {\n return () => {\n skiaReconciler.updateContainer(null, root, null, () => {\n container.depMgr.remove();\n });\n };\n }, [container, root]);\n\n return (\n <SkiaView\n ref={ref}\n style={style}\n onDraw={onDraw}\n mode={mode}\n debug={debug}\n />\n );\n }\n);\n\n/**\n * Combines a list of refs into a single ref. This can be used to provide\n * both a forwarded ref and an internal ref keeping the same functionality\n * on both of the refs.\n * @param refs Array of refs to combine\n * @returns A single ref that can be used in a ref prop.\n */\nconst useCombinedRefs = <T,>(\n ...refs: Array<MutableRefObject<T> | ForwardedRef<T>>\n) => {\n const targetRef = React.useRef<T>(null);\n React.useEffect(() => {\n refs.forEach((ref) => {\n if (ref) {\n if (typeof ref === \"function\") {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n }\n });\n }, [refs]);\n return targetRef;\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IACEC,SADF,EAEEC,QAFF,EAGEC,WAHF,EAIEC,OAJF,EAKEC,UALF,EAMEC,MANF,QAOO,OAPP;AAgBA,OAAOC,eAAP,MAA4B,kBAA5B;AAEA,SAASC,QAAT,EAAmBC,eAAnB,QAA0C,UAA1C;AAEA,SAASC,QAAT,QAAyB,0BAAzB;AACA,SAASC,IAAT,QAAqB,cAArB;AAIA,SAASC,KAAK,IAAIC,SAAlB,EAA6BC,YAA7B,QAAiD,cAAjD,C,CACA;;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SAASC,iBAAT,QAAkC,qBAAlC;AACA,SAASC,cAAT,QAA+B,aAA/B;AAEA,OAAO,MAAMC,cAAc,GAAGX,eAAe,CAACO,YAAD,CAAtC;AAEPI,cAAc,CAACC,kBAAf,CAAkC;EAChCC,UAAU,EAAE,CADoB;EAEhCC,OAAO,EAAE,OAFuB;EAGhCC,mBAAmB,EAAE;AAHW,CAAlC;;AAMA,MAAMC,MAAM,GAAG,CAACC,OAAD,EAAqBC,IAArB,EAAuCC,SAAvC,KAAgE;EAC7ER,cAAc,CAACS,eAAf,CAA+BH,OAA/B,EAAwCC,IAAxC,EAA8C,IAA9C,EAAoD,MAAM;IACxDZ,SAAS,CAAC,iBAAD,CAAT;IACAa,SAAS,CAACE,MAAV,CAAiBC,MAAjB;EACD,CAHD;AAID,CALD;;AAOA,OAAO,MAAMC,YAAY,GAAG,MAAMxB,MAAM,CAAW,IAAX,CAAjC;AASP,OAAO,MAAMyB,MAAM,gBAAG1B,UAAU,CAC9B,OAAoD2B,YAApD,KAAqE;EAAA,IAApE;IAAEC,QAAF;IAAYC,KAAZ;IAAmBtB,KAAnB;IAA0BuB,IAA1B;IAAgCC,OAAhC;IAAyCC;EAAzC,CAAoE;EACnE,MAAMC,IAAI,GAAG5B,QAAQ,CAAC;IAAE6B,KAAK,EAAE,CAAT;IAAYC,MAAM,EAAE;EAApB,CAAD,CAArB;EACA,MAAMC,SAAS,GAAGrC,OAAO,CAAC,OAAO;IAAEO,IAAF;IAAQ2B;EAAR,CAAP,CAAD,EAAyB,CAACA,IAAD,CAAzB,CAAzB;EACA,MAAMI,QAAQ,GAAGZ,YAAY,EAA7B;EACA,MAAMa,GAAG,GAAGC,eAAe,CAACZ,YAAD,EAAeU,QAAf,CAA3B;EACA,MAAM,CAACG,IAAD,EAAOC,OAAP,IAAkB5C,QAAQ,CAAC,CAAD,CAAhC;EACA,MAAM6C,MAAM,GAAG5C,WAAW,CAAC,MAAM;IAC/B2C,OAAO,CAAEE,CAAD,IAAOA,CAAC,GAAG,CAAZ,CAAP;EACD,CAFyB,EAEvB,EAFuB,CAA1B;EAIA,MAAMC,cAAc,GAAG9C,WAAW,CAC/B+C,MAAD,IAAuC;IACrC,IAAIP,GAAG,CAACQ,OAAJ,KAAgB,IAApB,EAA0B;MACxB,MAAM,IAAIC,KAAJ,CAAU,uBAAV,CAAN;IACD;;IACD,OAAOT,GAAG,CAACQ,OAAJ,CAAYF,cAAZ,CAA2BC,MAA3B,CAAP;EACD,CAN+B,EAOhC,CAACP,GAAD,CAPgC,CAAlC;EAUA,MAAMjB,SAAS,GAAGtB,OAAO,CAAC,MAAM;IAC9B,OAAO,IAAIW,SAAJ,CAAcJ,IAAd,EAAoB,IAAIK,iBAAJ,CAAsBiC,cAAtB,CAApB,EAA2DF,MAA3D,CAAP;EACD,CAFwB,EAEtB,CAACA,MAAD,EAASE,cAAT,CAFsB,CAAzB;EAIA,MAAMxB,IAAI,GAAGrB,OAAO,CAClB,MACEc,cAAc,CAACmC,eAAf,CACE3B,SADF,EAEE,CAFF,EAGE,IAHF,EAIE,IAJF,EAKE,IALF,EAME,EANF,EAOE4B,OAAO,CAACC,KAPV,EAQE,IARF,CAFgB,EAYlB,CAAC7B,SAAD,CAZkB,CAApB,CAxBmE,CAsCnE;;EACAzB,SAAS,CAAC,MAAM;IACdsB,MAAM,eACJ,oBAAC,cAAD;MAAgB,KAAK,EAAEkB;IAAvB,GAAmCR,QAAnC,CADI,EAEJR,IAFI,EAGJC,SAHI,CAAN;EAKD,CANQ,EAMN,CAACO,QAAD,EAAWR,IAAX,EAAiBsB,MAAjB,EAAyBrB,SAAzB,EAAoCe,SAApC,CANM,CAAT;EAQA,MAAMe,KAAK,GAAGpD,OAAO,CAAC,MAAMO,IAAI,CAAC8C,KAAL,EAAP,EAAqB,EAArB,CAArB,CA/CmE,CAiDnE;;EACA,MAAMC,MAAM,GAAGjD,eAAe,CAC5B,CAACkD,MAAD,EAASC,IAAT,KAAkB;IAChB;IACA,MAAM;MAAErB,KAAF;MAASC,MAAT;MAAiBqB;IAAjB,IAA+BD,IAArC;;IACA,IAAIxB,OAAJ,EAAa;MACXA,OAAO,CAACwB,IAAI,CAACE,OAAN,CAAP;IACD;;IACD,IACEvB,KAAK,KAAKE,SAAS,CAACH,IAAV,CAAea,OAAf,CAAuBZ,KAAjC,IACAC,MAAM,KAAKC,SAAS,CAACH,IAAV,CAAea,OAAf,CAAuBX,MAFpC,EAGE;MACAC,SAAS,CAACH,IAAV,CAAea,OAAf,GAAyB;QAAEZ,KAAF;QAASC;MAAT,CAAzB;;MACA,IAAIH,MAAJ,EAAY;QACVA,MAAM,CAACc,OAAP,GAAiB;UAAEZ,KAAF;UAASC;QAAT,CAAjB;MACD;IACF;;IACDgB,KAAK,CAACO,KAAN;IACA,MAAMC,GAAG,GAAG;MACVzB,KADU;MAEVC,MAFU;MAGVqB,SAHU;MAIVF,MAJU;MAKVH,KALU;MAMVS,OAAO,EAAE,CANC;MAOVtB,GAPU;MAQVuB,MAAM,EAAE;QAAEC,CAAC,EAAE5B,KAAK,GAAG,CAAb;QAAgB6B,CAAC,EAAE5B,MAAM,GAAG;MAA5B,CARE;MASV7B;IATU,CAAZ;IAWAe,SAAS,CAAC2C,IAAV,CAAeL,GAAf;EACD,CA7B2B,EA8B5B,CAACnB,IAAD,EAAOT,OAAP,CA9B4B,CAA9B;EAiCAnC,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXiB,cAAc,CAACS,eAAf,CAA+B,IAA/B,EAAqCF,IAArC,EAA2C,IAA3C,EAAiD,MAAM;QACrDC,SAAS,CAACE,MAAV,CAAiB0C,MAAjB;MACD,CAFD;IAGD,CAJD;EAKD,CANQ,EAMN,CAAC5C,SAAD,EAAYD,IAAZ,CANM,CAAT;EAQA,oBACE,oBAAC,QAAD;IACE,GAAG,EAAEkB,GADP;IAEE,KAAK,EAAET,KAFT;IAGE,MAAM,EAAEwB,MAHV;IAIE,IAAI,EAAEvB,IAJR;IAKE,KAAK,EAAEvB;EALT,EADF;AASD,CArG6B,CAAzB;AAwGP;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMgC,eAAe,GAAG,YAEnB;EAAA,kCADA2B,IACA;IADAA,IACA;EAAA;;EACH,MAAMC,SAAS,GAAGxE,KAAK,CAACM,MAAN,CAAgB,IAAhB,CAAlB;EACAN,KAAK,CAACC,SAAN,CAAgB,MAAM;IACpBsE,IAAI,CAACE,OAAL,CAAc9B,GAAD,IAAS;MACpB,IAAIA,GAAJ,EAAS;QACP,IAAI,OAAOA,GAAP,KAAe,UAAnB,EAA+B;UAC7BA,GAAG,CAAC6B,SAAS,CAACrB,OAAX,CAAH;QACD,CAFD,MAEO;UACLR,GAAG,CAACQ,OAAJ,GAAcqB,SAAS,CAACrB,OAAxB;QACD;MACF;IACF,CARD;EASD,CAVD,EAUG,CAACoB,IAAD,CAVH;EAWA,OAAOC,SAAP;AACD,CAhBD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NodeType","exhaustiveCheck","createNode","container","type","props","Sk","Layer","Group","Paint","Fill","Image","Circle","Path","Drawing","CustomDrawing","Line","Oval","Patch","Points","Rect","RRect","Vertices","Text","TextPath","TextBlob","Glyphs","DiffRect","Picture","ImageSVG","BlurMaskFilter","BlendImageFilter","BlurImageFilter","OffsetImageFilter","DropShadowImageFilter","DisplacementMapImageFilter","MorphologyImageFilter","RuntimeShaderImageFilter","MatrixColorFilter","BlendColorFilter","LerpColorFilter","LumaColorFilter","LinearToSRGBGammaColorFilter","SRGBToLinearGammaColorFilter","Shader","ImageShader","ColorShader","Turbulence","FractalNoise","LinearGradient","RadialGradient","SweepGradient","TwoPointConicalGradient","CornerPathEffect","DiscretePathEffect","DashPathEffect","Path1DPathEffect","Path2DPathEffect","SumPathEffect","Line2DPathEffect","Blend","BackdropFilter","Box","BoxShadow"],"sources":["HostComponents.ts"],"sourcesContent":["import type { ForwardedRef } from \"react\";\n\nimport { NodeType } from \"../dom/types\";\nimport type {\n CircleProps,\n DrawingNodeProps,\n ImageProps,\n PaintProps,\n PathProps,\n CustomDrawingNodeProps,\n LineProps,\n OvalProps,\n DiffRectProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextProps,\n VerticesProps,\n BlurMaskFilterProps,\n BlendImageFilterProps,\n BlurImageFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n MatrixColorFilterProps,\n ShaderProps,\n ImageShaderProps,\n LinearGradientProps,\n GroupProps,\n PatchProps,\n BlendColorFilterProps,\n DashPathEffectProps,\n DiscretePathEffectProps,\n CornerPathEffectProps,\n Line2DPathEffectProps,\n Path1DPathEffectProps,\n Path2DPathEffectProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n TwoPointConicalGradientProps,\n TurbulenceProps,\n SweepGradientProps,\n RadialGradientProps,\n ColorProps,\n PictureProps,\n ImageSVGProps,\n LerpColorFilterProps,\n BoxProps,\n BoxShadowProps,\n} from \"../dom/types\";\nimport type { ChildrenProps } from \"../dom/types/Common\";\nimport type {\n BlendProps,\n MorphologyImageFilterProps,\n} from \"../dom/types/ImageFilters\";\nimport type { PaintNode } from \"../dom/nodes/PaintNode\";\n\nimport type { Container } from \"./Container\";\nimport { exhaustiveCheck } from \"./typeddash\";\nimport type { SkiaProps } from \"./processors\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n skGroup: SkiaProps<GroupProps>;\n skLayer: SkiaProps<ChildrenProps>;\n skPaint: SkiaProps<PaintProps> & { ref: ForwardedRef<PaintNode> };\n\n // Drawings\n skFill: SkiaProps<DrawingNodeProps>;\n skImage: SkiaProps<ImageProps>;\n skCircle: SkiaProps<CircleProps>;\n skPath: SkiaProps<PathProps>;\n skDrawing: SkiaProps<CustomDrawingNodeProps>;\n skLine: SkiaProps<LineProps>;\n skOval: SkiaProps<OvalProps>;\n skPatch: SkiaProps<PatchProps>;\n skPoints: SkiaProps<PointsProps>;\n skRect: SkiaProps<RectProps>;\n skRRect: SkiaProps<RoundedRectProps>;\n skVertices: SkiaProps<VerticesProps>;\n skText: SkiaProps<TextProps>;\n skTextPath: SkiaProps<TextPathProps>;\n skTextBlob: SkiaProps<TextBlobProps>;\n skGlyphs: SkiaProps<GlyphsProps>;\n skDiffRect: SkiaProps<DiffRectProps>;\n skPicture: SkiaProps<PictureProps>;\n skImageSVG: SkiaProps<ImageSVGProps>;\n\n // BlurMaskFilters\n skBlurMaskFilter: SkiaProps<BlurMaskFilterProps>;\n\n // ImageFilters\n skBlendImageFilter: SkiaProps<BlendImageFilterProps>;\n skBlurImageFilter: SkiaProps<BlurImageFilterProps>;\n skOffsetImageFilter: SkiaProps<OffsetImageFilterProps>;\n skDropShadowImageFilter: SkiaProps<DropShadowImageFilterProps>;\n skDisplacementMapImageFilter: SkiaProps<DisplacementMapImageFilterProps>;\n skRuntimeShaderImageFilter: SkiaProps<RuntimeShaderImageFilterProps>;\n skMorphologyImageFilter: SkiaProps<MorphologyImageFilterProps>;\n\n // ColorFilters\n skMatrixColorFilter: SkiaProps<MatrixColorFilterProps>;\n skBlendColorFilter: SkiaProps<BlendColorFilterProps>;\n skLinearToSRGBGammaColorFilter: SkiaProps<ChildrenProps>;\n skSRGBToLinearGammaColorFilter: SkiaProps<ChildrenProps>;\n skLumaColorFilter: SkiaProps<ChildrenProps>;\n skLerpColorFilter: SkiaProps<LerpColorFilterProps>;\n\n // Shaders\n skShader: SkiaProps<ShaderProps>;\n skImageShader: SkiaProps<ImageShaderProps>;\n skColorShader: SkiaProps<ColorProps>;\n skTurbulence: SkiaProps<TurbulenceProps>;\n skFractalNoise: SkiaProps<TurbulenceProps>;\n skLinearGradient: SkiaProps<LinearGradientProps>;\n skRadialGradient: SkiaProps<RadialGradientProps>;\n skSweepGradient: SkiaProps<SweepGradientProps>;\n skTwoPointConicalGradient: SkiaProps<TwoPointConicalGradientProps>;\n\n // Path Effects\n skDiscretePathEffect: SkiaProps<DiscretePathEffectProps>;\n skDashPathEffect: SkiaProps<DashPathEffectProps>;\n skPath1DPathEffect: SkiaProps<Path1DPathEffectProps>;\n skPath2DPathEffect: SkiaProps<Path2DPathEffectProps>;\n skCornerPathEffect: SkiaProps<CornerPathEffectProps>;\n skSumPathEffect: ChildrenProps;\n skLine2DPathEffect: SkiaProps<Line2DPathEffectProps>;\n\n // Mixed declarations/drawings\n skBlend: SkiaProps<BlendProps>;\n skBackdropFilter: SkiaProps<ChildrenProps>;\n skBox: SkiaProps<BoxProps>;\n skBoxShadow: SkiaProps<BoxShadowProps>;\n }\n }\n}\n\nexport const createNode = (\n container: Container,\n type: NodeType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: any\n) => {\n const { Sk } = container;\n switch (type) {\n case NodeType.Layer:\n return Sk.Layer(props);\n case NodeType.Group:\n return Sk.Group(props);\n case NodeType.Paint:\n return Sk.Paint(props);\n // Drawings\n case NodeType.Fill:\n return Sk.Fill(props);\n case NodeType.Image:\n return Sk.Image(props);\n case NodeType.Circle:\n return Sk.Circle(props);\n case NodeType.Path:\n return Sk.Path(props);\n case NodeType.Drawing:\n return Sk.CustomDrawing(props);\n case NodeType.Line:\n return Sk.Line(props);\n case NodeType.Oval:\n return Sk.Oval(props);\n case NodeType.Patch:\n return Sk.Patch(props);\n case NodeType.Points:\n return Sk.Points(props);\n case NodeType.Rect:\n return Sk.Rect(props);\n case NodeType.RRect:\n return Sk.RRect(props);\n case NodeType.Vertices:\n return Sk.Vertices(props);\n case NodeType.Text:\n return Sk.Text(props);\n case NodeType.TextPath:\n return Sk.TextPath(props);\n case NodeType.TextBlob:\n return Sk.TextBlob(props);\n case NodeType.Glyphs:\n return Sk.Glyphs(props);\n case NodeType.DiffRect:\n return Sk.DiffRect(props);\n case NodeType.Picture:\n return Sk.Picture(props);\n case NodeType.ImageSVG:\n return Sk.ImageSVG(props);\n // Mask Filter\n case NodeType.BlurMaskFilter:\n return Sk.BlurMaskFilter(props);\n // Image Filter\n case NodeType.BlendImageFilter:\n return Sk.BlendImageFilter(props);\n case NodeType.BlurImageFilter:\n return Sk.BlurImageFilter(props);\n case NodeType.OffsetImageFilter:\n return Sk.OffsetImageFilter(props);\n case NodeType.DropShadowImageFilter:\n return Sk.DropShadowImageFilter(props);\n case NodeType.DisplacementMapImageFilter:\n return Sk.DisplacementMapImageFilter(props);\n case NodeType.MorphologyImageFilter:\n return Sk.MorphologyImageFilter(props);\n case NodeType.RuntimeShaderImageFilter:\n return Sk.RuntimeShaderImageFilter(props);\n // Color Filter\n case NodeType.MatrixColorFilter:\n return Sk.MatrixColorFilter(props);\n case NodeType.BlendColorFilter:\n return Sk.BlendColorFilter(props);\n case NodeType.LerpColorFilter:\n return Sk.LerpColorFilter(props);\n case NodeType.LumaColorFilter:\n return Sk.LumaColorFilter();\n case NodeType.LinearToSRGBGammaColorFilter:\n return Sk.LinearToSRGBGammaColorFilter();\n case NodeType.SRGBToLinearGammaColorFilter:\n return Sk.SRGBToLinearGammaColorFilter();\n // Shader\n case NodeType.Shader:\n return Sk.Shader(props);\n case NodeType.ImageShader:\n return Sk.ImageShader(props);\n case NodeType.ColorShader:\n return Sk.ColorShader(props);\n case NodeType.Turbulence:\n return Sk.Turbulence(props);\n case NodeType.FractalNoise:\n return Sk.FractalNoise(props);\n case NodeType.LinearGradient:\n return Sk.LinearGradient(props);\n case NodeType.RadialGradient:\n return Sk.RadialGradient(props);\n case NodeType.SweepGradient:\n return Sk.SweepGradient(props);\n case NodeType.TwoPointConicalGradient:\n return Sk.TwoPointConicalGradient(props);\n // Path Effect\n case NodeType.CornerPathEffect:\n return Sk.CornerPathEffect(props);\n case NodeType.DiscretePathEffect:\n return Sk.DiscretePathEffect(props);\n case NodeType.DashPathEffect:\n return Sk.DashPathEffect(props);\n case NodeType.Path1DPathEffect:\n return Sk.Path1DPathEffect(props);\n case NodeType.Path2DPathEffect:\n return Sk.Path2DPathEffect(props);\n case NodeType.SumPathEffect:\n return Sk.SumPathEffect();\n case NodeType.Line2DPathEffect:\n return Sk.Line2DPathEffect(props);\n // Mixed\n case NodeType.Blend:\n return Sk.Blend(props);\n case NodeType.BackdropFilter:\n return Sk.BackdropFilter(props);\n case NodeType.Box:\n return Sk.Box(props);\n case NodeType.BoxShadow:\n return Sk.BoxShadow(props);\n default:\n return exhaustiveCheck(type);\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["NodeType","exhaustiveCheck","createNode","container","type","props","Sk","Layer","Group","Paint","Fill","Image","Circle","Path","Drawing","CustomDrawing","Line","Oval","Patch","Points","Rect","RRect","Vertices","Text","TextPath","TextBlob","Glyphs","DiffRect","Picture","ImageSVG","BlurMaskFilter","BlendImageFilter","BlurImageFilter","OffsetImageFilter","DropShadowImageFilter","DisplacementMapImageFilter","MorphologyImageFilter","RuntimeShaderImageFilter","MatrixColorFilter","BlendColorFilter","LerpColorFilter","LumaColorFilter","LinearToSRGBGammaColorFilter","SRGBToLinearGammaColorFilter","Shader","ImageShader","ColorShader","Turbulence","FractalNoise","LinearGradient","RadialGradient","SweepGradient","TwoPointConicalGradient","CornerPathEffect","DiscretePathEffect","DashPathEffect","Path1DPathEffect","Path2DPathEffect","SumPathEffect","Line2DPathEffect","Blend","BackdropFilter","Box","BoxShadow"],"sources":["HostComponents.ts"],"sourcesContent":["import { NodeType } from \"../dom/types\";\nimport type {\n CircleProps,\n DrawingNodeProps,\n ImageProps,\n PaintProps,\n PathProps,\n CustomDrawingNodeProps,\n LineProps,\n OvalProps,\n DiffRectProps,\n PointsProps,\n RectProps,\n RoundedRectProps,\n TextProps,\n VerticesProps,\n BlurMaskFilterProps,\n BlendImageFilterProps,\n BlurImageFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n MatrixColorFilterProps,\n ShaderProps,\n ImageShaderProps,\n LinearGradientProps,\n GroupProps,\n PatchProps,\n BlendColorFilterProps,\n DashPathEffectProps,\n DiscretePathEffectProps,\n CornerPathEffectProps,\n Line2DPathEffectProps,\n Path1DPathEffectProps,\n Path2DPathEffectProps,\n TextPathProps,\n TextBlobProps,\n GlyphsProps,\n TwoPointConicalGradientProps,\n TurbulenceProps,\n SweepGradientProps,\n RadialGradientProps,\n ColorProps,\n PictureProps,\n ImageSVGProps,\n LerpColorFilterProps,\n BoxProps,\n BoxShadowProps,\n} from \"../dom/types\";\nimport type { ChildrenProps } from \"../dom/types/Common\";\nimport type {\n BlendProps,\n MorphologyImageFilterProps,\n} from \"../dom/types/ImageFilters\";\n\nimport type { Container } from \"./Container\";\nimport { exhaustiveCheck } from \"./typeddash\";\nimport type { SkiaProps } from \"./processors\";\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n skGroup: SkiaProps<GroupProps>;\n skLayer: SkiaProps<ChildrenProps>;\n skPaint: SkiaProps<PaintProps>;\n\n // Drawings\n skFill: SkiaProps<DrawingNodeProps>;\n skImage: SkiaProps<ImageProps>;\n skCircle: SkiaProps<CircleProps>;\n skPath: SkiaProps<PathProps>;\n skDrawing: SkiaProps<CustomDrawingNodeProps>;\n skLine: SkiaProps<LineProps>;\n skOval: SkiaProps<OvalProps>;\n skPatch: SkiaProps<PatchProps>;\n skPoints: SkiaProps<PointsProps>;\n skRect: SkiaProps<RectProps>;\n skRRect: SkiaProps<RoundedRectProps>;\n skVertices: SkiaProps<VerticesProps>;\n skText: SkiaProps<TextProps>;\n skTextPath: SkiaProps<TextPathProps>;\n skTextBlob: SkiaProps<TextBlobProps>;\n skGlyphs: SkiaProps<GlyphsProps>;\n skDiffRect: SkiaProps<DiffRectProps>;\n skPicture: SkiaProps<PictureProps>;\n skImageSVG: SkiaProps<ImageSVGProps>;\n\n // BlurMaskFilters\n skBlurMaskFilter: SkiaProps<BlurMaskFilterProps>;\n\n // ImageFilters\n skBlendImageFilter: SkiaProps<BlendImageFilterProps>;\n skBlurImageFilter: SkiaProps<BlurImageFilterProps>;\n skOffsetImageFilter: SkiaProps<OffsetImageFilterProps>;\n skDropShadowImageFilter: SkiaProps<DropShadowImageFilterProps>;\n skDisplacementMapImageFilter: SkiaProps<DisplacementMapImageFilterProps>;\n skRuntimeShaderImageFilter: SkiaProps<RuntimeShaderImageFilterProps>;\n skMorphologyImageFilter: SkiaProps<MorphologyImageFilterProps>;\n\n // ColorFilters\n skMatrixColorFilter: SkiaProps<MatrixColorFilterProps>;\n skBlendColorFilter: SkiaProps<BlendColorFilterProps>;\n skLinearToSRGBGammaColorFilter: SkiaProps<ChildrenProps>;\n skSRGBToLinearGammaColorFilter: SkiaProps<ChildrenProps>;\n skLumaColorFilter: SkiaProps<ChildrenProps>;\n skLerpColorFilter: SkiaProps<LerpColorFilterProps>;\n\n // Shaders\n skShader: SkiaProps<ShaderProps>;\n skImageShader: SkiaProps<ImageShaderProps>;\n skColorShader: SkiaProps<ColorProps>;\n skTurbulence: SkiaProps<TurbulenceProps>;\n skFractalNoise: SkiaProps<TurbulenceProps>;\n skLinearGradient: SkiaProps<LinearGradientProps>;\n skRadialGradient: SkiaProps<RadialGradientProps>;\n skSweepGradient: SkiaProps<SweepGradientProps>;\n skTwoPointConicalGradient: SkiaProps<TwoPointConicalGradientProps>;\n\n // Path Effects\n skDiscretePathEffect: SkiaProps<DiscretePathEffectProps>;\n skDashPathEffect: SkiaProps<DashPathEffectProps>;\n skPath1DPathEffect: SkiaProps<Path1DPathEffectProps>;\n skPath2DPathEffect: SkiaProps<Path2DPathEffectProps>;\n skCornerPathEffect: SkiaProps<CornerPathEffectProps>;\n skSumPathEffect: ChildrenProps;\n skLine2DPathEffect: SkiaProps<Line2DPathEffectProps>;\n\n // Mixed declarations/drawings\n skBlend: SkiaProps<BlendProps>;\n skBackdropFilter: SkiaProps<ChildrenProps>;\n skBox: SkiaProps<BoxProps>;\n skBoxShadow: SkiaProps<BoxShadowProps>;\n }\n }\n}\n\nexport const createNode = (\n container: Container,\n type: NodeType,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n props: any\n) => {\n const { Sk } = container;\n switch (type) {\n case NodeType.Layer:\n return Sk.Layer(props);\n case NodeType.Group:\n return Sk.Group(props);\n case NodeType.Paint:\n return Sk.Paint(props);\n // Drawings\n case NodeType.Fill:\n return Sk.Fill(props);\n case NodeType.Image:\n return Sk.Image(props);\n case NodeType.Circle:\n return Sk.Circle(props);\n case NodeType.Path:\n return Sk.Path(props);\n case NodeType.Drawing:\n return Sk.CustomDrawing(props);\n case NodeType.Line:\n return Sk.Line(props);\n case NodeType.Oval:\n return Sk.Oval(props);\n case NodeType.Patch:\n return Sk.Patch(props);\n case NodeType.Points:\n return Sk.Points(props);\n case NodeType.Rect:\n return Sk.Rect(props);\n case NodeType.RRect:\n return Sk.RRect(props);\n case NodeType.Vertices:\n return Sk.Vertices(props);\n case NodeType.Text:\n return Sk.Text(props);\n case NodeType.TextPath:\n return Sk.TextPath(props);\n case NodeType.TextBlob:\n return Sk.TextBlob(props);\n case NodeType.Glyphs:\n return Sk.Glyphs(props);\n case NodeType.DiffRect:\n return Sk.DiffRect(props);\n case NodeType.Picture:\n return Sk.Picture(props);\n case NodeType.ImageSVG:\n return Sk.ImageSVG(props);\n // Mask Filter\n case NodeType.BlurMaskFilter:\n return Sk.BlurMaskFilter(props);\n // Image Filter\n case NodeType.BlendImageFilter:\n return Sk.BlendImageFilter(props);\n case NodeType.BlurImageFilter:\n return Sk.BlurImageFilter(props);\n case NodeType.OffsetImageFilter:\n return Sk.OffsetImageFilter(props);\n case NodeType.DropShadowImageFilter:\n return Sk.DropShadowImageFilter(props);\n case NodeType.DisplacementMapImageFilter:\n return Sk.DisplacementMapImageFilter(props);\n case NodeType.MorphologyImageFilter:\n return Sk.MorphologyImageFilter(props);\n case NodeType.RuntimeShaderImageFilter:\n return Sk.RuntimeShaderImageFilter(props);\n // Color Filter\n case NodeType.MatrixColorFilter:\n return Sk.MatrixColorFilter(props);\n case NodeType.BlendColorFilter:\n return Sk.BlendColorFilter(props);\n case NodeType.LerpColorFilter:\n return Sk.LerpColorFilter(props);\n case NodeType.LumaColorFilter:\n return Sk.LumaColorFilter();\n case NodeType.LinearToSRGBGammaColorFilter:\n return Sk.LinearToSRGBGammaColorFilter();\n case NodeType.SRGBToLinearGammaColorFilter:\n return Sk.SRGBToLinearGammaColorFilter();\n // Shader\n case NodeType.Shader:\n return Sk.Shader(props);\n case NodeType.ImageShader:\n return Sk.ImageShader(props);\n case NodeType.ColorShader:\n return Sk.ColorShader(props);\n case NodeType.Turbulence:\n return Sk.Turbulence(props);\n case NodeType.FractalNoise:\n return Sk.FractalNoise(props);\n case NodeType.LinearGradient:\n return Sk.LinearGradient(props);\n case NodeType.RadialGradient:\n return Sk.RadialGradient(props);\n case NodeType.SweepGradient:\n return Sk.SweepGradient(props);\n case NodeType.TwoPointConicalGradient:\n return Sk.TwoPointConicalGradient(props);\n // Path Effect\n case NodeType.CornerPathEffect:\n return Sk.CornerPathEffect(props);\n case NodeType.DiscretePathEffect:\n return Sk.DiscretePathEffect(props);\n case NodeType.DashPathEffect:\n return Sk.DashPathEffect(props);\n case NodeType.Path1DPathEffect:\n return Sk.Path1DPathEffect(props);\n case NodeType.Path2DPathEffect:\n return Sk.Path2DPathEffect(props);\n case NodeType.SumPathEffect:\n return Sk.SumPathEffect();\n case NodeType.Line2DPathEffect:\n return Sk.Line2DPathEffect(props);\n // Mixed\n case NodeType.Blend:\n return Sk.Blend(props);\n case NodeType.BackdropFilter:\n return Sk.BackdropFilter(props);\n case NodeType.Box:\n return Sk.Box(props);\n case NodeType.BoxShadow:\n return Sk.BoxShadow(props);\n default:\n return exhaustiveCheck(type);\n }\n};\n"],"mappings":"AAAA,SAASA,QAAT,QAAyB,cAAzB;AAyDA,SAASC,eAAT,QAAgC,aAAhC;AAiFA,OAAO,MAAMC,UAAU,GAAG,CACxBC,SADwB,EAExBC,IAFwB,EAIxBC,KAJwB,KAKrB;EACH,MAAM;IAAEC;EAAF,IAASH,SAAf;;EACA,QAAQC,IAAR;IACE,KAAKJ,QAAQ,CAACO,KAAd;MACE,OAAOD,EAAE,CAACC,KAAH,CAASF,KAAT,CAAP;;IACF,KAAKL,QAAQ,CAACQ,KAAd;MACE,OAAOF,EAAE,CAACE,KAAH,CAASH,KAAT,CAAP;;IACF,KAAKL,QAAQ,CAACS,KAAd;MACE,OAAOH,EAAE,CAACG,KAAH,CAASJ,KAAT,CAAP;IACF;;IACA,KAAKL,QAAQ,CAACU,IAAd;MACE,OAAOJ,EAAE,CAACI,IAAH,CAAQL,KAAR,CAAP;;IACF,KAAKL,QAAQ,CAACW,KAAd;MACE,OAAOL,EAAE,CAACK,KAAH,CAASN,KAAT,CAAP;;IACF,KAAKL,QAAQ,CAACY,MAAd;MACE,OAAON,EAAE,CAACM,MAAH,CAAUP,KAAV,CAAP;;IACF,KAAKL,QAAQ,CAACa,IAAd;MACE,OAAOP,EAAE,CAACO,IAAH,CAAQR,KAAR,CAAP;;IACF,KAAKL,QAAQ,CAACc,OAAd;MACE,OAAOR,EAAE,CAACS,aAAH,CAAiBV,KAAjB,CAAP;;IACF,KAAKL,QAAQ,CAACgB,IAAd;MACE,OAAOV,EAAE,CAACU,IAAH,CAAQX,KAAR,CAAP;;IACF,KAAKL,QAAQ,CAACiB,IAAd;MACE,OAAOX,EAAE,CAACW,IAAH,CAAQZ,KAAR,CAAP;;IACF,KAAKL,QAAQ,CAACkB,KAAd;MACE,OAAOZ,EAAE,CAACY,KAAH,CAASb,KAAT,CAAP;;IACF,KAAKL,QAAQ,CAACmB,MAAd;MACE,OAAOb,EAAE,CAACa,MAAH,CAAUd,KAAV,CAAP;;IACF,KAAKL,QAAQ,CAACoB,IAAd;MACE,OAAOd,EAAE,CAACc,IAAH,CAAQf,KAAR,CAAP;;IACF,KAAKL,QAAQ,CAACqB,KAAd;MACE,OAAOf,EAAE,CAACe,KAAH,CAAShB,KAAT,CAAP;;IACF,KAAKL,QAAQ,CAACsB,QAAd;MACE,OAAOhB,EAAE,CAACgB,QAAH,CAAYjB,KAAZ,CAAP;;IACF,KAAKL,QAAQ,CAACuB,IAAd;MACE,OAAOjB,EAAE,CAACiB,IAAH,CAAQlB,KAAR,CAAP;;IACF,KAAKL,QAAQ,CAACwB,QAAd;MACE,OAAOlB,EAAE,CAACkB,QAAH,CAAYnB,KAAZ,CAAP;;IACF,KAAKL,QAAQ,CAACyB,QAAd;MACE,OAAOnB,EAAE,CAACmB,QAAH,CAAYpB,KAAZ,CAAP;;IACF,KAAKL,QAAQ,CAAC0B,MAAd;MACE,OAAOpB,EAAE,CAACoB,MAAH,CAAUrB,KAAV,CAAP;;IACF,KAAKL,QAAQ,CAAC2B,QAAd;MACE,OAAOrB,EAAE,CAACqB,QAAH,CAAYtB,KAAZ,CAAP;;IACF,KAAKL,QAAQ,CAAC4B,OAAd;MACE,OAAOtB,EAAE,CAACsB,OAAH,CAAWvB,KAAX,CAAP;;IACF,KAAKL,QAAQ,CAAC6B,QAAd;MACE,OAAOvB,EAAE,CAACuB,QAAH,CAAYxB,KAAZ,CAAP;IACF;;IACA,KAAKL,QAAQ,CAAC8B,cAAd;MACE,OAAOxB,EAAE,CAACwB,cAAH,CAAkBzB,KAAlB,CAAP;IACF;;IACA,KAAKL,QAAQ,CAAC+B,gBAAd;MACE,OAAOzB,EAAE,CAACyB,gBAAH,CAAoB1B,KAApB,CAAP;;IACF,KAAKL,QAAQ,CAACgC,eAAd;MACE,OAAO1B,EAAE,CAAC0B,eAAH,CAAmB3B,KAAnB,CAAP;;IACF,KAAKL,QAAQ,CAACiC,iBAAd;MACE,OAAO3B,EAAE,CAAC2B,iBAAH,CAAqB5B,KAArB,CAAP;;IACF,KAAKL,QAAQ,CAACkC,qBAAd;MACE,OAAO5B,EAAE,CAAC4B,qBAAH,CAAyB7B,KAAzB,CAAP;;IACF,KAAKL,QAAQ,CAACmC,0BAAd;MACE,OAAO7B,EAAE,CAAC6B,0BAAH,CAA8B9B,KAA9B,CAAP;;IACF,KAAKL,QAAQ,CAACoC,qBAAd;MACE,OAAO9B,EAAE,CAAC8B,qBAAH,CAAyB/B,KAAzB,CAAP;;IACF,KAAKL,QAAQ,CAACqC,wBAAd;MACE,OAAO/B,EAAE,CAAC+B,wBAAH,CAA4BhC,KAA5B,CAAP;IACF;;IACA,KAAKL,QAAQ,CAACsC,iBAAd;MACE,OAAOhC,EAAE,CAACgC,iBAAH,CAAqBjC,KAArB,CAAP;;IACF,KAAKL,QAAQ,CAACuC,gBAAd;MACE,OAAOjC,EAAE,CAACiC,gBAAH,CAAoBlC,KAApB,CAAP;;IACF,KAAKL,QAAQ,CAACwC,eAAd;MACE,OAAOlC,EAAE,CAACkC,eAAH,CAAmBnC,KAAnB,CAAP;;IACF,KAAKL,QAAQ,CAACyC,eAAd;MACE,OAAOnC,EAAE,CAACmC,eAAH,EAAP;;IACF,KAAKzC,QAAQ,CAAC0C,4BAAd;MACE,OAAOpC,EAAE,CAACoC,4BAAH,EAAP;;IACF,KAAK1C,QAAQ,CAAC2C,4BAAd;MACE,OAAOrC,EAAE,CAACqC,4BAAH,EAAP;IACF;;IACA,KAAK3C,QAAQ,CAAC4C,MAAd;MACE,OAAOtC,EAAE,CAACsC,MAAH,CAAUvC,KAAV,CAAP;;IACF,KAAKL,QAAQ,CAAC6C,WAAd;MACE,OAAOvC,EAAE,CAACuC,WAAH,CAAexC,KAAf,CAAP;;IACF,KAAKL,QAAQ,CAAC8C,WAAd;MACE,OAAOxC,EAAE,CAACwC,WAAH,CAAezC,KAAf,CAAP;;IACF,KAAKL,QAAQ,CAAC+C,UAAd;MACE,OAAOzC,EAAE,CAACyC,UAAH,CAAc1C,KAAd,CAAP;;IACF,KAAKL,QAAQ,CAACgD,YAAd;MACE,OAAO1C,EAAE,CAAC0C,YAAH,CAAgB3C,KAAhB,CAAP;;IACF,KAAKL,QAAQ,CAACiD,cAAd;MACE,OAAO3C,EAAE,CAAC2C,cAAH,CAAkB5C,KAAlB,CAAP;;IACF,KAAKL,QAAQ,CAACkD,cAAd;MACE,OAAO5C,EAAE,CAAC4C,cAAH,CAAkB7C,KAAlB,CAAP;;IACF,KAAKL,QAAQ,CAACmD,aAAd;MACE,OAAO7C,EAAE,CAAC6C,aAAH,CAAiB9C,KAAjB,CAAP;;IACF,KAAKL,QAAQ,CAACoD,uBAAd;MACE,OAAO9C,EAAE,CAAC8C,uBAAH,CAA2B/C,KAA3B,CAAP;IACF;;IACA,KAAKL,QAAQ,CAACqD,gBAAd;MACE,OAAO/C,EAAE,CAAC+C,gBAAH,CAAoBhD,KAApB,CAAP;;IACF,KAAKL,QAAQ,CAACsD,kBAAd;MACE,OAAOhD,EAAE,CAACgD,kBAAH,CAAsBjD,KAAtB,CAAP;;IACF,KAAKL,QAAQ,CAACuD,cAAd;MACE,OAAOjD,EAAE,CAACiD,cAAH,CAAkBlD,KAAlB,CAAP;;IACF,KAAKL,QAAQ,CAACwD,gBAAd;MACE,OAAOlD,EAAE,CAACkD,gBAAH,CAAoBnD,KAApB,CAAP;;IACF,KAAKL,QAAQ,CAACyD,gBAAd;MACE,OAAOnD,EAAE,CAACmD,gBAAH,CAAoBpD,KAApB,CAAP;;IACF,KAAKL,QAAQ,CAAC0D,aAAd;MACE,OAAOpD,EAAE,CAACoD,aAAH,EAAP;;IACF,KAAK1D,QAAQ,CAAC2D,gBAAd;MACE,OAAOrD,EAAE,CAACqD,gBAAH,CAAoBtD,KAApB,CAAP;IACF;;IACA,KAAKL,QAAQ,CAAC4D,KAAd;MACE,OAAOtD,EAAE,CAACsD,KAAH,CAASvD,KAAT,CAAP;;IACF,KAAKL,QAAQ,CAAC6D,cAAd;MACE,OAAOvD,EAAE,CAACuD,cAAH,CAAkBxD,KAAlB,CAAP;;IACF,KAAKL,QAAQ,CAAC8D,GAAd;MACE,OAAOxD,EAAE,CAACwD,GAAH,CAAOzD,KAAP,CAAP;;IACF,KAAKL,QAAQ,CAAC+D,SAAd;MACE,OAAOzD,EAAE,CAACyD,SAAH,CAAa1D,KAAb,CAAP;;IACF;MACE,OAAOJ,eAAe,CAACG,IAAD,CAAtB;EAzHJ;AA2HD,CAlIM"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useMemo } from "react";
|
|
2
2
|
import { BlendMode } from "../../skia/types";
|
|
3
|
-
import {
|
|
3
|
+
import { useSkiaPrivate } from "../useCanvas";
|
|
4
4
|
import { Group } from "./Group";
|
|
5
5
|
export const Mask = _ref => {
|
|
6
6
|
let {
|
|
@@ -9,9 +9,7 @@ export const Mask = _ref => {
|
|
|
9
9
|
mode,
|
|
10
10
|
clip
|
|
11
11
|
} = _ref;
|
|
12
|
-
const
|
|
13
|
-
Skia
|
|
14
|
-
} = useCanvas();
|
|
12
|
+
const Skia = useSkiaPrivate();
|
|
15
13
|
const maskPaint = useMemo(() => {
|
|
16
14
|
const paint = Skia.Paint();
|
|
17
15
|
paint.setBlendMode(BlendMode.Src);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useMemo","BlendMode","
|
|
1
|
+
{"version":3,"names":["React","useMemo","BlendMode","useSkiaPrivate","Group","Mask","children","mask","mode","clip","Skia","maskPaint","paint","Paint","setBlendMode","Src","setColorFilter","ColorFilter","MakeLumaColorFilter","clippingPaint","DstIn","defaultProps"],"sources":["Mask.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport React, { useMemo } from \"react\";\n\nimport { BlendMode } from \"../../skia/types\";\nimport { useSkiaPrivate } from \"../useCanvas\";\n\nimport { Group } from \"./Group\";\n\ninterface MaskProps {\n mode: \"luminance\" | \"alpha\";\n clip: boolean;\n mask: ReactNode | ReactNode[];\n children: ReactNode | ReactNode[];\n}\n\nexport const Mask = ({ children, mask, mode, clip }: MaskProps) => {\n const Skia = useSkiaPrivate();\n const maskPaint = useMemo(() => {\n const paint = Skia.Paint();\n paint.setBlendMode(BlendMode.Src);\n if (mode === \"luminance\") {\n paint.setColorFilter(Skia.ColorFilter.MakeLumaColorFilter());\n }\n return paint;\n }, [Skia, mode]);\n const clippingPaint = useMemo(() => {\n const paint = Skia.Paint();\n paint.setBlendMode(BlendMode.DstIn);\n return paint;\n }, [Skia]);\n return (\n <Group layer>\n <Group layer={maskPaint}>\n {mask}\n {clip && <Group layer={clippingPaint}>{children}</Group>}\n </Group>\n <Group blendMode=\"srcIn\">{children}</Group>\n </Group>\n );\n};\n\nMask.defaultProps = {\n mode: \"alpha\",\n clip: true,\n};\n"],"mappings":"AACA,OAAOA,KAAP,IAAgBC,OAAhB,QAA+B,OAA/B;AAEA,SAASC,SAAT,QAA0B,kBAA1B;AACA,SAASC,cAAT,QAA+B,cAA/B;AAEA,SAASC,KAAT,QAAsB,SAAtB;AASA,OAAO,MAAMC,IAAI,GAAG,QAA+C;EAAA,IAA9C;IAAEC,QAAF;IAAYC,IAAZ;IAAkBC,IAAlB;IAAwBC;EAAxB,CAA8C;EACjE,MAAMC,IAAI,GAAGP,cAAc,EAA3B;EACA,MAAMQ,SAAS,GAAGV,OAAO,CAAC,MAAM;IAC9B,MAAMW,KAAK,GAAGF,IAAI,CAACG,KAAL,EAAd;IACAD,KAAK,CAACE,YAAN,CAAmBZ,SAAS,CAACa,GAA7B;;IACA,IAAIP,IAAI,KAAK,WAAb,EAA0B;MACxBI,KAAK,CAACI,cAAN,CAAqBN,IAAI,CAACO,WAAL,CAAiBC,mBAAjB,EAArB;IACD;;IACD,OAAON,KAAP;EACD,CAPwB,EAOtB,CAACF,IAAD,EAAOF,IAAP,CAPsB,CAAzB;EAQA,MAAMW,aAAa,GAAGlB,OAAO,CAAC,MAAM;IAClC,MAAMW,KAAK,GAAGF,IAAI,CAACG,KAAL,EAAd;IACAD,KAAK,CAACE,YAAN,CAAmBZ,SAAS,CAACkB,KAA7B;IACA,OAAOR,KAAP;EACD,CAJ4B,EAI1B,CAACF,IAAD,CAJ0B,CAA7B;EAKA,oBACE,oBAAC,KAAD;IAAO,KAAK;EAAZ,gBACE,oBAAC,KAAD;IAAO,KAAK,EAAEC;EAAd,GACGJ,IADH,EAEGE,IAAI,iBAAI,oBAAC,KAAD;IAAO,KAAK,EAAEU;EAAd,GAA8Bb,QAA9B,CAFX,CADF,eAKE,oBAAC,KAAD;IAAO,SAAS,EAAC;EAAjB,GAA0BA,QAA1B,CALF,CADF;AASD,CAxBM;AA0BPD,IAAI,CAACgB,YAAL,GAAoB;EAClBb,IAAI,EAAE,OADY;EAElBC,IAAI,EAAE;AAFY,CAApB"}
|
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import React, { useRef, forwardRef } from "react";
|
|
5
|
-
export const usePaintRef = () => {
|
|
6
|
-
console.log(`usePaintRef() is now deprecated.
|
|
7
|
-
If you are using the layer property, simply pass the component directly: https://shopify.github.io/react-native-skia/docs/group#layer-effects.
|
|
8
|
-
If you are using the paint property, please the following paint properties directly: https://shopify.github.io/react-native-skia/docs/paint/overview`);
|
|
9
|
-
return useRef(null);
|
|
1
|
+
import React from "react";
|
|
2
|
+
export const Paint = props => {
|
|
3
|
+
return /*#__PURE__*/React.createElement("skPaint", props);
|
|
10
4
|
};
|
|
11
|
-
export const Paint = /*#__PURE__*/forwardRef((props, ref) => {
|
|
12
|
-
return /*#__PURE__*/React.createElement("skPaint", _extends({
|
|
13
|
-
ref: ref
|
|
14
|
-
}, props));
|
|
15
|
-
});
|
|
16
5
|
//# sourceMappingURL=Paint.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","Paint","props"],"sources":["Paint.tsx"],"sourcesContent":["import React from \"react\";\n\nimport type { SkiaProps } from \"../processors\";\nimport type { DrawingNodeProps } from \"../../dom/types\";\n\nexport const Paint = (props: SkiaProps<DrawingNodeProps>) => {\n return <skPaint {...props} />;\n};\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAKA,OAAO,MAAMC,KAAK,GAAIC,KAAD,IAAwC;EAC3D,oBAAO,+BAAaA,KAAb,CAAP;AACD,CAFM"}
|
|
@@ -3,11 +3,24 @@ const CanvasContext = /*#__PURE__*/React.createContext(null);
|
|
|
3
3
|
export const CanvasProvider = CanvasContext.Provider;
|
|
4
4
|
export const useCanvas = () => {
|
|
5
5
|
const ctx = useContext(CanvasContext);
|
|
6
|
+
console.warn( // eslint-disable-next-line max-len
|
|
7
|
+
"useCanvas is deprecated. use the onSize property instead: https://shopify.github.io/react-native-skia/docs/canvas/overview");
|
|
6
8
|
|
|
7
9
|
if (!ctx) {
|
|
8
10
|
throw new Error("Canvas context is not available");
|
|
9
11
|
}
|
|
10
12
|
|
|
11
13
|
return ctx;
|
|
14
|
+
}; // This private function will be removed once we remove the useCanvas hook and
|
|
15
|
+
// implement the Mask component as a node (will be faster too)
|
|
16
|
+
|
|
17
|
+
export const useSkiaPrivate = () => {
|
|
18
|
+
const ctx = useContext(CanvasContext);
|
|
19
|
+
|
|
20
|
+
if (!ctx) {
|
|
21
|
+
throw new Error("Canvas context is not available");
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return ctx.Skia;
|
|
12
25
|
};
|
|
13
26
|
//# sourceMappingURL=useCanvas.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useContext","CanvasContext","createContext","CanvasProvider","Provider","useCanvas","ctx","Error"],"sources":["useCanvas.ts"],"sourcesContent":["import React, { useContext } from \"react\";\n\nimport type { Skia } from \"../skia/types\";\nimport type { SkiaValue } from \"../values/types\";\n\ninterface CanvasContext {\n Skia: Skia;\n size: SkiaValue<{ width: number; height: number }>;\n}\n\nconst CanvasContext = React.createContext<CanvasContext | null>(null);\n\nexport const CanvasProvider = CanvasContext.Provider;\n\nexport const useCanvas = () => {\n const ctx = useContext(CanvasContext);\n if (!ctx) {\n throw new Error(\"Canvas context is not available\");\n }\n return ctx;\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AAUA,MAAMC,aAAa,gBAAGF,KAAK,CAACG,aAAN,CAA0C,IAA1C,CAAtB;AAEA,OAAO,MAAMC,cAAc,GAAGF,aAAa,CAACG,QAArC;AAEP,OAAO,MAAMC,SAAS,GAAG,MAAM;EAC7B,MAAMC,GAAG,GAAGN,UAAU,CAACC,aAAD,CAAtB;;EACA,IAAI,CAACK,GAAL,EAAU;IACR,MAAM,
|
|
1
|
+
{"version":3,"names":["React","useContext","CanvasContext","createContext","CanvasProvider","Provider","useCanvas","ctx","console","warn","Error","useSkiaPrivate","Skia"],"sources":["useCanvas.ts"],"sourcesContent":["import React, { useContext } from \"react\";\n\nimport type { Skia } from \"../skia/types\";\nimport type { SkiaValue } from \"../values/types\";\n\ninterface CanvasContext {\n Skia: Skia;\n size: SkiaValue<{ width: number; height: number }>;\n}\n\nconst CanvasContext = React.createContext<CanvasContext | null>(null);\n\nexport const CanvasProvider = CanvasContext.Provider;\n\nexport const useCanvas = () => {\n const ctx = useContext(CanvasContext);\n console.warn(\n // eslint-disable-next-line max-len\n \"useCanvas is deprecated. use the onSize property instead: https://shopify.github.io/react-native-skia/docs/canvas/overview\"\n );\n if (!ctx) {\n throw new Error(\"Canvas context is not available\");\n }\n return ctx;\n};\n\n// This private function will be removed once we remove the useCanvas hook and\n// implement the Mask component as a node (will be faster too)\nexport const useSkiaPrivate = () => {\n const ctx = useContext(CanvasContext);\n if (!ctx) {\n throw new Error(\"Canvas context is not available\");\n }\n return ctx.Skia;\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,UAAhB,QAAkC,OAAlC;AAUA,MAAMC,aAAa,gBAAGF,KAAK,CAACG,aAAN,CAA0C,IAA1C,CAAtB;AAEA,OAAO,MAAMC,cAAc,GAAGF,aAAa,CAACG,QAArC;AAEP,OAAO,MAAMC,SAAS,GAAG,MAAM;EAC7B,MAAMC,GAAG,GAAGN,UAAU,CAACC,aAAD,CAAtB;EACAM,OAAO,CAACC,IAAR,EACE;EACA,4HAFF;;EAIA,IAAI,CAACF,GAAL,EAAU;IACR,MAAM,IAAIG,KAAJ,CAAU,iCAAV,CAAN;EACD;;EACD,OAAOH,GAAP;AACD,CAVM,C,CAYP;AACA;;AACA,OAAO,MAAMI,cAAc,GAAG,MAAM;EAClC,MAAMJ,GAAG,GAAGN,UAAU,CAACC,aAAD,CAAtB;;EACA,IAAI,CAACK,GAAL,EAAU;IACR,MAAM,IAAIG,KAAJ,CAAU,iCAAV,CAAN;EACD;;EACD,OAAOH,GAAG,CAACK,IAAX;AACD,CANM"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { useMemo } from "react";
|
|
2
1
|
import { Skia } from "../Skia";
|
|
3
2
|
|
|
4
3
|
/**
|
|
@@ -7,23 +6,6 @@ import { Skia } from "../Skia";
|
|
|
7
6
|
* @param cb Callback for drawing to the canvas
|
|
8
7
|
* @returns SkPicture
|
|
9
8
|
*/
|
|
10
|
-
export const usePicture = function (rect, cb) {
|
|
11
|
-
let deps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
|
|
12
|
-
console.warn("usePicture() is deprecated. Use createPicture() instead.");
|
|
13
|
-
return useMemo(() => {
|
|
14
|
-
const recorder = Skia.PictureRecorder();
|
|
15
|
-
const canvas = recorder.beginRecording(rect);
|
|
16
|
-
cb(canvas);
|
|
17
|
-
return recorder.finishRecordingAsPicture(); // eslint-disable-next-line react-hooks/exhaustive-deps
|
|
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
9
|
export const createPicture = (rect, cb) => {
|
|
28
10
|
const recorder = Skia.PictureRecorder();
|
|
29
11
|
const canvas = recorder.beginRecording(rect);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["Skia","createPicture","rect","cb","recorder","PictureRecorder","canvas","beginRecording","finishRecordingAsPicture"],"sources":["Picture.ts"],"sourcesContent":["import { 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 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"],"mappings":"AAAA,SAASA,IAAT,QAAqB,SAArB;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,aAAa,GAAG,CAACC,IAAD,EAAeC,EAAf,KAAkD;EAC7E,MAAMC,QAAQ,GAAGJ,IAAI,CAACK,eAAL,EAAjB;EACA,MAAMC,MAAM,GAAGF,QAAQ,CAACG,cAAT,CAAwBL,IAAxB,CAAf;EACAC,EAAE,CAACG,MAAD,CAAF;EACA,OAAOF,QAAQ,CAACI,wBAAT,EAAP;AACD,CALM"}
|
|
@@ -7,7 +7,7 @@ export const bounds = rects => {
|
|
|
7
7
|
const y = Math.min(...rects.map(r => r.y));
|
|
8
8
|
const width = Math.max(...rects.map(r => r.x + r.width));
|
|
9
9
|
const height = Math.max(...rects.map(r => r.y + r.height));
|
|
10
|
-
return rect(x, y, width, height);
|
|
10
|
+
return rect(x, y, width - x, height - y);
|
|
11
11
|
};
|
|
12
12
|
export const topLeft = r => isRRect(r) ? vec(r.rect.x, r.rect.y) : vec(r.x, r.y);
|
|
13
13
|
export const topRight = r => isRRect(r) ? vec(r.rect.x + r.rect.width, r.rect.y) : vec(r.x + r.width, r.y);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Skia","isRRect","vec","rect","x","y","width","height","XYWHRect","bounds","rects","Math","min","map","r","max","topLeft","topRight","bottomLeft","bottomRight","center"],"sources":["Rect.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { SkRect, SkRRect } from \"../types\";\nimport { isRRect } from \"../types\";\n\nimport { vec } from \"./Vector\";\n\nexport const rect = (x: number, y: number, width: number, height: number) =>\n Skia.XYWHRect(x, y, width, height);\n\nexport const bounds = (rects: SkRect[]) => {\n const x = Math.min(...rects.map((r) => r.x));\n const y = Math.min(...rects.map((r) => r.y));\n const width = Math.max(...rects.map((r) => r.x + r.width));\n const height = Math.max(...rects.map((r) => r.y + r.height));\n return rect(x, y, width, height);\n};\n\nexport const topLeft = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x, r.rect.y) : vec(r.x, r.y);\nexport const topRight = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x + r.rect.width, r.rect.y) : vec(r.x + r.width, r.y);\nexport const bottomLeft = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x, r.rect.y + r.rect.height)\n : vec(r.x, r.y + r.height);\nexport const bottomRight = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width, r.rect.y + r.rect.height)\n : vec(r.x + r.width, r.y + r.height);\nexport const center = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2)\n : vec(r.x + r.width / 2, r.y + r.height / 2);\n"],"mappings":"AAAA,SAASA,IAAT,QAAqB,SAArB;AAEA,SAASC,OAAT,QAAwB,UAAxB;AAEA,SAASC,GAAT,QAAoB,UAApB;AAEA,OAAO,MAAMC,IAAI,GAAG,CAACC,CAAD,EAAYC,CAAZ,EAAuBC,KAAvB,EAAsCC,MAAtC,KAClBP,IAAI,CAACQ,QAAL,CAAcJ,CAAd,EAAiBC,CAAjB,EAAoBC,KAApB,EAA2BC,MAA3B,CADK;AAGP,OAAO,MAAME,MAAM,GAAIC,KAAD,IAAqB;EACzC,MAAMN,CAAC,GAAGO,IAAI,CAACC,GAAL,CAAS,GAAGF,KAAK,CAACG,GAAN,CAAWC,CAAD,IAAOA,CAAC,CAACV,CAAnB,CAAZ,CAAV;EACA,MAAMC,CAAC,GAAGM,IAAI,CAACC,GAAL,CAAS,GAAGF,KAAK,CAACG,GAAN,CAAWC,CAAD,IAAOA,CAAC,CAACT,CAAnB,CAAZ,CAAV;EACA,MAAMC,KAAK,GAAGK,IAAI,CAACI,GAAL,CAAS,GAAGL,KAAK,CAACG,GAAN,CAAWC,CAAD,IAAOA,CAAC,CAACV,CAAF,GAAMU,CAAC,CAACR,KAAzB,CAAZ,CAAd;EACA,MAAMC,MAAM,GAAGI,IAAI,CAACI,GAAL,CAAS,GAAGL,KAAK,CAACG,GAAN,CAAWC,CAAD,IAAOA,CAAC,CAACT,CAAF,GAAMS,CAAC,CAACP,MAAzB,CAAZ,CAAf;EACA,OAAOJ,IAAI,CAACC,CAAD,EAAIC,CAAJ,EAAOC,
|
|
1
|
+
{"version":3,"names":["Skia","isRRect","vec","rect","x","y","width","height","XYWHRect","bounds","rects","Math","min","map","r","max","topLeft","topRight","bottomLeft","bottomRight","center"],"sources":["Rect.ts"],"sourcesContent":["import { Skia } from \"../Skia\";\nimport type { SkRect, SkRRect } from \"../types\";\nimport { isRRect } from \"../types\";\n\nimport { vec } from \"./Vector\";\n\nexport const rect = (x: number, y: number, width: number, height: number) =>\n Skia.XYWHRect(x, y, width, height);\n\nexport const bounds = (rects: SkRect[]) => {\n const x = Math.min(...rects.map((r) => r.x));\n const y = Math.min(...rects.map((r) => r.y));\n const width = Math.max(...rects.map((r) => r.x + r.width));\n const height = Math.max(...rects.map((r) => r.y + r.height));\n return rect(x, y, width - x, height - y);\n};\n\nexport const topLeft = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x, r.rect.y) : vec(r.x, r.y);\nexport const topRight = (r: SkRect | SkRRect) =>\n isRRect(r) ? vec(r.rect.x + r.rect.width, r.rect.y) : vec(r.x + r.width, r.y);\nexport const bottomLeft = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x, r.rect.y + r.rect.height)\n : vec(r.x, r.y + r.height);\nexport const bottomRight = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width, r.rect.y + r.rect.height)\n : vec(r.x + r.width, r.y + r.height);\nexport const center = (r: SkRect | SkRRect) =>\n isRRect(r)\n ? vec(r.rect.x + r.rect.width / 2, r.rect.y + r.rect.height / 2)\n : vec(r.x + r.width / 2, r.y + r.height / 2);\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["ContourMeasure.tsx"],"sourcesContent":["import type { SkJSIInstance } from \"./JsiInstance\";\nimport type { SkPath } from \"./Path/Path\";\n\nexport interface PosTan {\n px: number;\n py: number;\n tx: number;\n ty: number;\n}\n\nexport interface SkContourMeasure extends SkJSIInstance<\"ContourMeasure\"> {\n /**\n * Returns the given position and tangent line for the distance on the given contour.\n * The return value
|
|
1
|
+
{"version":3,"names":[],"sources":["ContourMeasure.tsx"],"sourcesContent":["import type { SkJSIInstance } from \"./JsiInstance\";\nimport type { SkPath } from \"./Path/Path\";\nimport type { SkPoint } from \"./Point\";\n\nexport interface PosTan {\n px: number;\n py: number;\n tx: number;\n ty: number;\n}\n\nexport interface SkContourMeasure extends SkJSIInstance<\"ContourMeasure\"> {\n /**\n * Returns the given position and tangent line for the distance on the given contour.\n * The return value an array of 2 vectors: [position, tangent]\n * @param distance - will be pinned between 0 and length().\n */\n getPosTan(distance: number): [position: SkPoint, tangent: SkPoint];\n\n /**\n * Returns an Path representing the segment of this contour.\n * @param startD - will be pinned between 0 and length()\n * @param stopD - will be pinned between 0 and length()\n * @param startWithMoveTo\n */\n getSegment(startD: number, stopD: number, startWithMoveTo: boolean): SkPath;\n\n /**\n * Returns true if the contour is closed.\n */\n isClosed(): boolean;\n\n /**\n * Returns the length of this contour.\n */\n length(): number;\n}\n\nexport interface SkContourMeasureIter\n extends SkJSIInstance<\"ContourMeasureIter\"> {\n /**\n * Iterates through contours in path, returning a contour-measure object for each contour\n * in the path. Returns null when it is done.\n *\n * See SkContourMeasure.h for more details.\n */\n next(): SkContourMeasure | null;\n}\n"],"mappings":""}
|