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

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 (44) hide show
  1. package/app/javascript/src/translations/en.json +2 -2
  2. package/dist/AssetLibrary.js +7 -22
  3. package/dist/AssetLibrary.js.map +1 -1
  4. package/dist/BasicImageUploader.js +3 -3
  5. package/dist/ImageUploader.js +38 -18
  6. package/dist/ImageUploader.js.map +1 -1
  7. package/dist/{ImageWithFallback-aacc383b.js → ImageWithFallback-28c61349.js} +6 -4
  8. package/dist/ImageWithFallback-28c61349.js.map +1 -0
  9. package/dist/{ImageWithFallback-a45f3f4a.js → ImageWithFallback-85563e43.js} +6 -4
  10. package/dist/ImageWithFallback-85563e43.js.map +1 -0
  11. package/dist/cjs/AssetLibrary.js +6 -21
  12. package/dist/cjs/AssetLibrary.js.map +1 -1
  13. package/dist/cjs/BasicImageUploader.js +3 -3
  14. package/dist/cjs/ImageUploader.js +37 -17
  15. package/dist/cjs/ImageUploader.js.map +1 -1
  16. package/dist/cjs/hooks.js +3 -3
  17. package/dist/cjs/index.js +5 -5
  18. package/dist/hooks.js +3 -3
  19. package/dist/{index-7f064861.js → index-69559a7a.js} +3 -1
  20. package/dist/index-69559a7a.js.map +1 -0
  21. package/dist/{index-b9963255.js → index-c128d963.js} +3 -2
  22. package/dist/index-c128d963.js.map +1 -0
  23. package/dist/index.js +5 -5
  24. package/dist/{useImageUploader-36a03350.js → useImageUploader-1dec0b7c.js} +72 -46
  25. package/dist/useImageUploader-1dec0b7c.js.map +1 -0
  26. package/dist/{useImageUploader-550a5fdc.js → useImageUploader-6fb55946.js} +72 -46
  27. package/dist/useImageUploader-6fb55946.js.map +1 -0
  28. package/dist/{useProfileImageUpload-f0088c2a.js → useProfileImageUpload-7035b8b4.js} +4 -4
  29. package/dist/useProfileImageUpload-7035b8b4.js.map +1 -0
  30. package/dist/{useProfileImageUpload-837e76b8.js → useProfileImageUpload-eeeed267.js} +4 -4
  31. package/dist/useProfileImageUpload-eeeed267.js.map +1 -0
  32. package/dist/{utils-88cce499.js → utils-b5f13248.js} +3 -3
  33. package/dist/{utils-88cce499.js.map → utils-b5f13248.js.map} +1 -1
  34. package/dist/{utils-96eacd77.js → utils-fc138f60.js} +3 -3
  35. package/dist/{utils-96eacd77.js.map → utils-fc138f60.js.map} +1 -1
  36. package/package.json +29 -29
  37. package/dist/ImageWithFallback-a45f3f4a.js.map +0 -1
  38. package/dist/ImageWithFallback-aacc383b.js.map +0 -1
  39. package/dist/index-7f064861.js.map +0 -1
  40. package/dist/index-b9963255.js.map +0 -1
  41. package/dist/useImageUploader-36a03350.js.map +0 -1
  42. package/dist/useImageUploader-550a5fdc.js.map +0 -1
  43. package/dist/useProfileImageUpload-837e76b8.js.map +0 -1
  44. package/dist/useProfileImageUpload-f0088c2a.js.map +0 -1
@@ -1,10 +1,10 @@
1
- import { _ as _defineProperty } from './index-b9963255.js';
2
- import { _ as _objectWithoutProperties, i as isNilOrEmpty, l as isNotNilOrEmpty, m as IMAGE_WRAPPER_CLASSNAME } from './utils-96eacd77.js';
1
+ import { _ as _defineProperty } from './index-c128d963.js';
2
+ import { _ as _objectWithoutProperties, i as isNilOrEmpty, l as isNotNilOrEmpty, m as IMAGE_WRAPPER_CLASSNAME } from './utils-fc138f60.js';
3
3
  import classnames from 'classnames';
4
4
  import { noop } from '@bigbinary/neeto-cist';
5
5
  import Delete$1 from '@bigbinary/neeto-icons/Delete';
6
6
  import Button from '@bigbinary/neetoui/Button';
7
- import { I as ImageWithFallback, a as ImageDirectUpload } from './ImageWithFallback-a45f3f4a.js';
7
+ import { I as ImageWithFallback, a as ImageDirectUpload } from './ImageWithFallback-85563e43.js';
8
8
  import { jsx, jsxs } from 'react/jsx-runtime';
9
9
  import '@bigbinary/neeto-commons-frontend/initializers';
10
10
  import 'react';
@@ -1,18 +1,18 @@
1
- import { a as _slicedToArray, _ as _defineProperty, I as IS_DEVELOPMENT_OR_HEROKU_ENV } from './index-b9963255.js';
2
- import { h as DEFAULT_UPLOAD_CONFIG, k as OPTION_KEYS, l as isNotNilOrEmpty, m as IMAGE_WRAPPER_CLASSNAME, _ as _objectWithoutProperties } from './utils-96eacd77.js';
1
+ import { h as DEFAULT_UPLOAD_CONFIG, k as OPTION_KEYS, l as isNotNilOrEmpty, m as IMAGE_WRAPPER_CLASSNAME, _ as _objectWithoutProperties } from './utils-fc138f60.js';
2
+ import { a as _slicedToArray, C as CLOUD_FLARE, _ as _defineProperty, I as IS_DEVELOPMENT_OR_HEROKU_ENV } from './index-c128d963.js';
3
3
  import { useState, createElement } from 'react';
4
4
  import classnames from 'classnames';
5
- import { isPresent, noop } from '@bigbinary/neeto-cist';
5
+ import { removeBy, isPresent, noop } from '@bigbinary/neeto-cist';
6
+ import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
6
7
  import MenuHorizontal from '@bigbinary/neeto-icons/MenuHorizontal';
7
8
  import Dropdown from '@bigbinary/neetoui/Dropdown';
