1 | "use strict";
|
2 |
|
3 | const {
|
4 | GraphQLInputObjectType,
|
5 | GraphQLBoolean,
|
6 | GraphQLString,
|
7 | GraphQLInt,
|
8 | GraphQLFloat,
|
9 | GraphQLEnumType,
|
10 | GraphQLNonNull
|
11 | } = require(`gatsby/graphql`);
|
12 |
|
13 | const sharp = require(`./safe-sharp`);
|
14 |
|
15 | const {
|
16 | Potrace
|
17 | } = require(`potrace`);
|
18 |
|
19 | const ImageFormatType = new GraphQLEnumType({
|
20 | name: `ImageFormat`,
|
21 | values: {
|
22 | NO_CHANGE: {
|
23 | value: ``
|
24 | },
|
25 | JPG: {
|
26 | value: `jpg`
|
27 | },
|
28 | PNG: {
|
29 | value: `png`
|
30 | },
|
31 | WEBP: {
|
32 | value: `webp`
|
33 | }
|
34 | }
|
35 | });
|
36 | const ImageFitType = new GraphQLEnumType({
|
37 | name: `ImageFit`,
|
38 | values: {
|
39 | COVER: {
|
40 | value: sharp.fit.cover
|
41 | },
|
42 | CONTAIN: {
|
43 | value: sharp.fit.contain
|
44 | },
|
45 | FILL: {
|
46 | value: sharp.fit.fill
|
47 | },
|
48 | INSIDE: {
|
49 | value: sharp.fit.inside
|
50 | },
|
51 | OUTSIDE: {
|
52 | value: sharp.fit.outside
|
53 | }
|
54 | }
|
55 | });
|
56 | const ImageCropFocusType = new GraphQLEnumType({
|
57 | name: `ImageCropFocus`,
|
58 | values: {
|
59 | CENTER: {
|
60 | value: sharp.gravity.center
|
61 | },
|
62 | NORTH: {
|
63 | value: sharp.gravity.north
|
64 | },
|
65 | NORTHEAST: {
|
66 | value: sharp.gravity.northeast
|
67 | },
|
68 | EAST: {
|
69 | value: sharp.gravity.east
|
70 | },
|
71 | SOUTHEAST: {
|
72 | value: sharp.gravity.southeast
|
73 | },
|
74 | SOUTH: {
|
75 | value: sharp.gravity.south
|
76 | },
|
77 | SOUTHWEST: {
|
78 | value: sharp.gravity.southwest
|
79 | },
|
80 | WEST: {
|
81 | value: sharp.gravity.west
|
82 | },
|
83 | NORTHWEST: {
|
84 | value: sharp.gravity.northwest
|
85 | },
|
86 | ENTROPY: {
|
87 | value: sharp.strategy.entropy
|
88 | },
|
89 | ATTENTION: {
|
90 | value: sharp.strategy.attention
|
91 | }
|
92 | }
|
93 | });
|
94 | const DuotoneGradientType = new GraphQLInputObjectType({
|
95 | name: `DuotoneGradient`,
|
96 | fields: () => {
|
97 | return {
|
98 | highlight: {
|
99 | type: new GraphQLNonNull(GraphQLString)
|
100 | },
|
101 | shadow: {
|
102 | type: new GraphQLNonNull(GraphQLString)
|
103 | },
|
104 | opacity: {
|
105 | type: GraphQLInt
|
106 | }
|
107 | };
|
108 | }
|
109 | });
|
110 | const PotraceTurnPolicyType = new GraphQLEnumType({
|
111 | name: `PotraceTurnPolicy`,
|
112 | values: {
|
113 | TURNPOLICY_BLACK: {
|
114 | value: Potrace.TURNPOLICY_BLACK
|
115 | },
|
116 | TURNPOLICY_WHITE: {
|
117 | value: Potrace.TURNPOLICY_WHITE
|
118 | },
|
119 | TURNPOLICY_LEFT: {
|
120 | value: Potrace.TURNPOLICY_LEFT
|
121 | },
|
122 | TURNPOLICY_RIGHT: {
|
123 | value: Potrace.TURNPOLICY_RIGHT
|
124 | },
|
125 | TURNPOLICY_MINORITY: {
|
126 | value: Potrace.TURNPOLICY_MINORITY
|
127 | },
|
128 | TURNPOLICY_MAJORITY: {
|
129 | value: Potrace.TURNPOLICY_MAJORITY
|
130 | }
|
131 | }
|
132 | });
|
133 | const PotraceType = new GraphQLInputObjectType({
|
134 | name: `Potrace`,
|
135 | fields: () => {
|
136 | return {
|
137 | turnPolicy: {
|
138 | type: PotraceTurnPolicyType
|
139 | },
|
140 | turdSize: {
|
141 | type: GraphQLFloat
|
142 | },
|
143 | alphaMax: {
|
144 | type: GraphQLFloat
|
145 | },
|
146 | optCurve: {
|
147 | type: GraphQLBoolean
|
148 | },
|
149 | optTolerance: {
|
150 | type: GraphQLFloat
|
151 | },
|
152 | threshold: {
|
153 | type: GraphQLInt
|
154 | },
|
155 | blackOnWhite: {
|
156 | type: GraphQLBoolean
|
157 | },
|
158 | color: {
|
159 | type: GraphQLString
|
160 | },
|
161 | background: {
|
162 | type: GraphQLString
|
163 | }
|
164 | };
|
165 | }
|
166 | });
|
167 | module.exports = {
|
168 | ImageFormatType,
|
169 | ImageFitType,
|
170 | ImageCropFocusType,
|
171 | DuotoneGradientType,
|
172 | PotraceTurnPolicyType,
|
173 | PotraceType
|
174 | }; |
\ | No newline at end of file |