@bigbinary/neeto-image-uploader-frontend 1.5.4 → 1.5.6

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.
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import React, { useMemo, useRef, useReducer, useEffect, useCallback, forwardRef, useImperativeHandle, Fragment, useState } from 'react';
2
2
  import classnames from 'classnames';
3
- import { noop as noop$1, keysToCamelCase, findBy, isNotEmpty } from '@bigbinary/neeto-cist';
3
+ import { noop as noop$1, keysToCamelCase, findBy } from '@bigbinary/neeto-cist';
4
4
  import { Delete, LeftArrow, MenuHorizontal } from '@bigbinary/neeto-icons';
5
5
  import { Toastr, Typography, Button, Switch, Input, Spinner, Modal as Modal$1, Tab, Dropdown } from '@bigbinary/neetoui';
6
6
  import { pipe, values, flatten as flatten$1, join, equals, isNil, isEmpty, mergeRight, mergeLeft, concat, __, inc } from 'ramda';
@@ -2176,7 +2176,7 @@ var ImageWithFallback = function ImageWithFallback(_ref) {
2176
2176
  return isLoaded ? /*#__PURE__*/React.createElement("img", _extends$1({}, _objectSpread$2({
2177
2177
  src: src
2178
2178
  }, props), {
2179
- className: "h-full w-auto"
2179
+ className: "h-full w-auto object-contain"
2180
2180
  })) : /*#__PURE__*/React.createElement(Fallback, _objectSpread$2({
2181
2181
  className: className
2182
2182
  }, props));
@@ -2186,6 +2186,7 @@ var IS_DEVELOPMENT_OR_HEROKU_ENV = process.env.RAILS_ENV === "development" || pr
2186
2186
 
2187
2187
  var UNSPLASH_DEFAULT_NAME = "Unsplash-asset";
2188
2188
  var UNSPLASH_URL = "https://unsplash.com/";
2189
+ var IMAGES_PER_PAGE = 30;
2189
2190
  var UNSPLASH_DEFAULT_REQUEST_CONFIG = {
2190
2191
  headers: {
2191
2192
  "Access-Control-Allow-Origin": "*",
@@ -3373,8 +3374,8 @@ var useImageUploader = function useImageUploader(_ref) {
3373
3374
  onUploadComplete(mergeRight(keysToCamelCase(blob), {
3374
3375
  url: blob.blob_url
3375
3376
  }));
3377
+ setIsUploading(false);
3376
3378
  });
3377
- setIsUploading(false);
3378
3379
  } catch (error) {
3379
3380
  Toastr.error(error);
3380
3381
  }
@@ -3404,21 +3405,18 @@ var useImageUploader = function useImageUploader(_ref) {
3404
3405
  case 5:
3405
3406
  result = _context.sent;
3406
3407
  onUploadComplete(result);
3407
- _context.next = 12;
3408
+ setIsUploading(false);
3409
+ _context.next = 13;
3408
3410
  break;
3409
- case 9:
3410
- _context.prev = 9;
3411
+ case 10:
3412
+ _context.prev = 10;
3411
3413
  _context.t0 = _context["catch"](0);
3412
3414
  Toastr.error(_context.t0);
3413
- case 12:
3414
- _context.prev = 12;
3415
- setIsUploading(false);
3416
- return _context.finish(12);
3417
- case 15:
3415
+ case 13:
3418
3416
  case "end":
3419
3417
  return _context.stop();
3420
3418
  }
3421
- }, _callee, null, [[0, 9, 12, 15]]);
3419
+ }, _callee, null, [[0, 10]]);
3422
3420
  }));
3423
3421
  return function productionUpload(_x, _x2) {
3424
3422
  return _ref2.apply(this, arguments);
@@ -3442,18 +3440,16 @@ var useImageUploader = function useImageUploader(_ref) {
3442
3440
  handleUploadProgress(e, fileSize, setUploadProgress);
3443
3441
  });
3444
3442
  if (!IS_DEVELOPMENT_OR_HEROKU_ENV) {
3445
- _context2.next = 10;
3443
+ _context2.next = 9;
3446
3444
  break;
3447
3445
  }
