@rubixstudios/payload-images 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import { type SearchImagesProps } from '../../types.js';
3
3
  import './style.css';
4
- export declare const previewImageDrawerSlug = "preview-image";
5
4
  export declare const SearchImages: (props: SearchImagesProps) => React.JSX.Element;
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SearchImages/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAC/D,OAAO,EAYL,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,sBAAsB,kBAAkB,CAAA;AAErD,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,sBAkjBpD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SearchImages/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAC/D,OAAO,EAYL,KAAK,iBAAiB,EAGvB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,sBAiiBpD,CAAA"}
@@ -6,19 +6,18 @@ import { fetchCache } from '../../utils/fetchCache.js';
6
6
  import { HeartIcon } from '../SearchImages/heart.js';
7
7
  import './style.css';
8
8
  const baseClass = 'search-images';
9
- export const previewImageDrawerSlug = 'preview-image';
10
9
  export const SearchImages = (props)=>{
11
10
  const { serverURL, api, onSelect } = props;
12
- const [providerFilters, setProviderFilters] = useState(null);
13
- const [providerOptions, setProviderOptions] = useState([]);
14
11
  const [selectedProvider, setSelectedProvider] = useState(null);
12
+ const [providerOptions, setProviderOptions] = useState([]);
13
+ const [filters, setFilters] = useState(null);
15
14
  const [images, setImages] = useState(null);
16
- const [totalPages, setTotalPages] = useState(null);
17
15
  const [currentPage, setCurrentPage] = useState(null);
16
+ const [totalPages, setTotalPages] = useState(null);
18
17
  const [loading, setLoading] = useState(true);
19
18
  const [show, setShow] = useState(false);
20
19
  const [value, setValue] = useState('');
21
- const addDefaultError = useCallback(()=>{
20
+ const defaultError = useCallback(()=>{
22
21
  toast.error('Something went wrong.');
23
22
  }, []);
24
23
  const resetImages = useCallback(()=>{
@@ -41,50 +40,34 @@ export const SearchImages = (props)=>{
41
40
  setProviderOptions(providers);
42
41
  const first = providers[0];
43
42
  if (!first) return;
43
+ setFilters({
44
+ provider: first.value,
45
+ options: {}
46
+ });
44
47
  setSelectedProvider(first);
45
- switch(first.value){
46
- case 'unsplash':
47
- setProviderFilters({
48
- provider: 'unsplash',
49
- filters: {}
50
- });
51
- break;
52
- case 'pexels':
53
- setProviderFilters({
54
- provider: 'pexels',
55
- filters: {}
56
- });
57
- break;
58
- case 'pixabay':
59
- setProviderFilters({
60
- provider: 'pixabay',
61
- filters: {}
62
- });
63
- break;
64
- }
65
48
  } catch {
66
49
  setLoading(false);
67
- addDefaultError();
50
+ defaultError();
68
51
  }
69
52
  }, [
70
53
  serverURL,
71
54
  api,
72
- addDefaultError
55
+ defaultError
73
56
  ]);
74
57
  const buildFeaturedParams = useCallback(()=>{
75
- if (!providerFilters) return '';
58
+ if (!filters) return '';
76
59
  const params = new URLSearchParams();
77
- switch(providerFilters.provider){
60
+ switch(filters.provider){
78
61
  case 'unsplash':
79
62
  {
80
- const { color, orientation } = providerFilters.filters;
63
+ const { color, orientation } = filters.options;
81
64
  if (color) params.set('color', color);
82
65
  if (orientation) params.set('orientation', orientation);
83
66
  break;
84
67
  }
85
68
  case 'pexels':
86
69
  {
87
- const { color, orientation, size } = providerFilters.filters;
70
+ const { color, orientation, size } = filters.options;
88
71
  if (color) params.set('color', color);
89
72
  if (orientation) params.set('orientation', orientation);
90
73
  if (size) params.set('size', size);
@@ -92,7 +75,7 @@ export const SearchImages = (props)=>{
92
75
  }
93
76
  case 'pixabay':
94
77
  {
95
- const { category, image_type, order, orientation, colors } = providerFilters.filters;
78
+ const { category, image_type, order, orientation, colors } = filters.options;
96
79
  if (category) params.set('category', category);
97
80
  if (image_type) params.set('image_type', image_type);
98
81
  if (order) params.set('order', order);
@@ -104,42 +87,48 @@ export const SearchImages = (props)=>{
104
87
  const query = params.toString();
105
88
  return query ? `?${query}` : '';
106
89
  }, [
107
- providerFilters
90
+ filters
108
91
  ]);
109
92
  const getFeaturedPhotos = useCallback(async ()=>{
93
+ if (!selectedProvider?.value) return;
94
+ if (!filters) return;
110
95
  try {
111
96
  setLoading(true);
112
- const json = await fetchCache(`${serverURL}${api}/providers/${selectedProvider?.value}/featured${buildFeaturedParams()}`);
113
- if (json.error) return toast.error(json.error);
97
+ const json = await fetchCache(`${serverURL}${api}/providers/${selectedProvider.value}/featured${buildFeaturedParams()}`);
98
+ if (json.error) {
99
+ toast.error(json.error);
100
+ return;
101
+ }
114
102
  setImages(json.data.images);
115
103
  } catch {
116
- addDefaultError();
104
+ defaultError();
117
105
  } finally{
118
106
  setLoading(false);
119
107
  }
120
108
  }, [
121
109
  serverURL,
122
110
  api,
123
- selectedProvider?.value,
124
- addDefaultError,
125
- buildFeaturedParams
111
+ selectedProvider,
112
+ filters,
113
+ buildFeaturedParams,
114
+ defaultError
126
115
  ]);
127
116
  const buildQueryParams = useCallback((page = 1)=>{
128
- if (!providerFilters) return '';
117
+ if (!filters) return '';
129
118
  const params = new URLSearchParams();
130
119
  params.set('query', value);
131
120
  params.set('page', String(page));
132
- switch(providerFilters.provider){
121
+ switch(filters.provider){
133
122
  case 'unsplash':
134
123
  {
135
- const { color, orientation } = providerFilters.filters;
124
+ const { color, orientation } = filters.options;
136
125
  if (color) params.set('color', color);
137
126
  if (orientation) params.set('orientation', orientation);
138
127
  break;
139
128
  }
140
129
  case 'pexels':
141
130
  {
142
- const { color, orientation, size } = providerFilters.filters;
131
+ const { color, orientation, size } = filters.options;
143
132
  if (color) params.set('color', color);
144
133
  if (orientation) params.set('orientation', orientation);
145
134
  if (size) params.set('size', size);
@@ -147,7 +136,7 @@ export const SearchImages = (props)=>{
147
136
  }
148
137
  case 'pixabay':
149
138
  {
150
- const { category, image_type, order, orientation, colors } = providerFilters.filters;
139
+ const { category, image_type, order, orientation, colors } = filters.options;
151
140
  if (category) params.set('category', category);
152
141
  if (image_type) params.set('image_type', image_type);
153
142
  if (order) params.set('order', order);
@@ -158,7 +147,7 @@ export const SearchImages = (props)=>{
158
147
  }
159
148
  return params.toString();
160
149
  }, [
161
- providerFilters,
150
+ filters,
162
151
  value
163
152
  ]);
164
153
  const getPhotos = useCallback(async (page = 1)=>{
@@ -170,7 +159,7 @@ export const SearchImages = (props)=>{
170
159
  setTotalPages(json.data.totalPages);
171
160
  setCurrentPage(page);
172
161
  } catch {
173
- addDefaultError();
162
+ defaultError();
174
163
  } finally{
175
164
  setLoading(false);
176
165
  }
@@ -178,7 +167,7 @@ export const SearchImages = (props)=>{
178
167
  serverURL,
179
168
  api,
180
169
  selectedProvider?.value,
181
- addDefaultError,
170
+ defaultError,
182
171
  buildQueryParams
183
172
  ]);
184
173
  const handleSearchFilterChange = useCallback((search)=>{
@@ -188,28 +177,12 @@ export const SearchImages = (props)=>{
188
177
  resetImages
189
178
  ]);
190
179
  const handleSelectChange = useCallback((select)=>{
180
+ setFilters({
181
+ provider: select.value,
182
+ options: {}
183
+ });
191
184
  setSelectedProvider(select);
192
185
  resetImages();
193
- switch(select.value){
194
- case 'unsplash':
195
- setProviderFilters({
196
- provider: 'unsplash',
197
- filters: {}
198
- });
199
- break;
200
- case 'pexels':
201
- setProviderFilters({
202
- provider: 'pexels',
203
- filters: {}
204
- });
205
- break;
206
- case 'pixabay':
207
- setProviderFilters({
208
- provider: 'pixabay',
209
- filters: {}
210
- });
211
- break;
212
- }
213
186
  }, [
214
187
  resetImages
215
188
  ]);
@@ -228,7 +201,7 @@ export const SearchImages = (props)=>{
228
201
  getProviderOptions
229
202
  ]);
230
203
  useEffect(()=>{
231
- if (!selectedProvider?.value || !providerFilters) return;
204
+ if (!selectedProvider?.value || !filters) return;
232
205
  if (value.trim().length > 0) {
233
206
  void getPhotos(1);
234
207
  } else {
@@ -236,7 +209,7 @@ export const SearchImages = (props)=>{
236
209
  }
237
210
  }, [
238
211
  selectedProvider?.value,
239
- providerFilters,
212
+ filters,
240
213
  value,
241
214
  getPhotos,
242
215
  getFeaturedPhotos
@@ -255,15 +228,15 @@ export const SearchImages = (props)=>{
255
228
  isClearable: false,
256
229
  isSearchable: false,
257
230
  isCreatable: false
258
- })), providerFilters?.provider === 'pexels' && /*#__PURE__*/ React.createElement("div", {
231
+ })), filters?.provider === 'pexels' && /*#__PURE__*/ React.createElement("div", {
259
232
  className: `${baseClass}__filters`
260
233
  }, /*#__PURE__*/ React.createElement(Select, {
261
234
  options: PexelsColours,
262
- value: PexelsColours.find((o)=>o.value === providerFilters.filters.color),
263
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pexels' ? {
235
+ value: PexelsColours.find((o)=>o.value === filters.options.color),
236
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pexels' ? {
264
237
  provider: 'pexels',
265
- filters: {
266
- ...prev.filters,
238
+ options: {
239
+ ...prev.options,
267
240
  color: opt?.value
268
241
  }
269
242
  } : prev),
@@ -272,11 +245,11 @@ export const SearchImages = (props)=>{
272
245
  placeholder: "Select color..."
273
246
  }), /*#__PURE__*/ React.createElement(Select, {
274
247
  options: PexelsSize,
275
- value: PexelsSize.find((o)=>o.value === providerFilters.filters.size),
276
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pexels' ? {
248
+ value: PexelsSize.find((o)=>o.value === filters.options.size),
249
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pexels' ? {
277
250
  provider: 'pexels',
278
- filters: {
279
- ...prev.filters,
251
+ options: {
252
+ ...prev.options,
280
253
  size: opt?.value
281
254
  }
282
255
  } : prev),
@@ -285,26 +258,26 @@ export const SearchImages = (props)=>{
285
258
  placeholder: "Select size..."
286
259
  }), /*#__PURE__*/ React.createElement(Select, {
287
260
  options: PexelsOrientation,
288
- value: PexelsOrientation.find((o)=>o.value === providerFilters.filters.orientation),
289
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pexels' ? {
261
+ value: PexelsOrientation.find((o)=>o.value === filters.options.orientation),
262
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pexels' ? {
290
263
  provider: 'pexels',
291
- filters: {
292
- ...prev.filters,
264
+ options: {
265
+ ...prev.options,
293
266
  orientation: opt?.value
294
267
  }
295
268
  } : prev),
296
269
  isClearable: true,
297
270
  isSearchable: false,
298
271
  placeholder: "Select orientation..."
299
- })), providerFilters?.provider === 'pixabay' && /*#__PURE__*/ React.createElement("div", {
272
+ })), filters?.provider === 'pixabay' && /*#__PURE__*/ React.createElement("div", {
300
273
  className: `${baseClass}__filters`
301
274
  }, /*#__PURE__*/ React.createElement(Select, {
302
275
  options: PixabayCategories,
303
- value: PixabayCategories.find((o)=>o.value === providerFilters.filters.category),
304
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pixabay' ? {
276
+ value: PixabayCategories.find((o)=>o.value === filters.options.category),
277
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pixabay' ? {
305
278
  provider: 'pixabay',
306
- filters: {
307
- ...prev.filters,
279
+ options: {
280
+ ...prev.options,
308
281
  category: opt?.value
309
282
  }
310
283
  } : prev),
@@ -313,11 +286,11 @@ export const SearchImages = (props)=>{
313
286
  placeholder: "Select category..."
314
287
  }), /*#__PURE__*/ React.createElement(Select, {
315
288
  options: PixabayImageType,
316
- value: PixabayImageType.find((o)=>o.value === providerFilters.filters.image_type),
317
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pixabay' ? {
289
+ value: PixabayImageType.find((o)=>o.value === filters.options.image_type),
290
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pixabay' ? {
318
291
  provider: 'pixabay',
319
- filters: {
320
- ...prev.filters,
292
+ options: {
293
+ ...prev.options,
321
294
  image_type: opt?.value
322
295
  }
323
296
  } : prev),
@@ -326,11 +299,11 @@ export const SearchImages = (props)=>{
326
299
  placeholder: "Select type..."
327
300
  }), /*#__PURE__*/ React.createElement(Select, {
328
301
  options: PixabayColours,
329
- value: PixabayColours.find((o)=>o.value === providerFilters.filters.colors),
330
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pixabay' ? {
302
+ value: PixabayColours.find((o)=>o.value === filters.options.colors),
303
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pixabay' ? {
331
304
  provider: 'pixabay',
332
- filters: {
333
- ...prev.filters,
305
+ options: {
306
+ ...prev.options,
334
307
  colors: opt?.value
335
308
  }
336
309
  } : prev),
@@ -339,11 +312,11 @@ export const SearchImages = (props)=>{
339
312
  placeholder: "Select color..."
340
313
  }), /*#__PURE__*/ React.createElement(Select, {
341
314
  options: PixabayOrientation,
342
- value: PixabayOrientation.find((o)=>o.value === providerFilters.filters.orientation),
343
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pixabay' ? {
315
+ value: PixabayOrientation.find((o)=>o.value === filters.options.orientation),
316
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pixabay' ? {
344
317
  provider: 'pixabay',
345
- filters: {
346
- ...prev.filters,
318
+ options: {
319
+ ...prev.options,
347
320
  orientation: opt?.value
348
321
  }
349
322
  } : prev),
@@ -352,26 +325,26 @@ export const SearchImages = (props)=>{
352
325
  placeholder: "Select orientation..."
353
326
  }), /*#__PURE__*/ React.createElement(Select, {
354
327
  options: PixabayOrder,
355
- value: PixabayOrder.find((o)=>o.value === providerFilters.filters.order),
356
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'pixabay' ? {
328
+ value: PixabayOrder.find((o)=>o.value === filters.options.order),
329
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'pixabay' ? {
357
330
  provider: 'pixabay',
358
- filters: {
359
- ...prev.filters,
331
+ options: {
332
+ ...prev.options,
360
333
  order: opt?.value
361
334
  }
362
335
  } : prev),
363
336
  isClearable: true,
364
337
  isSearchable: false,
365
338
  placeholder: "Select order..."
366
- })), providerFilters?.provider === 'unsplash' && /*#__PURE__*/ React.createElement("div", {
339
+ })), filters?.provider === 'unsplash' && /*#__PURE__*/ React.createElement("div", {
367
340
  className: `${baseClass}__filters`
368
341
  }, /*#__PURE__*/ React.createElement(Select, {
369
342
  options: UnsplashColours,
370
- value: UnsplashColours.find((o)=>o.value === providerFilters.filters.color),
371
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'unsplash' ? {
343
+ value: UnsplashColours.find((o)=>o.value === filters.options.color),
344
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'unsplash' ? {
372
345
  provider: 'unsplash',
373
- filters: {
374
- ...prev.filters,
346
+ options: {
347
+ ...prev.options,
375
348
  color: opt?.value
376
349
  }
377
350
  } : prev),
@@ -380,11 +353,11 @@ export const SearchImages = (props)=>{
380
353
  placeholder: "Select color..."
381
354
  }), /*#__PURE__*/ React.createElement(Select, {
382
355
  options: UnsplashOrientation,
383
- value: UnsplashOrientation.find((o)=>o.value === providerFilters.filters.orientation),
384
- onChange: (opt)=>setProviderFilters((prev)=>prev?.provider === 'unsplash' ? {
356
+ value: UnsplashOrientation.find((o)=>o.value === filters.options.orientation),
357
+ onChange: (opt)=>setFilters((prev)=>prev?.provider === 'unsplash' ? {
385
358
  provider: 'unsplash',
386
- filters: {
387
- ...prev.filters,
359
+ options: {
360
+ ...prev.options,
388
361
  orientation: opt?.value
389
362
  }
390
363
  } : prev),
package/dist/types.d.ts CHANGED
@@ -124,17 +124,18 @@ export interface ProviderResult {
124
124
  }
125
125
  export type ProviderFilters = {
126
126
  provider: 'unsplash';
127
- filters: UnsplashFilters;
127
+ options: UnsplashFilters;
128
128
  } | {
129
129
  provider: 'pexels';
130
- filters: PexelsFilters;
130
+ options: PexelsFilters;
131
131
  } | {
132
132
  provider: 'pixabay';
133
- filters: PixabayFilters;
133
+ options: PixabayFilters;
134
134
  };
135
+ type ProviderKey = 'unsplash' | 'pexels' | 'pixabay';
135
136
  export type ProviderOption = {
136
137
  label: string;
137
- value: string;
138
+ value: ProviderKey;
138
139
  };
139
140
  export type SearchImagesProps = {
140
141
  serverURL: string;
@@ -180,4 +181,5 @@ export interface UnsplashResult {
180
181
  };
181
182
  };
182
183
  }
184
+ export {};
183
185
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"fetchCache.d.ts","sourceRoot":"","sources":["../../src/utils/fetchCache.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,GAAU,WAAW,MAAM,iBAejD,CAAA"}
1
+ {"version":3,"file":"fetchCache.d.ts","sourceRoot":"","sources":["../../src/utils/fetchCache.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,GAAU,WAAW,MAAM,iBAqBjD,CAAA"}
@@ -2,14 +2,18 @@ import { CacheManager } from '../lib/cache.js';
2
2
  const cache = new CacheManager();
3
3
  const defaultExpiry = 24 * 60 * 60 * 1000;
4
4
  export const fetchCache = async (queryPath)=>{
5
+ if (queryPath.includes('undefined')) {
6
+ throw new Error('Invalid provider');
7
+ }
5
8
  const key = `image-search:${queryPath}`;
6
9
  if (cache.exists(key)) {
7
10
  return cache.get(key);
8
11
  }
9
12
  const response = await fetch(queryPath);
10
- const json = await response.json();
11
- if (response.status < 400) {
12
- cache.set(key, json, defaultExpiry);
13
+ if (!response.ok) {
14
+ throw await response.json();
13
15
  }
16
+ const json = await response.json();
17
+ cache.set(key, json, defaultExpiry);
14
18
  return json;
15
19
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubixstudios/payload-images",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "description": "A Payload CMS plugin that integrates with stock image providers including Unsplash, Pexels and Pixabay.",
5
5
  "license": "MIT",
6
6
  "author": "Rubix Studios <hello@rubixstudios.com.au> (https://rubixstudios.com.au)",
@@ -58,17 +58,17 @@
58
58
  "release": "semantic-release"
59
59
  },
60
60
  "devDependencies": {
61
- "@biomejs/biome": "2.3.13",
62
- "@payloadcms/ui": "^3.73.0",
61
+ "@biomejs/biome": "2.3.14",
62
+ "@payloadcms/ui": "^3.74.0",
63
63
  "@semantic-release/changelog": "^6.0.3",
64
64
  "@semantic-release/git": "^10.0.1",
65
65
  "@swc/cli": "^0.7.10",
66
- "@swc/core": "^1.15.10",
67
- "@types/react": "^19.2.9",
66
+ "@swc/core": "^1.15.11",
67
+ "@types/react": "^19.2.11",
68
68
  "clean-css-cli": "^5.6.3",
69
- "payload": "^3.73.0",
69
+ "payload": "^3.74.0",
70
70
  "rimraf": "^6.1.2",
71
- "semantic-release": "^25.0.2",
71
+ "semantic-release": "^25.0.3",
72
72
  "typescript": "5.9.3"
73
73
  },
74
74
  "peerDependencies": {