@bigbinary/neeto-image-uploader-frontend 1.5.3 → 1.5.5

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';
@@ -2099,7 +2099,8 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
2099
2099
  i18nKey: "neetoImageUploader.imageUpload.dragAndDropOrBrowseFile",
2100
2100
  components: {
2101
2101
  span: /*#__PURE__*/React.createElement("span", {
2102
- className: "neeto-ui-text-primary-500"
2102
+ className: "neeto-ui-text-primary-500",
2103
+ "data-cy": "neeto-image-uploader-browse-text"
2103
2104
  })
2104
2105
  }
2105
2106
  })), setIsAssetLibraryOpen && /*#__PURE__*/React.createElement(Typography, {
@@ -2118,6 +2119,7 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
2118
2119
  })
2119
2120
  }
2120
2121
  })), /*#__PURE__*/React.createElement("input", _extends$1({}, getInputProps(), {
2122
+ "data-cy": "neeto-image-uploader-file-input",
2121
2123
  disabled: isDisabled
2122
2124
  })), /*#__PURE__*/React.createElement(Typography, {
2123
2125
  className: "neeto-ui-text-gray-700 text-center leading-4",
@@ -2184,6 +2186,7 @@ var IS_DEVELOPMENT_OR_HEROKU_ENV = process.env.RAILS_ENV === "development" || pr
2184
2186
 
2185
2187
  var UNSPLASH_DEFAULT_NAME = "Unsplash-asset";
2186
2188
  var UNSPLASH_URL = "https://unsplash.com/";
2189
+ var IMAGES_PER_PAGE = 30;
2187
2190
  var UNSPLASH_DEFAULT_REQUEST_CONFIG = {
2188
2191
  headers: {
2189
2192
  "Access-Control-Allow-Origin": "*",
@@ -3827,11 +3830,15 @@ var ImageEditor = function ImageEditor(_ref) {
3827
3830
  };
3828
3831
 
3829
3832
  var fetch = function fetch(_ref) {
3830
- var search = _ref.search,
3831
- url = _ref.url;
3833
+ var searchTerm = _ref.searchTerm,
3834
+ url = _ref.url,
3835
+ page = _ref.page,
3836
+ per = _ref.per;
3832
3837
  return axios.get(url, {
3833
3838
  params: {
3834
- search: search
3839
+ searchTerm: searchTerm,
3840
+ page: page,
3841
+ per: per
3835
3842
  }
3836
3843
  });
3837
3844
  };
@@ -3840,13 +3847,17 @@ var imagesApi = {
3840
3847
  };
3841
3848
 
3842
3849
  var useFetchAssets = function useFetchAssets(_ref) {
3843
- var search = _ref.search,
3844
- url = _ref.url;
3850
+ var searchTerm = _ref.searchTerm,
3851
+ url = _ref.url,
3852
+ page = _ref.page,
3853
+ per = _ref.per;
3845
3854
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
3846
- return useQuery([QUERY_KEYS.ASSETS_LIST, search], function () {
3855
+ return useQuery([QUERY_KEYS.ASSETS_LIST], function () {
3847
3856
  return imagesApi.fetch({
3848
- search: search,
3849
- url: url
3857
+ searchTerm: searchTerm,
3858
+ url: url,
3859
+ page: page,
3860
+ per: per
3850
3861
  });
3851
3862
  }, mergeRight({
3852
3863
  staleTime: ASSETS_STALE_TIME
@@ -4673,31 +4684,75 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
4673
4684
  };
4674
4685
 
4675
4686
  var Images = function Images(_ref) {
4676
- var setSelectedImage = _ref.setSelectedImage,
4677
- debouncedQuery = _ref.debouncedQuery;
4687
+ var query = _ref.query,
4688
+ debouncedQuery = _ref.debouncedQuery,
4689
+ setSelectedImage = _ref.setSelectedImage;
4690
+ var _useState = useState(true),
4691
+ _useState2 = _slicedToArray$2(_useState, 2),
4692
+ hasMore = _useState2[0],
4693
+ setHasMore = _useState2[1];
4694
+ var _useState3 = useState([]),
4695
+ _useState4 = _slicedToArray$2(_useState3, 2),
4696
+ images = _useState4[0],
4697
+ setImages = _useState4[1];
4698
+ var _useState5 = useState(1),
4699
+ _useState6 = _slicedToArray$2(_useState5, 2),
4700
+ pageNo = _useState6[0],
4701
+ setPageNo = _useState6[1];
4702
+ var _useState7 = useState(false),
4703
+ _useState8 = _slicedToArray$2(_useState7, 2),
4704
+ error = _useState8[0],
4705
+ setError = _useState8[1];
4706
+ var onSuccess = function onSuccess() {
4707
+ var results = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
4708
+ equals(pageNo, 1) ? setImages(results) : setImages(concat(__, results));
4709
+ setPageNo(inc);
4710
+ setHasMore(results.length === IMAGES_PER_PAGE);
4711
+ };
4712
+ var onError = function onError() {
4713
+ return setError(true);
4714
+ };
4678
4715
  var _useTranslation = useTranslation(),
4679
4716
  t = _useTranslation.t;
4680
4717
  var _useFetchAssets = useFetchAssets({
4681
- search: debouncedQuery,
4718
+ searchTerm: debouncedQuery,
4719
+ page: pageNo,
4720
+ per: IMAGES_PER_PAGE,
4682
4721
  url: ASSETS_FETCH_URL
4722
+ }, {
4723
+ onSuccess: onSuccess,
4724
+ onError: onError
4683
4725
  }),
4684
- _useFetchAssets$data = _useFetchAssets.data,
4685
- images = _useFetchAssets$data === void 0 ? [] : _useFetchAssets$data,
4726
+ refetch = _useFetchAssets.refetch,
4686
4727
  isFetching = _useFetchAssets.isFetching;
4687
- if (isFetching) {
4688
- return /*#__PURE__*/React.createElement("div", {
4689
- className: "flex items-center justify-center"
4690
- }, /*#__PURE__*/React.createElement(Spinner, null));
4728
+ var loadMore = useFuncDebounce(function () {
4729
+ if (isFetching) return;
4730
+ if (!hasMore) return;
4731
+ if (pageNo > 1) {
4732
+ setError(false);
4733
+ refetch();
4734
+ }
4735
+ }, 500);
4736
+ useEffect(function () {
4737
+ setPageNo(1);
4738
+ }, [query]);
4739
+ useEffect(function () {
4740
+ setImages([]);
4741
+ refetch();
4742
+ }, [debouncedQuery]);
4743
+ if (error) {
4744
+ return /*#__PURE__*/React.createElement(Typography, {
4745
+ className: "mt-9 flex justify-center",
4746
+ style: "body2"
4747
+ }, t("neetoImageUploader.unsplash.errorMessage"));
4691
4748
  }
4692
- return isNotEmpty(images) ? /*#__PURE__*/React.createElement(InfiniteScroller, {
4749
+ return /*#__PURE__*/React.createElement(InfiniteScroller, {
4750
+ hasMore: hasMore,
4693
4751
  images: images,
4752
+ loadMore: loadMore,
4694
4753
  setSelectedImage: setSelectedImage,
4695
4754
  tab: TABS[0].key
4696
- }) : /*#__PURE__*/React.createElement("div", {
4697
- className: "flex items-center justify-center"
4698
- }, /*#__PURE__*/React.createElement(Typography, {
4699
- style: "h3"
4700
- }, t("neetoImageUploader.common.noImages")));
4755
+ });
4701
4756
  };
4702
4757
 
4703
4758
  var newAxiosInstance = axios.create();
@@ -4779,7 +4834,8 @@ var uploadWithImageKit = function uploadWithImageKit(file) {
4779
4834
  };
4780
4835
 
4781
4836
  var UnsplashLibrary = function UnsplashLibrary(_ref) {
4782
- var debouncedQuery = _ref.debouncedQuery,
4837
+ var query = _ref.query,
4838
+ debouncedQuery = _ref.debouncedQuery,
4783
4839
  setSelectedImage = _ref.setSelectedImage,
4784
4840
  setIsUploading = _ref.setIsUploading,
4785
4841
  setActiveTab = _ref.setActiveTab;
@@ -4882,6 +4938,9 @@ var UnsplashLibrary = function UnsplashLibrary(_ref) {
4882
4938
  refetch();
4883
4939
  }
4884
4940
  }, 500);
4941
+ useEffect(function () {
4942
+ setPageNo(1);
4943
+ }, [query]);
4885
4944
  useEffect(function () {
4886
4945
  setPageNo(1);
4887
4946
  setImages([]);
@@ -4933,9 +4992,11 @@ var ImageLibrary = function ImageLibrary(_ref) {
4933
4992
  }
4934
4993
  }), tab === TABS[0].key ? /*#__PURE__*/React.createElement(Images, {
4935
4994
  debouncedQuery: debouncedQuery,
4995
+ query: query,
4936
4996
  setSelectedImage: setSelectedImage
4937
4997
  }) : /*#__PURE__*/React.createElement(UnsplashLibrary, {
4938
4998
  debouncedQuery: debouncedQuery,
4999
+ query: query,
4939
5000
  setActiveTab: setActiveTab,
4940
5001
  setIsUploading: setIsUploading,
4941
5002
  setSelectedImage: setSelectedImage