@shopify/react-native-skia 0.1.153 → 0.1.154

Sign up to get free protection for your applications and to get access to all the features.
@@ -414,7 +414,7 @@ public:
414
414
  JSI_HOST_FUNCTION(saveLayer) {
415
415
  SkPaint *paint = (count >= 1 && !arguments[0].isUndefined()) ?
416
416
  JsiSkPaint::fromValue(runtime, arguments[0]).get() : nullptr;
417
- SkRect *bounds = count >= 2 && !arguments[1].isNull() && arguments[1].isUndefined() ? JsiSkRect::fromValue(runtime, arguments[1]).get() : nullptr;
417
+ SkRect *bounds = count >= 2 && !arguments[1].isNull() && !arguments[1].isUndefined() ? JsiSkRect::fromValue(runtime, arguments[1]).get() : nullptr;
418
418
  SkImageFilter *backdrop = count >= 3 && !arguments[2].isNull() && !arguments[2].isUndefined() ? JsiSkImageFilter::fromValue(runtime, arguments[2]).get() : nullptr;
419
419
  SkCanvas::SaveLayerFlags flags = count >= 4 ? arguments[3].asNumber() : 0;
420
420
  return jsi::Value(_canvas->saveLayer(
@@ -1 +1 @@
1
- {"version":3,"names":["GroupNode","JsiRenderNode","constructor","ctx","props","NodeType","Group","renderNode","children","map","child","render"],"sources":["GroupNode.ts"],"sourcesContent":["import type { DrawingContext, GroupProps } from \"../types\";\nimport { NodeType } from \"../types\";\nimport type { RenderNode } from \"../types/Node\";\n\nimport { JsiRenderNode } from \"./RenderNode\";\nimport type { NodeContext } from \"./Node\";\n\nexport class GroupNode\n extends JsiRenderNode<GroupProps>\n implements RenderNode<GroupProps>\n{\n constructor(ctx: NodeContext, props: GroupProps) {\n super(ctx, NodeType.Group, props);\n }\n\n renderNode(ctx: DrawingContext): void {\n this.children().map((child) => {\n if (child instanceof JsiRenderNode) {\n child.render(ctx);\n }\n });\n }\n}\n"],"mappings":";;;;;;;AACA;;AAGA;;AAGO,MAAMA,SAAN,SACGC,yBADH,CAGP;EACEC,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAsC;IAC/C,MAAMD,GAAN,EAAWE,eAAA,CAASC,KAApB,EAA2BF,KAA3B;EACD;;EAEDG,UAAU,CAACJ,GAAD,EAA4B;IACpC,KAAKK,QAAL,GAAgBC,GAAhB,CAAqBC,KAAD,IAAW;MAC7B,IAAIA,KAAK,YAAYT,yBAArB,EAAoC;QAClCS,KAAK,CAACC,MAAN,CAAaR,GAAb;MACD;IACF,CAJD;EAKD;;AAXH"}
1
+ {"version":3,"names":["GroupNode","JsiRenderNode","constructor","ctx","props","NodeType","Group","renderNode","children","map","child","render"],"sources":["GroupNode.ts"],"sourcesContent":["import type { DrawingContext, GroupProps } from \"../types\";\nimport { NodeType } from \"../types\";\n\nimport { JsiRenderNode } from \"./RenderNode\";\nimport type { NodeContext } from \"./Node\";\n\nexport class GroupNode extends JsiRenderNode<GroupProps> {\n constructor(ctx: NodeContext, props: GroupProps) {\n super(ctx, NodeType.Group, props);\n }\n\n renderNode(ctx: DrawingContext): void {\n this.children().map((child) => {\n if (child instanceof JsiRenderNode) {\n child.render(ctx);\n }\n });\n }\n}\n"],"mappings":";;;;;;;AACA;;AAEA;;AAGO,MAAMA,SAAN,SAAwBC,yBAAxB,CAAkD;EACvDC,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAsC;IAC/C,MAAMD,GAAN,EAAWE,eAAA,CAASC,KAApB,EAA2BF,KAA3B;EACD;;EAEDG,UAAU,CAACJ,GAAD,EAA4B;IACpC,KAAKK,QAAL,GAAgBC,GAAhB,CAAqBC,KAAD,IAAW;MAC7B,IAAIA,KAAK,YAAYT,yBAArB,EAAoC;QAClCS,KAAK,CAACC,MAAN,CAAaR,GAAb;MACD;IACF,CAJD;EAKD;;AAXsD"}
@@ -211,7 +211,7 @@ class JsiRenderNode extends _Node.JsiNode {
211
211
  paint
212
212
  };
213
213
  const hasTransform = matrix !== undefined || transform !== undefined;
214
- const hasClip = this.clipRect !== undefined;
214
+ const hasClip = this.clipRect !== undefined || this.clipPath !== undefined || this.clipRRect !== undefined;
215
215
  const shouldSave = hasTransform || hasClip || !!layer;
216
216
  const op = invertClip ? _types.ClipOp.Difference : _types.ClipOp.Intersect;
217
217
 
@@ -235,13 +235,9 @@ class JsiRenderNode extends _Node.JsiNode {
235
235
 
236
236
  if (this.clipRect) {
237
237
  canvas.clipRect(this.clipRect, op, true);
238
- }
239
-
240
- if (this.clipRRect) {
238
+ } else if (this.clipRRect) {
241
239
  canvas.clipRRect(this.clipRRect, op, true);
242
- }
243
-
244
- if (this.clipPath) {
240
+ } else if (this.clipPath) {
245
241
  canvas.clipPath(this.clipPath, op, true);
246
242
  }
247
243
 
@@ -1 +1 @@
1
- {"version":3,"names":["paintProps","JsiRenderNode","JsiNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","JsiDeclarationNode","setInvalidate","insertChildBefore","before","clip","isPathDef","processPath","isRRect","processTransformProps","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","BlendMode","enumKey","PaintStyle","StrokeJoin","StrokeCap","_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","ClipOp","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 = this.props.opacity\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 = this.clipRect !== 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 }\n if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n }\n 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":"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"}
1
+ {"version":3,"names":["paintProps","JsiRenderNode","JsiNode","constructor","ctx","type","props","matrix","Skia","Matrix","onPropChange","setProps","paintCache","setProp","key","value","hasChanged","includes","identity","clipPath","undefined","clipRect","clipRRect","computeMatrix","computeClip","addChild","child","JsiDeclarationNode","setInvalidate","insertChildBefore","before","clip","isPathDef","processPath","isRRect","processTransformProps","getPaintCtx","color","strokeWidth","blendMode","style","strokeJoin","strokeCap","strokeMiter","opacity","antiAlias","Color","BlendMode","enumKey","PaintStyle","StrokeJoin","StrokeCap","_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","ClipOp","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 = this.props.opacity\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":"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"}
@@ -9,13 +9,11 @@ var _react = require("react");
9
9
 
10
10
  var _Reanimated;
11
11
 
12
- // @ts-ignore
12
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
13
  let Reanimated;
14
- let Core;
15
14
 
16
15
  try {
17
16
  Reanimated = require("react-native-reanimated");
18
- Core = require("react-native-reanimated/lib/reanimated2/core");
19
17
  } catch (e) {// Ignore
20
18
  }
21
19
 
@@ -35,36 +33,16 @@ const useSharedValueEffect = function (cb, value) {
35
33
  }
36
34
 
37
35
  const input = useSharedValueWrapper(0);
38
- const {
39
- runOnJS,
40
- startMapper,
41
- stopMapper
42
- } = (0, _react.useMemo)(() => {
43
- if (Reanimated && Core) {
44
- const {
45
- runOnJS
46
- } = Reanimated;
36
+ (0, _react.useEffect)(() => {
37
+ if (!Reanimated) {
38
+ console.warn("Reanimated was not found and the useSharedValueEffect hook will have no effect.");
39
+ } else {
47
40
  const {
48
- startMapper,
49
- stopMapper
50
- } = Core;
51
- return {
52
41
  runOnJS,
53
42
  startMapper,
54
43
  stopMapper
55
- };
56
- } else {
57
- console.warn("Reanimated was not found and the useSharedValueEffect hook will have no effect.");
58
- return {
59
- runOnJS: undefined,
60
- startMapper: undefined,
61
- stopMapper: undefined
62
- };
63
- }
64
- }, []);
65
- (0, _react.useEffect)(() => {
66
- if (startMapper !== undefined && runOnJS !== undefined && stopMapper !== undefined) {
67
- // Start a mapper in Reanimated
44
+ } = Reanimated; // Start a mapper in Reanimated
45
+
68
46
  const mapperId = startMapper(() => {
69
47
  "worklet";
70
48
 
@@ -79,7 +57,7 @@ const useSharedValueEffect = function (cb, value) {
79
57
  }
80
58
 
81
59
  return () => {}; // eslint-disable-next-line react-hooks/exhaustive-deps
82
- }, [input, runOnJS, startMapper, stopMapper, value, ...values]);
60
+ }, [input, value, ...values]);
83
61
  };
84
62
 
85
63
  exports.useSharedValueEffect = useSharedValueEffect;
@@ -1 +1 @@
1
- {"version":3,"names":["Reanimated","Core","require","e","useSharedValueWrapper","useSharedValue","undefined","value","useMemo","useSharedValueEffect","cb","values","input","runOnJS","startMapper","stopMapper","console","warn","useEffect","mapperId"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable @typescript-eslint/consistent-type-imports */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { useEffect, useMemo } from \"react\";\n\n// @ts-ignore\nlet Reanimated: typeof import(\"react-native-reanimated\") | undefined;\nlet Core: // @ts-ignore\ntypeof import(\"react-native-reanimated/lib/reanimated2/core\") | undefined;\n\ntry {\n Reanimated = require(\"react-native-reanimated\");\n Core = require(\"react-native-reanimated/lib/reanimated2/core\");\n} catch (e) {\n // Ignore\n}\n\ntype SharedValueTypeWrapper<T = number> = {\n value: T;\n};\n\nconst useSharedValueWrapper =\n Reanimated?.useSharedValue === undefined\n ? (value: number) => useMemo(() => ({ value }), [value])\n : Reanimated.useSharedValue;\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueTypeWrapper<T>,\n ...values: SharedValueTypeWrapper<T>[]\n) => {\n const input = useSharedValueWrapper(0);\n const { runOnJS, startMapper, stopMapper } = useMemo(() => {\n if (Reanimated && Core) {\n const { runOnJS } = Reanimated;\n const { startMapper, stopMapper } = Core;\n return { runOnJS, startMapper, stopMapper };\n } else {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n return {\n runOnJS: undefined,\n startMapper: undefined,\n stopMapper: undefined,\n };\n }\n }, []);\n\n useEffect(() => {\n if (\n startMapper !== undefined &&\n runOnJS !== undefined &&\n stopMapper !== undefined\n ) {\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, runOnJS, startMapper, stopMapper, value, ...values]);\n};\n"],"mappings":";;;;;;;AAGA;;;;AAEA;AACA,IAAIA,UAAJ;AACA,IAAIC,IAAJ;;AAGA,IAAI;EACFD,UAAU,GAAGE,OAAO,CAAC,yBAAD,CAApB;EACAD,IAAI,GAAGC,OAAO,CAAC,8CAAD,CAAd;AACD,CAHD,CAGE,OAAOC,CAAP,EAAU,CACV;AACD;;AAMD,MAAMC,qBAAqB,GACzB,gBAAAJ,UAAU,UAAV,kDAAYK,cAAZ,MAA+BC,SAA/B,GACKC,KAAD,IAAmB,IAAAC,cAAA,EAAQ,OAAO;EAAED;AAAF,CAAP,CAAR,EAA2B,CAACA,KAAD,CAA3B,CADvB,GAEIP,UAAU,CAACK,cAHjB;AAKA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMI,oBAAoB,GAAG,UAClCC,EADkC,EAElCH,KAFkC,EAI/B;EAAA,kCADAI,MACA;IADAA,MACA;EAAA;;EACH,MAAMC,KAAK,GAAGR,qBAAqB,CAAC,CAAD,CAAnC;EACA,MAAM;IAAES,OAAF;IAAWC,WAAX;IAAwBC;EAAxB,IAAuC,IAAAP,cAAA,EAAQ,MAAM;IACzD,IAAIR,UAAU,IAAIC,IAAlB,EAAwB;MACtB,MAAM;QAAEY;MAAF,IAAcb,UAApB;MACA,MAAM;QAAEc,WAAF;QAAeC;MAAf,IAA8Bd,IAApC;MACA,OAAO;QAAEY,OAAF;QAAWC,WAAX;QAAwBC;MAAxB,CAAP;IACD,CAJD,MAIO;MACLC,OAAO,CAACC,IAAR,CACE,iFADF;MAGA,OAAO;QACLJ,OAAO,EAAEP,SADJ;QAELQ,WAAW,EAAER,SAFR;QAGLS,UAAU,EAAET;MAHP,CAAP;IAKD;EACF,CAf4C,EAe1C,EAf0C,CAA7C;EAiBA,IAAAY,gBAAA,EAAU,MAAM;IACd,IACEJ,WAAW,KAAKR,SAAhB,IACAO,OAAO,KAAKP,SADZ,IAEAS,UAAU,KAAKT,SAHjB,EAIE;MACA;MACA,MAAMa,QAAQ,GAAGL,WAAW,CAC1B,MAAM;QACJ;;QACAD,OAAO,CAACH,EAAD,CAAP;MACD,CAJyB,EAK1B,CAACH,KAAD,EAAQ,GAAGI,MAAX,CAL0B,EAM1B,CAACC,KAAD,CAN0B,CAA5B,CAFA,CAUA;;MACA,OAAO,MAAM;QACX,IAAIG,UAAU,IAAII,QAAQ,KAAKb,SAA/B,EAA0C;UACxCS,UAAU,CAACI,QAAD,CAAV;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAtBc,CAuBd;EACD,CAxBD,EAwBG,CAACP,KAAD,EAAQC,OAAR,EAAiBC,WAAjB,EAA8BC,UAA9B,EAA0CR,KAA1C,EAAiD,GAAGI,MAApD,CAxBH;AAyBD,CAhDM"}
1
+ {"version":3,"names":["Reanimated","require","e","useSharedValueWrapper","useSharedValue","undefined","value","useMemo","useSharedValueEffect","cb","values","input","useEffect","console","warn","runOnJS","startMapper","stopMapper","mapperId"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Reanimated: any;\n\ntry {\n Reanimated = require(\"react-native-reanimated\");\n} catch (e) {\n // Ignore\n}\n\ntype SharedValueTypeWrapper<T = number> = {\n value: T;\n};\n\nconst useSharedValueWrapper =\n Reanimated?.useSharedValue === undefined\n ? (value: number) => useMemo(() => ({ value }), [value])\n : Reanimated.useSharedValue;\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueTypeWrapper<T>,\n ...values: SharedValueTypeWrapper<T>[]\n) => {\n const input = useSharedValueWrapper(0);\n\n useEffect(() => {\n if (!Reanimated) {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n } else {\n const { runOnJS, startMapper, stopMapper } = Reanimated;\n\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, value, ...values]);\n};\n"],"mappings":";;;;;;;AAAA;;;;AAEA;AACA,IAAIA,UAAJ;;AAEA,IAAI;EACFA,UAAU,GAAGC,OAAO,CAAC,yBAAD,CAApB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAMD,MAAMC,qBAAqB,GACzB,gBAAAH,UAAU,UAAV,kDAAYI,cAAZ,MAA+BC,SAA/B,GACKC,KAAD,IAAmB,IAAAC,cAAA,EAAQ,OAAO;EAAED;AAAF,CAAP,CAAR,EAA2B,CAACA,KAAD,CAA3B,CADvB,GAEIN,UAAU,CAACI,cAHjB;AAKA;AACA;AACA;AACA;AACA;AACA;;AACO,MAAMI,oBAAoB,GAAG,UAClCC,EADkC,EAElCH,KAFkC,EAI/B;EAAA,kCADAI,MACA;IADAA,MACA;EAAA;;EACH,MAAMC,KAAK,GAAGR,qBAAqB,CAAC,CAAD,CAAnC;EAEA,IAAAS,gBAAA,EAAU,MAAM;IACd,IAAI,CAACZ,UAAL,EAAiB;MACfa,OAAO,CAACC,IAAR,CACE,iFADF;IAGD,CAJD,MAIO;MACL,MAAM;QAAEC,OAAF;QAAWC,WAAX;QAAwBC;MAAxB,IAAuCjB,UAA7C,CADK,CAGL;;MACA,MAAMkB,QAAQ,GAAGF,WAAW,CAC1B,MAAM;QACJ;;QACAD,OAAO,CAACN,EAAD,CAAP;MACD,CAJyB,EAK1B,CAACH,KAAD,EAAQ,GAAGI,MAAX,CAL0B,EAM1B,CAACC,KAAD,CAN0B,CAA5B,CAJK,CAYL;;MACA,OAAO,MAAM;QACX,IAAIM,UAAU,IAAIC,QAAQ,KAAKb,SAA/B,EAA0C;UACxCY,UAAU,CAACC,QAAD,CAAV;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAxBc,CAyBd;EACD,CA1BD,EA0BG,CAACP,KAAD,EAAQL,KAAR,EAAe,GAAGI,MAAlB,CA1BH;AA2BD,CAlCM"}
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","JsiRenderNode","GroupNode","constructor","ctx","props","Group","renderNode","children","map","child","render"],"sources":["GroupNode.ts"],"sourcesContent":["import type { DrawingContext, GroupProps } from \"../types\";\nimport { NodeType } from \"../types\";\nimport type { RenderNode } from \"../types/Node\";\n\nimport { JsiRenderNode } from \"./RenderNode\";\nimport type { NodeContext } from \"./Node\";\n\nexport class GroupNode\n extends JsiRenderNode<GroupProps>\n implements RenderNode<GroupProps>\n{\n constructor(ctx: NodeContext, props: GroupProps) {\n super(ctx, NodeType.Group, props);\n }\n\n renderNode(ctx: DrawingContext): void {\n this.children().map((child) => {\n if (child instanceof JsiRenderNode) {\n child.render(ctx);\n }\n });\n }\n}\n"],"mappings":"AACA,SAASA,QAAT,QAAyB,UAAzB;AAGA,SAASC,aAAT,QAA8B,cAA9B;AAGA,OAAO,MAAMC,SAAN,SACGD,aADH,CAGP;EACEE,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAsC;IAC/C,MAAMD,GAAN,EAAWJ,QAAQ,CAACM,KAApB,EAA2BD,KAA3B;EACD;;EAEDE,UAAU,CAACH,GAAD,EAA4B;IACpC,KAAKI,QAAL,GAAgBC,GAAhB,CAAqBC,KAAD,IAAW;MAC7B,IAAIA,KAAK,YAAYT,aAArB,EAAoC;QAClCS,KAAK,CAACC,MAAN,CAAaP,GAAb;MACD;IACF,CAJD;EAKD;;AAXH"}
1
+ {"version":3,"names":["NodeType","JsiRenderNode","GroupNode","constructor","ctx","props","Group","renderNode","children","map","child","render"],"sources":["GroupNode.ts"],"sourcesContent":["import type { DrawingContext, GroupProps } from \"../types\";\nimport { NodeType } from \"../types\";\n\nimport { JsiRenderNode } from \"./RenderNode\";\nimport type { NodeContext } from \"./Node\";\n\nexport class GroupNode extends JsiRenderNode<GroupProps> {\n constructor(ctx: NodeContext, props: GroupProps) {\n super(ctx, NodeType.Group, props);\n }\n\n renderNode(ctx: DrawingContext): void {\n this.children().map((child) => {\n if (child instanceof JsiRenderNode) {\n child.render(ctx);\n }\n });\n }\n}\n"],"mappings":"AACA,SAASA,QAAT,QAAyB,UAAzB;AAEA,SAASC,aAAT,QAA8B,cAA9B;AAGA,OAAO,MAAMC,SAAN,SAAwBD,aAAxB,CAAkD;EACvDE,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAsC;IAC/C,MAAMD,GAAN,EAAWJ,QAAQ,CAACM,KAApB,EAA2BD,KAA3B;EACD;;EAEDE,UAAU,CAACH,GAAD,EAA4B;IACpC,KAAKI,QAAL,GAAgBC,GAAhB,CAAqBC,KAAD,IAAW;MAC7B,IAAIA,KAAK,YAAYT,aAArB,EAAoC;QAClCS,KAAK,CAACC,MAAN,CAAaP,GAAb;MACD;IACF,CAJD;EAKD;;AAXsD"}
@@ -199,7 +199,7 @@ export class JsiRenderNode extends JsiNode {
199
199
  paint
200
200
  };
201
201
  const hasTransform = matrix !== undefined || transform !== undefined;
202
- const hasClip = this.clipRect !== undefined;
202
+ const hasClip = this.clipRect !== undefined || this.clipPath !== undefined || this.clipRRect !== undefined;
203
203
  const shouldSave = hasTransform || hasClip || !!layer;
204
204
  const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;
205
205
 
@@ -223,13 +223,9 @@ export class JsiRenderNode extends JsiNode {
223
223
 
224
224
  if (this.clipRect) {
225
225
  canvas.clipRect(this.clipRect, op, true);
226
- }
227
-
228
- if (this.clipRRect) {
226
+ } else if (this.clipRRect) {
229
227
  canvas.clipRRect(this.clipRRect, op, true);
230
- }
231
-
232
- if (this.clipPath) {
228
+ } else if (this.clipPath) {
233
229
  canvas.clipPath(this.clipPath, op, true);
234
230
  }
235
231
 
@@ -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 = this.props.opacity\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 = this.clipRect !== 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 }\n if (this.clipRRect) {\n canvas.clipRRect(this.clipRRect, op, true);\n }\n 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":"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"}
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 = this.props.opacity\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":"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"}
@@ -1,18 +1,11 @@
1
1
  var _Reanimated;
2
2
 
3
- /* eslint-disable @typescript-eslint/no-shadow */
4
-
5
- /* eslint-disable @typescript-eslint/consistent-type-imports */
6
-
7
- /* eslint-disable @typescript-eslint/ban-ts-comment */
8
- import { useEffect, useMemo } from "react"; // @ts-ignore
3
+ import { useEffect, useMemo } from "react"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
4
 
10
5
  let Reanimated;
11
- let Core;
12
6
 
13
7
  try {
14
8
  Reanimated = require("react-native-reanimated");
15
- Core = require("react-native-reanimated/lib/reanimated2/core");
16
9
  } catch (e) {// Ignore
17
10
  }
18
11
 
@@ -32,36 +25,16 @@ export const useSharedValueEffect = function (cb, value) {
32
25
  }
33
26
 
34
27
  const input = useSharedValueWrapper(0);
35
- const {
36
- runOnJS,
37
- startMapper,
38
- stopMapper
39
- } = useMemo(() => {
40
- if (Reanimated && Core) {
41
- const {
42
- runOnJS
43
- } = Reanimated;
28
+ useEffect(() => {
29
+ if (!Reanimated) {
30
+ console.warn("Reanimated was not found and the useSharedValueEffect hook will have no effect.");
31
+ } else {
44
32
  const {
45
- startMapper,
46
- stopMapper
47
- } = Core;
48
- return {
49
33
  runOnJS,
50
34
  startMapper,
51
35
  stopMapper
52
- };
53
- } else {
54
- console.warn("Reanimated was not found and the useSharedValueEffect hook will have no effect.");
55
- return {
56
- runOnJS: undefined,
57
- startMapper: undefined,
58
- stopMapper: undefined
59
- };
60
- }
61
- }, []);
62
- useEffect(() => {
63
- if (startMapper !== undefined && runOnJS !== undefined && stopMapper !== undefined) {
64
- // Start a mapper in Reanimated
36
+ } = Reanimated; // Start a mapper in Reanimated
37
+
65
38
  const mapperId = startMapper(() => {
66
39
  "worklet";
67
40
 
@@ -76,6 +49,6 @@ export const useSharedValueEffect = function (cb, value) {
76
49
  }
77
50
 
78
51
  return () => {}; // eslint-disable-next-line react-hooks/exhaustive-deps
79
- }, [input, runOnJS, startMapper, stopMapper, value, ...values]);
52
+ }, [input, value, ...values]);
80
53
  };
81
54
  //# sourceMappingURL=useSharedValueEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useMemo","Reanimated","Core","require","e","useSharedValueWrapper","useSharedValue","undefined","value","useSharedValueEffect","cb","values","input","runOnJS","startMapper","stopMapper","console","warn","mapperId"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable @typescript-eslint/consistent-type-imports */\n/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport { useEffect, useMemo } from \"react\";\n\n// @ts-ignore\nlet Reanimated: typeof import(\"react-native-reanimated\") | undefined;\nlet Core: // @ts-ignore\ntypeof import(\"react-native-reanimated/lib/reanimated2/core\") | undefined;\n\ntry {\n Reanimated = require(\"react-native-reanimated\");\n Core = require(\"react-native-reanimated/lib/reanimated2/core\");\n} catch (e) {\n // Ignore\n}\n\ntype SharedValueTypeWrapper<T = number> = {\n value: T;\n};\n\nconst useSharedValueWrapper =\n Reanimated?.useSharedValue === undefined\n ? (value: number) => useMemo(() => ({ value }), [value])\n : Reanimated.useSharedValue;\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueTypeWrapper<T>,\n ...values: SharedValueTypeWrapper<T>[]\n) => {\n const input = useSharedValueWrapper(0);\n const { runOnJS, startMapper, stopMapper } = useMemo(() => {\n if (Reanimated && Core) {\n const { runOnJS } = Reanimated;\n const { startMapper, stopMapper } = Core;\n return { runOnJS, startMapper, stopMapper };\n } else {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n return {\n runOnJS: undefined,\n startMapper: undefined,\n stopMapper: undefined,\n };\n }\n }, []);\n\n useEffect(() => {\n if (\n startMapper !== undefined &&\n runOnJS !== undefined &&\n stopMapper !== undefined\n ) {\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, runOnJS, startMapper, stopMapper, value, ...values]);\n};\n"],"mappings":";;AAAA;;AACA;;AACA;AACA,SAASA,SAAT,EAAoBC,OAApB,QAAmC,OAAnC,C,CAEA;;AACA,IAAIC,UAAJ;AACA,IAAIC,IAAJ;;AAGA,IAAI;EACFD,UAAU,GAAGE,OAAO,CAAC,yBAAD,CAApB;EACAD,IAAI,GAAGC,OAAO,CAAC,8CAAD,CAAd;AACD,CAHD,CAGE,OAAOC,CAAP,EAAU,CACV;AACD;;AAMD,MAAMC,qBAAqB,GACzB,gBAAAJ,UAAU,UAAV,kDAAYK,cAAZ,MAA+BC,SAA/B,GACKC,KAAD,IAAmBR,OAAO,CAAC,OAAO;EAAEQ;AAAF,CAAP,CAAD,EAAoB,CAACA,KAAD,CAApB,CAD9B,GAEIP,UAAU,CAACK,cAHjB;AAKA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMG,oBAAoB,GAAG,UAClCC,EADkC,EAElCF,KAFkC,EAI/B;EAAA,kCADAG,MACA;IADAA,MACA;EAAA;;EACH,MAAMC,KAAK,GAAGP,qBAAqB,CAAC,CAAD,CAAnC;EACA,MAAM;IAAEQ,OAAF;IAAWC,WAAX;IAAwBC;EAAxB,IAAuCf,OAAO,CAAC,MAAM;IACzD,IAAIC,UAAU,IAAIC,IAAlB,EAAwB;MACtB,MAAM;QAAEW;MAAF,IAAcZ,UAApB;MACA,MAAM;QAAEa,WAAF;QAAeC;MAAf,IAA8Bb,IAApC;MACA,OAAO;QAAEW,OAAF;QAAWC,WAAX;QAAwBC;MAAxB,CAAP;IACD,CAJD,MAIO;MACLC,OAAO,CAACC,IAAR,CACE,iFADF;MAGA,OAAO;QACLJ,OAAO,EAAEN,SADJ;QAELO,WAAW,EAAEP,SAFR;QAGLQ,UAAU,EAAER;MAHP,CAAP;IAKD;EACF,CAfmD,EAejD,EAfiD,CAApD;EAiBAR,SAAS,CAAC,MAAM;IACd,IACEe,WAAW,KAAKP,SAAhB,IACAM,OAAO,KAAKN,SADZ,IAEAQ,UAAU,KAAKR,SAHjB,EAIE;MACA;MACA,MAAMW,QAAQ,GAAGJ,WAAW,CAC1B,MAAM;QACJ;;QACAD,OAAO,CAACH,EAAD,CAAP;MACD,CAJyB,EAK1B,CAACF,KAAD,EAAQ,GAAGG,MAAX,CAL0B,EAM1B,CAACC,KAAD,CAN0B,CAA5B,CAFA,CAUA;;MACA,OAAO,MAAM;QACX,IAAIG,UAAU,IAAIG,QAAQ,KAAKX,SAA/B,EAA0C;UACxCQ,UAAU,CAACG,QAAD,CAAV;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAtBc,CAuBd;EACD,CAxBQ,EAwBN,CAACN,KAAD,EAAQC,OAAR,EAAiBC,WAAjB,EAA8BC,UAA9B,EAA0CP,KAA1C,EAAiD,GAAGG,MAApD,CAxBM,CAAT;AAyBD,CAhDM"}
1
+ {"version":3,"names":["useEffect","useMemo","Reanimated","require","e","useSharedValueWrapper","useSharedValue","undefined","value","useSharedValueEffect","cb","values","input","console","warn","runOnJS","startMapper","stopMapper","mapperId"],"sources":["useSharedValueEffect.ts"],"sourcesContent":["import { useEffect, useMemo } from \"react\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet Reanimated: any;\n\ntry {\n Reanimated = require(\"react-native-reanimated\");\n} catch (e) {\n // Ignore\n}\n\ntype SharedValueTypeWrapper<T = number> = {\n value: T;\n};\n\nconst useSharedValueWrapper =\n Reanimated?.useSharedValue === undefined\n ? (value: number) => useMemo(() => ({ value }), [value])\n : Reanimated.useSharedValue;\n\n/**\n * Connects a shared value from reanimated to a SkiaView or Canvas\n * so whenever the shared value changes the SkiaView will redraw.\n * @param cb Callback that will be called whenever the shared value changes.\n * @param values One or more shared values to listen for.\n */\nexport const useSharedValueEffect = <T = number>(\n cb: () => void,\n value: SharedValueTypeWrapper<T>,\n ...values: SharedValueTypeWrapper<T>[]\n) => {\n const input = useSharedValueWrapper(0);\n\n useEffect(() => {\n if (!Reanimated) {\n console.warn(\n \"Reanimated was not found and the useSharedValueEffect hook will have no effect.\"\n );\n } else {\n const { runOnJS, startMapper, stopMapper } = Reanimated;\n\n // Start a mapper in Reanimated\n const mapperId = startMapper(\n () => {\n \"worklet\";\n runOnJS(cb)();\n },\n [value, ...values],\n [input]\n );\n // Return unregistering the mapper\n return () => {\n if (stopMapper && mapperId !== undefined) {\n stopMapper(mapperId);\n }\n };\n }\n return () => {};\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [input, value, ...values]);\n};\n"],"mappings":";;AAAA,SAASA,SAAT,EAAoBC,OAApB,QAAmC,OAAnC,C,CAEA;;AACA,IAAIC,UAAJ;;AAEA,IAAI;EACFA,UAAU,GAAGC,OAAO,CAAC,yBAAD,CAApB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAMD,MAAMC,qBAAqB,GACzB,gBAAAH,UAAU,UAAV,kDAAYI,cAAZ,MAA+BC,SAA/B,GACKC,KAAD,IAAmBP,OAAO,CAAC,OAAO;EAAEO;AAAF,CAAP,CAAD,EAAoB,CAACA,KAAD,CAApB,CAD9B,GAEIN,UAAU,CAACI,cAHjB;AAKA;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,MAAMG,oBAAoB,GAAG,UAClCC,EADkC,EAElCF,KAFkC,EAI/B;EAAA,kCADAG,MACA;IADAA,MACA;EAAA;;EACH,MAAMC,KAAK,GAAGP,qBAAqB,CAAC,CAAD,CAAnC;EAEAL,SAAS,CAAC,MAAM;IACd,IAAI,CAACE,UAAL,EAAiB;MACfW,OAAO,CAACC,IAAR,CACE,iFADF;IAGD,CAJD,MAIO;MACL,MAAM;QAAEC,OAAF;QAAWC,WAAX;QAAwBC;MAAxB,IAAuCf,UAA7C,CADK,CAGL;;MACA,MAAMgB,QAAQ,GAAGF,WAAW,CAC1B,MAAM;QACJ;;QACAD,OAAO,CAACL,EAAD,CAAP;MACD,CAJyB,EAK1B,CAACF,KAAD,EAAQ,GAAGG,MAAX,CAL0B,EAM1B,CAACC,KAAD,CAN0B,CAA5B,CAJK,CAYL;;MACA,OAAO,MAAM;QACX,IAAIK,UAAU,IAAIC,QAAQ,KAAKX,SAA/B,EAA0C;UACxCU,UAAU,CAACC,QAAD,CAAV;QACD;MACF,CAJD;IAKD;;IACD,OAAO,MAAM,CAAE,CAAf,CAxBc,CAyBd;EACD,CA1BQ,EA0BN,CAACN,KAAD,EAAQJ,KAAR,EAAe,GAAGG,MAAlB,CA1BM,CAAT;AA2BD,CAlCM"}
@@ -1,8 +1,7 @@
1
1
  import type { DrawingContext, GroupProps } from "../types";
2
- import type { RenderNode } from "../types/Node";
3
2
  import { JsiRenderNode } from "./RenderNode";
4
3
  import type { NodeContext } from "./Node";
5
- export declare class GroupNode extends JsiRenderNode<GroupProps> implements RenderNode<GroupProps> {
4
+ export declare class GroupNode extends JsiRenderNode<GroupProps> {
6
5
  constructor(ctx: NodeContext, props: GroupProps);
7
6
  renderNode(ctx: DrawingContext): void;
8
7
  }
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "setup-skia-web": "./scripts/setup-canvaskit.js"
8
8
  },
9
9
  "title": "React Native Skia",
10
- "version": "0.1.153",
10
+ "version": "0.1.154",
11
11
  "description": "High-performance React Native Graphics using Skia",
12
12
  "main": "lib/module/index.js",
13
13
  "files": [
@@ -1,14 +1,10 @@
1
1
  import type { DrawingContext, GroupProps } from "../types";
2
2
  import { NodeType } from "../types";
3
- import type { RenderNode } from "../types/Node";
4
3
 
5
4
  import { JsiRenderNode } from "./RenderNode";
6
5
  import type { NodeContext } from "./Node";
7
6
 
8
- export class GroupNode
9
- extends JsiRenderNode<GroupProps>
10
- implements RenderNode<GroupProps>
11
- {
7
+ export class GroupNode extends JsiRenderNode<GroupProps> {
12
8
  constructor(ctx: NodeContext, props: GroupProps) {
13
9
  super(ctx, NodeType.Group, props);
14
10
  }
@@ -229,7 +229,10 @@ export abstract class JsiRenderNode<P extends GroupProps>
229
229
  // TODO: can we only recreate a new context here if needed?
230
230
  const ctx = { ...parentCtx, opacity, paint };
231
231
  const hasTransform = matrix !== undefined || transform !== undefined;
232
- const hasClip = this.clipRect !== undefined;
232
+ const hasClip =
233
+ this.clipRect !== undefined ||
234
+ this.clipPath !== undefined ||
235
+ this.clipRRect !== undefined;
233
236
  const shouldSave = hasTransform || hasClip || !!layer;
234
237
  const op = invertClip ? ClipOp.Difference : ClipOp.Intersect;
235
238
 
@@ -254,11 +257,9 @@ export abstract class JsiRenderNode<P extends GroupProps>
254
257
  }
255
258
  if (this.clipRect) {
256
259
  canvas.clipRect(this.clipRect, op, true);
257
- }
258
- if (this.clipRRect) {
260
+ } else if (this.clipRRect) {
259
261
  canvas.clipRRect(this.clipRRect, op, true);
260
- }
261
- if (this.clipPath) {
262
+ } else if (this.clipPath) {
262
263
  canvas.clipPath(this.clipPath, op, true);
263
264
  }
264
265
 
@@ -1,16 +1,10 @@
1
- /* eslint-disable @typescript-eslint/no-shadow */
2
- /* eslint-disable @typescript-eslint/consistent-type-imports */
3
- /* eslint-disable @typescript-eslint/ban-ts-comment */
4
1
  import { useEffect, useMemo } from "react";
5
2
 
6
- // @ts-ignore
7
- let Reanimated: typeof import("react-native-reanimated") | undefined;
8
- let Core: // @ts-ignore
9
- typeof import("react-native-reanimated/lib/reanimated2/core") | undefined;
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ let Reanimated: any;
10
5
 
11
6
  try {
12
7
  Reanimated = require("react-native-reanimated");
13
- Core = require("react-native-reanimated/lib/reanimated2/core");
14
8
  } catch (e) {
15
9
  // Ignore
16
10
  }
@@ -36,29 +30,15 @@ export const useSharedValueEffect = <T = number>(
36
30
  ...values: SharedValueTypeWrapper<T>[]
37
31
  ) => {
38
32
  const input = useSharedValueWrapper(0);
39
- const { runOnJS, startMapper, stopMapper } = useMemo(() => {
40
- if (Reanimated && Core) {
41
- const { runOnJS } = Reanimated;
42
- const { startMapper, stopMapper } = Core;
43
- return { runOnJS, startMapper, stopMapper };
44
- } else {
33
+
34
+ useEffect(() => {
35
+ if (!Reanimated) {
45
36
  console.warn(
46
37
  "Reanimated was not found and the useSharedValueEffect hook will have no effect."
47
38
  );
48
- return {
49
- runOnJS: undefined,
50
- startMapper: undefined,
51
- stopMapper: undefined,
52
- };
53
- }
54
- }, []);
39
+ } else {
40
+ const { runOnJS, startMapper, stopMapper } = Reanimated;
55
41
 
56
- useEffect(() => {
57
- if (
58
- startMapper !== undefined &&
59
- runOnJS !== undefined &&
60
- stopMapper !== undefined
61
- ) {
62
42
  // Start a mapper in Reanimated
63
43
  const mapperId = startMapper(
64
44
  () => {
@@ -77,5 +57,5 @@ export const useSharedValueEffect = <T = number>(
77
57
  }
78
58
  return () => {};
79
59
  // eslint-disable-next-line react-hooks/exhaustive-deps
80
- }, [input, runOnJS, startMapper, stopMapper, value, ...values]);
60
+ }, [input, value, ...values]);
81
61
  };