@shopify/react-native-skia
Version:
High-performance React Native Graphics using Skia
195 lines (137 loc) • 4.54 kB
JavaScript
import { NodeType } from "../dom/types";
import { exhaustiveCheck } from "./typeddash";
// This flag should only be turned on for debugging/testing
const shouldUseJSDomOnNative = false;
export const NATIVE_DOM = shouldUseJSDomOnNative ? false : !!global.SkiaDomApi;
export const createNode = (container, type, props) => {
const {
Sk
} = container;
switch (type) {
case NodeType.Layer:
return Sk.Layer(props);
case NodeType.Group:
return Sk.Group(props);
case NodeType.Paint:
return Sk.Paint(props);
// Drawings
case NodeType.Fill:
return Sk.Fill(props);
case NodeType.Image:
return Sk.Image(props);
case NodeType.Circle:
return Sk.Circle(props);
case NodeType.Path:
return Sk.Path(props);
case NodeType.Drawing:
return Sk.CustomDrawing(props);
case NodeType.Line:
return Sk.Line(props);
case NodeType.Oval:
return Sk.Oval(props);
case NodeType.Patch:
return Sk.Patch(props);
case NodeType.Points:
return Sk.Points(props);
case NodeType.Rect:
return Sk.Rect(props);
case NodeType.RRect:
return Sk.RRect(props);
case NodeType.Vertices:
return Sk.Vertices(props);
case NodeType.Text:
return Sk.Text(props);
case NodeType.TextPath:
return Sk.TextPath(props);
case NodeType.TextBlob:
return Sk.TextBlob(props);
case NodeType.Glyphs:
return Sk.Glyphs(props);
case NodeType.DiffRect:
return Sk.DiffRect(props);
case NodeType.Picture:
return Sk.Picture(props);
case NodeType.ImageSVG:
return Sk.ImageSVG(props);
// Mask Filter
case NodeType.BlurMaskFilter:
return Sk.BlurMaskFilter(props);
// Image Filter
case NodeType.BlendImageFilter:
return Sk.BlendImageFilter(props);
case NodeType.BlurImageFilter:
return Sk.BlurImageFilter(props);
case NodeType.OffsetImageFilter:
return Sk.OffsetImageFilter(props);
case NodeType.DropShadowImageFilter:
return Sk.DropShadowImageFilter(props);
case NodeType.DisplacementMapImageFilter:
return Sk.DisplacementMapImageFilter(props);
case NodeType.MorphologyImageFilter:
return Sk.MorphologyImageFilter(props);
case NodeType.RuntimeShaderImageFilter:
return Sk.RuntimeShaderImageFilter(props);
// Color Filter
case NodeType.MatrixColorFilter:
return Sk.MatrixColorFilter(props);
case NodeType.BlendColorFilter:
return Sk.BlendColorFilter(props);
case NodeType.LerpColorFilter:
return Sk.LerpColorFilter(props);
case NodeType.LumaColorFilter:
return Sk.LumaColorFilter();
case NodeType.LinearToSRGBGammaColorFilter:
return Sk.LinearToSRGBGammaColorFilter();
case NodeType.SRGBToLinearGammaColorFilter:
return Sk.SRGBToLinearGammaColorFilter();
// Shader
case NodeType.Shader:
return Sk.Shader(props);
case NodeType.ImageShader:
return Sk.ImageShader(props);
case NodeType.ColorShader:
return Sk.ColorShader(props);
case NodeType.Turbulence:
return Sk.Turbulence(props);
case NodeType.FractalNoise:
return Sk.FractalNoise(props);
case NodeType.LinearGradient:
return Sk.LinearGradient(props);
case NodeType.RadialGradient:
return Sk.RadialGradient(props);
case NodeType.SweepGradient:
return Sk.SweepGradient(props);
case NodeType.TwoPointConicalGradient:
return Sk.TwoPointConicalGradient(props);
// Path Effect
case NodeType.CornerPathEffect:
return Sk.CornerPathEffect(props);
case NodeType.DiscretePathEffect:
return Sk.DiscretePathEffect(props);
case NodeType.DashPathEffect:
return Sk.DashPathEffect(props);
case NodeType.Path1DPathEffect:
return Sk.Path1DPathEffect(props);
case NodeType.Path2DPathEffect:
return Sk.Path2DPathEffect(props);
case NodeType.SumPathEffect:
return Sk.SumPathEffect();
case NodeType.Line2DPathEffect:
return Sk.Line2DPathEffect(props);
// Mixed
case NodeType.Blend:
return Sk.Blend(props);
case NodeType.BackdropFilter:
return Sk.BackdropFilter(props);
case NodeType.Box:
return Sk.Box(props);
case NodeType.BoxShadow:
return Sk.BoxShadow(props);
// Paragraph
case NodeType.Paragraph:
return Sk.Paragraph(props);
default:
return exhaustiveCheck(type);
}
};
//# sourceMappingURL=HostComponents.js.map