@scaleflex/widget-utils 4.4.0 → 4.5.0

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 (176) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/lib/AbortController.js +20 -0
  3. package/lib/BlurHash/base83.js +10 -0
  4. package/lib/BlurHash/decode.js +80 -0
  5. package/lib/BlurHash/error.js +28 -0
  6. package/lib/BlurHash/utils.js +22 -0
  7. package/lib/CustomDate.js +157 -0
  8. package/lib/EventTracker.js +42 -0
  9. package/lib/FOCUSABLE_ELEMENTS.js +1 -0
  10. package/lib/LinkHelper.js +153 -0
  11. package/lib/NetworkError.js +30 -0
  12. package/lib/ProgressTimeout.js +45 -0
  13. package/lib/RateLimitedQueue.js +197 -0
  14. package/lib/RequestError.js +36 -0
  15. package/lib/Timeframes/getDateRange.js +45 -0
  16. package/lib/TranslationMissingKeysConsoleHelper.js +113 -0
  17. package/lib/Translator.js +200 -0
  18. package/lib/addUrlParams.js +27 -0
  19. package/lib/adjustUpdatedFolders.js +22 -0
  20. package/lib/asyncTimeout.js +6 -0
  21. package/lib/audioMimeTypes.js +3 -0
  22. package/lib/blobToDataURI.js +13 -0
  23. package/lib/callIfFunction.js +10 -0
  24. package/lib/canEditVideo.js +9 -0
  25. package/lib/canvasToBlob.js +18 -0
  26. package/lib/capitalizeFirstLetter.js +4 -0
  27. package/lib/checkConnection.js +4 -0
  28. package/lib/checkFileOrFolderNameValidation.js +4 -0
  29. package/lib/checkIfPngSvgGIF.js +3 -0
  30. package/lib/checkImageIfPngJpegOrWebpOrAvif.js +5 -0
  31. package/lib/checkItemsSupportExportWithReason.js +41 -0
  32. package/lib/checkPermissions.js +26 -0
  33. package/lib/cloudimageSupportedInputMimeTypes.js +2 -0
  34. package/lib/clsx.js +14 -0
  35. package/lib/constants.js +570 -0
  36. package/lib/convertBytesToMb.js +5 -0
  37. package/lib/convertGbToBytes.js +4 -0
  38. package/lib/convertVideoFileTypeToSupported.js +17 -0
  39. package/lib/copyText.js +25 -0
  40. package/lib/createFolderVirtualPath.js +14 -0
  41. package/lib/createThunk.js +349 -0
  42. package/lib/customEncodeURIComponent.js +47 -0
  43. package/lib/dataURItoBlob.js +33 -0
  44. package/lib/dataURItoFile.js +4 -0
  45. package/lib/dateStrToClearDateTime.js +20 -0
  46. package/lib/debounce.js +14 -0
  47. package/lib/deepEqual.js +23 -0
  48. package/lib/deepMerge.js +56 -0
  49. package/lib/deserializeFunction.js +5 -0
  50. package/lib/documentMimeTypes.js +2 -0
  51. package/lib/downloadFromBlob.js +16 -0
  52. package/lib/emitSocketProgress.js +18 -0
  53. package/lib/escapeRegExp.js +4 -0
  54. package/lib/extractFileDataNoBlob.js +12 -0
  55. package/lib/fetchWithNetworkError.js +14 -0
  56. package/lib/fieldsQueriesGetters.js +46 -0
  57. package/lib/findAllDOMElements.js +18 -0
  58. package/lib/findAllRegexMatchesInString.js +16 -0
  59. package/lib/findDOMElement.js +17 -0
  60. package/lib/findIndex.js +9 -0
  61. package/lib/formatDuration.js +22 -0
  62. package/lib/formatNumbers.js +32 -0
  63. package/lib/formatResolution.js +17 -0
  64. package/lib/formatSeconds.js +14 -0
  65. package/lib/generateFileId.js +53 -0
  66. package/lib/generateI18nKeyFromString.js +11 -0
  67. package/lib/generatePsdThumbnail/adaptHexBoundries.js +9 -0
  68. package/lib/generatePsdThumbnail/bufferToHex.js +12 -0
  69. package/lib/generatePsdThumbnail/generatePsdThumbnail.js +36 -0
  70. package/lib/generatePsdThumbnail/generatePsdThumbnailBytes.js +8 -0
  71. package/lib/generatePsdThumbnail/generatePsdThumbnailHex.js +4 -0
  72. package/lib/generateSelectInputPlaceholder.js +24 -0
  73. package/lib/getActionErrorState.js +17 -0
  74. package/lib/getArraysMutualObjects.js +12 -0
  75. package/lib/getBytesRemaining.js +9 -0
  76. package/lib/getClientTimezone.js +5 -0
  77. package/lib/getCloudimagePrefixedUrl.js +23 -0
  78. package/lib/getDateDaysFromNow.js +17 -0
  79. package/lib/getDateMinusDay.js +5 -0
  80. package/lib/getDateString.js +20 -0
  81. package/lib/getDaysLeft.js +9 -0
  82. package/lib/getDecodedUriComponent.js +10 -0
  83. package/lib/getDownloadSpeed.js +7 -0
  84. package/lib/getDroppedFiles/index.js +24 -0
  85. package/lib/getDroppedFiles/utils/fallbackApi.js +7 -0
  86. package/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getFilesAndDirectoriesFromDirectory.js +36 -0
  87. package/lib/getDroppedFiles/utils/webkitGetAsEntryApi/getRelativePath.js +16 -0
  88. package/lib/getDroppedFiles/utils/webkitGetAsEntryApi/index.js +57 -0
  89. package/lib/getEncodedWrappedUrl.js +7 -0
  90. package/lib/getFileAssetsTokenUrl.js +14 -0
  91. package/lib/getFileCdnLink.js +6 -0
  92. package/lib/getFileDefaultIcon.js +14 -0
  93. package/lib/getFileDetails.js +81 -0
  94. package/lib/getFileExtension.js +32 -0
  95. package/lib/getFileLink.js +17 -0
  96. package/lib/getFileNameAndExtension.js +22 -0
  97. package/lib/getFileType.js +23 -0
  98. package/lib/getFileTypeExtension.js +22 -0
  99. package/lib/getFilterFileFormatIcon.js +6 -0
  100. package/lib/getFolderDetails.js +30 -0
  101. package/lib/getFormattedPreviewUrl.js +79 -0
  102. package/lib/getHoursAndMinutes.js +9 -0
  103. package/lib/getImageEditUrl.js +36 -0
  104. package/lib/getImgFileDimensions.js +25 -0
  105. package/lib/getItemIcon.js +112 -0
  106. package/lib/getItemPath.js +10 -0
  107. package/lib/getItemPreviewWidthHeight.js +10 -0
  108. package/lib/getItemsSizeInBytes.js +12 -0
  109. package/lib/getJsonParsedValue.js +11 -0
  110. package/lib/getLinkWithNewParams.js +13 -0
  111. package/lib/getMetadataMultiSelectQuery.js +66 -0
  112. package/lib/getNormalizedItems.js +55 -0
  113. package/lib/getObjectsMutualProperties.js +32 -0
  114. package/lib/getRandomNumber.js +12 -0
  115. package/lib/getSocketHost.js +7 -0
  116. package/lib/getSpeed.js +8 -0
  117. package/lib/getTime.js +18 -0
  118. package/lib/getTimeStamp.js +18 -0
  119. package/lib/handleError.js +13 -0
  120. package/lib/handlePressEnter.js +9 -0
  121. package/lib/handlePromise.js +39 -0
  122. package/lib/hasProperty.js +3 -0
  123. package/lib/hexToRgb.js +15 -0
  124. package/lib/htmlSanitizer.js +6 -0
  125. package/lib/humanReadableDate.js +45 -0
  126. package/lib/humanReadableDateWithTranslations.js +29 -0
  127. package/lib/i18n.client.js +54 -0
  128. package/lib/ignoreEvent.js +10 -0
  129. package/lib/index.js +0 -0
  130. package/lib/injectVirtualPathToFolders.js +24 -0
  131. package/lib/isAi.js +7 -0
  132. package/lib/isArchive.js +12 -0
  133. package/lib/isAudio.js +9 -0
  134. package/lib/isAudioAndSupportsPlayback.js +10 -0
  135. package/lib/isCloudimageFastPreviewSupported.js +16 -0
  136. package/lib/isDOMElement.js +9 -0
  137. package/lib/isDocument.js +10 -0
  138. package/lib/isDragDropSupported.js +20 -0
  139. package/lib/isEmptyObject.js +4 -0
  140. package/lib/isEps.js +8 -0
  141. package/lib/isFile.js +5 -0
  142. package/lib/isFileSupportedByCloudimage.js +14 -0
  143. package/lib/isFolder.js +4 -0
  144. package/lib/isFontFile.js +9 -0
  145. package/lib/isFunction.js +4 -0
  146. package/lib/isImage.js +11 -0
  147. package/lib/isJpg.js +8 -0
  148. package/lib/isMobileDevice.js +12 -0
  149. package/lib/isNetworkError.js +7 -0
  150. package/lib/isNumber.js +4 -0
  151. package/lib/isObjectType.js +5 -0
  152. package/lib/isObjectURL.js +10 -0
  153. package/lib/isOpenedFromAdobe.js +3 -0
  154. package/lib/isOtf.js +10 -0
  155. package/lib/isPdf.js +9 -0
  156. package/lib/isPhotoshopFile.js +8 -0
  157. package/lib/isPreviewSupported.js +12 -0
  158. package/lib/isPromise.js +5 -0
  159. package/lib/metadata/checkFieldValidation.js +51 -0
  160. package/lib/metadata/generateItemMetadataState.js +63 -0
  161. package/lib/metadata/generateMetadataDefaultState.js +30 -0
  162. package/lib/metadata/getFileCustomMetadataGroups.js +23 -0
  163. package/lib/metadata/getGeoPointValidationErrors.js +32 -0
  164. package/lib/metadata/getMetaAttachmentFields.js +9 -0
  165. package/lib/metadata/getMetadataEmptyAssets.js +28 -0
  166. package/lib/metadata/getMetadataFieldGeoPointValue.js +42 -0
  167. package/lib/metadata/getMetadataFieldVariantValue.js +31 -0
  168. package/lib/metadata/getMetadataGroups.js +16 -0
  169. package/lib/metadata/getRequiredMetadataFields.js +13 -0
  170. package/lib/metadata/isM0LegacyMetaVersion.js +5 -0
  171. package/lib/metadata/isM1EdgyMetaVersion.js +5 -0
  172. package/lib/metadata/mapMetaAttachmentsObjsToUuids.js +21 -0
  173. package/lib/metadata/updateValidationErrors.js +59 -0
  174. package/lib/metadata/validateItemMetadata.js +70 -0
  175. package/lib/styledComponentsMixins/truncate.mixin.js +8 -0
  176. package/package.json +3 -3
