@bigbinary/neeto-image-uploader-frontend 2.3.0 → 2.3.2

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.
Files changed (57) hide show
  1. package/app/javascript/src/translations/en.json +2 -2
  2. package/dist/AssetLibrary.js +53 -32
  3. package/dist/AssetLibrary.js.map +1 -1
  4. package/dist/BasicImageUploader.js +3 -3
  5. package/dist/ImageUploader.js +34 -16
  6. package/dist/ImageUploader.js.map +1 -1
  7. package/dist/{ImageWithFallback-a45f3f4a.js → ImageWithFallback-1d3c6c16.js} +3 -3
  8. package/dist/{ImageWithFallback-a45f3f4a.js.map → ImageWithFallback-1d3c6c16.js.map} +1 -1
  9. package/dist/{ImageWithFallback-aacc383b.js → ImageWithFallback-da061171.js} +3 -3
  10. package/dist/{ImageWithFallback-aacc383b.js.map → ImageWithFallback-da061171.js.map} +1 -1
  11. package/dist/cjs/AssetLibrary.js +60 -39
  12. package/dist/cjs/AssetLibrary.js.map +1 -1
  13. package/dist/cjs/BasicImageUploader.js +3 -3
  14. package/dist/cjs/ImageUploader.js +34 -16
  15. package/dist/cjs/ImageUploader.js.map +1 -1
  16. package/dist/cjs/hooks.js +4 -3
  17. package/dist/cjs/hooks.js.map +1 -1
  18. package/dist/cjs/index.js +8 -5
  19. package/dist/cjs/index.js.map +1 -1
  20. package/dist/cjs/utils.js +14 -0
  21. package/dist/cjs/utils.js.map +1 -0
  22. package/dist/hooks.js +4 -3
  23. package/dist/hooks.js.map +1 -1
  24. package/dist/{index-7f064861.js → index-69559a7a.js} +3 -1
  25. package/dist/index-69559a7a.js.map +1 -0
  26. package/dist/{index-b9963255.js → index-c128d963.js} +3 -2
  27. package/dist/index-c128d963.js.map +1 -0
  28. package/dist/index.js +7 -5
  29. package/dist/index.js.map +1 -1
  30. package/dist/query-3c31bf92.js +14 -0
  31. package/dist/query-3c31bf92.js.map +1 -0
  32. package/dist/query-dcc7b81b.js +10 -0
  33. package/dist/query-dcc7b81b.js.map +1 -0
  34. package/dist/{useImageUploader-550a5fdc.js → useImageUploader-b78deb18.js} +74 -58
  35. package/dist/useImageUploader-b78deb18.js.map +1 -0
  36. package/dist/{useImageUploader-36a03350.js → useImageUploader-b93adc31.js} +74 -55
  37. package/dist/useImageUploader-b93adc31.js.map +1 -0
  38. package/dist/{useProfileImageUpload-837e76b8.js → useProfileImageUpload-085576e5.js} +4 -4
  39. package/dist/useProfileImageUpload-085576e5.js.map +1 -0
  40. package/dist/{useProfileImageUpload-f0088c2a.js → useProfileImageUpload-51ab47be.js} +4 -4
  41. package/dist/useProfileImageUpload-51ab47be.js.map +1 -0
  42. package/dist/{utils-88cce499.js → utils-2fc0a9dc.js} +5 -4
  43. package/dist/utils-2fc0a9dc.js.map +1 -0
  44. package/dist/{utils-96eacd77.js → utils-46caa3d3.js} +5 -4
  45. package/dist/utils-46caa3d3.js.map +1 -0
  46. package/dist/utils.js +10 -0
  47. package/dist/utils.js.map +1 -0
  48. package/package.json +29 -29
  49. package/types.d.ts +3 -0
  50. package/dist/index-7f064861.js.map +0 -1
  51. package/dist/index-b9963255.js.map +0 -1
  52. package/dist/useImageUploader-36a03350.js.map +0 -1
  53. package/dist/useImageUploader-550a5fdc.js.map +0 -1
  54. package/dist/useProfileImageUpload-837e76b8.js.map +0 -1
  55. package/dist/useProfileImageUpload-f0088c2a.js.map +0 -1
  56. package/dist/utils-88cce499.js.map +0 -1
  57. package/dist/utils-96eacd77.js.map +0 -1
