1 | const {
|
2 | GraphQLInputObjectType,
|
3 | GraphQLBoolean,
|
4 | GraphQLString,
|
5 | GraphQLInt,
|
6 | GraphQLFloat,
|
7 | GraphQLEnumType,
|
8 | GraphQLNonNull,
|
9 | } = require(`gatsby/graphql`)
|
10 | const sharp = require(`./safe-sharp`)
|
11 | const { Potrace } = require(`potrace`)
|
12 |
|
13 | export 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 |
|
23 | export const ImageLayoutType = new GraphQLEnumType({
|
24 | name: `ImageLayout`,
|
25 | values: {
|
26 | FIXED: { value: `fixed` },
|
27 | FLUID: { value: `fluid` },
|
28 | CONSTRAINED: { value: `constrained` },
|
29 | },
|
30 | })
|
31 |
|
32 | export 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 |
|
42 | export 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 |
|
53 | export 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 |
|
70 | export 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 |
|
81 | export 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 |
|
93 | export 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 | })
|