@bigbinary/neeto-editor-frontend 2.0.5 → 2.0.7

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 (131) hide show
  1. package/README.md +2 -0
  2. package/dist/.ready +1 -1
  3. package/dist/Attachments.js +3 -4
  4. package/dist/Attachments.js.map +1 -1
  5. package/dist/Editor.js +120 -103
  6. package/dist/Editor.js.map +1 -1
  7. package/dist/EditorContent.js +4 -4
  8. package/dist/EditorContent.js.map +1 -1
  9. package/dist/FormikEditor.js +7 -7
  10. package/dist/FormikEditor.js.map +1 -1
  11. package/dist/Menu.js +3 -4
  12. package/dist/Menu.js.map +1 -1
  13. package/dist/{chunk-C4efob7L.js → chunk-BGx6BSFw.js} +82 -82
  14. package/dist/chunk-BGx6BSFw.js.map +1 -0
  15. package/dist/{chunk-Cnk9-9SJ.js → chunk-BVW5D3k5.js} +18 -14
  16. package/dist/chunk-BVW5D3k5.js.map +1 -0
  17. package/dist/{chunk-CJfLgMJF.js → chunk-BV_wep_Y.js} +4 -5
  18. package/dist/{chunk-CJfLgMJF.js.map → chunk-BV_wep_Y.js.map} +1 -1
  19. package/dist/{chunk-jiUuXPs1.js → chunk-BfQ_Kj4i.js} +4 -5
  20. package/dist/{chunk-jiUuXPs1.js.map → chunk-BfQ_Kj4i.js.map} +1 -1
  21. package/dist/{chunk-C893rdfW.js → chunk-Byc0nnPW.js} +63 -63
  22. package/dist/chunk-Byc0nnPW.js.map +1 -0
  23. package/dist/{chunk-Qg4uQqj3.js → chunk-CTLN7kYv.js} +7 -7
  24. package/dist/{chunk-Qg4uQqj3.js.map → chunk-CTLN7kYv.js.map} +1 -1
  25. package/dist/{chunk-9vP3rEtI.js → chunk-CrQm8ki8.js} +9 -9
  26. package/dist/{chunk-9vP3rEtI.js.map → chunk-CrQm8ki8.js.map} +1 -1
  27. package/dist/{chunk-CA9DTddx.js → chunk-CxFTIgDS.js} +35 -40
  28. package/dist/chunk-CxFTIgDS.js.map +1 -0
  29. package/dist/{chunk-C6Wn4nia.js → chunk-D_Lgx0N7.js} +35 -40
  30. package/dist/chunk-D_Lgx0N7.js.map +1 -0
  31. package/dist/{chunk-aCTMceVU.js → chunk-DbtYYDYF.js} +9 -9
  32. package/dist/{chunk-aCTMceVU.js.map → chunk-DbtYYDYF.js.map} +1 -1
  33. package/dist/{chunk-Dm4Qt79M.js → chunk-DhFieQe2.js} +82 -82
  34. package/dist/chunk-DhFieQe2.js.map +1 -0
  35. package/dist/chunk-Di3ipdfT.js.map +1 -1
  36. package/dist/{chunk-fDmcpgqx.js → chunk-DxmX0drN.js} +2 -2
  37. package/dist/{chunk-fDmcpgqx.js.map → chunk-DxmX0drN.js.map} +1 -1
  38. package/dist/{chunk-2yDx3K8L.js → chunk-MLCxAQf7.js} +63 -63
  39. package/dist/chunk-MLCxAQf7.js.map +1 -0
  40. package/dist/{chunk-D3QbacSt.js → chunk-OP-lX765.js} +44 -50
  41. package/dist/{chunk-D3QbacSt.js.map → chunk-OP-lX765.js.map} +1 -1
  42. package/dist/chunk-UwzgbfZD.js.map +1 -1
  43. package/dist/cjs/Attachments.cjs.js +3 -4
  44. package/dist/cjs/Attachments.cjs.js.map +1 -1
  45. package/dist/cjs/Editor.cjs.js +168 -152
  46. package/dist/cjs/Editor.cjs.js.map +1 -1
  47. package/dist/cjs/EditorContent.cjs.js +4 -4
  48. package/dist/cjs/EditorContent.cjs.js.map +1 -1
  49. package/dist/cjs/FormikEditor.cjs.js +7 -7
  50. package/dist/cjs/FormikEditor.cjs.js.map +1 -1
  51. package/dist/cjs/Menu.cjs.js +3 -4
  52. package/dist/cjs/Menu.cjs.js.map +1 -1
  53. package/dist/cjs/{chunk-WeNbd2ic.cjs.js → chunk--47DtZYn.cjs.js} +82 -83
  54. package/dist/cjs/chunk--47DtZYn.cjs.js.map +1 -0
  55. package/dist/cjs/{chunk-CNhef3wf.cjs.js → chunk-9oA3Y9DG.cjs.js} +18 -14
  56. package/dist/cjs/chunk-9oA3Y9DG.cjs.js.map +1 -0
  57. package/dist/cjs/{chunk-BL4O70ER.cjs.js → chunk-BAse0j9m.cjs.js} +4 -5
  58. package/dist/cjs/{chunk-BL4O70ER.cjs.js.map → chunk-BAse0j9m.cjs.js.map} +1 -1
  59. package/dist/cjs/{chunk-Bm1Dzh4r.cjs.js → chunk-BPLEmkMA.cjs.js} +34 -40
  60. package/dist/cjs/chunk-BPLEmkMA.cjs.js.map +1 -0
  61. package/dist/cjs/{chunk-D3Unocnm.cjs.js → chunk-Bde8Sbb1.cjs.js} +44 -51
  62. package/dist/cjs/{chunk-D3Unocnm.cjs.js.map → chunk-Bde8Sbb1.cjs.js.map} +1 -1
  63. package/dist/cjs/{chunk-BKvkHB8E.cjs.js → chunk-Bsk_FDUA.cjs.js} +7 -7
  64. package/dist/cjs/{chunk-BKvkHB8E.cjs.js.map → chunk-Bsk_FDUA.cjs.js.map} +1 -1
  65. package/dist/cjs/{chunk-DXsX8co9.cjs.js → chunk-BwE6pvh2.cjs.js} +2 -2
  66. package/dist/cjs/{chunk-DXsX8co9.cjs.js.map → chunk-BwE6pvh2.cjs.js.map} +1 -1
  67. package/dist/cjs/chunk-BxKa_XOs.cjs.js.map +1 -1
  68. package/dist/cjs/{chunk-B1X-JIj8.cjs.js → chunk-CHk_Gq2n.cjs.js} +34 -40
  69. package/dist/cjs/chunk-CHk_Gq2n.cjs.js.map +1 -0
  70. package/dist/cjs/{chunk-CesnwG-V.cjs.js → chunk-CkdAygKd.cjs.js} +9 -9
  71. package/dist/cjs/{chunk-CesnwG-V.cjs.js.map → chunk-CkdAygKd.cjs.js.map} +1 -1
  72. package/dist/cjs/chunk-CohcWDmm.cjs.js.map +1 -1
  73. package/dist/cjs/{chunk-DBQBe3dq.cjs.js → chunk-CwtiYxqr.cjs.js} +9 -9
  74. package/dist/cjs/{chunk-DBQBe3dq.cjs.js.map → chunk-CwtiYxqr.cjs.js.map} +1 -1
  75. package/dist/cjs/{chunk-DRTgn9TG.cjs.js → chunk-D53HfRZd.cjs.js} +62 -63
  76. package/dist/cjs/chunk-D53HfRZd.cjs.js.map +1 -0
  77. package/dist/cjs/{chunk-UyXI9oIp.cjs.js → chunk-D86ONI5s.cjs.js} +4 -5
  78. package/dist/cjs/{chunk-UyXI9oIp.cjs.js.map → chunk-D86ONI5s.cjs.js.map} +1 -1
  79. package/dist/cjs/{chunk-TCCIxl2A.cjs.js → chunk-D9InNR1-.cjs.js} +62 -63
  80. package/dist/cjs/chunk-D9InNR1-.cjs.js.map +1 -0
  81. package/dist/cjs/{chunk-BETPWBif.cjs.js → chunk-DGPpvE8O.cjs.js} +82 -83
  82. package/dist/cjs/chunk-DGPpvE8O.cjs.js.map +1 -0
  83. package/dist/cjs/index.cjs.js +10 -10
  84. package/dist/cjs/utils.cjs.js +3 -3
  85. package/dist/cjs/v2/Attachments.cjs.js +3 -4
  86. package/dist/cjs/v2/Attachments.cjs.js.map +1 -1
  87. package/dist/cjs/v2/Editor.cjs.js +152 -136
  88. package/dist/cjs/v2/Editor.cjs.js.map +1 -1
  89. package/dist/cjs/v2/EditorContent.cjs.js +3 -3
  90. package/dist/cjs/v2/FormikEditor.cjs.js +7 -7
  91. package/dist/cjs/v2/FormikEditor.cjs.js.map +1 -1
  92. package/dist/cjs/v2/Menu.cjs.js +3 -4
  93. package/dist/cjs/v2/Menu.cjs.js.map +1 -1
  94. package/dist/cjs/v2/index.cjs.js +9 -9
  95. package/dist/cjs/v2/utils.cjs.js +3 -3
  96. package/dist/editor-content.min.css +1 -1
  97. package/dist/editor-output-pdf-email.css +1 -1
  98. package/dist/editor-output.js +1 -1
  99. package/dist/editor-stats.html +1 -1
  100. package/dist/index.js +10 -10
  101. package/dist/utils.js +3 -3
  102. package/dist/v2/Attachments.js +3 -4
  103. package/dist/v2/Attachments.js.map +1 -1
  104. package/dist/v2/Editor.js +119 -102
  105. package/dist/v2/Editor.js.map +1 -1
  106. package/dist/v2/EditorContent.js +3 -3
  107. package/dist/v2/FormikEditor.js +7 -7
  108. package/dist/v2/FormikEditor.js.map +1 -1
  109. package/dist/v2/Menu.js +3 -4
  110. package/dist/v2/Menu.js.map +1 -1
  111. package/dist/v2/editor-content-styles.js +1 -1
  112. package/dist/v2/editor-content.min.css +1 -1
  113. package/dist/v2/index.js +9 -9
  114. package/dist/v2/styles.css +1 -1
  115. package/dist/v2/styles.js +1 -1
  116. package/dist/v2/utils.js +3 -3
  117. package/package.json +103 -102
  118. package/dist/chunk-2yDx3K8L.js.map +0 -1
  119. package/dist/chunk-C4efob7L.js.map +0 -1
  120. package/dist/chunk-C6Wn4nia.js.map +0 -1
  121. package/dist/chunk-C893rdfW.js.map +0 -1
  122. package/dist/chunk-CA9DTddx.js.map +0 -1
  123. package/dist/chunk-Cnk9-9SJ.js.map +0 -1
  124. package/dist/chunk-Dm4Qt79M.js.map +0 -1
  125. package/dist/cjs/chunk-B1X-JIj8.cjs.js.map +0 -1
  126. package/dist/cjs/chunk-BETPWBif.cjs.js.map +0 -1
  127. package/dist/cjs/chunk-Bm1Dzh4r.cjs.js.map +0 -1
  128. package/dist/cjs/chunk-CNhef3wf.cjs.js.map +0 -1
  129. package/dist/cjs/chunk-DRTgn9TG.cjs.js.map +0 -1
  130. package/dist/cjs/chunk-TCCIxl2A.cjs.js.map +0 -1
  131. package/dist/cjs/chunk-WeNbd2ic.cjs.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunk-CA9DTddx.js","sources":["../app/javascript/src/v2/components/Attachments/constants.js","../app/javascript/src/v2/components/Editor/MediaUploader/constants.js","../app/javascript/src/v2/components/Editor/MediaUploader/utils.js","../app/javascript/src/v2/hooks/utils/fileUploader.js","../app/javascript/src/v2/hooks/useFileUploader.js","../app/javascript/src/v2/components/Common/constants.js","../app/javascript/src/v2/components/Common/FileIcon.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\n\nimport { DIRECT_UPLOAD_ENDPOINT } from \"src/common/constants\";\n\nexport const DEFAULT_FILE_UPLOAD_CONFIG = {\n directUploadEndpoint: DIRECT_UPLOAD_ENDPOINT,\n restrictions: {\n maxFileSize: globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024,\n },\n};\n\nexport const ATTACHMENT_OPTIONS = {\n OPEN_IN_NEW_TAB: t(\"neetoEditor.common.openInNewTab\"),\n DOWNLOAD: t(\"neetoEditor.common.download\"),\n RENAME: t(\"neetoEditor.attachments.rename\"),\n DELETE: t(\"neetoEditor.menu.delete\"),\n};\n\nexport const ATTACHMENTS_PREVIEW_DATA_CY = \"ne-attachments-preview-content\";\n","import { t } from \"i18next\";\nimport { globalProps } from \"neetocommons/v2/initializers\";\nimport * as yup from \"yup\";\n\nimport { DIRECT_UPLOAD_ENDPOINT, URL_REGEXP } from \"src/common/constants\";\n\nconst MAX_VIDEO_SIZE_IN_MB = 100;\n\nconst maxVideoSizeInMb = globalProps.directUploadsMaxFileSizeInMb\n ? Math.min(MAX_VIDEO_SIZE_IN_MB, globalProps.directUploadsMaxFileSizeInMb)\n : MAX_VIDEO_SIZE_IN_MB;\n\nexport const FILE_SIZE_UNITS = [\"B\", \"KB\", \"MB\", \"GB\"];\n\nexport const ALLOWED_IMAGE_TYPES = [\".jpg\", \".jpeg\", \".png\", \".gif\"];\nexport const ALLOWED_VIDEO_TYPES = [\".mp4\", \".mov\", \".avi\", \".mkv\"];\n\nexport const DEFAULT_IMAGE_UPLOAD_CONFIG = {\n directUploadEndpoint: DIRECT_UPLOAD_ENDPOINT,\n restrictions: {\n maxNumberOfFiles: 5,\n maxFileSize: globalProps.endUserUploadedFileSizeLimitInMb * 1024 * 1024,\n allowedFileTypes: ALLOWED_IMAGE_TYPES,\n },\n};\n\nexport const DEFAULT_VIDEO_UPLOAD_CONFIG = {\n directUploadEndpoint: DIRECT_UPLOAD_ENDPOINT,\n restrictions: {\n maxNumberOfFiles: 5,\n maxFileSize: maxVideoSizeInMb * 1024 * 1024,\n allowedFileTypes: ALLOWED_VIDEO_TYPES,\n },\n};\n\nexport const VIDEO_EMBED_FORM_VALIDATION_SCHEMA = yup.object().shape({\n url: yup\n .string()\n .required(t(\"neetoEditor.error.fieldRequired\"))\n .matches(URL_REGEXP, t(\"neetoEditor.error.invalidUrl\")),\n});\n\nexport const DEFAULT_ASPECT_RATIO = \"16/9\";\n","import { t } from \"i18next\";\nimport {\n LeftAlign,\n CenterAlign,\n RightAlign,\n Delete,\n CustomSize,\n BorderDisable,\n BorderEnable,\n AspectRatio11,\n AspectRatio169,\n AspectRatio916,\n AspectRatio43,\n AspectRatio32,\n} from \"neetoicons\";\n\nimport { FILE_SIZE_UNITS } from \"./constants\";\n\nexport const convertToFileSize = (size = 10 * 1024 * 1024) => {\n let fileSize = size;\n let i = 0;\n while (fileSize >= 1024 && i < FILE_SIZE_UNITS.length) {\n fileSize /= 1024;\n ++i;\n }\n\n return `${fileSize.toFixed(1)} ${FILE_SIZE_UNITS[i]}`;\n};\n\nexport const buildImageOptions = (border = true, showAspectRatio = false) => {\n const options = [\n {\n Icon: LeftAlign,\n type: \"button\",\n alignPos: \"left\",\n optionName: t(\"neetoEditor.menu.alignLeft\"),\n },\n {\n Icon: CenterAlign,\n type: \"button\",\n alignPos: \"center\",\n optionName: t(\"neetoEditor.menu.alignCenter\"),\n },\n {\n Icon: RightAlign,\n type: \"button\",\n alignPos: \"right\",\n optionName: t(\"neetoEditor.menu.alignRight\"),\n },\n ];\n\n if (showAspectRatio) {\n options.push({\n Icon: CustomSize,\n type: \"dropdown\",\n alignPos: \"center\",\n optionName: t(\"neetoEditor.menu.aspectRatio\"),\n items: [\n { ratio: \"16/9\", tooltipLabel: \"16/9\", icon: AspectRatio169 },\n { ratio: \"9/16\", tooltipLabel: \"9/16\", icon: AspectRatio916 },\n { ratio: \"4/3\", tooltipLabel: \"4/3\", icon: AspectRatio43 },\n { ratio: \"3/2\", tooltipLabel: \"3/2\", icon: AspectRatio32 },\n { ratio: \"1/1\", tooltipLabel: \"1/1\", icon: AspectRatio11 },\n ],\n });\n }\n\n options.push(\n {\n Icon: border ? BorderDisable : BorderEnable,\n type: \"button\",\n alignPos: \"center\",\n borderToggle: true,\n optionName: border\n ? t(\"neetoEditor.menu.removeBorder\")\n : t(\"neetoEditor.menu.addBorder\"),\n },\n {\n Icon: Delete,\n type: \"button\",\n optionName: t(\"neetoEditor.menu.delete\"),\n }\n );\n\n return options;\n};\n\nexport const getTabs = mediaUploader => {\n if (mediaUploader.video) {\n return [\n { title: \"Upload\", key: \"local\" },\n { title: \"Embed\", key: \"embed\" },\n ];\n }\n\n return [];\n};\n","import { Toastr } from \"@bigbinary/neeto-atoms\";\nimport { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\nimport { mergeRight } from \"ramda\";\n\nimport { DEFAULT_FILE_UPLOAD_CONFIG } from \"src/v2/components/Attachments/constants\";\nimport { convertToFileSize } from \"src/v2/components/Editor/MediaUploader/utils\";\n\nconst getFileExtension = filename => {\n if (!filename) return \"\";\n const parts = filename.split(\".\");\n\n return parts.length > 1 ? `.${parts.pop()}` : \"\";\n};\n\nconst showWarningToastr = ({\n selectedFiles,\n initialFiles,\n config,\n largeFilesCount,\n unSupportedFilesCount,\n}) => {\n const { maxNumberOfFiles, maxFileSize } = config.restrictions;\n\n if (unSupportedFilesCount > 0 || largeFilesCount > 0) {\n if (unSupportedFilesCount > 0) {\n Toastr.error(t(\"neetoEditor.error.fileNotAllowed\"));\n }\n\n if (largeFilesCount > 0) {\n Toastr.error(\n t(\"neetoEditor.error.fileIsTooLarge\", {\n maxFileSize: convertToFileSize(maxFileSize),\n })\n );\n }\n } else if (selectedFiles.length < initialFiles.length) {\n Toastr.warning(\n t(\"neetoEditor.attachments.maxNumberOfFiles\", {\n entity: maxNumberOfFiles,\n })\n );\n }\n};\n\nexport const buildFileUploadConfig = config =>\n mergeRight(DEFAULT_FILE_UPLOAD_CONFIG, config);\n\nexport const shouldAddFile = config => file => {\n const { maxFileSize, allowedFileTypes } = config.restrictions;\n\n if (isPresent(maxFileSize) && file.size > maxFileSize) {\n return { canAdd: false };\n }\n\n if (isPresent(allowedFileTypes)) {\n const fileExtension = getFileExtension(file.name);\n const mimeType = file.type;\n\n const extensionAllowed = allowedFileTypes.includes(fileExtension);\n const mimeAllowed = allowedFileTypes.includes(mimeType);\n\n const canAdd = extensionAllowed || mimeAllowed;\n\n return { canAdd, isUnsupportedFile: !canAdd };\n }\n\n return { canAdd: true };\n};\n\nexport const selectFiles = ({ previousAttachmentsCount, config, files }) => {\n let addedFilesCount = 0,\n largeFilesCount = 0,\n unSupportedFilesCount = 0;\n const fallbackMaxNumberOfFiles = previousAttachmentsCount + files.length;\n const { maxNumberOfFiles = fallbackMaxNumberOfFiles } = config.restrictions;\n const canAddFile = shouldAddFile(config);\n\n const remainingAttachments = maxNumberOfFiles - previousAttachmentsCount;\n\n if (remainingAttachments <= 0) {\n Toastr.warning(\n t(\"neetoEditor.attachments.maxNumberOfFiles\", {\n entity: maxNumberOfFiles,\n })\n );\n\n return [];\n }\n\n const selectedFiles = files.filter(file => {\n const { canAdd, isUnsupportedFile } = canAddFile(file);\n\n if (canAdd && addedFilesCount + 1 <= remainingAttachments) {\n addedFilesCount += 1;\n\n return true;\n }\n\n if (isUnsupportedFile) unSupportedFilesCount += 1;\n else if (!canAdd) largeFilesCount += 1;\n\n return false;\n });\n\n showWarningToastr({\n selectedFiles,\n initialFiles: files,\n config,\n unSupportedFilesCount,\n largeFilesCount,\n });\n\n return selectedFiles;\n};\n","// eslint-disable-next-line @bigbinary/neeto/use-snake-case-for-api-connector-filename\nimport { useRef } from \"react\";\n\nimport { Toastr } from \"@bigbinary/neeto-atoms\";\n// eslint-disable-next-line @bigbinary/neeto/no-axios-import-outside-apis,\nimport axios from \"axios\";\nimport { noop, hyphenate, isNot, isNotPresent } from \"neetocist\";\nimport { omit, pluck } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { FILE_UPLOAD_STATUS } from \"hooks/constants/fileUploader\";\nimport { getRandomString } from \"hooks/utils\";\nimport useFileUploadStore from \"src/stores/useFileUploadStore\";\nimport DirectUpload from \"utils/DirectUpload\";\n\nimport { selectFiles } from \"./utils/fileUploader\";\n\nlet uploadControllers = {};\n\nconst useFileUploader = ({\n config,\n attachments: previousAttachments = [],\n setIsUploadingOnHost = noop,\n}) => {\n const contextIdRef = useRef(getRandomString());\n const { t } = useTranslation();\n\n const { current: contextId } = contextIdRef;\n const {\n addFiles: addFilesToStore,\n getNextQueuedFile,\n updateFileStatus,\n removeFilesFromQueue,\n setIsUploading,\n updateFileUploadProgress,\n removeFile,\n } = useFileUploadStore.pick();\n const { files = [], isUploading } = useFileUploadStore.pick([contextId]);\n\n const handleUploadProgress = (xhr, file) => {\n if (!xhr.event.lengthComputable) return;\n const bytesUploaded = xhr.loaded;\n const bytesTotal = xhr.total;\n const progress = Math.round((bytesUploaded / bytesTotal) * 100);\n updateFileUploadProgress(contextId, file.id, progress);\n };\n\n const uploadFile = async file => {\n const upload = new DirectUpload({\n file: file.data,\n url: config.directUploadEndpoint,\n progress: xhr => handleUploadProgress(xhr, file),\n });\n\n uploadControllers[file.id] = upload;\n\n try {\n const { data = {}, ...response } = await upload.create();\n updateFileStatus(contextId, file.id, FILE_UPLOAD_STATUS.UPLOADED);\n\n return {\n id: file.id,\n filename: file.filename,\n signedId: data.signed_id ?? response.signed_id,\n url: data.blob_url ?? response.blob_url,\n contentType: data.content_type ?? response.content_type,\n };\n } catch (error) {\n if (!axios.isCancel(error)) {\n Toastr.error(t(\"neetoEditor.error.uploadFileFailed\"));\n }\n // eslint-disable-next-line no-console\n console.error(\"Attachment upload failed\", error);\n removeFile(contextId, file.id);\n\n return null;\n }\n };\n\n const handleUploadFiles = async () => {\n const queuedFile = getNextQueuedFile(contextId);\n\n if (isNotPresent(queuedFile)) {\n setIsUploading(contextId, false);\n setIsUploadingOnHost(false);\n\n return [];\n }\n\n updateFileStatus(contextId, queuedFile.id, FILE_UPLOAD_STATUS.UPLOADING);\n\n const [uploadedFile, remainingUploadedFiles] = await Promise.all([\n uploadFile(queuedFile),\n handleUploadFiles(),\n ]);\n\n const uploadedFiles = [uploadedFile, ...remainingUploadedFiles];\n const uploadedFileIds = pluck(\"id\", uploadedFiles);\n removeFilesFromQueue(contextId, uploadedFileIds);\n uploadControllers = omit(uploadedFileIds, uploadControllers);\n\n return uploadedFiles.filter(isNot(null));\n };\n\n const uploadFiles = () => {\n setIsUploading(contextId, true);\n setIsUploadingOnHost(true);\n\n return handleUploadFiles();\n };\n\n const addFiles = addedFiles => {\n const selectedFiles = selectFiles({\n previousAttachmentsCount: previousAttachments.length,\n config,\n files: Array.from(addedFiles),\n }).map(file => ({\n id: hyphenate(`${file.name.toLowerCase()}-${Date.now()}`),\n data: file,\n filename: file.name,\n signedId: \"awaiting\",\n url: \"\",\n type: file.type,\n status: FILE_UPLOAD_STATUS.QUEUED,\n }));\n\n addFilesToStore(contextId, selectedFiles);\n };\n\n const cancelUpload = fileId => {\n uploadControllers[fileId]?.abort?.();\n removeFile(contextId, fileId);\n };\n\n return {\n addFiles,\n uploadFiles,\n queuedFiles: files,\n cancelUpload,\n isUploading,\n };\n};\n\nexport default useFileUploader;\n","import { Globe, Grid3x3, Layers } from \"lucide-react\";\n\n// react-file-icon has no styles for these image formats, and gives xml the\n// same {} glyph as json; code2 is </>.\nexport const EXTRA_FILE_ICON_STYLES = {\n avif: { type: \"image\" },\n heic: { type: \"image\" },\n heif: { type: \"image\" },\n webp: { type: \"image\" },\n xml: { type: \"code2\" },\n};\n\n// Lucide glyphs for image formats that get their own icon. Other images use\n// lucide's Image.\nexport const FILE_ICON_GLYPH_BY_EXTENSION = {\n bmp: Grid3x3,\n tif: Layers,\n tiff: Layers,\n webp: Globe,\n};\n\nexport const FILE_ICON_CATEGORY_BY_EXTENSION = {\n pdf: \"pdf\",\n key: \"pdf\",\n ppt: \"pdf\",\n pptx: \"pdf\",\n csv: \"spreadsheet\",\n numbers: \"spreadsheet\",\n xls: \"spreadsheet\",\n xlsx: \"spreadsheet\",\n doc: \"document\",\n docx: \"document\",\n md: \"document\",\n pages: \"document\",\n rtf: \"document\",\n txt: \"document\",\n};\n\n// react-file-icon glyph type -> colour category. svg (\"vector\") is grouped\n// with images.\nexport const FILE_ICON_CATEGORY_BY_TYPE = {\n audio: \"audio\",\n image: \"image\",\n vector: \"image\",\n video: \"video\",\n};\n","import classnames from \"classnames\";\nimport { Image } from \"lucide-react\";\nimport { FileIcon as ReactFileIcon, defaultStyles } from \"react-file-icon\";\n\nimport {\n EXTRA_FILE_ICON_STYLES,\n FILE_ICON_CATEGORY_BY_EXTENSION,\n FILE_ICON_CATEGORY_BY_TYPE,\n FILE_ICON_GLYPH_BY_EXTENSION,\n} from \"./constants\";\n\nconst getExtension = fileName =>\n fileName?.match(/\\.([^.]+)$/)?.[1]?.toLowerCase();\n\n// Only the glyph shape is taken from react-file-icon. Colours come from\n// neeto-atoms tokens in _attachments.scss, keyed on the category class.\nconst getCategory = (extension, type) =>\n FILE_ICON_CATEGORY_BY_EXTENSION[extension] ??\n FILE_ICON_CATEGORY_BY_TYPE[type] ??\n \"default\";\n\nconst File = ({ fileName, className }) => {\n const extension = getExtension(fileName);\n const type = (EXTRA_FILE_ICON_STYLES[extension] ?? defaultStyles[extension])\n ?.type;\n\n // The library's image glyph is a mountain; draw a lucide glyph on top of a\n // glyph-less icon instead.\n const Glyph =\n FILE_ICON_GLYPH_BY_EXTENSION[extension] ??\n (type === \"image\" ? Image : null);\n\n return (\n <div\n aria-hidden=\"true\"\n className={classnames(\n \"ne-file-icon\",\n `ne-file-icon--${getCategory(extension, type)}`,\n className\n )}\n >\n <ReactFileIcon\n {...{ extension }}\n labelUppercase\n type={Glyph ? undefined : type}\n />\n {Glyph && <Glyph className=\"ne-file-icon__glyph\" />}\n </div>\n );\n};\n\nexport default File;\n"],"names":["DEFAULT_FILE_UPLOAD_CONFIG","directUploadEndpoint","DIRECT_UPLOAD_ENDPOINT","restrictions","maxFileSize","globalProps","endUserUploadedFileSizeLimitInMb","ATTACHMENT_OPTIONS","OPEN_IN_NEW_TAB","t","DOWNLOAD","RENAME","DELETE","ATTACHMENTS_PREVIEW_DATA_CY","MAX_VIDEO_SIZE_IN_MB","maxVideoSizeInMb","directUploadsMaxFileSizeInMb","Math","min","FILE_SIZE_UNITS","ALLOWED_IMAGE_TYPES","ALLOWED_VIDEO_TYPES","DEFAULT_IMAGE_UPLOAD_CONFIG","maxNumberOfFiles","allowedFileTypes","DEFAULT_VIDEO_UPLOAD_CONFIG","VIDEO_EMBED_FORM_VALIDATION_SCHEMA","yup","object","shape","url","string","required","matches","URL_REGEXP","DEFAULT_ASPECT_RATIO","convertToFileSize","size","arguments","length","undefined","fileSize","i","concat","toFixed","getTabs","mediaUploader","video","title","key","getFileExtension","filename","parts","split","pop","showWarningToastr","_ref","selectedFiles","initialFiles","config","largeFilesCount","unSupportedFilesCount","_config$restrictions","Toastr","error","warning","entity","shouldAddFile","file","_config$restrictions2","isPresent","canAdd","fileExtension","name","mimeType","type","extensionAllowed","includes","mimeAllowed","isUnsupportedFile","selectFiles","_ref2","previousAttachmentsCount","files","addedFilesCount","fallbackMaxNumberOfFiles","_config$restrictions$","canAddFile","remainingAttachments","filter","_canAddFile","uploadControllers","useFileUploader","_ref$attachments","attachments","previousAttachments","_ref$setIsUploadingOn","setIsUploadingOnHost","noop","contextIdRef","useRef","getRandomString","_useTranslation","useTranslation","contextId","current","_useFileUploadStore","useFileUploadStore","store","addFiles","getNextQueuedFile","updateFileStatus","removeFilesFromQueue","setIsUploading","updateFileUploadProgress","removeFile","shallow","addFilesToStore","_useFileUploadStore2","_store$contextId","_store$contextId2","isUploading","_useFileUploadStore2$","handleUploadProgress","xhr","event","lengthComputable","bytesUploaded","loaded","bytesTotal","total","progress","round","id","uploadFile","_asyncToGenerator","_regeneratorRuntime","mark","_callee","upload","_data$signed_id","_data$blob_url","_data$content_type","_yield$upload$create","_yield$upload$create$","data","response","wrap","_callee$","_context","prev","next","DirectUpload","create","sent","_objectWithoutProperties","_excluded","FILE_UPLOAD_STATUS","UPLOADED","abrupt","signedId","signed_id","blob_url","contentType","content_type","t0","axios","isCancel","console","stop","_x","apply","handleUploadFiles","_ref3","_callee2","queuedFile","_yield$Promise$all","_yield$Promise$all2","uploadedFile","remainingUploadedFiles","uploadedFiles","uploadedFileIds","_callee2$","_context2","isNotPresent","UPLOADING","Promise","all","_slicedToArray","_toConsumableArray","pluck","omit","isNot","uploadFiles","addedFiles","Array","from","map","hyphenate","toLowerCase","Date","now","status","QUEUED","cancelUpload","fileId","_uploadControllers$fi","_uploadControllers$fi2","abort","call","queuedFiles","EXTRA_FILE_ICON_STYLES","avif","heic","heif","webp","xml","FILE_ICON_GLYPH_BY_EXTENSION","bmp","Grid3x3","tif","Layers","tiff","Globe","FILE_ICON_CATEGORY_BY_EXTENSION","pdf","ppt","pptx","csv","numbers","xls","xlsx","doc","docx","md","pages","rtf","txt","FILE_ICON_CATEGORY_BY_TYPE","audio","image","vector","getExtension","fileName","_fileName$match","match","getCategory","extension","_FILE_ICON_CATEGORY_B","File","_EXTRA_FILE_ICON_STYL","_FILE_ICON_GLYPH_BY_E","className","defaultStyles","Glyph","Image","_jsxs","classnames","children","_jsx","ReactFileIcon","labelUppercase"],"mappings":"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"}