@bigbinary/neeto-image-uploader-frontend 4.0.3 → 4.0.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.
Files changed (101) hide show
  1. package/dist/.ready +1 -1
  2. package/dist/AssetLibrary.js +12 -9
  3. package/dist/AssetLibrary.js.map +1 -1
  4. package/dist/BasicImageUploader.js +4 -2
  5. package/dist/BasicImageUploader.js.map +1 -1
  6. package/dist/ImageForm.js +7 -4
  7. package/dist/ImageForm.js.map +1 -1
  8. package/dist/ImageUploader.js +9 -6
  9. package/dist/ImageUploader.js.map +1 -1
  10. package/dist/ImageWithFallback-BhUgmP7t.js +61 -0
  11. package/dist/ImageWithFallback-BhUgmP7t.js.map +1 -0
  12. package/dist/{ImageWithFallback-Bq5rs1yf.js → ImageWithFallback-D1ClfJLn.js} +4 -4
  13. package/dist/{ImageWithFallback-Bq5rs1yf.js.map → ImageWithFallback-D1ClfJLn.js.map} +1 -1
  14. package/dist/ImageWithFallback-MfA03icL.js +59 -0
  15. package/dist/ImageWithFallback-MfA03icL.js.map +1 -0
  16. package/dist/cjs/AssetLibrary.js +10 -7
  17. package/dist/cjs/AssetLibrary.js.map +1 -1
  18. package/dist/cjs/BasicImageUploader.js +5 -3
  19. package/dist/cjs/BasicImageUploader.js.map +1 -1
  20. package/dist/cjs/ImageForm.js +9 -6
  21. package/dist/cjs/ImageForm.js.map +1 -1
  22. package/dist/cjs/ImageUploader.js +14 -11
  23. package/dist/cjs/ImageUploader.js.map +1 -1
  24. package/dist/cjs/hooks.js +1 -1
  25. package/dist/cjs/index.js +9 -6
  26. package/dist/cjs/index.js.map +1 -1
  27. package/dist/cjs/v2/AssetLibrary.js +40 -0
  28. package/dist/cjs/v2/AssetLibrary.js.map +1 -0
  29. package/dist/cjs/v2/BasicImageUploader.js +71 -0
  30. package/dist/cjs/v2/BasicImageUploader.js.map +1 -0
  31. package/dist/cjs/v2/ImageForm.js +324 -0
  32. package/dist/cjs/v2/ImageForm.js.map +1 -0
  33. package/dist/cjs/v2/ImageUploader.js +246 -0
  34. package/dist/cjs/v2/ImageUploader.js.map +1 -0
  35. package/dist/cjs/v2/hooks.js +27 -0
  36. package/dist/cjs/v2/hooks.js.map +1 -0
  37. package/dist/cjs/v2/index.js +61 -0
  38. package/dist/cjs/v2/index.js.map +1 -0
  39. package/dist/cjs/v2/utils.js +9 -0
  40. package/dist/cjs/v2/utils.js.map +1 -0
  41. package/dist/constants-Csle2bxb.js +56 -0
  42. package/dist/constants-Csle2bxb.js.map +1 -0
  43. package/dist/constants-DI8wBtC-.js +68 -0
  44. package/dist/constants-DI8wBtC-.js.map +1 -0
  45. package/dist/hooks.js +3 -3
  46. package/dist/{imagekit.esm-CXW6c1fP.js → imagekit.esm-IYQEzBnD.js} +2 -2
  47. package/dist/{imagekit.esm-CXW6c1fP.js.map → imagekit.esm-IYQEzBnD.js.map} +1 -1
  48. package/dist/index-CBorETxd.js +972 -0
  49. package/dist/index-CBorETxd.js.map +1 -0
  50. package/dist/index-CiB5LGGR.js +950 -0
  51. package/dist/index-CiB5LGGR.js.map +1 -0
  52. package/dist/index-EgJf9LfL.js +947 -0
  53. package/dist/index-EgJf9LfL.js.map +1 -0
  54. package/dist/index-krkZ4CNS.js +969 -0
  55. package/dist/index-krkZ4CNS.js.map +1 -0
  56. package/dist/index.js +10 -7
  57. package/dist/index.js.map +1 -1
  58. package/dist/{useImageUploader-BLOdyAwv.js → useImageUploader-D8luC4Qw.js} +2 -2
  59. package/dist/{useImageUploader-BLOdyAwv.js.map → useImageUploader-D8luC4Qw.js.map} +1 -1
  60. package/dist/{useProfileImageUpload-CiGxDpEx.js → useProfileImageUpload-CbjVfcfI.js} +3 -3
  61. package/dist/{useProfileImageUpload-CiGxDpEx.js.map → useProfileImageUpload-CbjVfcfI.js.map} +1 -1
  62. package/dist/{useProfileImageUpload-DkmUBjtt.js → useProfileImageUpload-DbanXK57.js} +6 -6
  63. package/dist/useProfileImageUpload-DbanXK57.js.map +1 -0
  64. package/dist/useUnsplashApi-CNeNh58q.js +1065 -0
  65. package/dist/useUnsplashApi-CNeNh58q.js.map +1 -0
  66. package/dist/useUnsplashApi-D_ekWD8p.js +1057 -0
  67. package/dist/useUnsplashApi-D_ekWD8p.js.map +1 -0
  68. package/dist/useUploadDropzone-8Xa8PI-1.js +56 -0
  69. package/dist/useUploadDropzone-8Xa8PI-1.js.map +1 -0
  70. package/dist/useUploadDropzone-DMv8VMRF.js +58 -0
  71. package/dist/useUploadDropzone-DMv8VMRF.js.map +1 -0
  72. package/dist/utils-BTmA9hHb.js +364 -0
  73. package/dist/utils-BTmA9hHb.js.map +1 -0
  74. package/dist/{utils-BYMSmzRM.js → utils-CbaXwRPJ.js} +33 -74
  75. package/dist/utils-CbaXwRPJ.js.map +1 -0
  76. package/dist/{utils-C0TymZ5r.js → utils-DwOJkJSn.js} +41 -83
  77. package/dist/utils-DwOJkJSn.js.map +1 -0
  78. package/dist/utils-DyCNC3w5.js +347 -0
  79. package/dist/utils-DyCNC3w5.js.map +1 -0
  80. package/dist/v2/AssetLibrary.js +34 -0
  81. package/dist/v2/AssetLibrary.js.map +1 -0
  82. package/dist/v2/BasicImageUploader.js +69 -0
  83. package/dist/v2/BasicImageUploader.js.map +1 -0
  84. package/dist/v2/ImageForm.js +322 -0
  85. package/dist/v2/ImageForm.js.map +1 -0
  86. package/dist/v2/ImageUploader.js +244 -0
  87. package/dist/v2/ImageUploader.js.map +1 -0
  88. package/dist/v2/hooks.js +19 -0
  89. package/dist/v2/hooks.js.map +1 -0
  90. package/dist/v2/index.js +48 -0
  91. package/dist/v2/index.js.map +1 -0
  92. package/dist/v2/utils.js +3 -0
  93. package/dist/v2/utils.js.map +1 -0
  94. package/package.json +49 -37
  95. package/dist/index-BuYEdyOT.js +0 -2413
  96. package/dist/index-BuYEdyOT.js.map +0 -1
  97. package/dist/index-Dpyvz0h1.js +0 -2410
  98. package/dist/index-Dpyvz0h1.js.map +0 -1
  99. package/dist/useProfileImageUpload-DkmUBjtt.js.map +0 -1
  100. package/dist/utils-BYMSmzRM.js.map +0 -1
  101. package/dist/utils-C0TymZ5r.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-CbaXwRPJ.js","sources":["../app/javascript/src/v2/components/ImageUploader/constants.js","../app/javascript/src/v2/components/ImageUploader/utils.js","../app/javascript/src/v2/components/common/constants.js","../app/javascript/src/v2/components/common/ImageDirectUpload.jsx","../app/javascript/src/v2/components/constants.js","../app/javascript/src/v2/components/ImageEditor/utils.js"],"sourcesContent":["import { globalProps } from \"neetocommons/v2/initializers\";\n\nexport const DEFAULT_ALLOWED_IMAGE_TYPES = {\n \"image/png\": [\".png\"],\n \"image/jpg\": [\".jpg\", \".jpeg\"],\n \"image/gif\": [\".gif\"],\n \"image/svg+xml\": [\".svg\"],\n};\n\nexport const DEFAULT_UPLOAD_CONFIG = {\n maxImageSize: globalProps.endUserUploadedFileSizeLimitInMb,\n allowedImageTypes: DEFAULT_ALLOWED_IMAGE_TYPES,\n};\n\nexport const OPTION_KEYS = { asset: \"asset\", remove: \"remove\" };\n","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","import { t } from \"i18next\";\n\nexport const DROPZONE_ROOT_DIV_CLASSNAME =\n \"border-primary hover:bg-muted neeto-ui-rounded-lg flex h-full w-full flex-col items-center justify-center gap-3 border border-dashed p-4 transition-all duration-300 ease-in-out relative\";\n\nexport const FILE_ERRORS = {\n \"file-invalid-type\": t(\"neetoImageUploader.imageUpload.fileTypeError\"),\n \"file-too-large\": t(\"neetoImageUploader.imageUpload.fileSizeError\"),\n \"file-dimension-too-large\": t(\n \"neetoImageUploader.imageUpload.fileDimensionError\"\n ),\n \"file-resolution-too-large\": t(\n \"neetoImageUploader.imageUpload.fileResolutionError\"\n ),\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\n\nimport { Button, Progress, Typography } from \"@bigbinary/neeto-atoms\";\nimport classnames from \"classnames\";\nimport { noop, isPresent } from \"neetocist\";\nimport { equals } from \"ramda\";\nimport { Trans } from \"react-i18next\";\n\nimport useUploadDropzone from \"hooks/useUploadDropzone\";\nimport { DEFAULT_UPLOAD_CONFIG } from \"v2/components/ImageUploader/constants\";\nimport { getAllowedTypes } from \"v2/components/ImageUploader/utils\";\n\nimport { DROPZONE_ROOT_DIV_CLASSNAME } from \"./constants\";\n\nconst ImageDirectUpload = forwardRef(\n (\n {\n uploadConfig = DEFAULT_UPLOAD_CONFIG,\n onDrop = noop,\n isDisabled = false,\n setIsAssetLibraryOpen,\n defaultImageSize = {},\n isUploadDisabled = false,\n setImage,\n },\n ref\n ) => {\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n open,\n uploadProgress,\n setUploadProgress,\n } = useUploadDropzone({ uploadConfig, onDrop, setImage });\n\n useImperativeHandle(ref, () => ({\n upload: file => onDrop(file, setUploadProgress, setImage),\n }));\n\n const shouldShowProgress = !!(uploadProgress && !equals(uploadProgress, 1));\n\n return (\n <div\n {...getRootProps()}\n className={classnames(DROPZONE_ROOT_DIV_CLASSNAME, {\n \"border-border\": !isDragActive,\n \"border-foreground\": isDragActive,\n })}\n >\n {shouldShowProgress ? (\n <Progress\n progressValue={`${uploadProgress}%`}\n value={uploadProgress}\n />\n ) : (\n <div className=\"flex flex-col space-y-1\">\n {!isDisabled && (\n <Typography\n className=\"text-center leading-4\"\n color=\"default\"\n variant=\"body2\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.dragAndDropOrBrowseFile\"\n components={{\n span: (\n <Button\n data-testid=\"neeto-image-uploader-browse-text\"\n variant=\"link\"\n onClick={event => {\n event.stopPropagation();\n open();\n }}\n />\n ),\n }}\n />\n </Typography>\n )}\n {setIsAssetLibraryOpen && (\n <Typography\n variant=\"body2\"\n className={classnames(\"text-center leading-4\", {\n \"pointer-events-none\": isUploadDisabled,\n })}\n onClick={e => {\n e.stopPropagation();\n setIsAssetLibraryOpen(true);\n }}\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.upload\"\n components={{\n span: (\n <Button\n data-testid=\"open-asset-library-button\"\n variant=\"link\"\n />\n ),\n }}\n />\n </Typography>\n )}\n <input\n {...getInputProps()}\n data-testid=\"neeto-image-uploader-file-input\"\n disabled={isDisabled || isUploadDisabled}\n />\n <Typography\n className=\"text-center leading-4\"\n color=\"muted\"\n data-testid=\"neeto-image-uploader-restriction-message\"\n variant=\"nano\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.restrictionMessage\"\n values={{\n fileTypes: getAllowedTypes(uploadConfig),\n size: uploadConfig?.maxImageSize,\n }}\n />\n </Typography>\n {isPresent(defaultImageSize) && (\n <Typography\n className=\"text-center leading-4\"\n color=\"muted\"\n data-testid=\"neeto-image-uploader-ideal-image-size-info-text\"\n variant=\"nano\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.idealImageSizeInfo\"\n values={{ ...defaultImageSize }}\n />\n </Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nImageDirectUpload.displayName = \"ImageDirectUpload\";\n\nexport default ImageDirectUpload;\n","import i18next from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\n\nimport {\n IMAGE_UPLOADER_BASE_URL,\n CLOUD_FLARE,\n IS_DEVELOPMENT_OR_HEROKU_ENV,\n} from \"src/constants\";\n\nexport const UNSPLASH_DEFAULT_NAME = \"Unsplash-asset\";\n\nexport const UNSPLASH_URL = \"https://unsplash.com/\";\n\nexport const IMAGES_PER_PAGE = 30;\n\nexport const UNSPLASH_DEFAULT_REQUEST_CONFIG = {\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET\",\n },\n responseType: \"blob\",\n};\n\nexport const TABS = [\n {\n label: i18next.t(\"neetoImageUploader.labels.uploadImage\"),\n key: \"upload\",\n dataTestid: \"neeto-image-uploader-upload-image-tab\",\n },\n {\n label: i18next.t(\"neetoImageUploader.labels.myImages\"),\n key: \"images\",\n dataTestid: \"neeto-image-uploader-my-images-tab\",\n },\n {\n label: i18next.t(\"neetoImageUploader.labels.searchTheWeb\"),\n key: \"unsplash\",\n dataTestid: \"neeto-image-uploader-unsplash-tab\",\n },\n];\n\nexport const DEFAULT_CROP_CONFIG = {\n unit: \"%\",\n height: 100,\n width: 100,\n x: 0,\n y: 0,\n};\n\nexport const URL_REGEXP =\n /[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/;\n\nexport const INFINITE_SCROLLER_SIZES = [\n { columns: 2, gutter: 0 },\n { mq: \"768px\", columns: 4, gutter: 0 },\n { mq: \"1024px\", columns: 4, gutter: 0 },\n];\n\nexport const INFINITE_SCROLLER_STYLE = { width: \"100%\" };\n\nexport const ALLOWED_IMAGE_TYPES = {\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".svg\", \".gif\"],\n};\n\nexport const IMAGE_UPLOAD_SERVICE_URL =\n globalProps.assetsUploaderService === CLOUD_FLARE\n ? `${IMAGE_UPLOADER_BASE_URL}/cloudflare_images`\n : `${IMAGE_UPLOADER_BASE_URL}/imagekit/fetch`;\n\nexport const ASSETS_FETCH_URL = IS_DEVELOPMENT_OR_HEROKU_ENV\n ? `${IMAGE_UPLOADER_BASE_URL}/development/fetch`\n : IMAGE_UPLOAD_SERVICE_URL;\n\nexport const ASSETS_DESTROY_URL = IS_DEVELOPMENT_OR_HEROKU_ENV\n ? `${IMAGE_UPLOADER_BASE_URL}/development/bulk_destroy`\n : `${IMAGE_UPLOADER_BASE_URL}/imagekit/bulk_destroy`;\n\nexport const IMAGE_WRAPPER_CLASSNAME =\n \"border-border bg-muted hover:bg-muted/80 neeto-ui-rounded-lg relative flex h-full w-full flex-col items-center justify-center gap-5 border border-dashed p-2 transition-all duration-300 ease-in-out\";\n","import ImageKit from \"imagekit-javascript\";\nimport { isPresent } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { isEmpty, isNil } from \"ramda\";\n\nconst getWholeNumberAspectRatio = ({ width, height }) => {\n if (width === height) return { width: 1, height: 1 };\n\n const gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\n\n // Multiplying by 1000 is a temporary fix to prevent height and width with fractions (eg: 100.91).\n const divisor = gcd(width * 1000, height * 1000);\n\n return { width: width / divisor, height: height / divisor };\n};\n\nexport const getCropValues = ({ crop, imageRef }) => {\n const naturalWidth = imageRef.current.naturalWidth;\n const naturalHeight = imageRef.current.naturalHeight;\n\n return {\n x: (crop.x / 100) * naturalWidth,\n y: (crop.y / 100) * naturalHeight,\n width: (crop.width / 100) * naturalWidth,\n height: (crop.height / 100) * naturalHeight,\n };\n};\n\nexport const getImageKitCroppedURL = ({ imageURL, crop, imageRef }) => {\n const imagekit = new ImageKit({\n urlEndpoint: globalProps.imagekit.urlEndpoint,\n });\n const { x, y, height, width } = getCropValues({ crop, imageRef });\n\n const transformation = [{ cropMode: \"extract\", x, y, height, width }];\n\n return imagekit.url({ src: imageURL, transformation });\n};\n\nexport const isNilOrEmpty = value => isNil(value) || isEmpty(value);\nexport const isNotNilOrEmpty = value => !isNilOrEmpty(value);\n\nexport const isItemsCenter = ({ imageRef, wrapperRef }) => {\n const { height: imageHeight, width: imageWidth } = imageRef.current || {};\n const wrapperHeight = (wrapperRef.current || {}).clientHeight;\n\n if (imageHeight < imageWidth && imageHeight < wrapperHeight - 1) {\n // Landscape images smaller than wrapper dimensions\n return true;\n }\n\n if (imageHeight === imageWidth && imageHeight < wrapperHeight - 1) {\n // Square images smaller than wrapper dimensions\n return true;\n }\n\n return imageHeight > imageWidth && imageHeight < wrapperHeight - 1;\n};\n\nexport const calculateCloudFlareImageCroppedValues = ({ image, crop }) => {\n const naturalWidth = image.metadata.width;\n const naturalHeight = image.metadata.height;\n\n const sourceX = (crop.x / 100) * naturalWidth;\n const sourceY = (crop.y / 100) * naturalHeight;\n const sourceWidth = (crop.width / 100) * naturalWidth;\n const sourceHeight = (crop.height / 100) * naturalHeight;\n\n const distanceFromRight = Math.abs(naturalWidth - (sourceX + sourceWidth));\n const distanceFromBottom = Math.abs(naturalHeight - (sourceY + sourceHeight));\n\n return {\n top: sourceY,\n right: distanceFromRight,\n bottom: distanceFromBottom,\n left: sourceX,\n };\n};\n\nexport const getCloudFlareCroppedURL = ({ image, crop }) => {\n const { top, right, bottom, left } = calculateCloudFlareImageCroppedValues({\n image,\n crop,\n });\n const trimValues = `${top};${right};${bottom};${left}`;\n\n return image.url.replace(\"public\", `trim=${trimValues}`);\n};\n\nexport const getAspectRatio = ({ fixedAspectRatio, imageSize }) => {\n if (\n isPresent(fixedAspectRatio?.width) &&\n isPresent(fixedAspectRatio?.height)\n ) {\n return fixedAspectRatio;\n }\n\n if (isPresent(imageSize?.width) && isPresent(imageSize?.height)) {\n return getWholeNumberAspectRatio(imageSize);\n }\n\n return { width: 16, height: 9 };\n};\n\nexport const getPixels = (percentage, pixel) =>\n Math.round((percentage / 100) * pixel);\n\nexport const getPercentage = (crop, full) => (crop / full) * 100;\n\nexport const getInitialCropSize = ({\n image,\n aspectRatioFactor,\n maxCropWidth,\n}) => {\n const { naturalWidth: imageWidth, naturalHeight: imageHeight } = image;\n const imageAspectRatio = imageWidth / imageHeight;\n const maxCropHeight = maxCropWidth / aspectRatioFactor;\n\n let cropWidth, cropHeight;\n\n if (imageAspectRatio > aspectRatioFactor) {\n cropWidth = Math.min(maxCropWidth, imageWidth);\n cropHeight = cropWidth / aspectRatioFactor;\n } else if (imageHeight < maxCropHeight) {\n cropWidth = imageWidth;\n cropHeight = imageHeight;\n } else {\n cropHeight = Math.min(maxCropHeight, imageHeight);\n cropWidth = cropHeight * aspectRatioFactor;\n }\n\n return { cropWidth, cropHeight };\n};\n\nexport const getHeightFromAspectRatio = (width, aspectRatio) =>\n Math.round((width * aspectRatio.height) / aspectRatio.width);\n\nexport const getWidthFromAspectRatio = (height, aspectRatio) =>\n Math.round((height * aspectRatio.width) / aspectRatio.height);\n\nexport const getWrapperRefStyles = (wrapperRef, imageRef) => {\n const { naturalHeight = 100, naturalWidth = 100 } = imageRef.current || {};\n const { clientHeight = 100, clientWidth = 100 } = wrapperRef.current || {};\n\n if (naturalWidth <= clientWidth && naturalHeight <= clientHeight) {\n return { maxWidth: naturalWidth };\n } else if (naturalWidth > clientWidth && naturalHeight <= clientHeight) {\n return { maxWidth: clientWidth };\n } else if (naturalWidth <= clientWidth && naturalHeight > clientHeight) {\n const maxWidth = (naturalWidth / naturalHeight) * clientHeight;\n\n return { maxWidth };\n }\n\n // landscape\n if (naturalWidth > naturalHeight) {\n return { maxWidth: clientWidth };\n }\n\n // portrait\n const maxWidth = (naturalWidth / naturalHeight) * clientHeight;\n\n return { maxWidth };\n};\n"],"names":["DEFAULT_ALLOWED_IMAGE_TYPES","DEFAULT_UPLOAD_CONFIG","maxImageSize","globalProps","endUserUploadedFileSizeLimitInMb","allowedImageTypes","OPTION_KEYS","asset","remove","getAllowedTypes","uploadConfig","pipe","values","flatten","map","extension","slice","toUpper","join","DROPZONE_ROOT_DIV_CLASSNAME","t","ImageDirectUpload","forwardRef","_ref","ref","_ref$uploadConfig","_ref$onDrop","onDrop","noop","_ref$isDisabled","isDisabled","setIsAssetLibraryOpen","_ref$defaultImageSize","defaultImageSize","_ref$isUploadDisabled","isUploadDisabled","setImage","_useUploadDropzone","useUploadDropzone","getRootProps","getInputProps","isDragActive","open","uploadProgress","setUploadProgress","useImperativeHandle","upload","file","shouldShowProgress","equals","_jsx","_objectSpread","className","classnames","children","Progress","progressValue","concat","value","_jsxs","Typography","color","variant","Trans","i18nKey","components","span","Button","onClick","event","stopPropagation","e","disabled","fileTypes","size","isPresent","displayName","UNSPLASH_DEFAULT_NAME","UNSPLASH_URL","IMAGES_PER_PAGE","UNSPLASH_DEFAULT_REQUEST_CONFIG","headers","responseType","TABS","label","i18next","key","dataTestid","DEFAULT_CROP_CONFIG","unit","height","width","x","y","INFINITE_SCROLLER_SIZES","columns","gutter","mq","INFINITE_SCROLLER_STYLE","IMAGE_UPLOAD_SERVICE_URL","assetsUploaderService","CLOUD_FLARE","IMAGE_UPLOADER_BASE_URL","ASSETS_FETCH_URL","IS_DEVELOPMENT_OR_HEROKU_ENV","ASSETS_DESTROY_URL","IMAGE_WRAPPER_CLASSNAME","getWholeNumberAspectRatio","gcd","a","b","divisor","getCropValues","_ref2","crop","imageRef","naturalWidth","current","naturalHeight","getImageKitCroppedURL","_ref3","imageURL","imagekit","ImageKit","urlEndpoint","_getCropValues","transformation","cropMode","url","src","isNilOrEmpty","isNil","isEmpty","isNotNilOrEmpty","isItemsCenter","_ref4","wrapperRef","_ref5","imageHeight","imageWidth","wrapperHeight","clientHeight","calculateCloudFlareImageCroppedValues","_ref6","image","metadata","sourceX","sourceY","sourceWidth","sourceHeight","distanceFromRight","Math","abs","distanceFromBottom","top","right","bottom","left","getCloudFlareCroppedURL","_ref7","_calculateCloudFlareI","trimValues","replace","getAspectRatio","_ref8","fixedAspectRatio","imageSize","getPixels","percentage","pixel","round","getPercentage","full","getInitialCropSize","_ref9","aspectRatioFactor","maxCropWidth","imageAspectRatio","maxCropHeight","cropWidth","cropHeight","min","getHeightFromAspectRatio","aspectRatio","getWidthFromAspectRatio","getWrapperRefStyles","_ref10","_ref10$naturalHeight","_ref10$naturalWidth","_ref11","_ref11$clientHeight","_ref11$clientWidth","clientWidth","maxWidth"],"mappings":"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"}