@@ -44,8 +44,8 @@
44
44
  "images": "Images",
45
45
  "imageLibrary": "Image library",
46
46
  "remove": "Remove",
47
- "dragAndDropOrBrowseFile": "Drag and drop or <span>Browse</span> a file.",
48
- "selectImagefromImageLibrary": "Select from <span>Image Library</span>.",
47
+ "dragAndDropOrBrowseFile": "Drag & drop or <span>upload</span>.",
48
+ "selectImagefromImageLibrary": "Select from <span>image library</span>.",
49
49
  "edit": "Edit",
50
50
  "genericError": "Something went wrong!.",
51
51
  "fileSizeError": "File size is too large",
@@ -1,7 +1,8 @@
1
- import { O as OPTIONS, i as isNilOrEmpty, D as DEFAULT_CROP_CONFIG, a as isItemsCenter, o as onImageLoaded, g as getCroppedImageURL, b as getCropValues, I as IMAGES_PER_PAGE, c as INFINITE_SCROLLER_SIZES, d as INFINITE_SCROLLER_STYLE, T as TABS, A as ASSETS_DESTROY_URL, e as ASSETS_FETCH_URL, U as UNSPLASH_DEFAULT_NAME, f as UNSPLASH_DEFAULT_REQUEST_CONFIG, h as DEFAULT_UPLOAD_CONFIG, u as useUploadDropzone, _ as _objectWithoutProperties$2, j as UNSPLASH_URL } from './utils-96eacd77.js';
2
- import { _ as _defineProperty$1, a as _slicedToArray$1, I as IS_DEVELOPMENT_OR_HEROKU_ENV, b as ImageKit } from './index-b9963255.js';
1
+ import { O as OPTIONS, i as isNilOrEmpty, D as DEFAULT_CROP_CONFIG, a as isItemsCenter, o as onImageLoaded, g as getCroppedImageURL, b as getCropValues, I as IMAGES_PER_PAGE, c as INFINITE_SCROLLER_SIZES, d as INFINITE_SCROLLER_STYLE, T as TABS, A as ASSETS_DESTROY_URL, e as ASSETS_FETCH_URL, U as UNSPLASH_DEFAULT_NAME, f as UNSPLASH_DEFAULT_REQUEST_CONFIG, h as DEFAULT_UPLOAD_CONFIG, u as useUploadDropzone, _ as _objectWithoutProperties$2, j as UNSPLASH_URL } from './utils-46caa3d3.js';
2
+ import { _ as _defineProperty$1, a as _slicedToArray$1, I as IS_DEVELOPMENT_OR_HEROKU_ENV, C as CLOUD_FLARE, b as ImageKit } from './index-c128d963.js';
3
3
  import require$$0, { useState, useEffect, useRef, createElement, useMemo, memo, Fragment as Fragment$1, useCallback } from 'react';
4
4
  import { findBy, isPresent, noop, nullSafe, removeBy, isNotEmpty, findById, toLabelAndValue, keysToSnakeCase, filterBy, slugify, _findBy, replaceById, notEquals, keysToCamelCase } from '@bigbinary/neeto-cist';