3448
- _context2.next = 8;
3449
- return developmentUpload(file, setUploadProgress);
3450
- case 8:
3451
- _context2.next = 12;
3446
+ developmentUpload(file, setUploadProgress);
3447
+ _context2.next = 11;
3452
3448
  break;
3453
- case 10:
3454
- _context2.next = 12;
3449
+ case 9:
3450
+ _context2.next = 11;
3455
3451
  return productionUpload(file, XHRProgress);
3456
- case 12:
3452
+ case 11:
3457
3453
  case "end":
3458
3454
  return _context2.stop();
3459
3455
  }
@@ -3829,11 +3825,15 @@ var ImageEditor = function ImageEditor(_ref) {
3829
3825
  };
3830
3826
 
3831
3827
  var fetch = function fetch(_ref) {
3832
- var search = _ref.search,
3833
- url = _ref.url;
3828
+ var searchTerm = _ref.searchTerm,
3829
+ url = _ref.url,
3830
+ page = _ref.page,
3831
+ per = _ref.per;
3834
3832
  return axios.get(url, {
3835
3833
  params: {
3836
- search: search
3834
+ searchTerm: searchTerm,
3835
+ page: page,
3836
+ per: per
3837
3837
  }
3838
3838
  });
3839
3839
  };
@@ -3842,13 +3842,17 @@ var imagesApi = {
3842
3842
  };
3843
3843
 