@@ -1,21 +1,17 @@
1
1
  'use strict';
2
2
 
3
3
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
4
- var g = require('react');
4
+ var require$$0 = require('react');
5
+ var neetoAtoms = require('@bigbinary/neeto-atoms');
5
6
  var classnames = require('classnames');
6
7
  var neetoCist = require('@bigbinary/neeto-cist');
7
- var Button = require('@bigbinary/neetoui/Button');
8
- var Typography = require('@bigbinary/neetoui/Typography');
9
- var ProgressBar = require('@bigbinary/neetoui/ProgressBar');
10
8
  var ramda = require('ramda');
11
9
  var reactI18next = require('react-i18next');
12
- var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
13
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
14
- var reactDropzone = require('react-dropzone');
10
+ var useUploadDropzone = require('./useUploadDropzone-DMv8VMRF.js');
11
+ var initializers = require('@bigbinary/neeto-commons-frontend/v2/initializers');
15
12
  var i18next = require('i18next');
16
- var Toastr = require('@bigbinary/neetoui/Toastr');
17
- var imagekit_esm = require('./imagekit.esm-CisvUNYU.js');
18
13
  var jsxRuntime = require('react/jsx-runtime');
14
+ var imagekit_esm = require('./imagekit.esm-CisvUNYU.js');
19
15
 