8
9
  import Toastr from '@bigbinary/neetoui/Toastr';
9
10
  import { mergeRight } from 'ramda';
10
11
  import { useTranslation } from 'react-i18next';
11
- import { I as ImageWithFallback, a as ImageDirectUpload } from './ImageWithFallback-a45f3f4a.js';
12
+ import { I as ImageWithFallback, a as ImageDirectUpload } from './ImageWithFallback-85563e43.js';
12
13
  import Modal from './AssetLibrary.js';
13
- import { u as useCreateBlob, e as useImageUploader } from './useImageUploader-36a03350.js';
14
+ import { u as useCreateBlob, e as useImageUploader, f as generateASCIIFileName } from './useImageUploader-1dec0b7c.js';
14
15
  import { jsxs, jsx } from 'react/jsx-runtime';
15
- import '@bigbinary/neeto-commons-frontend/initializers';
16
16
  import 'react-dropzone';
17
17
  import 'i18next';
18
18
  import '@bigbinary/neetoui/Button';
@@ -107,6 +107,7 @@ var ImageUploader = function ImageUploader(_ref) {
107
107
  var _useCreateBlob = useCreateBlob(),
108
108
  createBlob = _useCreateBlob.mutate;
109
109
  var uploadConfigWithDefaults = mergeRight(DEFAULT_UPLOAD_CONFIG, uploadConfig);
110
+ var isCloudFlareImageUploader = globalProps.assetsUploaderService === CLOUD_FLARE;
110
111
  var handleDelete = function handleDelete() {
111
112
  setImage({});
112
113
  onChange({
@@ -126,7 +127,7 @@ var ImageUploader = function ImageUploader(_ref) {
126
127
  url: attachedImage.metadata.url
127
128
  }));
128
129
  onChange({
129
- filename: attachedImage.filename,
130
+ filename: generateASCIIFileName(attachedImage.filename),
130
131
  key: attachedImage.key,
131
132
  url: attachedImage.blobUrl,
132
133
  signedId: attachedImage.signedId,
@@ -138,23 +139,39 @@ var ImageUploader = function ImageUploader(_ref) {
138
139
  setImage(image);
139
140
  onChange(image);
140
141
  };
141
- var handleUploadComplete = function handleUploadComplete(image) {
142
+ var handleUploadComplete = function handleUploadComplete(result) {
143
+ var file = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
142
144
  if (IS_DEVELOPMENT_OR_HEROKU_ENV) {
143
- handleSuccess(mergeRight(image, {
145
+ handleSuccess(mergeRight(result, {
144
146
  metadata: {
145
- url: image.url
147
+ url: result.url
146
148
  }
147
149
  }));
148
150
  return;
149
151
  }
150
- var payload = {
151
- filename: image.name,
152
- byte_size: image.size,
153
- content_type: image.fileType,
154
- checksum: image.fileId,
155
- metadata: image,
156
- service_name: "imagekitio"
152
+ var imageKitPayload = function imageKitPayload() {
153
+ return {
154
+ filename: generateASCIIFileName(result.name),
155
+ byte_size: result.size,
156
+ content_type: result.fileType,
157
+ checksum: result.fileId,
158
+ metadata: result,
159
+ service_name: "imagekitio"
160
+ };
157
161
  };
162
+ var cloudFlarePayload = function cloudFlarePayload() {
163
+ return {
164
+ filename: generateASCIIFileName(result.filename),
165
+ content_type: file.type,
166
+ byte_size: file.size,
167
+ checksum: result.id,
168
+ metadata: _objectSpread(_objectSpread({}, result), {}, {
169
+ url: result.variants[0]
170
+ }),
171
+ service_name: "cloudflare_image"
172
+ };
173
+ };
174
+ var payload = isCloudFlareImageUploader ? cloudFlarePayload() : imageKitPayload();
158
175
  createBlob(payload, {
159
176
  onSuccess: handleSuccess,
160
177
  onError: Toastr.error
@@ -177,6 +194,9 @@ var ImageUploader = function ImageUploader(_ref) {
177
194
  onClick: handleDelete,
178
195
  "data-cy": "image-uploader-remove-button"
179
196
  }];
197
+ var updatedOptions = isCloudFlareImageUploader ? removeBy({
198
+ key: OPTION_KEYS.asset
199
+ }, options) : options;
180
200
  return /*#__PURE__*/jsxs("div", {
181
201
  className: classnames(className, {
182
202
  "cursor-pointer": true
@@ -197,7 +217,7 @@ var ImageUploader = function ImageUploader(_ref) {
197
217
  className: "absolute right-3 top-3 rounded-full"
198
218
  },
199
219
  children: /*#__PURE__*/jsx(Menu, {
200
- children: options.map(function (_ref2) {
220
+ children: updatedOptions.map(function (_ref2) {
201
221
  var key = _ref2.key,
202
222
  label = _ref2.label,
203
223
  otherProps = _objectWithoutProperties(_ref2, _excluded);
@@ -1 +1 @@
1
- {"version":3,"file":"ImageUploader.js","sources":["../app/javascript/src/components/ImageUploader/index.jsx"],"sourcesContent":["import { useState } from \"react\";\n\nimport classnames from \"classnames\";\nimport { isPresent, noop } from \"neetocist\";\nimport { MenuHorizontal } from \"neetoicons\";\nimport { Dropdown, Toastr } from \"neetoui\";\nimport { mergeRight } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport ImageDirectUpload from \"components/common/ImageDirectUpload\";\nimport ImageWithFallback from \"components/common/ImageWithFallback\";\nimport { IMAGE_WRAPPER_CLASSNAME } from \"components/constants\";\nimport { isNotNilOrEmpty } from \"components/ImageEditor/utils\";\nimport AssetLibrary from \"components/Modal\";\nimport { useCreateBlob } from \"hooks/useDirectUploads\";\nimport useImageUploader from \"hooks/useImageUploader\";\nimport { IS_DEVELOPMENT_OR_HEROKU_ENV } from \"src/constants\";\n\nimport { DEFAULT_UPLOAD_CONFIG, OPTION_KEYS } from \"./constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst ImageUploader = ({\n onUploadComplete = noop,\n className = \"\",\n src = \"\",\n uploadConfig = {},\n fixedAspectRatio = {},\n}) => {\n const [isAssetLibraryOpen, setIsAssetLibraryOpen] = useState(false);\n const [image, setImage] = useState({ url: src });\n\n const { t } = useTranslation();\n\n const { mutate: createBlob } = useCreateBlob();\n\n const uploadConfigWithDefaults = mergeRight(\n DEFAULT_UPLOAD_CONFIG,\n uploadConfig\n );\n\n const handleDelete = () => {\n setImage({});\n onChange({\n url: \"\",\n signedId: \"\",\n key: \"\",\n filename: \"\",\n size: \"\",\n type: \"\",\n });\n };\n\n const onChange = file => onUploadComplete(file);\n\n const handleSuccess = attachedImage => {\n setImage(mergeRight(image, { url: attachedImage.metadata.url }));\n onChange({\n filename: attachedImage.filename,\n key: attachedImage.key,\n url: attachedImage.blobUrl,\n signedId: attachedImage.signedId,\n size: attachedImage.byteSize,\n type: attachedImage.contentType,\n });\n };\n\n const handleImageSelectionFromLibrary = image => {\n setImage(image);\n onChange(image);\n };\n\n const handleUploadComplete = image => {\n if (IS_DEVELOPMENT_OR_HEROKU_ENV) {\n handleSuccess(mergeRight(image, { metadata: { url: image.url } }));\n\n return;\n }\n\n const payload = {\n filename: image.name,\n byte_size: image.size,\n content_type: image.fileType,\n checksum: image.fileId,\n metadata: image,\n service_name: \"imagekitio\",\n };\n\n createBlob(payload, {\n onSuccess: handleSuccess,\n onError: Toastr.error,\n });\n };\n\n const { uploadFile } = useImageUploader({\n onUploadComplete: handleUploadComplete,\n });\n\n const options = [\n {\n key: OPTION_KEYS.asset,\n label: t(\"neetoImageUploader.imageUpload.imageLibrary\"),\n onClick: () => setIsAssetLibraryOpen(true),\n \"data-cy\": \"image-uploader-open-image-library-button\",\n },\n {\n key: OPTION_KEYS.remove,\n label: t(\"neetoImageUploader.imageUpload.remove\"),\n onClick: handleDelete,\n \"data-cy\": \"image-uploader-remove-button\",\n },\n ];\n\n return (\n <div className={classnames(className, { \"cursor-pointer\": true })}>\n {isNotNilOrEmpty(image.url) ? (\n <div\n className={IMAGE_WRAPPER_CLASSNAME}\n data-cy=\"image-uploader-wrapper\"\n >\n <ImageWithFallback\n className=\"h-full w-full\"\n data-cy=\"uploaded-image\"\n src={image.url}\n />\n <Dropdown\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={MenuHorizontal}\n buttonProps={{\n // eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes\n className: \"absolute right-3 top-3 rounded-full\",\n }}\n >\n <Menu>\n {options.map(({ key, label, ...otherProps }) => (\n <MenuItem.Button {...otherProps} key={key}>\n {label}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n </div>\n ) : (\n <ImageDirectUpload\n {...{ setIsAssetLibraryOpen }}\n isDisabled={isPresent(fixedAspectRatio)}\n uploadConfig={uploadConfigWithDefaults}\n onDrop={uploadFile}\n />\n )}\n <AssetLibrary\n {...{ fixedAspectRatio }}\n isOpen={isAssetLibraryOpen}\n uploadConfig={uploadConfigWithDefaults}\n onClose={() => setIsAssetLibraryOpen(false)}\n onUploadComplete={handleImageSelectionFromLibrary}\n />\n </div>\n );\n};\n\nexport default ImageUploader;\n"],"names":["Menu","Dropdown","MenuItem","ImageUploader","_ref","_ref$onUploadComplete","onUploadComplete","noop","_ref$className","className","_ref$src","src","_ref$uploadConfig","uploadConfig","_ref$fixedAspectRatio","fixedAspectRatio","_useState","useState","_useState2","_slicedToArray","isAssetLibraryOpen","setIsAssetLibraryOpen","_useState3","url","_useState4","image","setImage","_useTranslation","useTranslation","t","_useCreateBlob","useCreateBlob","createBlob","mutate","uploadConfigWithDefaults","mergeRight","DEFAULT_UPLOAD_CONFIG","handleDelete","onChange","signedId","key","filename","size","type","file","handleSuccess","attachedImage","metadata","blobUrl","byteSize","contentType","handleImageSelectionFromLibrary","handleUploadComplete","IS_DEVELOPMENT_OR_HEROKU_ENV","payload","name","byte_size","content_type","fileType","checksum","fileId","service_name","onSuccess","onError","Toastr","error","_useImageUploader","useImageUploader","uploadFile","options","OPTION_KEYS","asset","label","onClick","remove","_jsxs","classnames","children","isNotNilOrEmpty","IMAGE_WRAPPER_CLASSNAME","_jsx","ImageWithFallback","buttonSize","buttonStyle","icon","MenuHorizontal","buttonProps","map","_ref2","otherProps","_objectWithoutProperties","_excluded","_createElement","Button","_objectSpread","ImageDirectUpload","isDisabled","isPresent","onDrop","AssetLibrary","isOpen","onClose"],"mappings":"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"}
1
+ {"version":3,"file":"ImageUploader.js","sources":["../app/javascript/src/components/ImageUploader/index.jsx"],"sourcesContent":["import { useState } from \"react\";\n\nimport classnames from \"classnames\";\nimport { isPresent, noop, removeBy } from \"neetocist\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { MenuHorizontal } from \"neetoicons\";\nimport { Dropdown, Toastr } from \"neetoui\";\nimport { mergeRight } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport ImageDirectUpload from \"components/common/ImageDirectUpload\";\nimport ImageWithFallback from \"components/common/ImageWithFallback\";\nimport { IMAGE_WRAPPER_CLASSNAME } from \"components/constants\";\nimport { isNotNilOrEmpty } from \"components/ImageEditor/utils\";\nimport AssetLibrary from \"components/Modal\";\nimport { useCreateBlob } from \"hooks/useDirectUploads\";\nimport useImageUploader from \"hooks/useImageUploader\";\nimport { generateASCIIFileName } from \"hooks/utils\";\nimport { CLOUD_FLARE, IS_DEVELOPMENT_OR_HEROKU_ENV } from \"src/constants\";\n\nimport { DEFAULT_UPLOAD_CONFIG, OPTION_KEYS } from \"./constants\";\n\nconst { Menu, MenuItem } = Dropdown;\n\nconst ImageUploader = ({\n onUploadComplete = noop,\n className = \"\",\n src = \"\",\n uploadConfig = {},\n fixedAspectRatio = {},\n}) => {\n const [isAssetLibraryOpen, setIsAssetLibraryOpen] = useState(false);\n const [image, setImage] = useState({ url: src });\n\n const { t } = useTranslation();\n\n const { mutate: createBlob } = useCreateBlob();\n\n const uploadConfigWithDefaults = mergeRight(\n DEFAULT_UPLOAD_CONFIG,\n uploadConfig\n );\n\n const isCloudFlareImageUploader =\n globalProps.assetsUploaderService === CLOUD_FLARE;\n\n const handleDelete = () => {\n setImage({});\n onChange({\n url: \"\",\n signedId: \"\",\n key: \"\",\n filename: \"\",\n size: \"\",\n type: \"\",\n });\n };\n\n const onChange = file => onUploadComplete(file);\n\n const handleSuccess = attachedImage => {\n setImage(mergeRight(image, { url: attachedImage.metadata.url }));\n onChange({\n filename: generateASCIIFileName(attachedImage.filename),\n key: attachedImage.key,\n url: attachedImage.blobUrl,\n signedId: attachedImage.signedId,\n size: attachedImage.byteSize,\n type: attachedImage.contentType,\n });\n };\n\n const handleImageSelectionFromLibrary = image => {\n setImage(image);\n onChange(image);\n };\n\n const handleUploadComplete = (result, file = {}) => {\n if (IS_DEVELOPMENT_OR_HEROKU_ENV) {\n handleSuccess(mergeRight(result, { metadata: { url: result.url } }));\n\n return;\n }\n\n const imageKitPayload = () => ({\n filename: generateASCIIFileName(result.name),\n byte_size: result.size,\n content_type: result.fileType,\n checksum: result.fileId,\n metadata: result,\n service_name: \"imagekitio\",\n });\n\n const cloudFlarePayload = () => ({\n filename: generateASCIIFileName(result.filename),\n content_type: file.type,\n byte_size: file.size,\n checksum: result.id,\n metadata: { ...result, url: result.variants[0] },\n service_name: \"cloudflare_image\",\n });\n\n const payload = isCloudFlareImageUploader\n ? cloudFlarePayload()\n : imageKitPayload();\n\n createBlob(payload, {\n onSuccess: handleSuccess,\n onError: Toastr.error,\n });\n };\n\n const { uploadFile } = useImageUploader({\n onUploadComplete: handleUploadComplete,\n });\n\n const options = [\n {\n key: OPTION_KEYS.asset,\n label: t(\"neetoImageUploader.imageUpload.imageLibrary\"),\n onClick: () => setIsAssetLibraryOpen(true),\n \"data-cy\": \"image-uploader-open-image-library-button\",\n },\n {\n key: OPTION_KEYS.remove,\n label: t(\"neetoImageUploader.imageUpload.remove\"),\n onClick: handleDelete,\n \"data-cy\": \"image-uploader-remove-button\",\n },\n ];\n\n const updatedOptions = isCloudFlareImageUploader\n ? removeBy({ key: OPTION_KEYS.asset }, options)\n : options;\n\n return (\n <div className={classnames(className, { \"cursor-pointer\": true })}>\n {isNotNilOrEmpty(image.url) ? (\n <div\n className={IMAGE_WRAPPER_CLASSNAME}\n data-cy=\"image-uploader-wrapper\"\n >\n <ImageWithFallback\n className=\"h-full w-full\"\n data-cy=\"uploaded-image\"\n src={image.url}\n />\n <Dropdown\n buttonSize=\"small\"\n buttonStyle=\"tertiary\"\n icon={MenuHorizontal}\n buttonProps={{\n // eslint-disable-next-line @bigbinary/neeto/use-neetoui-classes\n className: \"absolute right-3 top-3 rounded-full\",\n }}\n >\n <Menu>\n {updatedOptions.map(({ key, label, ...otherProps }) => (\n <MenuItem.Button {...otherProps} key={key}>\n {label}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n </div>\n ) : (\n <ImageDirectUpload\n {...{ setIsAssetLibraryOpen }}\n isDisabled={isPresent(fixedAspectRatio)}\n uploadConfig={uploadConfigWithDefaults}\n onDrop={uploadFile}\n />\n )}\n <AssetLibrary\n {...{ fixedAspectRatio }}\n isOpen={isAssetLibraryOpen}\n uploadConfig={uploadConfigWithDefaults}\n onClose={() => setIsAssetLibraryOpen(false)}\n onUploadComplete={handleImageSelectionFromLibrary}\n />\n </div>\n );\n};\n\nexport default ImageUploader;\n"],"names":["Menu","Dropdown","MenuItem","ImageUploader","_ref","_ref$onUploadComplete","onUploadComplete","noop","_ref$className","className","_ref$src","src","_ref$uploadConfig","uploadConfig","_ref$fixedAspectRatio","fixedAspectRatio","_useState","useState","_useState2","_slicedToArray","isAssetLibraryOpen","setIsAssetLibraryOpen","_useState3","url","_useState4","image","setImage","_useTranslation","useTranslation","t","_useCreateBlob","useCreateBlob","createBlob","mutate","uploadConfigWithDefaults","mergeRight","DEFAULT_UPLOAD_CONFIG","isCloudFlareImageUploader","globalProps","assetsUploaderService","CLOUD_FLARE","handleDelete","onChange","signedId","key","filename","size","type","file","handleSuccess","attachedImage","metadata","generateASCIIFileName","blobUrl","byteSize","contentType","handleImageSelectionFromLibrary","handleUploadComplete","result","arguments","length","undefined","IS_DEVELOPMENT_OR_HEROKU_ENV","imageKitPayload","name","byte_size","content_type","fileType","checksum","fileId","service_name","cloudFlarePayload","id","_objectSpread","variants","payload","onSuccess","onError","Toastr","error","_useImageUploader","useImageUploader","uploadFile","options","OPTION_KEYS","asset","label","onClick","remove","updatedOptions","removeBy","_jsxs","classnames","children","isNotNilOrEmpty","IMAGE_WRAPPER_CLASSNAME","_jsx","ImageWithFallback","buttonSize","buttonStyle","icon","MenuHorizontal","buttonProps","map","_ref2","otherProps","_objectWithoutProperties","_excluded","_createElement","Button","ImageDirectUpload","isDisabled","isPresent","onDrop","AssetLibrary","isOpen","onClose"],"mappings":"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"}
@@ -1,13 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var index = require('./index-7f064861.js');
3
+ var index = require('./index-69559a7a.js');
4
4
  var classnames = require('classnames');
5
5
  var neetoCist = require('@bigbinary/neeto-cist');
6
+ var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
6
7
  var Button = require('@bigbinary/neetoui/Button');
7
8
  var Typography = require('@bigbinary/neetoui/Typography');
8
9
  var ramda = require('ramda');
9
10
  var reactI18next = require('react-i18next');
10
- var utils = require('./utils-88cce499.js');
11
+ var utils = require('./utils-b5f13248.js');
11
12
  var jsxRuntime = require('react/jsx-runtime');
12
13
  var require$$0 = require('react');
13
14
 
@@ -62,6 +63,7 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
62
63
  isDragActive = _useUploadDropzone.isDragActive,
63
64
  uploadProgress = _useUploadDropzone.uploadProgress;
64
65
  var shouldShowProgress = !!(uploadProgress && !ramda.equals(uploadProgress, 1));
66
+ var isImageLibraryDisabled = initializers.globalProps.assetsUploaderService !== index.CLOUD_FLARE;
65
67
  return shouldShowProgress ? /*#__PURE__*/jsxRuntime.jsx(ProgressBar, {
66
68
  progressPercentage: uploadProgress,
67
69
  progressValue: "".concat(uploadProgress, "%")
@@ -84,7 +86,7 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
84
86
  })
85
87
  }
86
88
  })
87
- }), setIsAssetLibraryOpen && /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
89
+ }), setIsAssetLibraryOpen && isImageLibraryDisabled && /*#__PURE__*/jsxRuntime.jsx(Typography__default["default"], {
88
90
  className: "text-center leading-4",
89
91
  style: "body2",
90
92
  onClick: function onClick(e) {
@@ -164,4 +166,4 @@ var ImageWithFallback = function ImageWithFallback(_ref) {
164
166
 
165
167
  exports.ImageDirectUpload = ImageDirectUpload;
166
168
  exports.ImageWithFallback = ImageWithFallback;
167
- //# sourceMappingURL=ImageWithFallback-aacc383b.js.map
169
+ //# sourceMappingURL=ImageWithFallback-28c61349.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageWithFallback-28c61349.js","sources":["../app/javascript/src/components/ImageUploader/utils.js","../app/javascript/src/components/common/ProgressBar.jsx","../app/javascript/src/components/common/ImageDirectUpload.jsx","../app/javascript/src/components/common/ImagePlaceholder.jsx","../app/javascript/src/components/common/ImageWithFallback.jsx"],"sourcesContent":["import { flatten, pipe, join, map, toUpper, values } from \"ramda\";\n\nexport const getAllowedTypes = uploadConfig =>\n pipe(\n values,\n flatten,\n map(extension => extension.slice(1)),\n map(toUpper),\n join(\", \")\n )(uploadConfig.allowedImageTypes);\n","const ProgressBar = ({ progressPercentage = 0, progressValue }) => (\n <div className=\"neeto-ui-border-primary-600 hover:neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex h-full cursor-pointer items-center justify-center gap-3 border border-dashed p-5 transition-all duration-300 ease-in-out\">\n <div className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-full w-full overflow-hidden dark:bg-gray-700\">\n <div\n className=\"neeto-ui-bg-primary-600 text-2xs neeto-ui-text-primary-100 neeto-ui-rounded-full flex h-3 animate-pulse items-center justify-center font-medium leading-none transition-all duration-300 ease-in-out\"\n data-cy=\"neeto-image-uploader-progress-bar\"\n style={{ width: `${progressPercentage}%` }}\n >\n {progressValue}\n </div>\n </div>\n </div>\n);\n\nexport default ProgressBar;\n","import classnames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Button, Typography } from \"neetoui\";\nimport { equals } from \"ramda\";\nimport { Trans } from \"react-i18next\";\n\nimport { DEFAULT_UPLOAD_CONFIG } from \"components/ImageUploader/constants\";\nimport { getAllowedTypes } from \"components/ImageUploader/utils\";\nimport useUploadDropzone from \"hooks/useUploadDropzone\";\nimport { CLOUD_FLARE } from \"src/constants\";\n\nimport { DROPZONE_ROOT_DIV_CLASSNAME } from \"./constants\";\nimport ProgressBar from \"./ProgressBar\";\n\nconst ImageDirectUpload = ({\n uploadConfig = DEFAULT_UPLOAD_CONFIG,\n onDrop = noop,\n isDisabled = false,\n setIsAssetLibraryOpen,\n}) => {\n const { getRootProps, getInputProps, isDragActive, uploadProgress } =\n useUploadDropzone({ uploadConfig, onDrop });\n\n const shouldShowProgress = !!(uploadProgress && !equals(uploadProgress, 1));\n\n const isImageLibraryDisabled =\n globalProps.assetsUploaderService !== CLOUD_FLARE;\n\n return shouldShowProgress ? (\n <ProgressBar\n progressPercentage={uploadProgress}\n progressValue={`${uploadProgress}%`}\n />\n ) : (\n <div\n {...getRootProps()}\n className={classnames(DROPZONE_ROOT_DIV_CLASSNAME, {\n \"neeto-ui-border-gray-300\": !isDragActive,\n \"neeto-ui-border-gray-700\": isDragActive,\n })}\n >\n <div className=\"flex flex-col space-y-1\">\n {!isDisabled && (\n <Typography\n className=\"neeto-ui-text-gray-800 text-center leading-4\"\n style=\"body2\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.dragAndDropOrBrowseFile\"\n components={{\n span: (\n <Button\n data-cy=\"neeto-image-uploader-browse-text\"\n style=\"link\"\n />\n ),\n }}\n />\n </Typography>\n )}\n {setIsAssetLibraryOpen && isImageLibraryDisabled && (\n <Typography\n className=\"text-center leading-4\"\n style=\"body2\"\n onClick={e => {\n e.stopPropagation();\n setIsAssetLibraryOpen(true);\n }}\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.selectImagefromImageLibrary\"\n components={{\n span: (\n <Button data-cy=\"open-asset-library-button\" style=\"link\" />\n ),\n }}\n />\n </Typography>\n )}\n <input\n {...getInputProps()}\n data-cy=\"neeto-image-uploader-file-input\"\n disabled={isDisabled}\n />\n <Typography\n className=\"neeto-ui-text-gray-700 text-center leading-4\"\n data-cy=\"neeto-image-uploader-restriction-message\"\n lineHeight=\"snug\"\n style=\"nano\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.restrictionMessage\"\n values={{\n fileTypes: getAllowedTypes(uploadConfig),\n size: uploadConfig?.maxImageSize,\n }}\n />\n </Typography>\n </div>\n </div>\n );\n};\n\nexport default ImageDirectUpload;\n","import classnames from \"classnames\";\n\nconst ImagePlaceholder = ({ className = \"\", ...props }) => (\n <div\n className={classnames(\"neeto-ui-bg-gray-200\", {\n [className]: className,\n })}\n {...props}\n />\n);\n\nexport default ImagePlaceholder;\n","import { useEffect, useState } from \"react\";\n\nimport ImagePlaceholder from \"./ImagePlaceholder\";\n\nconst ImageWithFallback = ({\n src,\n className = \"h-full w-full\",\n fallback: Fallback = ImagePlaceholder,\n ...props\n}) => {\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n const img = new Image();\n img.onload = () => {\n setIsLoaded(true);\n };\n img.src = src;\n }, [src]);\n\n return isLoaded ? (\n <img {...{ src, ...props }} className=\"h-full w-auto object-contain\" />\n ) : (\n <Fallback {...{ className, ...props }} />\n );\n};\n\nexport default ImageWithFallback;\n"],"names":["getAllowedTypes","uploadConfig","pipe","values","flatten","map","extension","slice","toUpper","join","allowedImageTypes","ProgressBar","_ref","_ref$progressPercenta","progressPercentage","progressValue","_jsx","className","children","style","width","concat","ImageDirectUpload","_ref$uploadConfig","DEFAULT_UPLOAD_CONFIG","_ref$onDrop","onDrop","noop","_ref$isDisabled","isDisabled","setIsAssetLibraryOpen","_useUploadDropzone","useUploadDropzone","getRootProps","getInputProps","isDragActive","uploadProgress","shouldShowProgress","equals","isImageLibraryDisabled","globalProps","assetsUploaderService","CLOUD_FLARE","_objectSpread","classnames","DROPZONE_ROOT_DIV_CLASSNAME","_jsxs","Typography","Trans","i18nKey","components","span","Button","onClick","e","stopPropagation","disabled","lineHeight","fileTypes","size","maxImageSize","ImagePlaceholder","_ref$className","props","_objectWithoutProperties","_excluded","_defineProperty","ImageWithFallback","src","_ref$fallback","fallback","Fallback","_useState","useState","_useState2","_slicedToArray","isLoaded","setIsLoaded","useEffect","img","Image","onload"],"mappings":"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"}
@@ -1,11 +1,12 @@
1
- import { _ as _defineProperty, a as _slicedToArray } from './index-b9963255.js';
1
+ import { C as CLOUD_FLARE, _ as _defineProperty, a as _slicedToArray } from './index-c128d963.js';
2
2
  import classnames from 'classnames';
3
3
  import { noop } from '@bigbinary/neeto-cist';
4
+ import { globalProps } from '@bigbinary/neeto-commons-frontend/initializers';
4
5
  import Button from '@bigbinary/neetoui/Button';
5
6
  import Typography from '@bigbinary/neetoui/Typography';
6
7
  import { pipe, values, flatten, map, toUpper, join, equals } from 'ramda';
7
8
  import { Trans } from 'react-i18next';
8
- import { u as useUploadDropzone, n as DROPZONE_ROOT_DIV_CLASSNAME, h as DEFAULT_UPLOAD_CONFIG, _ as _objectWithoutProperties } from './utils-96eacd77.js';
9
+ import { u as useUploadDropzone, n as DROPZONE_ROOT_DIV_CLASSNAME, h as DEFAULT_UPLOAD_CONFIG, _ as _objectWithoutProperties } from './utils-fc138f60.js';
9
10
  import { jsx, jsxs } from 'react/jsx-runtime';
10
11
  import { useState, useEffect } from 'react';
11
12
 
@@ -54,6 +55,7 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
54
55
  isDragActive = _useUploadDropzone.isDragActive,
55
56
  uploadProgress = _useUploadDropzone.uploadProgress;
56
57
  var shouldShowProgress = !!(uploadProgress && !equals(uploadProgress, 1));
58
+ var isImageLibraryDisabled = globalProps.assetsUploaderService !== CLOUD_FLARE;
57
59
  return shouldShowProgress ? /*#__PURE__*/jsx(ProgressBar, {
58
60
  progressPercentage: uploadProgress,
59
61
  progressValue: "".concat(uploadProgress, "%")
@@ -76,7 +78,7 @@ var ImageDirectUpload = function ImageDirectUpload(_ref) {
76
78
  })
77
79
  }
78
80
  })
79
- }), setIsAssetLibraryOpen && /*#__PURE__*/jsx(Typography, {
81
+ }), setIsAssetLibraryOpen && isImageLibraryDisabled && /*#__PURE__*/jsx(Typography, {
80
82
  className: "text-center leading-4",
81
83
  style: "body2",
82
84
  onClick: function onClick(e) {
@@ -155,4 +157,4 @@ var ImageWithFallback = function ImageWithFallback(_ref) {
155
157
  };
156
158
 
157
159
  export { ImageWithFallback as I, ImageDirectUpload as a };
158
- //# sourceMappingURL=ImageWithFallback-a45f3f4a.js.map
160
+ //# sourceMappingURL=ImageWithFallback-85563e43.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageWithFallback-85563e43.js","sources":["../app/javascript/src/components/ImageUploader/utils.js","../app/javascript/src/components/common/ProgressBar.jsx","../app/javascript/src/components/common/ImageDirectUpload.jsx","../app/javascript/src/components/common/ImagePlaceholder.jsx","../app/javascript/src/components/common/ImageWithFallback.jsx"],"sourcesContent":["import { flatten, pipe, join, map, toUpper, values } from \"ramda\";\n\nexport const getAllowedTypes = uploadConfig =>\n pipe(\n values,\n flatten,\n map(extension => extension.slice(1)),\n map(toUpper),\n join(\", \")\n )(uploadConfig.allowedImageTypes);\n","const ProgressBar = ({ progressPercentage = 0, progressValue }) => (\n <div className=\"neeto-ui-border-primary-600 hover:neeto-ui-bg-gray-100 neeto-ui-rounded-lg flex h-full cursor-pointer items-center justify-center gap-3 border border-dashed p-5 transition-all duration-300 ease-in-out\">\n <div className=\"neeto-ui-bg-gray-200 neeto-ui-rounded-full w-full overflow-hidden dark:bg-gray-700\">\n <div\n className=\"neeto-ui-bg-primary-600 text-2xs neeto-ui-text-primary-100 neeto-ui-rounded-full flex h-3 animate-pulse items-center justify-center font-medium leading-none transition-all duration-300 ease-in-out\"\n data-cy=\"neeto-image-uploader-progress-bar\"\n style={{ width: `${progressPercentage}%` }}\n >\n {progressValue}\n </div>\n </div>\n </div>\n);\n\nexport default ProgressBar;\n","import classnames from \"classnames\";\nimport { noop } from \"neetocist\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { Button, Typography } from \"neetoui\";\nimport { equals } from \"ramda\";\nimport { Trans } from \"react-i18next\";\n\nimport { DEFAULT_UPLOAD_CONFIG } from \"components/ImageUploader/constants\";\nimport { getAllowedTypes } from \"components/ImageUploader/utils\";\nimport useUploadDropzone from \"hooks/useUploadDropzone\";\nimport { CLOUD_FLARE } from \"src/constants\";\n\nimport { DROPZONE_ROOT_DIV_CLASSNAME } from \"./constants\";\nimport ProgressBar from \"./ProgressBar\";\n\nconst ImageDirectUpload = ({\n uploadConfig = DEFAULT_UPLOAD_CONFIG,\n onDrop = noop,\n isDisabled = false,\n setIsAssetLibraryOpen,\n}) => {\n const { getRootProps, getInputProps, isDragActive, uploadProgress } =\n useUploadDropzone({ uploadConfig, onDrop });\n\n const shouldShowProgress = !!(uploadProgress && !equals(uploadProgress, 1));\n\n const isImageLibraryDisabled =\n globalProps.assetsUploaderService !== CLOUD_FLARE;\n\n return shouldShowProgress ? (\n <ProgressBar\n progressPercentage={uploadProgress}\n progressValue={`${uploadProgress}%`}\n />\n ) : (\n <div\n {...getRootProps()}\n className={classnames(DROPZONE_ROOT_DIV_CLASSNAME, {\n \"neeto-ui-border-gray-300\": !isDragActive,\n \"neeto-ui-border-gray-700\": isDragActive,\n })}\n >\n <div className=\"flex flex-col space-y-1\">\n {!isDisabled && (\n <Typography\n className=\"neeto-ui-text-gray-800 text-center leading-4\"\n style=\"body2\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.dragAndDropOrBrowseFile\"\n components={{\n span: (\n <Button\n data-cy=\"neeto-image-uploader-browse-text\"\n style=\"link\"\n />\n ),\n }}\n />\n </Typography>\n )}\n {setIsAssetLibraryOpen && isImageLibraryDisabled && (\n <Typography\n className=\"text-center leading-4\"\n style=\"body2\"\n onClick={e => {\n e.stopPropagation();\n setIsAssetLibraryOpen(true);\n }}\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.selectImagefromImageLibrary\"\n components={{\n span: (\n <Button data-cy=\"open-asset-library-button\" style=\"link\" />\n ),\n }}\n />\n </Typography>\n )}\n <input\n {...getInputProps()}\n data-cy=\"neeto-image-uploader-file-input\"\n disabled={isDisabled}\n />\n <Typography\n className=\"neeto-ui-text-gray-700 text-center leading-4\"\n data-cy=\"neeto-image-uploader-restriction-message\"\n lineHeight=\"snug\"\n style=\"nano\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.restrictionMessage\"\n values={{\n fileTypes: getAllowedTypes(uploadConfig),\n size: uploadConfig?.maxImageSize,\n }}\n />\n </Typography>\n </div>\n </div>\n );\n};\n\nexport default ImageDirectUpload;\n","import classnames from \"classnames\";\n\nconst ImagePlaceholder = ({ className = \"\", ...props }) => (\n <div\n className={classnames(\"neeto-ui-bg-gray-200\", {\n [className]: className,\n })}\n {...props}\n />\n);\n\nexport default ImagePlaceholder;\n","import { useEffect, useState } from \"react\";\n\nimport ImagePlaceholder from \"./ImagePlaceholder\";\n\nconst ImageWithFallback = ({\n src,\n className = \"h-full w-full\",\n fallback: Fallback = ImagePlaceholder,\n ...props\n}) => {\n const [isLoaded, setIsLoaded] = useState(false);\n\n useEffect(() => {\n const img = new Image();\n img.onload = () => {\n setIsLoaded(true);\n };\n img.src = src;\n }, [src]);\n\n return isLoaded ? (\n <img {...{ src, ...props }} className=\"h-full w-auto object-contain\" />\n ) : (\n <Fallback {...{ className, ...props }} />\n );\n};\n\nexport default ImageWithFallback;\n"],"names":["getAllowedTypes","uploadConfig","pipe","values","flatten","map","extension","slice","toUpper","join","allowedImageTypes","ProgressBar","_ref","_ref$progressPercenta","progressPercentage","progressValue","_jsx","className","children","style","width","concat","ImageDirectUpload","_ref$uploadConfig","DEFAULT_UPLOAD_CONFIG","_ref$onDrop","onDrop","noop","_ref$isDisabled","isDisabled","setIsAssetLibraryOpen","_useUploadDropzone","useUploadDropzone","getRootProps","getInputProps","isDragActive","uploadProgress","shouldShowProgress","equals","isImageLibraryDisabled","globalProps","assetsUploaderService","CLOUD_FLARE","_objectSpread","classnames","DROPZONE_ROOT_DIV_CLASSNAME","_jsxs","Typography","Trans","i18nKey","components","span","Button","onClick","e","stopPropagation","disabled","lineHeight","fileTypes","size","maxImageSize","ImagePlaceholder","_ref$className","props","_objectWithoutProperties","_excluded","_defineProperty","ImageWithFallback","src","_ref$fallback","fallback","Fallback","_useState","useState","_useState2","_slicedToArray","isLoaded","setIsLoaded","useEffect","img","Image","onload"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
- var utils$3 = require('../utils-88cce499.js');
4
- var index = require('../index-7f064861.js');
3
+ var utils$3 = require('../utils-b5f13248.js');
4
+ var index = require('../index-69559a7a.js');
5
5
  var require$$0 = require('react');
6
6
  var neetoCist = require('@bigbinary/neeto-cist');
7
7
  var NeetoUIModal = require('@bigbinary/neetoui/Modal');
@@ -12,7 +12,7 @@ var Toastr = require('@bigbinary/neetoui/Toastr');
12
12
  var Typography = require('@bigbinary/neetoui/Typography');
13
13
  var ramda = require('ramda');
14
14
  var reactI18next = require('react-i18next');
15
- var useImageUploader = require('../useImageUploader-550a5fdc.js');
15
+ var useImageUploader = require('../useImageUploader-6fb55946.js');
16
16
  var classnames = require('classnames');
17
17
  var LeftArrow = require('@bigbinary/neeto-icons/LeftArrow');
18
18
  var reactQuery = require('@tanstack/react-query');
@@ -642,21 +642,6 @@ function _typeof$1(o) {
642
642
  return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;
643
643
  }, _typeof$1(o);
644
644
  }
645
-
646
- var hasPermission = function hasPermission() {
647
- var _globalProps$permissi;
648
- var permissions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
649
- var type = _typeof$1(permissions);
650
- var userPermissions = (_globalProps$permissi = initializers.globalProps.permissions) !== null && _globalProps$permissi !== void 0 ? _globalProps$permissi : [];
651
- if (Object.is(type, "string")) {
652
- return userPermissions.includes(permissions);
653
- } else if (Array.isArray(permissions)) {
654
- return permissions.some(function (permission) {
655
- return userPermissions.includes(permission);
656
- });
657
- }
658
- return false;
659
- };
660
645
  var isOverflown = function isOverflown(_ref) {
661
646
  var clientWidth = _ref.clientWidth,
662
647
  clientHeight = _ref.clientHeight,
@@ -9757,7 +9742,6 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9757
9742
  var _useBulkDestroyAssets = useBulkDestroyAssets(utils$3.ASSETS_DESTROY_URL),
9758
9743
  isPending = _useBulkDestroyAssets.isPending,
9759
9744
  bulkDelete = _useBulkDestroyAssets.mutate;
9760
- var hasPermissioToDeleteImage = hasPermission(VIEW_ROLES_PERMISSION);
9761
9745
  var handleDelete = require$$0.useCallback(function () {
9762
9746
  bulkDelete(deleteConfirmation.imageIds, {
9763
9747
  onSuccess: function onSuccess() {
@@ -9795,6 +9779,7 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9795
9779
  },
9796
9780
  children: /*#__PURE__*/jsxRuntime.jsxs("div", {
9797
9781
  className: "neeto-ui-rounded-sm neeto-ui-bg-gray-100 group absolute h-full w-full",
9782
+ "data-cy": "library-image-card",
9798
9783
  id: "unsplashImage".concat(image.id),
9799
9784
  children: [tab === utils$3.TABS[1].key && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
9800
9785
  children: [/*#__PURE__*/jsxRuntime.jsx("img", {
@@ -9811,7 +9796,7 @@ var InfiniteScroller = function InfiniteScroller(_ref) {
9811
9796
  children: [image === null || image === void 0 || (_image$user2 = image.user) === null || _image$user2 === void 0 ? void 0 : _image$user2.name, " | ", " ", t("neetoImageUploader.labels.unsplash")]
9812
9797
  })]
9813
9798
  }), tab === utils$3.TABS[0].key && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
9814
- children: [hasPermissioToDeleteImage && /*#__PURE__*/jsxRuntime.jsx(Dropdown__default["default"], {
9799
+ children: [utils$4.hasPermission(VIEW_ROLES_PERMISSION) && /*#__PURE__*/jsxRuntime.jsx(Dropdown__default["default"], {
9815
9800
  buttonSize: "small",
9816
9801
  buttonStyle: "tertiary",
9817
9802
  "data-cy": "image-library-image-options-".concat(index),
@@ -10180,7 +10165,7 @@ var Modal = function Modal(_ref) {
10180
10165
  });
10181
10166
  } else {
10182
10167
  var payload = {
10183
- filename: editedImage.name,
10168
+ filename: useImageUploader.generateASCIIFileName(editedImage.name),
10184
10169
  byte_size: editedImage.size,
10185
10170
  content_type: editedImage.fileType,
10186
10171
  checksum: editedImage.fileId,