UNPKG

3.11 kBJavaScriptView Raw
1const {
2 GraphQLInputObjectType,
3 GraphQLBoolean,
4 GraphQLString,
5 GraphQLInt,
6 GraphQLFloat,
7 GraphQLEnumType,
8 GraphQLNonNull,
9} = require(`gatsby/graphql`)
10const sharp = require(`./safe-sharp`)
11const { Potrace } = require(`potrace`)
12
13export const ImageFormatType = new GraphQLEnumType({
14 name: `ImageFormat`,
15 values: {
16 NO_CHANGE: { value: `` },
17 JPG: { value: `jpg` },
18 PNG: { value: `png` },
19 WEBP: { value: `webp` },
20 },
21})
22
23export const ImageLayoutType = new GraphQLEnumType({
24 name: `ImageLayout`,
25 values: {
26 FIXED: { value: `fixed` },
27 FLUID: { value: `fluid` },
28 CONSTRAINED: { value: `constrained` },
29 },
30})
31
32export const ImagePlaceholderType = new GraphQLEnumType({
33 name: `ImagePlaceholder`,
34 values: {
35 DOMINANT_COLOR: { value: `dominantColor` },
36 TRACED_SVG: { value: `tracedSVG` },
37 BASE64: { value: `base64` },
38 NONE: { value: `none` },
39 },
40})
41
42export const ImageFitType = new GraphQLEnumType({
43 name: `ImageFit`,
44 values: {
45 COVER: { value: sharp.fit.cover },
46 CONTAIN: { value: sharp.fit.contain },
47 FILL: { value: sharp.fit.fill },
48 INSIDE: { value: sharp.fit.inside },
49 OUTSIDE: { value: sharp.fit.outside },
50 },
51})
52
53export const ImageCropFocusType = new GraphQLEnumType({
54 name: `ImageCropFocus`,
55 values: {
56 CENTER: { value: sharp.gravity.center },
57 NORTH: { value: sharp.gravity.north },
58 NORTHEAST: { value: sharp.gravity.northeast },
59 EAST: { value: sharp.gravity.east },
60 SOUTHEAST: { value: sharp.gravity.southeast },
61 SOUTH: { value: sharp.gravity.south },
62 SOUTHWEST: { value: sharp.gravity.southwest },
63 WEST: { value: sharp.gravity.west },
64 NORTHWEST: { value: sharp.gravity.northwest },
65 ENTROPY: { value: sharp.strategy.entropy },
66 ATTENTION: { value: sharp.strategy.attention },
67 },
68})
69
70export const DuotoneGradientType = new GraphQLInputObjectType({
71 name: `DuotoneGradient`,
72 fields: () => {
73 return {
74 highlight: { type: new GraphQLNonNull(GraphQLString) },
75 shadow: { type: new GraphQLNonNull(GraphQLString) },
76 opacity: { type: GraphQLInt },
77 }
78 },
79})
80
81export const PotraceTurnPolicyType = new GraphQLEnumType({
82 name: `PotraceTurnPolicy`,
83 values: {
84 TURNPOLICY_BLACK: { value: Potrace.TURNPOLICY_BLACK },
85 TURNPOLICY_WHITE: { value: Potrace.TURNPOLICY_WHITE },
86 TURNPOLICY_LEFT: { value: Potrace.TURNPOLICY_LEFT },
87 TURNPOLICY_RIGHT: { value: Potrace.TURNPOLICY_RIGHT },
88 TURNPOLICY_MINORITY: { value: Potrace.TURNPOLICY_MINORITY },
89 TURNPOLICY_MAJORITY: { value: Potrace.TURNPOLICY_MAJORITY },
90 },
91})
92
93export const PotraceType = new GraphQLInputObjectType({
94 name: `Potrace`,
95 fields: () => {
96 return {
97 turnPolicy: {
98 type: PotraceTurnPolicyType,
99 },
100 turdSize: { type: GraphQLFloat },
101 alphaMax: { type: GraphQLFloat },
102 optCurve: { type: GraphQLBoolean },
103 optTolerance: { type: GraphQLFloat },
104 threshold: { type: GraphQLInt },
105 blackOnWhite: { type: GraphQLBoolean },
106 color: { type: GraphQLString },
107 background: { type: GraphQLString },
108 }
109 },
110})