5
+ import { taxonomies, globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
5
6
  import NeetoUIModal from '@bigbinary/neetoui/Modal';
6
7
  import Button from '@bigbinary/neetoui/Button';
7
8
  import Tab from '@bigbinary/neetoui/Tab';
@@ -10,18 +11,18 @@ import Toastr from '@bigbinary/neetoui/Toastr';
10
11
  import Typography from '@bigbinary/neetoui/Typography';
11
12
  import { mergeLeft, mergeRight, identity, clamp, curry, prop, pluck, filter, includes, append, isEmpty, identical, isNil, assoc, equals, groupBy, isNotNil, keys, pick, map, not, move, head, reverse, is, modify, __, trim, toLower, concat } from 'ramda';
12
13
  import { useTranslation, Trans } from 'react-i18next';
13
- import { c as commonjsGlobal$1, g as getDefaultExportFromCjs$1, Q as QUERY_KEYS$1, A as ASSETS_STALE_TIME, a as getAugmentedNamespace, U as UNSPLASH_STALE_TIME, d as directUploadsApi, _ as _asyncToGenerator, b as _regeneratorRuntime, u as useCreateBlob, e as useImageUploader } from './useImageUploader-36a03350.js';
14
+ import { c as commonjsGlobal$1, g as getDefaultExportFromCjs$1, a as getAugmentedNamespace, d as directUploadsApi, _ as _asyncToGenerator, b as _regeneratorRuntime, u as useCreateBlob, e as useImageUploader, f as generateASCIIFileName } from './useImageUploader-b93adc31.js';
14
15
  import classnames from 'classnames';
15
16
  import LeftArrow from '@bigbinary/neeto-icons/LeftArrow';
16
17
  import { useMutation, useInfiniteQuery, useQueryClient, QueryClient, QueryCache, useQuery, QueryClientProvider, keepPreviousData } from '@tanstack/react-query';
17
18
  import axios from 'axios';
18
19
  import { useDebounce, withT, withTitle, useMutationWithInvalidation, useQueryParams, useBreakpoints, useFuncDebounce } from '@bigbinary/neeto-commons-frontend/react-utils';
19
- import { withEventTargetValue, getQueryParams, buildUrl, showThumbsUpToastr, hyphenize, currencyFormat } from '@bigbinary/neeto-commons-frontend/utils';
20
+ import { withEventTargetValue, getQueryParams, buildUrl, showThumbsUpToastr, hyphenize, currencyFormat, hasPermission } from '@bigbinary/neeto-commons-frontend/utils';
20
21
  import Input from '@bigbinary/neetoui/Input';
21
22
  import Switch from '@bigbinary/neetoui/Switch';
22
23
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
24
+ import { Q as QUERY_KEYS$1, A as ASSETS_STALE_TIME, U as UNSPLASH_STALE_TIME } from './query-dcc7b81b.js';
23
25
  import MenuHorizontal from '@bigbinary/neeto-icons/MenuHorizontal';
24
- import { taxonomies, globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
25
26
  import Container from '@bigbinary/neeto-molecules/Container';
26
27
  import NeetoHeader from '@bigbinary/neeto-molecules/Header';
27
28
  import i18next, { t as t$2 } from 'i18next';
@@ -569,21 +570,6 @@ function _typeof$1(o) {
569
570
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
570
571
  }, _typeof$1(o);
571
572
  }
572
-
573
- var hasPermission = function hasPermission() {
574
- var _globalProps$permissi;
575
- var permissions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
576
- var type = _typeof$1(permissions);
577
- var userPermissions = (_globalProps$permissi = globalProps.permissions) !== null && _globalProps$permissi !== void 0 ? _globalProps$permissi : [];
578
- if (Object.is(type, "string")) {
579
- return userPermissions.includes(permissions);
580
- } else if (Array.isArray(permissions)) {
581
- return permissions.some(function (permission) {
582
- return userPermissions.includes(permission);
583
- });
584
- }
585
- return false;
586
- };
587
573
  var isOverflown = function isOverflown(_ref) {
588
574
  var clientWidth = _ref.clientWidth,
589
575
  clientHeight = _ref.clientHeight,
@@ -9671,7 +9657,9 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9671
9657
  _ref$setSelectedImage = _ref.setSelectedImage,
9672
9658
  setSelectedImage = _ref$setSelectedImage === void 0 ? noop : _ref$setSelectedImage,
9673
9659
  _ref$handleUnsplashIm = _ref.handleUnsplashImageSelect,
9674
- handleUnsplashImageSelect = _ref$handleUnsplashIm === void 0 ? noop : _ref$handleUnsplashIm;
9660
+ handleUnsplashImageSelect = _ref$handleUnsplashIm === void 0 ? noop : _ref$handleUnsplashIm,
9661
+ _ref$handleSubmit = _ref.handleSubmit,
9662
+ handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit;
9675
9663
  var _useTranslation = useTranslation(),
9676
9664
  t = _useTranslation.t;
9677
9665
  var _useState = useState({
@@ -9684,7 +9672,7 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9684
9672
  var _useBulkDestroyAssets = useBulkDestroyAssets(ASSETS_DESTROY_URL),
9685
9673
  isPending = _useBulkDestroyAssets.isPending,
9686
9674
  bulkDelete = _useBulkDestroyAssets.mutate;
9687
- var hasPermissioToDeleteImage = hasPermission(VIEW_ROLES_PERMISSION);
9675
+ var isMenuButtonEnabled = globalProps.assetsUploaderService !== CLOUD_FLARE;
9688
9676
  var handleDelete = useCallback(function () {
9689
9677
  bulkDelete(deleteConfirmation.imageIds, {
9690
9678
  onSuccess: function onSuccess() {
@@ -9722,6 +9710,7 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9722
9710
  },
9723
9711
  children: /*#__PURE__*/jsxs("div", {
9724
9712
  className: "neeto-ui-rounded-sm neeto-ui-bg-gray-100 group absolute h-full w-full",
9713
+ "data-cy": "library-image-card",
9725
9714
  id: "unsplashImage".concat(image.id),
9726
9715
  children: [tab === TABS[1].key && /*#__PURE__*/jsxs(Fragment, {
9727
9716
  children: [/*#__PURE__*/jsx("img", {
@@ -9738,7 +9727,7 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9738
9727
  children: [image === null || image === void 0 || (_image$user2 = image.user) === null || _image$user2 === void 0 ? void 0 : _image$user2.name, " | ", " ", t("neetoImageUploader.labels.unsplash")]
9739
9728
  })]
9740
9729
  }), tab === TABS[0].key && /*#__PURE__*/jsxs(Fragment, {
9741
- children: [hasPermissioToDeleteImage && /*#__PURE__*/jsx(Dropdown, {
9730
+ children: [hasPermission(VIEW_ROLES_PERMISSION) && isMenuButtonEnabled && /*#__PURE__*/jsx(Dropdown, {
9742
9731
  buttonSize: "small",
9743
9732
  buttonStyle: "tertiary",
9744
9733
  "data-cy": "image-library-image-options-".concat(index),
@@ -9764,7 +9753,8 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9764
9753
  "data-cy": "niu-library-image-".concat(index),
9765
9754
  src: image === null || image === void 0 ? void 0 : image.url,
9766
9755
  onClick: function onClick() {
9767
- return setSelectedImage(image);
9756
+ setSelectedImage(image);
9757
+ handleSubmit(image);
9768
9758
  }
9769
9759
  })]
9770
9760
  })]
@@ -9791,7 +9781,8 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9791
9781
 
9792
9782
  var Images = function Images(_ref) {
9793
9783
  var debouncedQuery = _ref.debouncedQuery,
9794
- setSelectedImage = _ref.setSelectedImage;
9784
+ setSelectedImage = _ref.setSelectedImage,
9785
+ handleSubmit = _ref.handleSubmit;
9795
9786
  var _useTranslation = useTranslation(),
9796
9787
  t = _useTranslation.t;
9797
9788
  var _useFetchAssets = useFetchAssets({
@@ -9821,6 +9812,7 @@ var Images = function Images(_ref) {
9821
9812
  });
9822
9813
  }
9823
9814
  return /*#__PURE__*/createElement(InfiniteScroller, {
9815
+ handleSubmit: handleSubmit,
9824
9816
  setSelectedImage: setSelectedImage,
9825
9817
  hasMore: hasNextPage,
9826
9818
  images: results,
@@ -10026,7 +10018,9 @@ var ImageLibrary = function ImageLibrary(_ref) {
10026
10018
  var setSelectedImage = _ref.setSelectedImage,
10027
10019
  tab = _ref.tab,
10028
10020
  setIsUploading = _ref.setIsUploading,
10029
- setActiveTab = _ref.setActiveTab;
10021
+ setActiveTab = _ref.setActiveTab,
10022
+ _ref$handleSubmit = _ref.handleSubmit,
10023
+ handleSubmit = _ref$handleSubmit === void 0 ? noop : _ref$handleSubmit;
10030
10024
  var _useState = useState(""),
10031
10025
  _useState2 = _slicedToArray$1(_useState, 2),
10032
10026
  query = _useState2[0],
@@ -10053,6 +10047,7 @@ var ImageLibrary = function ImageLibrary(_ref) {
10053
10047
  }
10054
10048
  }), tab === TABS[0].key ? /*#__PURE__*/jsx(Images, {
10055
10049
  debouncedQuery: debouncedQuery,
10050
+ handleSubmit: handleSubmit,
10056
10051
  query: query,
10057
10052
  setSelectedImage: setSelectedImage
10058
10053
  }) : /*#__PURE__*/jsx(UnsplashLibrary, {
@@ -10095,6 +10090,8 @@ var Modal = function Modal(_ref) {
10095
10090
  var _useCreateBlob = useCreateBlob(),
10096
10091
  createBlob = _useCreateBlob.mutate;
10097
10092
  var uploadConfigWithDefaults = mergeRight(DEFAULT_UPLOAD_CONFIG, uploadConfig);
10093
+ var isImageCropEnabled = globalProps.assetsUploaderService !== CLOUD_FLARE;
10094
+ var isCloudFlareImageUploader = globalProps.assetsUploaderService === CLOUD_FLARE;
10098
10095
  var handleCloseModal = function handleCloseModal() {
10099
10096
  onClose();
10100
10097
  setSelectedImage({});
@@ -10107,7 +10104,7 @@ var Modal = function Modal(_ref) {
10107
10104
  });
10108
10105
  } else {
10109
10106
  var payload = {
10110
- filename: editedImage.name,
10107
+ filename: generateASCIIFileName(editedImage.name),
10111
10108
  byte_size: editedImage.size,
10112
10109
  content_type: editedImage.fileType,
10113
10110
  checksum: editedImage.fileId,
@@ -10126,8 +10123,29 @@ var Modal = function Modal(_ref) {
10126
10123
  }
10127
10124
  handleCloseModal();
10128
10125
  };
10126
+ var handleUploadToCloudFlare = function handleUploadToCloudFlare(result) {
10127
+ var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
10128
+ var payload = {
10129
+ filename: generateASCIIFileName(result.filename),
10130
+ content_type: file.type,
10131
+ byte_size: file.size,
10132
+ checksum: result.id,
10133
+ metadata: _objectSpread(_objectSpread({}, result), {}, {
10134
+ url: result.variants[0]
10135
+ }),
10136
+ service_name: "cloudflare_image"
10137
+ };
10138
+ createBlob(payload);
10139
+ };
10140
+ var handleSubmit = function handleSubmit(image) {
10141
+ onUploadComplete({
10142
+ url: image.url,
10143
+ signedId: image.signedId
10144
+ });
10145
+ handleCloseModal();
10146
+ };
10129
10147
  var _useImageUploader = useImageUploader({
10130
- onUploadComplete: setSelectedImage,
10148
+ onUploadComplete: isCloudFlareImageUploader ? handleUploadToCloudFlare : setSelectedImage,
10131
10149
  setIsUploading: setIsUploading
10132
10150
  }),
10133
10151
  uploadFile = _useImageUploader.uploadFile;
@@ -10164,7 +10182,7 @@ var Modal = function Modal(_ref) {
10164
10182
  children: /*#__PURE__*/jsx(Typography, {
10165
10183
  children: t("neetoImageUploader.common.dropHere")
10166
10184
  })
10167
- })), !isNilOrEmpty(selectedImage) ? /*#__PURE__*/jsx(ImageEditor, {
10185
+ })), !isNilOrEmpty(selectedImage) && isImageCropEnabled ? /*#__PURE__*/jsx(ImageEditor, {
10168
10186
  fixedAspectRatio: fixedAspectRatio,
10169
10187
  handleImageEditComplete: handleImageEditComplete,
10170
10188
  handleReset: function handleReset() {
@@ -10215,12 +10233,15 @@ var Modal = function Modal(_ref) {
10215
10233
  })
10216
10234
  })]
10217
10235
  })
10218
- }), /*#__PURE__*/jsx(ImageLibrary, {
10236
+ }), /*#__PURE__*/jsx(ImageLibrary, _objectSpread(_objectSpread({}, _objectSpread({
10219
10237
  setActiveTab: setActiveTab,
10220
10238
  setIsUploading: setIsUploading,
10221
- setSelectedImage: setSelectedImage,
10239
+ setSelectedImage: setSelectedImage
10240
+ }, isCloudFlareImageUploader && {
10241
+ handleSubmit: handleSubmit
10242
+ })), {}, {
10222
10243
  tab: activeTab
10223
- }), equals(activeTab, TABS[1].key) && /*#__PURE__*/jsx(NeetoUIModal.Footer, {
10244
+ })), equals(activeTab, TABS[1].key) && /*#__PURE__*/jsx(NeetoUIModal.Footer, {
10224
10245
  className: "flex items-center justify-center gap-2",
10225
10246
  children: /*#__PURE__*/jsx(Typography, {
10226
10247
  style: "body2",