3844
3844
  var useFetchAssets = function useFetchAssets(_ref) {
3845
- var search = _ref.search,
3846
- url = _ref.url;
3845
+ var searchTerm = _ref.searchTerm,
3846
+ url = _ref.url,
3847
+ page = _ref.page,
3848
+ per = _ref.per;
3847
3849
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3848
- return useQuery([QUERY_KEYS.ASSETS_LIST, search], function () {
3850
+ return useQuery([QUERY_KEYS.ASSETS_LIST], function () {
3849
3851
  return imagesApi.fetch({
3850
- search: search,
3851
- url: url
3852
+ searchTerm: searchTerm,
3853
+ url: url,
3854
+ page: page,
3855
+ per: per
3852
3856
  });
3853
3857
  }, mergeRight({
3854
3858
  staleTime: ASSETS_STALE_TIME
@@ -4675,31 +4679,75 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
4675
4679
  };
4676
4680
 
4677
4681
  var Images = function Images(_ref) {
4678
- var setSelectedImage = _ref.setSelectedImage,
4679
- debouncedQuery = _ref.debouncedQuery;
4682
+ var query = _ref.query,
4683
+ debouncedQuery = _ref.debouncedQuery,
4684
+ setSelectedImage = _ref.setSelectedImage;
4685
+ var _useState = useState(true),
4686
+ _useState2 = _slicedToArray$2(_useState, 2),
4687
+ hasMore = _useState2[0],
4688
+ setHasMore = _useState2[1];
4689
+ var _useState3 = useState([]),
4690
+ _useState4 = _slicedToArray$2(_useState3, 2),
4691
+ images = _useState4[0],
4692
+ setImages = _useState4[1];
4693
+ var _useState5 = useState(1),
4694
+ _useState6 = _slicedToArray$2(_useState5, 2),
4695
+ pageNo = _useState6[0],
4696
+ setPageNo = _useState6[1];
4697
+ var _useState7 = useState(false),
4698
+ _useState8 = _slicedToArray$2(_useState7, 2),
4699
+ error = _useState8[0],
4700
+ setError = _useState8[1];
4701
+ var onSuccess = function onSuccess() {
4702
+ var results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
4703
+ equals(pageNo, 1) ? setImages(results) : setImages(concat(__, results));
4704
+ setPageNo(inc);
4705
+ setHasMore(results.length === IMAGES_PER_PAGE);
4706
+ };
4707
+ var onError = function onError() {
4708
+ return setError(true);
4709
+ };
4680
4710
  var _useTranslation = useTranslation(),
4681
4711
  t = _useTranslation.t;
4682
4712
  var _useFetchAssets = useFetchAssets({
4683
- search: debouncedQuery,
4713
+ searchTerm: debouncedQuery,
4714
+ page: pageNo,
4715
+ per: IMAGES_PER_PAGE,
4684
4716
  url: ASSETS_FETCH_URL
4717
+ }, {
4718
+ onSuccess: onSuccess,
4719
+ onError: onError
4685
4720
  }),
4686
- _useFetchAssets$data = _useFetchAssets.data,
4687
- images = _useFetchAssets$data === void 0 ? [] : _useFetchAssets$data,
4721
+ refetch = _useFetchAssets.refetch,
4688
4722
  isFetching = _useFetchAssets.isFetching;
4689
- if (isFetching) {
4690
- return /*#__PURE__*/React.createElement("div", {
4691
- className: "flex items-center justify-center"
4692
- }, /*#__PURE__*/React.createElement(Spinner, null));
4723
+ var loadMore = useFuncDebounce(function () {
4724
+ if (isFetching) return;
4725
+ if (!hasMore) return;
4726
+ if (pageNo > 1) {
4727
+ setError(false);
4728
+ refetch();
4729
+ }
4730
+ }, 500);
4731
+ useEffect(function () {
4732
+ setPageNo(1);
4733
+ }, [query]);
4734
+ useEffect(function () {
4735
+ setImages([]);
4736
+ refetch();
4737
+ }, [debouncedQuery]);
4738
+ if (error) {
4739
+ return /*#__PURE__*/React.createElement(Typography, {
4740
+ className: "mt-9 flex justify-center",
4741
+ style: "body2"
4742
+ }, t("neetoImageUploader.unsplash.errorMessage"));
4693
4743
  }
4694
- return isNotEmpty(images) ? /*#__PURE__*/React.createElement(InfiniteScroller, {
4744
+ return /*#__PURE__*/React.createElement(InfiniteScroller, {
4745
+ hasMore: hasMore,
4695
4746
  images: images,
4747
+ loadMore: loadMore,
4696
4748
  setSelectedImage: setSelectedImage,
4697
4749
  tab: TABS[0].key
4698
- }) : /*#__PURE__*/React.createElement("div", {
4699
- className: "flex items-center justify-center"
4700
- }, /*#__PURE__*/React.createElement(Typography, {
4701
- style: "h3"
4702
- }, t("neetoImageUploader.common.noImages")));
4750
+ });
4703
4751
  };
4704
4752
 
4705
4753
  var newAxiosInstance = axios.create();
@@ -4781,7 +4829,8 @@ var uploadWithImageKit = function uploadWithImageKit(file) {
4781
4829
  };
4782
4830
 
4783
4831
  var UnsplashLibrary = function UnsplashLibrary(_ref) {
4784
- var debouncedQuery = _ref.debouncedQuery,
4832
+ var query = _ref.query,
4833
+ debouncedQuery = _ref.debouncedQuery,
4785
4834
  setSelectedImage = _ref.setSelectedImage,
4786
4835
  setIsUploading = _ref.setIsUploading,
4787
4836
  setActiveTab = _ref.setActiveTab;
@@ -4884,6 +4933,9 @@ var UnsplashLibrary = function UnsplashLibrary(_ref) {
4884
4933
  refetch();
4885
4934
  }
4886
4935
  }, 500);
4936
+ useEffect(function () {
4937
+ setPageNo(1);
4938
+ }, [query]);
4887
4939
  useEffect(function () {
4888
4940
  setPageNo(1);
4889
4941
  setImages([]);
@@ -4935,9 +4987,11 @@ var ImageLibrary = function ImageLibrary(_ref) {
4935
4987
  }
4936
4988
  }), tab === TABS[0].key ? /*#__PURE__*/React.createElement(Images, {
4937
4989
  debouncedQuery: debouncedQuery,
4990
+ query: query,
4938
4991
  setSelectedImage: setSelectedImage
4939
4992
  }) : /*#__PURE__*/React.createElement(UnsplashLibrary, {
4940
4993
  debouncedQuery: debouncedQuery,
4994
+ query: query,
4941
4995
  setActiveTab: setActiveTab,
4942
4996
  setIsUploading: setIsUploading,
4943
4997
  setSelectedImage: setSelectedImage