20
16
  var DEFAULT_ALLOWED_IMAGE_TYPES = {
21
17
  "image/png": [".png"],
@@ -38,55 +34,17 @@ var getAllowedTypes = function getAllowedTypes(uploadConfig) {
38
34
  }), ramda.map(ramda.toUpper), ramda.join(", "))(uploadConfig.allowedImageTypes);
39
35
  };
40
36
 
41
- var handleDropRejected = function handleDropRejected(fileRejections) {
42
- fileRejections.map(function (_ref) {
43
- var errors = _ref.errors;
44
- return errors.map(function (_ref2) {
45
- var code = _ref2.code;
46
- return Toastr.error(imagekit_esm.FILE_ERRORS[code] || i18next.t("neetoImageUploader.imageUpload.genericError"));
47
- });
48
- });
49
- };
50
-
51
- var useUploadDropzone = function useUploadDropzone(_ref) {
52
- var _ref$uploadConfig = _ref.uploadConfig,
53
- uploadConfig = _ref$uploadConfig === void 0 ? {
54
- allowedImageTypes: [],
55
- maxImageSize: 0
56
- } : _ref$uploadConfig,
57
- _onDrop = _ref.onDrop,
58
- _ref$setImage = _ref.setImage,
59
- setImage = _ref$setImage === void 0 ? neetoCist.noop : _ref$setImage;
60
- var _useState = g.useState(0),
61
- _useState2 = _slicedToArray(_useState, 2),
62
- uploadProgress = _useState2[0],
63
- setUploadProgress = _useState2[1];
64
- var _useDropzone = reactDropzone.useDropzone({
65
- onDrop: function onDrop(acceptedFiles) {
66
- return _onDrop(acceptedFiles[0], setUploadProgress, setImage);
67
- },
68
- accept: uploadConfig === null || uploadConfig === void 0 ? void 0 : uploadConfig.allowedImageTypes,
69
- multiple: false,
70
- maxSize: uploadConfig.maxImageSize * 1048576,
71
- onDropRejected: handleDropRejected
72
- }),
73
- getRootProps = _useDropzone.getRootProps,
74
- getInputProps = _useDropzone.getInputProps,
75
- isDragActive = _useDropzone.isDragActive,
76
- open = _useDropzone.open;
77
- return {
78
- getRootProps: getRootProps,
79
- getInputProps: getInputProps,
80
- isDragActive: isDragActive,
81
- open: open,
82
- uploadProgress: uploadProgress,
83
- setUploadProgress: setUploadProgress
84
- };
85
- };
37
+ var DROPZONE_ROOT_DIV_CLASSNAME = "border-primary hover:bg-muted neeto-ui-rounded-lg flex h-full w-full flex-col items-center justify-center gap-3 border border-dashed p-4 transition-all duration-300 ease-in-out relative";
38
+ ({
39
+ "file-invalid-type": i18next.t("neetoImageUploader.imageUpload.fileTypeError"),
40
+ "file-too-large": i18next.t("neetoImageUploader.imageUpload.fileSizeError"),
41
+ "file-dimension-too-large": i18next.t("neetoImageUploader.imageUpload.fileDimensionError"),
42
+ "file-resolution-too-large": i18next.t("neetoImageUploader.imageUpload.fileResolutionError")
43
+ });
86
44
 
