@bigbinary/neeto-image-uploader-frontend 2.3.10 → 2.3.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/app/javascript/src/translations/en.json +3 -2
- package/dist/AssetLibrary.js +6 -5
- package/dist/AssetLibrary.js.map +1 -1
- package/dist/BasicImageUploader.js +3 -3
- package/dist/BasicImageUploader.js.map +1 -1
- package/dist/ImageUploader.js +9 -4
- package/dist/ImageUploader.js.map +1 -1
- package/dist/ImageWithFallback-Csv6Oivd.js +51 -0
- package/dist/ImageWithFallback-Csv6Oivd.js.map +1 -0
- package/dist/ImageWithFallback-DzT_N2Su.js +53 -0
- package/dist/ImageWithFallback-DzT_N2Su.js.map +1 -0
- package/dist/cjs/AssetLibrary.js +6 -5
- package/dist/cjs/AssetLibrary.js.map +1 -1
- package/dist/cjs/BasicImageUploader.js +4 -4
- package/dist/cjs/BasicImageUploader.js.map +1 -1
- package/dist/cjs/ImageUploader.js +14 -9
- package/dist/cjs/ImageUploader.js.map +1 -1
- package/dist/cjs/hooks.js +1 -1
- package/dist/cjs/index.js +6 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils.js.map +1 -1
- package/dist/{index-vkjNhoF3.js → index-2Z-tiNdY.js} +819 -391
- package/dist/index-2Z-tiNdY.js.map +1 -0
- package/dist/{index-By7BkNOh.js → index-BsGnAVUR.js} +846 -418
- package/dist/index-BsGnAVUR.js.map +1 -0
- package/dist/index-BtHfh_eu.js.map +1 -1
- package/dist/index-CZjb2iXB.js.map +1 -1
- package/dist/index.js +5 -4
- package/dist/index.js.map +1 -1
- package/dist/query-B0eDmse7.js.map +1 -1
- package/dist/query-B7ahlELA.js.map +1 -1
- package/dist/useImageUploader-Bm9TukCy.js.map +1 -1
- package/dist/useImageUploader-RX88_Cp-.js.map +1 -1
- package/dist/{useProfileImageUpload-UUrg2Lkw.js → useProfileImageUpload-C6Gat9NR.js} +6 -6
- package/dist/useProfileImageUpload-C6Gat9NR.js.map +1 -0
- package/dist/useProfileImageUpload-KpvcwEqx.js.map +1 -1
- package/dist/utils-C58No1u2.js +410 -0
- package/dist/utils-C58No1u2.js.map +1 -0
- package/dist/utils-CFUW0P-E.js +382 -0
- package/dist/utils-CFUW0P-E.js.map +1 -0
- package/dist/utils.js.map +1 -1
- package/package.json +58 -54
- package/types.d.ts +1 -0
- package/dist/ImageWithFallback-Dz9cyV2n.js +0 -144
- package/dist/ImageWithFallback-Dz9cyV2n.js.map +0 -1
- package/dist/ImageWithFallback-c9ANE1IE.js +0 -141
- package/dist/ImageWithFallback-c9ANE1IE.js.map +0 -1
- package/dist/index-By7BkNOh.js.map +0 -1
- package/dist/index-vkjNhoF3.js.map +0 -1
- package/dist/useProfileImageUpload-UUrg2Lkw.js.map +0 -1
- package/dist/utils-B5WMTXlT.js +0 -256
- package/dist/utils-B5WMTXlT.js.map +0 -1
- package/dist/utils-tPaqWDxV.js +0 -280
- package/dist/utils-tPaqWDxV.js.map +0 -1
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var _defineProperty = require('@babel/runtime/helpers/defineProperty');
|
|
4
|
+
var classnames = require('classnames');
|
|
5
|
+
var neetoCist = require('@bigbinary/neeto-cist');
|
|
6
|
+
var Button = require('@bigbinary/neetoui/Button');
|
|
7
|
+
var Typography = require('@bigbinary/neetoui/Typography');
|
|
8
|
+
var ProgressBar = require('@bigbinary/neetoui/ProgressBar');
|
|
9
|
+
var ramda = require('ramda');
|
|
10
|
+
var reactI18next = require('react-i18next');
|
|
11
|
+
var initializers = require('@bigbinary/neeto-commons-frontend/initializers');
|
|
12
|
+
var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
|
13
|
+
var g = require('react');
|
|
14
|
+
var reactDropzone = require('react-dropzone');
|
|
15
|
+
var i18next = require('i18next');
|
|
16
|
+
var Toastr = require('@bigbinary/neetoui/Toastr');
|
|
17
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
18
|
+
var index = require('./index-BtHfh_eu.js');
|
|
19
|
+
|
|
20
|
+
var DEFAULT_ALLOWED_IMAGE_TYPES = {
|
|
21
|
+
"image/png": [".png"],
|
|
22
|
+
"image/jpg": [".jpg", ".jpeg"],
|
|
23
|
+
"image/gif": [".gif"],
|
|
24
|
+
"image/svg+xml": [".svg"]
|
|
25
|
+
};
|
|
26
|
+
var DEFAULT_UPLOAD_CONFIG = {
|
|
27
|
+
maxImageSize: initializers.globalProps.endUserUploadedFileSizeLimitInMb,
|
|
28
|
+
allowedImageTypes: DEFAULT_ALLOWED_IMAGE_TYPES
|
|
29
|
+
};
|
|
30
|
+
var OPTION_KEYS = {
|
|
31
|
+
asset: "asset",
|
|
32
|
+
remove: "remove"
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
var getAllowedTypes = function getAllowedTypes(uploadConfig) {
|
|
36
|
+
return ramda.pipe(ramda.values, ramda.flatten, ramda.map(function (extension) {
|
|
37
|
+
return extension.slice(1);
|
|
38
|
+
}), ramda.map(ramda.toUpper), ramda.join(", "))(uploadConfig.allowedImageTypes);
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
var DROPZONE_ROOT_DIV_CLASSNAME = "neeto-ui-border-primary-600 hover:neeto-ui-bg-gray-100 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";
|
|
42
|
+
var FILE_ERRORS = {
|
|
43
|
+
"file-invalid-type": i18next.t("neetoImageUploader.imageUpload.fileTypeError"),
|
|
44
|
+
"file-too-large": i18next.t("neetoImageUploader.imageUpload.fileSizeError")
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
var handleDropRejected = function handleDropRejected(fileRejections) {
|
|
48
|
+
fileRejections.map(function (_ref) {
|
|
49
|
+
var errors = _ref.errors;
|
|
50
|
+
return errors.map(function (_ref2) {
|
|
51
|
+
var code = _ref2.code;
|
|
52
|
+
return Toastr.error(FILE_ERRORS[code] || i18next.t("neetoImageUploader.imageUpload.genericError"));
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
var useUploadDropzone = function useUploadDropzone(_ref) {
|
|
58
|
+
var _ref$uploadConfig = _ref.uploadConfig,
|
|
59
|
+
uploadConfig = _ref$uploadConfig === void 0 ? {
|
|
60
|
+
allowedImageTypes: [],
|
|
61
|
+
maxImageSize: 0
|
|
62
|
+
} : _ref$uploadConfig,
|
|
63
|
+
_onDrop = _ref.onDrop;
|
|
64
|
+
var _useState = g.useState(0),
|
|
65
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
66
|
+
uploadProgress = _useState2[0],
|
|
67
|
+
setUploadProgress = _useState2[1];
|
|
68
|
+
var _useDropzone = reactDropzone.useDropzone({
|
|
69
|
+
onDrop: function onDrop(acceptedFiles) {
|
|
70
|
+
return _onDrop(acceptedFiles[0], setUploadProgress);
|
|
71
|
+
},
|
|
72
|
+
accept: uploadConfig === null || uploadConfig === void 0 ? void 0 : uploadConfig.allowedImageTypes,
|
|
73
|
+
multiple: false,
|
|
74
|
+
maxSize: uploadConfig.maxImageSize * 1048576,
|
|
75
|
+
onDropRejected: handleDropRejected
|
|
76
|
+
}),
|
|
77
|
+
getRootProps = _useDropzone.getRootProps,
|
|
78
|
+
getInputProps = _useDropzone.getInputProps,
|
|
79
|
+
isDragActive = _useDropzone.isDragActive;
|
|
80
|
+
return {
|
|
81
|
+
getRootProps: getRootProps,
|
|
82
|
+
getInputProps: getInputProps,
|
|
83
|
+
isDragActive: isDragActive,
|
|
84
|
+
uploadProgress: uploadProgress
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
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; }
|
|
89
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).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; }
|
|
90
|
+
var ImageDirectUpload = function ImageDirectUpload(_ref) {
|
|
91
|
+
var _ref$uploadConfig = _ref.uploadConfig,
|
|
92
|
+
uploadConfig = _ref$uploadConfig === void 0 ? DEFAULT_UPLOAD_CONFIG : _ref$uploadConfig,
|
|
93
|
+
_ref$onDrop = _ref.onDrop,
|
|
94
|
+
onDrop = _ref$onDrop === void 0 ? neetoCist.noop : _ref$onDrop,
|
|
95
|
+
_ref$isDisabled = _ref.isDisabled,
|
|
96
|
+
isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
|
|
97
|
+
setIsAssetLibraryOpen = _ref.setIsAssetLibraryOpen,
|
|
98
|
+
_ref$defaultImageSize = _ref.defaultImageSize,
|
|
99
|
+
defaultImageSize = _ref$defaultImageSize === void 0 ? {} : _ref$defaultImageSize;
|
|
100
|
+
var _useUploadDropzone = useUploadDropzone({
|
|
101
|
+
uploadConfig: uploadConfig,
|
|
102
|
+
onDrop: onDrop
|
|
103
|
+
}),
|
|
104
|
+
getRootProps = _useUploadDropzone.getRootProps,
|
|
105
|
+
getInputProps = _useUploadDropzone.getInputProps,
|
|
106
|
+
isDragActive = _useUploadDropzone.isDragActive,
|
|
107
|
+
uploadProgress = _useUploadDropzone.uploadProgress;
|
|
108
|
+
var shouldShowProgress = !!(uploadProgress && !ramda.equals(uploadProgress, 1));
|
|
109
|
+
return /*#__PURE__*/jsxRuntime.jsx("div", _objectSpread(_objectSpread({}, getRootProps()), {}, {
|
|
110
|
+
className: classnames(DROPZONE_ROOT_DIV_CLASSNAME, {
|
|
111
|
+
"neeto-ui-border-gray-300": !isDragActive,
|
|
112
|
+
"neeto-ui-border-gray-700": isDragActive
|
|
113
|
+
}),
|
|
114
|
+
children: shouldShowProgress ? /*#__PURE__*/jsxRuntime.jsx(ProgressBar, {
|
|
115
|
+
progressPercentage: uploadProgress,
|
|
116
|
+
progressValue: "".concat(uploadProgress, "%")
|
|
117
|
+
}) : /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
118
|
+
className: "flex flex-col space-y-1",
|
|
119
|
+
children: [!isDisabled && /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
120
|
+
className: "neeto-ui-text-gray-800 text-center leading-4",
|
|
121
|
+
style: "body2",
|
|
122
|
+
children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
123
|
+
i18nKey: "neetoImageUploader.imageUpload.dragAndDropOrBrowseFile",
|
|
124
|
+
components: {
|
|
125
|
+
span: /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
126
|
+
"data-cy": "neeto-image-uploader-browse-text",
|
|
127
|
+
style: "link"
|
|
128
|
+
})
|
|
129
|
+
}
|
|
130
|
+
})
|
|
131
|
+
}), setIsAssetLibraryOpen && /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
132
|
+
className: "text-center leading-4",
|
|
133
|
+
style: "body2",
|
|
134
|
+
onClick: function onClick(e) {
|
|
135
|
+
e.stopPropagation();
|
|
136
|
+
setIsAssetLibraryOpen(true);
|
|
137
|
+
},
|
|
138
|
+
children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
139
|
+
i18nKey: "neetoImageUploader.imageUpload.selectImagefromImageLibrary",
|
|
140
|
+
components: {
|
|
141
|
+
span: /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
142
|
+
"data-cy": "open-asset-library-button",
|
|
143
|
+
style: "link"
|
|
144
|
+
})
|
|
145
|
+
}
|
|
146
|
+
})
|
|
147
|
+
}), /*#__PURE__*/jsxRuntime.jsx("input", _objectSpread(_objectSpread({}, getInputProps()), {}, {
|
|
148
|
+
"data-cy": "neeto-image-uploader-file-input",
|
|
149
|
+
disabled: isDisabled
|
|
150
|
+
})), /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
151
|
+
className: "neeto-ui-text-gray-700 text-center leading-4",
|
|
152
|
+
"data-cy": "neeto-image-uploader-restriction-message",
|
|
153
|
+
lineHeight: "snug",
|
|
154
|
+
style: "nano",
|
|
155
|
+
children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
156
|
+
i18nKey: "neetoImageUploader.imageUpload.restrictionMessage",
|
|
157
|
+
values: {
|
|
158
|
+
fileTypes: getAllowedTypes(uploadConfig),
|
|
159
|
+
size: uploadConfig === null || uploadConfig === void 0 ? void 0 : uploadConfig.maxImageSize
|
|
160
|
+
}
|
|
161
|
+
})
|
|
162
|
+
}), neetoCist.isPresent(defaultImageSize) && /*#__PURE__*/jsxRuntime.jsx(Typography, {
|
|
163
|
+
className: "neeto-ui-text-gray-700 text-center leading-4",
|
|
164
|
+
"data-cy": "neeto-image-uploader-ideal-image-size-info-text",
|
|
165
|
+
lineHeight: "snug",
|
|
166
|
+
style: "nano",
|
|
167
|
+
children: /*#__PURE__*/jsxRuntime.jsx(reactI18next.Trans, {
|
|
168
|
+
i18nKey: "neetoImageUploader.imageUpload.idealImageSizeInfo",
|
|
169
|
+
values: _objectSpread({}, defaultImageSize)
|
|
170
|
+
})
|
|
171
|
+
})]
|
|
172
|
+
})
|
|
173
|
+
}));
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
var UNSPLASH_DEFAULT_NAME = "Unsplash-asset";
|
|
177
|
+
var UNSPLASH_URL = "https://unsplash.com/";
|
|
178
|
+
var IMAGES_PER_PAGE = 30;
|
|
179
|
+
var UNSPLASH_DEFAULT_REQUEST_CONFIG = {
|
|
180
|
+
headers: {
|
|
181
|
+
"Access-Control-Allow-Origin": "*",
|
|
182
|
+
"Access-Control-Allow-Methods": "GET"
|
|
183
|
+
},
|
|
184
|
+
responseType: "blob"
|
|
185
|
+
};
|
|
186
|
+
var TABS = [{
|
|
187
|
+
label: i18next.t("neetoImageUploader.labels.uploadImage"),
|
|
188
|
+
key: "upload",
|
|
189
|
+
dataCy: "neeto-image-uploader-upload-image-tab"
|
|
190
|
+
}, {
|
|
191
|
+
label: i18next.t("neetoImageUploader.labels.myImages"),
|
|
192
|
+
key: "images",
|
|
193
|
+
dataCy: "neeto-image-uploader-my-images-tab"
|
|
194
|
+
}, {
|
|
195
|
+
label: i18next.t("neetoImageUploader.labels.searchTheWeb"),
|
|
196
|
+
key: "unsplash",
|
|
197
|
+
dataCy: "neeto-image-uploader-unsplash-tab"
|
|
198
|
+
}];
|
|
199
|
+
var DEFAULT_CROP_CONFIG = {
|
|
200
|
+
unit: "%",
|
|
201
|
+
height: 100,
|
|
202
|
+
width: 100,
|
|
203
|
+
x: 0,
|
|
204
|
+
y: 0
|
|
205
|
+
};
|
|
206
|
+
var INFINITE_SCROLLER_SIZES = [{
|
|
207
|
+
columns: 2,
|
|
208
|
+
gutter: 0
|
|
209
|
+
}, {
|
|
210
|
+
mq: "768px",
|
|
211
|
+
columns: 4,
|
|
212
|
+
gutter: 0
|
|
213
|
+
}, {
|
|
214
|
+
mq: "1024px",
|
|
215
|
+
columns: 4,
|
|
216
|
+
gutter: 0
|
|
217
|
+
}];
|
|
218
|
+
var INFINITE_SCROLLER_STYLE = {
|
|
219
|
+
width: "100%"
|
|
220
|
+
};
|
|
221
|
+
var IMAGE_UPLOAD_SERVICE_URL = initializers.globalProps.assetsUploaderService === index.CLOUD_FLARE ? "neeto_image_uploader_engine/cloudflare_images" : "neeto_image_uploader_engine/imagekit/fetch";
|
|
222
|
+
var ASSETS_FETCH_URL = index.IS_DEVELOPMENT_OR_HEROKU_ENV ? "neeto_image_uploader_engine/development/fetch" : IMAGE_UPLOAD_SERVICE_URL;
|
|
223
|
+
var ASSETS_DESTROY_URL = index.IS_DEVELOPMENT_OR_HEROKU_ENV ? "neeto_image_uploader_engine/development/bulk_destroy" : "neeto_image_uploader_engine/imagekit/bulk_destroy";
|
|
224
|
+
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";
|
|
225
|
+
|
|
226
|
+
var getWholeNumberAspectRatio = function getWholeNumberAspectRatio(_ref) {
|
|
227
|
+
var width = _ref.width,
|
|
228
|
+
height = _ref.height;
|
|
229
|
+
var _gcd = function gcd(a, b) {
|
|
230
|
+
return b === 0 ? a : _gcd(b, a % b);
|
|
231
|
+
};
|
|
232
|
+
var divisor = _gcd(width, height);
|
|
233
|
+
return {
|
|
234
|
+
width: width / divisor,
|
|
235
|
+
height: height / divisor
|
|
236
|
+
};
|
|
237
|
+
};
|
|
238
|
+
var getCropValues = function getCropValues(_ref2) {
|
|
239
|
+
var crop = _ref2.crop,
|
|
240
|
+
imageRef = _ref2.imageRef;
|
|
241
|
+
var naturalWidth = imageRef.current.naturalWidth;
|
|
242
|
+
var naturalHeight = imageRef.current.naturalHeight;
|
|
243
|
+
return {
|
|
244
|
+
x: crop.x / 100 * naturalWidth,
|
|
245
|
+
y: crop.y / 100 * naturalHeight,
|
|
246
|
+
width: crop.width / 100 * naturalWidth,
|
|
247
|
+
height: crop.height / 100 * naturalHeight
|
|
248
|
+
};
|
|
249
|
+
};
|
|
250
|
+
var getImageKitCroppedURL = function getImageKitCroppedURL(_ref3) {
|
|
251
|
+
var imageURL = _ref3.imageURL,
|
|
252
|
+
crop = _ref3.crop,
|
|
253
|
+
imageRef = _ref3.imageRef;
|
|
254
|
+
var imagekit = new index.ImageKit({
|
|
255
|
+
urlEndpoint: initializers.globalProps.imagekit.urlEndpoint
|
|
256
|
+
});
|
|
257
|
+
var _getCropValues = getCropValues({
|
|
258
|
+
crop: crop,
|
|
259
|
+
imageRef: imageRef
|
|
260
|
+
}),
|
|
261
|
+
x = _getCropValues.x,
|
|
262
|
+
y = _getCropValues.y,
|
|
263
|
+
height = _getCropValues.height,
|
|
264
|
+
width = _getCropValues.width;
|
|
265
|
+
var transformation = [{
|
|
266
|
+
cropMode: "extract",
|
|
267
|
+
x: x,
|
|
268
|
+
y: y,
|
|
269
|
+
height: height,
|
|
270
|
+
width: width
|
|
271
|
+
}];
|
|
272
|
+
return imagekit.url({
|
|
273
|
+
src: imageURL,
|
|
274
|
+
transformation: transformation
|
|
275
|
+
});
|
|
276
|
+
};
|
|
277
|
+
var isNilOrEmpty = function isNilOrEmpty(value) {
|
|
278
|
+
return ramda.isNil(value) || ramda.isEmpty(value);
|
|
279
|
+
};
|
|
280
|
+
var isNotNilOrEmpty = function isNotNilOrEmpty(value) {
|
|
281
|
+
return !isNilOrEmpty(value);
|
|
282
|
+
};
|
|
283
|
+
var isItemsCenter = function isItemsCenter(_ref4) {
|
|
284
|
+
var imageRef = _ref4.imageRef,
|
|
285
|
+
wrapperRef = _ref4.wrapperRef;
|
|
286
|
+
var _ref5 = imageRef.current || {},
|
|
287
|
+
imageHeight = _ref5.height,
|
|
288
|
+
imageWidth = _ref5.width;
|
|
289
|
+
var wrapperHeight = (wrapperRef.current || {}).clientHeight;
|
|
290
|
+
if (imageHeight < imageWidth && imageHeight < wrapperHeight - 1) {
|
|
291
|
+
// Landscape images smaller than wrapper dimensions
|
|
292
|
+
return true;
|
|
293
|
+
}
|
|
294
|
+
if (imageHeight === imageWidth && imageHeight < wrapperHeight - 1) {
|
|
295
|
+
// Square images smaller than wrapper dimensions
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
return imageHeight > imageWidth && imageHeight < wrapperHeight - 1;
|
|
299
|
+
};
|
|
300
|
+
var calculateCloudFlareImageCroppedValues = function calculateCloudFlareImageCroppedValues(_ref6) {
|
|
301
|
+
var image = _ref6.image,
|
|
302
|
+
crop = _ref6.crop;
|
|
303
|
+
var naturalWidth = image.metadata.width;
|
|
304
|
+
var naturalHeight = image.metadata.height;
|
|
305
|
+
var sourceX = crop.x / 100 * naturalWidth;
|
|
306
|
+
var sourceY = crop.y / 100 * naturalHeight;
|
|
307
|
+
var sourceWidth = crop.width / 100 * naturalWidth;
|
|
308
|
+
var sourceHeight = crop.height / 100 * naturalHeight;
|
|
309
|
+
var distanceFromRight = Math.abs(naturalWidth - (sourceX + sourceWidth));
|
|
310
|
+
var distanceFromBottom = Math.abs(naturalHeight - (sourceY + sourceHeight));
|
|
311
|
+
return {
|
|
312
|
+
top: sourceY,
|
|
313
|
+
right: distanceFromRight,
|
|
314
|
+
bottom: distanceFromBottom,
|
|
315
|
+
left: sourceX
|
|
316
|
+
};
|
|
317
|
+
};
|
|
318
|
+
var getCloudFlareCroppedURL = function getCloudFlareCroppedURL(_ref7) {
|
|
319
|
+
var image = _ref7.image,
|
|
320
|
+
crop = _ref7.crop;
|
|
321
|
+
var _calculateCloudFlareI = calculateCloudFlareImageCroppedValues({
|
|
322
|
+
image: image,
|
|
323
|
+
crop: crop
|
|
324
|
+
}),
|
|
325
|
+
top = _calculateCloudFlareI.top,
|
|
326
|
+
right = _calculateCloudFlareI.right,
|
|
327
|
+
bottom = _calculateCloudFlareI.bottom,
|
|
328
|
+
left = _calculateCloudFlareI.left;
|
|
329
|
+
var trimValues = "".concat(top, ";").concat(right, ";").concat(bottom, ";").concat(left);
|
|
330
|
+
return image.url.replace("public", "trim=".concat(trimValues));
|
|
331
|
+
};
|
|
332
|
+
var getAspectRatio = function getAspectRatio(_ref8) {
|
|
333
|
+
var fixedAspectRatio = _ref8.fixedAspectRatio,
|
|
334
|
+
imageSize = _ref8.imageSize;
|
|
335
|
+
if (neetoCist.isPresent(fixedAspectRatio === null || fixedAspectRatio === void 0 ? void 0 : fixedAspectRatio.width) && neetoCist.isPresent(fixedAspectRatio === null || fixedAspectRatio === void 0 ? void 0 : fixedAspectRatio.height)) {
|
|
336
|
+
return fixedAspectRatio;
|
|
337
|
+
}
|
|
338
|
+
if (neetoCist.isPresent(imageSize === null || imageSize === void 0 ? void 0 : imageSize.width) && neetoCist.isPresent(imageSize === null || imageSize === void 0 ? void 0 : imageSize.height)) {
|
|
339
|
+
return getWholeNumberAspectRatio(imageSize);
|
|
340
|
+
}
|
|
341
|
+
return {
|
|
342
|
+
width: 16,
|
|
343
|
+
height: 9
|
|
344
|
+
};
|
|
345
|
+
};
|
|
346
|
+
var getPixels = function getPixels(percentage, pixel) {
|
|
347
|
+
return Math.round(percentage / 100 * pixel);
|
|
348
|
+
};
|
|
349
|
+
var getPercentage = function getPercentage(crop, full) {
|
|
350
|
+
return crop / full * 100;
|
|
351
|
+
};
|
|
352
|
+
var getInitialCropSize = function getInitialCropSize(_ref9) {
|
|
353
|
+
var image = _ref9.image,
|
|
354
|
+
aspectRatioFactor = _ref9.aspectRatioFactor,
|
|
355
|
+
maxCropWidth = _ref9.maxCropWidth;
|
|
356
|
+
var imageWidth = image.naturalWidth,
|
|
357
|
+
imageHeight = image.naturalHeight;
|
|
358
|
+
var imageAspectRatio = imageWidth / imageHeight;
|
|
359
|
+
var maxCropHeight = maxCropWidth / aspectRatioFactor;
|
|
360
|
+
var cropWidth, cropHeight;
|
|
361
|
+
if (imageAspectRatio > aspectRatioFactor) {
|
|
362
|
+
cropWidth = Math.min(maxCropWidth, imageWidth);
|
|
363
|
+
cropHeight = cropWidth / aspectRatioFactor;
|
|
364
|
+
} else if (imageHeight < maxCropHeight) {
|
|
365
|
+
cropWidth = imageWidth;
|
|
366
|
+
cropHeight = imageHeight;
|
|
367
|
+
} else {
|
|
368
|
+
cropHeight = Math.min(maxCropHeight, imageHeight);
|
|
369
|
+
cropWidth = cropHeight * aspectRatioFactor;
|
|
370
|
+
}
|
|
371
|
+
return {
|
|
372
|
+
cropWidth: cropWidth,
|
|
373
|
+
cropHeight: cropHeight
|
|
374
|
+
};
|
|
375
|
+
};
|
|
376
|
+
var getHeightFromAspectRatio = function getHeightFromAspectRatio(width, aspectRatio) {
|
|
377
|
+
return Math.round(width * aspectRatio.height / aspectRatio.width);
|
|
378
|
+
};
|
|
379
|
+
var getWidthFromAspectRatio = function getWidthFromAspectRatio(height, aspectRatio) {
|
|
380
|
+
return Math.round(height * aspectRatio.width / aspectRatio.height);
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
exports.ASSETS_DESTROY_URL = ASSETS_DESTROY_URL;
|
|
384
|
+
exports.ASSETS_FETCH_URL = ASSETS_FETCH_URL;
|
|
385
|
+
exports.DEFAULT_CROP_CONFIG = DEFAULT_CROP_CONFIG;
|
|
386
|
+
exports.DEFAULT_UPLOAD_CONFIG = DEFAULT_UPLOAD_CONFIG;
|
|
387
|
+
exports.IMAGES_PER_PAGE = IMAGES_PER_PAGE;
|
|
388
|
+
exports.IMAGE_WRAPPER_CLASSNAME = IMAGE_WRAPPER_CLASSNAME;
|
|
389
|
+
exports.INFINITE_SCROLLER_SIZES = INFINITE_SCROLLER_SIZES;
|
|
390
|
+
exports.INFINITE_SCROLLER_STYLE = INFINITE_SCROLLER_STYLE;
|
|
391
|
+
exports.ImageDirectUpload = ImageDirectUpload;
|
|
392
|
+
exports.OPTION_KEYS = OPTION_KEYS;
|
|
393
|
+
exports.TABS = TABS;
|
|
394
|
+
exports.UNSPLASH_DEFAULT_NAME = UNSPLASH_DEFAULT_NAME;
|
|
395
|
+
exports.UNSPLASH_DEFAULT_REQUEST_CONFIG = UNSPLASH_DEFAULT_REQUEST_CONFIG;
|
|
396
|
+
exports.UNSPLASH_URL = UNSPLASH_URL;
|
|
397
|
+
exports.getAspectRatio = getAspectRatio;
|
|
398
|
+
exports.getCloudFlareCroppedURL = getCloudFlareCroppedURL;
|
|
399
|
+
exports.getCropValues = getCropValues;
|
|
400
|
+
exports.getHeightFromAspectRatio = getHeightFromAspectRatio;
|
|
401
|
+
exports.getImageKitCroppedURL = getImageKitCroppedURL;
|
|
402
|
+
exports.getInitialCropSize = getInitialCropSize;
|
|
403
|
+
exports.getPercentage = getPercentage;
|
|
404
|
+
exports.getPixels = getPixels;
|
|
405
|
+
exports.getWidthFromAspectRatio = getWidthFromAspectRatio;
|
|
406
|
+
exports.isItemsCenter = isItemsCenter;
|
|
407
|
+
exports.isNilOrEmpty = isNilOrEmpty;
|
|
408
|
+
exports.isNotNilOrEmpty = isNotNilOrEmpty;
|
|
409
|
+
exports.useUploadDropzone = useUploadDropzone;
|
|
410
|
+
//# sourceMappingURL=utils-C58No1u2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils-C58No1u2.js","sources":["../app/javascript/src/components/ImageUploader/constants.js","../app/javascript/src/components/ImageUploader/utils.js","../app/javascript/src/components/common/constants.js","../app/javascript/src/components/common/utils.js","../app/javascript/src/hooks/useUploadDropzone.js","../app/javascript/src/components/common/ImageDirectUpload.jsx","../app/javascript/src/components/constants.js","../app/javascript/src/components/ImageEditor/utils.js"],"sourcesContent":["import { globalProps } from \"neetocommons/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 \"neeto-ui-border-primary-600 hover:neeto-ui-bg-gray-100 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\";\n\nexport const FILE_ERRORS = {\n \"file-invalid-type\": t(\"neetoImageUploader.imageUpload.fileTypeError\"),\n \"file-too-large\": t(\"neetoImageUploader.imageUpload.fileSizeError\"),\n};\n","import { t } from \"i18next\";\nimport { Toastr } from \"neetoui\";\n\nimport { FILE_ERRORS } from \"./constants\";\n\nexport const handleDropRejected = fileRejections => {\n fileRejections.map(({ errors }) =>\n errors.map(({ code }) =>\n Toastr.error(\n FILE_ERRORS[code] || t(\"neetoImageUploader.imageUpload.genericError\")\n )\n )\n );\n};\n","import { useState } from \"react\";\n\nimport { useDropzone } from \"react-dropzone\";\n\nimport { handleDropRejected } from \"components/common/utils\";\n\nconst useUploadDropzone = ({\n uploadConfig = { allowedImageTypes: [], maxImageSize: 0 },\n onDrop,\n}) => {\n const [uploadProgress, setUploadProgress] = useState(0);\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: acceptedFiles => onDrop(acceptedFiles[0], setUploadProgress),\n accept: uploadConfig?.allowedImageTypes,\n multiple: false,\n maxSize: uploadConfig.maxImageSize * 1_048_576,\n onDropRejected: handleDropRejected,\n });\n\n return {\n getRootProps,\n getInputProps,\n isDragActive,\n uploadProgress,\n };\n};\n\nexport default useUploadDropzone;\n","import classnames from \"classnames\";\nimport { noop, isPresent } from \"neetocist\";\nimport { Button, Typography, ProgressBar } 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\";\n\nimport { DROPZONE_ROOT_DIV_CLASSNAME } from \"./constants\";\n\nconst ImageDirectUpload = ({\n uploadConfig = DEFAULT_UPLOAD_CONFIG,\n onDrop = noop,\n isDisabled = false,\n setIsAssetLibraryOpen,\n defaultImageSize = {},\n}) => {\n const { getRootProps, getInputProps, isDragActive, uploadProgress } =\n useUploadDropzone({ uploadConfig, onDrop });\n\n const shouldShowProgress = !!(uploadProgress && !equals(uploadProgress, 1));\n\n return (\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 {shouldShowProgress ? (\n <ProgressBar\n progressPercentage={uploadProgress}\n progressValue={`${uploadProgress}%`}\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 && (\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 {isPresent(defaultImageSize) && (\n <Typography\n className=\"neeto-ui-text-gray-700 text-center leading-4\"\n data-cy=\"neeto-image-uploader-ideal-image-size-info-text\"\n lineHeight=\"snug\"\n style=\"nano\"\n >\n <Trans\n i18nKey=\"neetoImageUploader.imageUpload.idealImageSizeInfo\"\n values={{ ...defaultImageSize }}\n />\n </Typography>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default ImageDirectUpload;\n","import i18next from \"i18next\";\nimport { globalProps } from \"neetocommons/initializers\";\n\nimport { CLOUD_FLARE, IS_DEVELOPMENT_OR_HEROKU_ENV } 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 dataCy: \"neeto-image-uploader-upload-image-tab\",\n },\n {\n label: i18next.t(\"neetoImageUploader.labels.myImages\"),\n key: \"images\",\n dataCy: \"neeto-image-uploader-my-images-tab\",\n },\n {\n label: i18next.t(\"neetoImageUploader.labels.searchTheWeb\"),\n key: \"unsplash\",\n dataCy: \"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 ? \"neeto_image_uploader_engine/cloudflare_images\"\n : \"neeto_image_uploader_engine/imagekit/fetch\";\n\nexport const ASSETS_FETCH_URL = IS_DEVELOPMENT_OR_HEROKU_ENV\n ? \"neeto_image_uploader_engine/development/fetch\"\n : IMAGE_UPLOAD_SERVICE_URL;\n\nexport const ASSETS_DESTROY_URL = IS_DEVELOPMENT_OR_HEROKU_ENV\n ? \"neeto_image_uploader_engine/development/bulk_destroy\"\n : \"neeto_image_uploader_engine/imagekit/bulk_destroy\";\n\nexport const IMAGE_WRAPPER_CLASSNAME =\n \"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\";\n","import ImageKit from \"imagekit-javascript\";\nimport { isPresent } from \"neetocist\";\nimport { globalProps } from \"neetocommons/initializers\";\nimport { isEmpty, isNil } from \"ramda\";\n\nconst getWholeNumberAspectRatio = ({ width, height }) => {\n const gcd = (a, b) => (b === 0 ? a : gcd(b, a % b));\n\n const divisor = gcd(width, height);\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"],"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","FILE_ERRORS","t","handleDropRejected","fileRejections","_ref","errors","_ref2","code","Toastr","error","useUploadDropzone","_ref$uploadConfig","onDrop","_useState","useState","_useState2","_slicedToArray","uploadProgress","setUploadProgress","_useDropzone","useDropzone","acceptedFiles","accept","multiple","maxSize","onDropRejected","getRootProps","getInputProps","isDragActive","ImageDirectUpload","_ref$onDrop","noop","_ref$isDisabled","isDisabled","setIsAssetLibraryOpen","_ref$defaultImageSize","defaultImageSize","_useUploadDropzone","shouldShowProgress","equals","_jsx","_objectSpread","className","classnames","children","ProgressBar","progressPercentage","progressValue","concat","_jsxs","Typography","style","Trans","i18nKey","components","span","Button","onClick","e","stopPropagation","disabled","lineHeight","fileTypes","size","isPresent","UNSPLASH_DEFAULT_NAME","UNSPLASH_URL","IMAGES_PER_PAGE","UNSPLASH_DEFAULT_REQUEST_CONFIG","headers","responseType","TABS","label","i18next","key","dataCy","DEFAULT_CROP_CONFIG","unit","height","width","x","y","INFINITE_SCROLLER_SIZES","columns","gutter","mq","INFINITE_SCROLLER_STYLE","IMAGE_UPLOAD_SERVICE_URL","assetsUploaderService","CLOUD_FLARE","ASSETS_FETCH_URL","IS_DEVELOPMENT_OR_HEROKU_ENV","ASSETS_DESTROY_URL","IMAGE_WRAPPER_CLASSNAME","getWholeNumberAspectRatio","gcd","a","b","divisor","getCropValues","crop","imageRef","naturalWidth","current","naturalHeight","getImageKitCroppedURL","_ref3","imageURL","imagekit","ImageKit","urlEndpoint","_getCropValues","transformation","cropMode","url","src","isNilOrEmpty","value","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"],"mappings":"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"}
|