@@ -0,0 +1,3 @@
1
+ // [Reference]: https://www.thoughtco.com/audio-file-mime-types-3469485
2
+ var AudioMimeTypes = ['audio/basic', 'auido/L24', 'audio/mid', 'audio/mpeg', 'audio/mp4', 'audio/x-aiff', 'audio/x-mpegurl', 'audio/vnd.rn-realaudio', 'audio/ogg', 'audio/vorbis', 'audio/vnd.wav', 'audio/m4p', 'audio/mp3'];
3
+ export default AudioMimeTypes;
@@ -0,0 +1,13 @@
1
+ var blobToDataUri = function blobToDataUri(blob) {
2
+ return new Promise(function (resolve, reject) {
3
+ var reader = new FileReader();
4
+ reader.readAsDataURL(blob);
5
+ reader.onload = function () {
6
+ return resolve(reader.result);
7
+ };
8
+ reader.onerror = function (error) {
9
+ return reject(new Error(error));
10
+ };
11
+ });
12
+ };
13
+ export default blobToDataUri;
@@ -0,0 +1,10 @@
1
+ import isFunction from './isFunction';
2
+ var callIfFunction = function callIfFunction(fn) {
3
+ if (isFunction(fn)) {
4
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
5
+ args[_key - 1] = arguments[_key];
6
+ }
7
+ return fn.apply(void 0, args);
8
+ }
9
+ };
10
+ export default callIfFunction;
@@ -0,0 +1,9 @@
1
+ import getFileType from './getFileType';
2
+ var canEditVideo = function canEditVideo() {
3
+ var file = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
4
+ if (!file) {
5
+ return false;
6
+ }
7
+ return /^video\/(mp4|webm|ogg|avi|mov|wmv|quicktime|x-msvideo)/.test(getFileType(file).toLowerCase());
8
+ };
9
+ export default canEditVideo;
@@ -0,0 +1,18 @@
1
+ import dataURItoBlob from './dataURItoBlob';
2
+
3
+ /**
4
+ * Save a <canvas> element's content to a Blob object.
5
+ *
6
+ * @param {HTMLCanvasElement} canvas
7
+ * @returns {Promise}
8
+ */
9
+ export default function canvasToBlob(canvas, type, quality) {
10
+ if (canvas.toBlob) {
11
+ return new Promise(function (resolve) {
12
+ canvas.toBlob(resolve, type, quality);
13
+ });
14
+ }
15
+ return Promise.resolve().then(function () {
16
+ return dataURItoBlob(canvas.toDataURL(type, quality), {});
17
+ });
18
+ }
@@ -0,0 +1,4 @@
1
+ export default (function () {
2
+ var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
3
+ return value.charAt(0).toUpperCase() + value.slice(1);
4
+ });
@@ -0,0 +1,4 @@
1
+ export default function checkConnection() {
2
+ var isOnline = typeof window.navigator.onLine !== 'undefined' ? window.navigator.onLine : true;
3
+ return isOnline;
4
+ }
@@ -0,0 +1,4 @@
1
+ import { INVALID_FOLDER_OR_FILE_CHARS_REGEX } from './constants';
2
+ export var checkFileOrFolderNameValidation = function checkFileOrFolderNameValidation(name) {
3
+ return INVALID_FOLDER_OR_FILE_CHARS_REGEX.test(name);
4
+ };
@@ -0,0 +1,3 @@
1
+ export default (function (extension) {
2
+ return /(png|svg|gif)/gi.test(extension);
3
+ });
@@ -0,0 +1,5 @@
1
+ import getFileType from '@scaleflex/widget-utils/lib/getFileType';
2
+ var checkImageIfPngJpegOrWebpOrAvif = function checkImageIfPngJpegOrWebpOrAvif(file) {
3
+ return /^image\/(jpeg|jpg|png|webp|avif)$/.test(getFileType(file).toLowerCase());
4
+ };
5
+ export default checkImageIfPngJpegOrWebpOrAvif;
@@ -0,0 +1,41 @@
1
+ import isImage from '@scaleflex/widget-utils/lib/isImage';
2
+ import isFileSupportedByCloudimage from '@scaleflex/widget-utils/lib/isFileSupportedByCloudimage';
3
+ import isPdf from './isPdf';
4
+ import { BYTES_TO_MEGA_BYTES, UNSUPPORTED_FILES_TO_EXPORT_REASONS } from './constants';
5
+ var areAllSelectionsImages = function areAllSelectionsImages(items) {
6
+ return items.every(isImage);
7
+ };
8
+ var maximumItemSize = 100 * BYTES_TO_MEGA_BYTES;
9
+ var photoshopItemType = 'image/vnd.adobe.photoshop';
10
+ var areSelectionsMixedWithPdf = function areSelectionsMixedWithPdf(items) {
11
+ return items.length && items.some(isPdf) && items.some(function (item) {
12
+ return !isPdf(item);
13
+ });
14
+ };
15
+
16
+ /**
17
+ * Check if the items provided are supportted to be exported.
18
+ * @param {items}
19
+ * @returns {i18nStr} If not supported.
20
+ * @returns {undefined} If supported.
21
+ */
22
+
23
+ export default function checkItemsSupportExportWithReason(items) {
24
+ var i18nStr;
25
+ var areAllItemsImages = areAllSelectionsImages(items);
26
+ items.forEach(function (i) {
27
+ if (!isFileSupportedByCloudimage(i)) {
28
+ i18nStr = areAllItemsImages ? UNSUPPORTED_FILES_TO_EXPORT_REASONS.NOT_SUPPORTED_IMAGES : UNSUPPORTED_FILES_TO_EXPORT_REASONS.NOT_SUPPORTED_FILES;
29
+ return i18nStr;
30
+ }
31
+ if (i.size.bytes > maximumItemSize && i.type === photoshopItemType) {
32
+ i18nStr = UNSUPPORTED_FILES_TO_EXPORT_REASONS.NOT_SUPPORTED_PDS_SIZE;
33
+ return i18nStr;
34
+ }
35
+ });
36
+ var areItemsMixedWithPdf = areSelectionsMixedWithPdf(items);
37
+ if (areItemsMixedWithPdf) {
38
+ i18nStr = UNSUPPORTED_FILES_TO_EXPORT_REASONS.MIXED_WITH_PDF;
39
+ }
40
+ return i18nStr;
41
+ }
@@ -0,0 +1,26 @@
1
+ /**
2
+ * A function to check the provided permissions facing the user's permissions
3
+ * @param {*} userPermissions - the user permissions array.
4
+ * @param {*} permissionsChecking - the permissions to check array
5
+ * @param {*} returnObject - if true, the permissionsChecking object would be returned with boolean value (true permission is found, false is not found)
6
+ * @returns {Boolean} - true = all permissionsChecking are found, false = one of them not found.
7
+ */
8
+ var checkPermissions = function checkPermissions() {
9
+ var userPermissions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
10
+ var permissionsChecking = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
11
+ var returnObject = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
12
+ var regex = new RegExp(userPermissions.join('|'), 'i');
13
+ if (!returnObject) {
14
+ return !permissionsChecking.some(function (permission) {
15
+ return permission && !regex.test(permission);
16
+ });
17
+ }
18
+ var permissionsObject = {};
19
+ permissionsChecking.forEach(function (permission) {
20
+ if (permission) {
21
+ permissionsObject[permission] = regex.test(permission);
22
+ }
23
+ });
24
+ return permissionsObject;
25
+ };
26
+ export default checkPermissions;
@@ -0,0 +1,2 @@
1
+ var cloudimageSupportedInputMimiTypes = ['image/svg+xml', 'image/jpeg', 'image/png', 'image/gif', 'image/webp', 'image/avif', 'image/heic', 'image/heif', 'image/bmp', 'application/pdf', 'image/x-eps', 'image/x-icon', 'image/vnd.adobe.photoshop', 'image/tiff'];
2
+ export default cloudimageSupportedInputMimiTypes;
package/lib/clsx.js ADDED
@@ -0,0 +1,14 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ /**
3
+ * @param {{[key:string]:boolean}} classes
4
+ * @returns {string}
5
+ */
6
+ function clsx(classes) {
7
+ if (_typeof(classes) !== 'object') {
8
+ throw new Error('invalid params');
9
+ }
10
+ return Object.keys(classes).filter(function (key) {
11
+ return classes[key] === true;
12
+ }).join(' ');
13
+ }
14
+ export default clsx;