87
45
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
88
46
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
89
- var ImageDirectUpload = /*#__PURE__*/g.forwardRef(function (_ref, ref) {
47
+ var ImageDirectUpload = /*#__PURE__*/require$$0.forwardRef(function (_ref, ref) {
90
48
  var _ref$uploadConfig = _ref.uploadConfig,
91
49
  uploadConfig = _ref$uploadConfig === void 0 ? DEFAULT_UPLOAD_CONFIG : _ref$uploadConfig,
92
50
  _ref$onDrop = _ref.onDrop,
@@ -99,7 +57,7 @@ var ImageDirectUpload = /*#__PURE__*/g.forwardRef(function (_ref, ref) {
99
57
  _ref$isUploadDisabled = _ref.isUploadDisabled,
100
58
  isUploadDisabled = _ref$isUploadDisabled === void 0 ? false : _ref$isUploadDisabled,
101
59
  setImage = _ref.setImage;
102
- var _useUploadDropzone = useUploadDropzone({
60
+ var _useUploadDropzone = useUploadDropzone.useUploadDropzone({
103
61
  uploadConfig: uploadConfig,
104
62
  onDrop: onDrop,
105
63
  setImage: setImage
@@ -110,7 +68,7 @@ var ImageDirectUpload = /*#__PURE__*/g.forwardRef(function (_ref, ref) {
110
68
  open = _useUploadDropzone.open,
111
69
  uploadProgress = _useUploadDropzone.uploadProgress,
112
70
  setUploadProgress = _useUploadDropzone.setUploadProgress;
113
- g.useImperativeHandle(ref, function () {
71
+ require$$0.useImperativeHandle(ref, function () {
114
72
  return {
115
73
  upload: function upload(file) {
116
74
  return onDrop(file, setUploadProgress, setImage);
@@ -119,24 +77,25 @@ var ImageDirectUpload = /*#__PURE__*/g.forwardRef(function (_ref, ref) {
119
77
  });
120
78
  var shouldShowProgress = !!(uploadProgress && !ramda.equals(uploadProgress, 1));
121
79
  return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({}, getRootProps()), {}, {
122
- className: classnames(imagekit_esm.DROPZONE_ROOT_DIV_CLASSNAME, {
123
- "neeto-ui-border-gray-300": !isDragActive,
124
- "neeto-ui-border-gray-700": isDragActive
80
+ className: classnames(DROPZONE_ROOT_DIV_CLASSNAME, {
81
+ "border-border": !isDragActive,
82
+ "border-foreground": isDragActive
125
83
  }),
126
- children: shouldShowProgress ? /*#__PURE__*/jsxRuntime.jsx(ProgressBar, {
127
- progressPercentage: uploadProgress,
128
- progressValue: "".concat(uploadProgress, "%")
84
+ children: shouldShowProgress ? /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Progress, {
85
+ progressValue: "".concat(uploadProgress, "%"),
86
+ value: uploadProgress
129
87
  }) : /*#__PURE__*/jsxRuntime.jsxs("div", {
130
88
  className: "flex flex-col space-y-1",
131
- children: [!isDisabled && /*#__PURE__*/jsxRuntime.jsx(Typography, {
132
- className: "neeto-ui-text-gray-800 text-center leading-4",
133
- style: "body2",
89
+ children: [!isDisabled && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
90
+ className: "text-center leading-4",
91
+ color: "default",
92
+ variant: "body2",
134
93
  children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
135
94
  i18nKey: "neetoImageUploader.imageUpload.dragAndDropOrBrowseFile",
136
95
  components: {
137
- span: /*#__PURE__*/jsxRuntime.jsx(Button, {
96
+ span: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
138
97
  "data-testid": "neeto-image-uploader-browse-text",
139
- style: "link",
98
+ variant: "link",
140
99
  onClick: function onClick(event) {
141
100
  event.stopPropagation();
142
101
  open();
@@ -144,8 +103,8 @@ var ImageDirectUpload = /*#__PURE__*/g.forwardRef(function (_ref, ref) {
144
103
  })
145
104
  }
146
105
  })
147
- }), setIsAssetLibraryOpen && /*#__PURE__*/jsxRuntime.jsx(Typography, {
148
- style: "body2",
106
+ }), setIsAssetLibraryOpen && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
107
+ variant: "body2",
149
108
  className: classnames("text-center leading-4", {
150
109
  "pointer-events-none": isUploadDisabled
151
110
  }),
@@ -156,20 +115,20 @@ var ImageDirectUpload = /*#__PURE__*/g.forwardRef(function (_ref, ref) {
156
115
  children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
157
116
  i18nKey: "neetoImageUploader.imageUpload.upload",
158
117
  components: {
159
- span: /*#__PURE__*/jsxRuntime.jsx(Button, {
118
+ span: /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Button, {
160
119
  "data-testid": "open-asset-library-button",
161
- style: "link"
120
+ variant: "link"
162
121
  })
163
122
  }
164
123
  })
165
124
  }), /*#__PURE__*/jsxRuntime.jsx("input", _objectSpread(_objectSpread({}, getInputProps()), {}, {
166
125
  "data-testid": "neeto-image-uploader-file-input",
167
126
  disabled: isDisabled || isUploadDisabled
168
- })), /*#__PURE__*/jsxRuntime.jsx(Typography, {
169
- className: "neeto-ui-text-gray-700 text-center leading-4",
127
+ })), /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
128
+ className: "text-center leading-4",
129
+ color: "muted",
170
130
  "data-testid": "neeto-image-uploader-restriction-message",
171
- lineHeight: "snug",
172
- style: "nano",
131
+ variant: "nano",
173
132
  children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
174
133
  i18nKey: "neetoImageUploader.imageUpload.restrictionMessage",
175
134
  values: {
@@ -177,11 +136,11 @@ var ImageDirectUpload = /*#__PURE__*/g.forwardRef(function (_ref, ref) {
177
136
  size: uploadConfig === null || uploadConfig === void 0 ? void 0 : uploadConfig.maxImageSize
178
137
  }
179
138
  })
180
- }), neetoCist.isPresent(defaultImageSize) && /*#__PURE__*/jsxRuntime.jsx(Typography, {
181
- className: "neeto-ui-text-gray-700 text-center leading-4",
139
+ }), neetoCist.isPresent(defaultImageSize) && /*#__PURE__*/jsxRuntime.jsx(neetoAtoms.Typography, {
140
+ className: "text-center leading-4",
141
+ color: "muted",
182
142
  "data-testid": "neeto-image-uploader-ideal-image-size-info-text",
183
- lineHeight: "snug",
184
- style: "nano",
143
+ variant: "nano",
185
144
  children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
186
145
  i18nKey: "neetoImageUploader.imageUpload.idealImageSizeInfo",
187
146
  values: _objectSpread({}, defaultImageSize)
@@ -240,7 +199,7 @@ var INFINITE_SCROLLER_STYLE = {
240
199
  var IMAGE_UPLOAD_SERVICE_URL = initializers.globalProps.assetsUploaderService === imagekit_esm.CLOUD_FLARE ? "".concat(imagekit_esm.IMAGE_UPLOADER_BASE_URL, "/cloudflare_images") : "".concat(imagekit_esm.IMAGE_UPLOADER_BASE_URL, "/imagekit/fetch");
241
200
  var ASSETS_FETCH_URL = imagekit_esm.IS_DEVELOPMENT_OR_HEROKU_ENV ? "".concat(imagekit_esm.IMAGE_UPLOADER_BASE_URL, "/development/fetch") : IMAGE_UPLOAD_SERVICE_URL;
242
201
  var ASSETS_DESTROY_URL = imagekit_esm.IS_DEVELOPMENT_OR_HEROKU_ENV ? "".concat(imagekit_esm.IMAGE_UPLOADER_BASE_URL, "/development/bulk_destroy") : "".concat(imagekit_esm.IMAGE_UPLOADER_BASE_URL, "/imagekit/bulk_destroy");
243
- var IMAGE_WRAPPER_CLASSNAME = "neeto-ui-border-gray-300 neeto-ui-bg-gray-100 hover:neeto-ui-bg-gray-200 neeto-ui-rounded-lg relative flex h-full w-full flex-col items-center justify-center gap-5 border border-dashed p-2 transition-all duration-300 ease-in-out";
202
+ var IMAGE_WRAPPER_CLASSNAME = "border-border bg-muted hover:bg-muted/80 neeto-ui-rounded-lg relative flex h-full w-full flex-col items-center justify-center gap-5 border border-dashed p-2 transition-all duration-300 ease-in-out";
244
203
 
245
204
  var getWholeNumberAspectRatio = function getWholeNumberAspectRatio(_ref) {
246
205
  var width = _ref.width,
@@ -471,5 +430,4 @@ exports.getWrapperRefStyles = getWrapperRefStyles;
471
430
  exports.isItemsCenter = isItemsCenter;
472
431
  exports.isNilOrEmpty = isNilOrEmpty;
473
432
  exports.isNotNilOrEmpty = isNotNilOrEmpty;
474
- exports.useUploadDropzone = useUploadDropzone;
475
- //# sourceMappingURL=utils-C0TymZ5r.js.map
433
+ //# sourceMappingURL=utils-DwOJkJSn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils-DwOJkJSn.js","sources":["../app/javascript/src/v2/components/ImageUploader/constants.js","../app/javascript/src/v2/components/ImageUploader/utils.js","../app/javascript/src/v2/components/common/constants.js","../app/javascript/src/v2/components/common/ImageDirectUpload.jsx","../app/javascript/src/v2/components/constants.js","../app/javascript/src/v2/components/ImageEditor/utils.js"],"sourcesContent":["import { globalProps } from \"neetocommons/v2/initializers\";\n\nexport const DEFAULT_ALLOWED_IMAGE_TYPES = {\n \"image/png\": [\".png\"],\n \"image/jpg\": [\".jpg\", \".jpeg\"],\n \"image/gif\": [\".gif\"],\n \"image/svg+xml\": [\".svg\"],\n};\n\nexport const DEFAULT_UPLOAD_CONFIG = {\n maxImageSize: globalProps.endUserUploadedFileSizeLimitInMb,\n allowedImageTypes: DEFAULT_ALLOWED_IMAGE_TYPES,\n};\n\nexport const OPTION_KEYS = { asset: \"asset\", remove: \"remove\" };\n","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","import { t } from \"i18next\";\n\nexport const DROPZONE_ROOT_DIV_CLASSNAME =\n \"border-primary hover:bg-muted neeto-ui-rounded-lg flex h-full w-full flex-col items-center justify-center gap-3 border border-dashed p-4 transition-all duration-300 ease-in-out relative\";\n\nexport const FILE_ERRORS = {\n \"file-invalid-type\": t(\"neetoImageUploader.imageUpload.fileTypeError\"),\n \"file-too-large\": t(\"neetoImageUploader.imageUpload.fileSizeError\"),\n \"file-dimension-too-large\": t(\n \"neetoImageUploader.imageUpload.fileDimensionError\"\n ),\n \"file-resolution-too-large\": t(\n \"neetoImageUploader.imageUpload.fileResolutionError\"\n ),\n};\n","import { forwardRef, useImperativeHandle } from \"react\";\n\nimport { Button, Progress, Typography } from \"@bigbinary/neeto-atoms\";\nimport classnames from \"classnames\";\nimport { noop, isPresent } from \"neetocist\";\nimport { equals } from \"ramda\";\nimport { Trans } from \"react-i18next\";\n\nimport useUploadDropzone from \"hooks/useUploadDropzone\";\nimport { DEFAULT_UPLOAD_CONFIG } from \"v2/components/ImageUploader/constants\";\nimport { getAllowedTypes } from \"v2/components/ImageUploader/utils\";\n\nimport { DROPZONE_ROOT_DIV_CLASSNAME } from \"./constants\";\n\nconst ImageDirectUpload = forwardRef(\n (\n {\n uploadConfig = DEFAULT_UPLOAD_CONFIG,\n onDrop = noop,\n isDisabled = false,\n setIsAssetLibraryOpen,\n defaultImageSize = {},\n isUploadDisabled = false,\n setImage,\n },\n ref\n ) => {\n const {\n getRootProps,\n getInputProps,\n isDragActive,\n open,\n uploadProgress,\n setUploadProgress,\n } = useUploadDropzone({ uploadConfig, onDrop, setImage });\n\n useImperativeHandle(ref, () => ({\n upload: file => onDrop(file, setUploadProgress, setImage),\n }));\n\n const shouldShowProgress = !!(uploadProgress && !equals(uploadProgress, 1));\n\n return (\n <div\n {...getRootProps()}\n className={classnames(DROPZONE_ROOT_DIV_CLASSNAME, {\n \"border-border\": !isDragActive,\n \"border-foreground\": isDragActive,\n })}\n >\n {shouldShowProgress ? (\n <Progress\n progressValue={`${uploadProgress}%`}\n value={uploadProgress}\n />\n ) : (\n <div className=\"flex flex-col space-y-1\">\n {!isDisabled && (\n <Typography\n className=\"text-center leading-4\"\n color=\"default\"\n variant=\"body2\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.dragAndDropOrBrowseFile\"\n components={{\n span: (\n <Button\n data-testid=\"neeto-image-uploader-browse-text\"\n variant=\"link\"\n onClick={event => {\n event.stopPropagation();\n open();\n }}\n />\n ),\n }}\n />\n </Typography>\n )}\n {setIsAssetLibraryOpen && (\n <Typography\n variant=\"body2\"\n className={classnames(\"text-center leading-4\", {\n \"pointer-events-none\": isUploadDisabled,\n })}\n onClick={e => {\n e.stopPropagation();\n setIsAssetLibraryOpen(true);\n }}\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.upload\"\n components={{\n span: (\n <Button\n data-testid=\"open-asset-library-button\"\n variant=\"link\"\n />\n ),\n }}\n />\n </Typography>\n )}\n <input\n {...getInputProps()}\n data-testid=\"neeto-image-uploader-file-input\"\n disabled={isDisabled || isUploadDisabled}\n />\n <Typography\n className=\"text-center leading-4\"\n color=\"muted\"\n data-testid=\"neeto-image-uploader-restriction-message\"\n variant=\"nano\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.restrictionMessage\"\n values={{\n fileTypes: getAllowedTypes(uploadConfig),\n size: uploadConfig?.maxImageSize,\n }}\n />\n </Typography>\n {isPresent(defaultImageSize) && (\n <Typography\n className=\"text-center leading-4\"\n color=\"muted\"\n data-testid=\"neeto-image-uploader-ideal-image-size-info-text\"\n variant=\"nano\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.idealImageSizeInfo\"\n values={{ ...defaultImageSize }}\n />\n </Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nImageDirectUpload.displayName = \"ImageDirectUpload\";\n\nexport default ImageDirectUpload;\n","import i18next from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\n\nimport {\n IMAGE_UPLOADER_BASE_URL,\n CLOUD_FLARE,\n IS_DEVELOPMENT_OR_HEROKU_ENV,\n} from \"src/constants\";\n\nexport const UNSPLASH_DEFAULT_NAME = \"Unsplash-asset\";\n\nexport const UNSPLASH_URL = \"https://unsplash.com/\";\n\nexport const IMAGES_PER_PAGE = 30;\n\nexport const UNSPLASH_DEFAULT_REQUEST_CONFIG = {\n headers: {\n \"Access-Control-Allow-Origin\": \"*\",\n \"Access-Control-Allow-Methods\": \"GET\",\n },\n responseType: \"blob\",\n};\n\nexport const TABS = [\n {\n label: i18next.t(\"neetoImageUploader.labels.uploadImage\"),\n key: \"upload\",\n dataTestid: \"neeto-image-uploader-upload-image-tab\",\n },\n {\n label: i18next.t(\"neetoImageUploader.labels.myImages\"),\n key: \"images\",\n dataTestid: \"neeto-image-uploader-my-images-tab\",\n },\n {\n label: i18next.t(\"neetoImageUploader.labels.searchTheWeb\"),\n key: \"unsplash\",\n dataTestid: \"neeto-image-uploader-unsplash-tab\",\n },\n];\n\nexport const DEFAULT_CROP_CONFIG = {\n unit: \"%\",\n height: 100,\n width: 100,\n x: 0,\n y: 0,\n};\n\nexport const URL_REGEXP =\n /[(http(s)?)://(www.)?a-zA-Z0-9@:%._+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/;\n\nexport const INFINITE_SCROLLER_SIZES = [\n { columns: 2, gutter: 0 },\n { mq: \"768px\", columns: 4, gutter: 0 },\n { mq: \"1024px\", columns: 4, gutter: 0 },\n];\n\nexport const INFINITE_SCROLLER_STYLE = { width: \"100%\" };\n\nexport const ALLOWED_IMAGE_TYPES = {\n \"image/*\": [\".png\", \".jpg\", \".jpeg\", \".svg\", \".gif\"],\n};\n\nexport const IMAGE_UPLOAD_SERVICE_URL =\n globalProps.assetsUploaderService === CLOUD_FLARE\n ? `${IMAGE_UPLOADER_BASE_URL}/cloudflare_images`\n : `${IMAGE_UPLOADER_BASE_URL}/imagekit/fetch`;\n\nexport const ASSETS_FETCH_URL = IS_DEVELOPMENT_OR_HEROKU_ENV\n ? `${IMAGE_UPLOADER_BASE_URL}/development/fetch`\n : IMAGE_UPLOAD_SERVICE_URL;\n\nexport const ASSETS_DESTROY_URL = IS_DEVELOPMENT_OR_HEROKU_ENV\n ? `${IMAGE_UPLOADER_BASE_URL}/development/bulk_destroy`\n : `${IMAGE_UPLOADER_BASE_URL}/imagekit/bulk_destroy`;\n\nexport const IMAGE_WRAPPER_CLASSNAME =\n \"border-border bg-muted hover:bg-muted/80 neeto-ui-rounded-lg relative flex h-full w-full flex-col items-center justify-center gap-5 border border-dashed p-2 transition-all duration-300 ease-in-out\";\n","import ImageKit from \"imagekit-javascript\";\nimport { isPresent } from \"neetocist\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport { isEmpty, isNil } from \"ramda\";\n\nconst getWholeNumberAspectRatio = ({ width, height }) => {\n if (width === height) return { width: 1, height: 1 };\n\n const gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\n\n // Multiplying by 1000 is a temporary fix to prevent height and width with fractions (eg: 100.91).\n const divisor = gcd(width * 1000, height * 1000);\n\n return { width: width / divisor, height: height / divisor };\n};\n\nexport const getCropValues = ({ crop, imageRef }) => {\n const naturalWidth = imageRef.current.naturalWidth;\n const naturalHeight = imageRef.current.naturalHeight;\n\n return {\n x: (crop.x / 100) * naturalWidth,\n y: (crop.y / 100) * naturalHeight,\n width: (crop.width / 100) * naturalWidth,\n height: (crop.height / 100) * naturalHeight,\n };\n};\n\nexport const getImageKitCroppedURL = ({ imageURL, crop, imageRef }) => {\n const imagekit = new ImageKit({\n urlEndpoint: globalProps.imagekit.urlEndpoint,\n });\n const { x, y, height, width } = getCropValues({ crop, imageRef });\n\n const transformation = [{ cropMode: \"extract\", x, y, height, width }];\n\n return imagekit.url({ src: imageURL, transformation });\n};\n\nexport const isNilOrEmpty = value => isNil(value) || isEmpty(value);\nexport const isNotNilOrEmpty = value => !isNilOrEmpty(value);\n\nexport const isItemsCenter = ({ imageRef, wrapperRef }) => {\n const { height: imageHeight, width: imageWidth } = imageRef.current || {};\n const wrapperHeight = (wrapperRef.current || {}).clientHeight;\n\n if (imageHeight < imageWidth && imageHeight < wrapperHeight - 1) {\n // Landscape images smaller than wrapper dimensions\n return true;\n }\n\n if (imageHeight === imageWidth && imageHeight < wrapperHeight - 1) {\n // Square images smaller than wrapper dimensions\n return true;\n }\n\n return imageHeight > imageWidth && imageHeight < wrapperHeight - 1;\n};\n\nexport const calculateCloudFlareImageCroppedValues = ({ image, crop }) => {\n const naturalWidth = image.metadata.width;\n const naturalHeight = image.metadata.height;\n\n const sourceX = (crop.x / 100) * naturalWidth;\n const sourceY = (crop.y / 100) * naturalHeight;\n const sourceWidth = (crop.width / 100) * naturalWidth;\n const sourceHeight = (crop.height / 100) * naturalHeight;\n\n const distanceFromRight = Math.abs(naturalWidth - (sourceX + sourceWidth));\n const distanceFromBottom = Math.abs(naturalHeight - (sourceY + sourceHeight));\n\n return {\n top: sourceY,\n right: distanceFromRight,\n bottom: distanceFromBottom,\n left: sourceX,\n };\n};\n\nexport const getCloudFlareCroppedURL = ({ image, crop }) => {\n const { top, right, bottom, left } = calculateCloudFlareImageCroppedValues({\n image,\n crop,\n });\n const trimValues = `${top};${right};${bottom};${left}`;\n\n return image.url.replace(\"public\", `trim=${trimValues}`);\n};\n\nexport const getAspectRatio = ({ fixedAspectRatio, imageSize }) => {\n if (\n isPresent(fixedAspectRatio?.width) &&\n isPresent(fixedAspectRatio?.height)\n ) {\n return fixedAspectRatio;\n }\n\n if (isPresent(imageSize?.width) && isPresent(imageSize?.height)) {\n return getWholeNumberAspectRatio(imageSize);\n }\n\n return { width: 16, height: 9 };\n};\n\nexport const getPixels = (percentage, pixel) =>\n Math.round((percentage / 100) * pixel);\n\nexport const getPercentage = (crop, full) => (crop / full) * 100;\n\nexport const getInitialCropSize = ({\n image,\n aspectRatioFactor,\n maxCropWidth,\n}) => {\n const { naturalWidth: imageWidth, naturalHeight: imageHeight } = image;\n const imageAspectRatio = imageWidth / imageHeight;\n const maxCropHeight = maxCropWidth / aspectRatioFactor;\n\n let cropWidth, cropHeight;\n\n if (imageAspectRatio > aspectRatioFactor) {\n cropWidth = Math.min(maxCropWidth, imageWidth);\n cropHeight = cropWidth / aspectRatioFactor;\n } else if (imageHeight < maxCropHeight) {\n cropWidth = imageWidth;\n cropHeight = imageHeight;\n } else {\n cropHeight = Math.min(maxCropHeight, imageHeight);\n cropWidth = cropHeight * aspectRatioFactor;\n }\n\n return { cropWidth, cropHeight };\n};\n\nexport const getHeightFromAspectRatio = (width, aspectRatio) =>\n Math.round((width * aspectRatio.height) / aspectRatio.width);\n\nexport const getWidthFromAspectRatio = (height, aspectRatio) =>\n Math.round((height * aspectRatio.width) / aspectRatio.height);\n\nexport const getWrapperRefStyles = (wrapperRef, imageRef) => {\n const { naturalHeight = 100, naturalWidth = 100 } = imageRef.current || {};\n const { clientHeight = 100, clientWidth = 100 } = wrapperRef.current || {};\n\n if (naturalWidth <= clientWidth && naturalHeight <= clientHeight) {\n return { maxWidth: naturalWidth };\n } else if (naturalWidth > clientWidth && naturalHeight <= clientHeight) {\n return { maxWidth: clientWidth };\n } else if (naturalWidth <= clientWidth && naturalHeight > clientHeight) {\n const maxWidth = (naturalWidth / naturalHeight) * clientHeight;\n\n return { maxWidth };\n }\n\n // landscape\n if (naturalWidth > naturalHeight) {\n return { maxWidth: clientWidth };\n }\n\n // portrait\n const maxWidth = (naturalWidth / naturalHeight) * clientHeight;\n\n return { maxWidth };\n};\n"],"names":["DEFAULT_ALLOWED_IMAGE_TYPES","DEFAULT_UPLOAD_CONFIG","maxImageSize","globalProps","endUserUploadedFileSizeLimitInMb","allowedImageTypes","OPTION_KEYS","asset","remove","getAllowedTypes","uploadConfig","pipe","values","flatten","map","extension","slice","toUpper","join","DROPZONE_ROOT_DIV_CLASSNAME","t","ImageDirectUpload","forwardRef","_ref","ref","_ref$uploadConfig","_ref$onDrop","onDrop","noop","_ref$isDisabled","isDisabled","setIsAssetLibraryOpen","_ref$defaultImageSize","defaultImageSize","_ref$isUploadDisabled","isUploadDisabled","setImage","_useUploadDropzone","useUploadDropzone","getRootProps","getInputProps","isDragActive","open","uploadProgress","setUploadProgress","useImperativeHandle","upload","file","shouldShowProgress","equals","_jsx","_objectSpread","className","classnames","children","Progress","progressValue","concat","value","_jsxs","Typography","color","variant","Trans","i18nKey","components","span","Button","onClick","event","stopPropagation","e","disabled","fileTypes","size","isPresent","displayName","UNSPLASH_DEFAULT_NAME","UNSPLASH_URL","IMAGES_PER_PAGE","UNSPLASH_DEFAULT_REQUEST_CONFIG","headers","responseType","TABS","label","i18next","key","dataTestid","DEFAULT_CROP_CONFIG","unit","height","width","x","y","INFINITE_SCROLLER_SIZES","columns","gutter","mq","INFINITE_SCROLLER_STYLE","IMAGE_UPLOAD_SERVICE_URL","assetsUploaderService","CLOUD_FLARE","IMAGE_UPLOADER_BASE_URL","ASSETS_FETCH_URL","IS_DEVELOPMENT_OR_HEROKU_ENV","ASSETS_DESTROY_URL","IMAGE_WRAPPER_CLASSNAME","getWholeNumberAspectRatio","gcd","a","b","divisor","getCropValues","_ref2","crop","imageRef","naturalWidth","current","naturalHeight","getImageKitCroppedURL","_ref3","imageURL","imagekit","ImageKit","urlEndpoint","_getCropValues","transformation","cropMode","url","src","isNilOrEmpty","isNil","isEmpty","isNotNilOrEmpty","isItemsCenter","_ref4","wrapperRef","_ref5","imageHeight","imageWidth","wrapperHeight","clientHeight","calculateCloudFlareImageCroppedValues","_ref6","image","metadata","sourceX","sourceY","sourceWidth","sourceHeight","distanceFromRight","Math","abs","distanceFromBottom","top","right","bottom","left","getCloudFlareCroppedURL","_ref7","_calculateCloudFlareI","trimValues","replace","getAspectRatio","_ref8","fixedAspectRatio","imageSize","getPixels","percentage","pixel","round","getPercentage","full","getInitialCropSize","_ref9","aspectRatioFactor","maxCropWidth","imageAspectRatio","maxCropHeight","cropWidth","cropHeight","min","getHeightFromAspectRatio","aspectRatio","getWidthFromAspectRatio","getWrapperRefStyles","_ref10","_ref10$naturalHeight","_ref10$naturalWidth","_ref11","_ref11$clientHeight","_ref11$clientWidth","clientWidth","maxWidth"],"mappings":"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"}