@azure/communication-react 1.18.0-alpha-202407110015 → 1.18.0-alpha-202407130015
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/dist/communication-react.d.ts +91 -14
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-BHcuHeib.js → ChatMessageComponentAsRichTextEditBox-p1814UvI.js} +10 -9
 - package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-BHcuHeib.js.map → ChatMessageComponentAsRichTextEditBox-p1814UvI.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-7S-tHnhY.js → RichTextSendBoxWrapper-C2KzFhtR.js} +9 -8
 - package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-7S-tHnhY.js.map → RichTextSendBoxWrapper-C2KzFhtR.js.map} +1 -1
 - package/dist/dist-cjs/communication-react/{index-B2uDEMiK.js → index-DwCOuhpb.js} +25801 -25660
 - package/dist/dist-cjs/communication-react/index-DwCOuhpb.js.map +1 -0
 - package/dist/dist-cjs/communication-react/index.js +10 -7
 - package/dist/dist-cjs/communication-react/index.js.map +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
 - package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/callCompositeLoader.d.ts +19 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/callCompositeLoader.js +51 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/callCompositeLoader.js.map +1 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/index.d.ts +5 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/index.js +5 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/index.js.map +1 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/outboundCallCompositeLoader.d.ts +19 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/outboundCallCompositeLoader.js +57 -0
 - package/dist/dist-esm/acs-ui-javascript-loaders/src/outboundCallCompositeLoader.js.map +1 -0
 - package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
 - package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.d.ts +2 -2
 - package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js +2 -4
 - package/dist/dist-esm/calling-component-bindings/src/notificationStackSelector.js.map +1 -1
 - package/dist/dist-esm/communication-react/src/index.d.ts +3 -1
 - package/dist/dist-esm/communication-react/src/index.js +2 -0
 - package/dist/dist-esm/communication-react/src/index.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js +6 -2
 - package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/IncomingCallNotification.d.ts +43 -5
 - package/dist/dist-esm/react-components/src/components/IncomingCallNotification.js +9 -7
 - package/dist/dist-esm/react-components/src/components/IncomingCallNotification.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/Notification.d.ts +3 -3
 - package/dist/dist-esm/react-components/src/components/Notification.js +1 -1
 - package/dist/dist-esm/react-components/src/components/Notification.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/NotificationStack.d.ts +5 -5
 - package/dist/dist-esm/react-components/src/components/NotificationStack.js +1 -1
 - package/dist/dist-esm/react-components/src/components/NotificationStack.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +1 -6
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +0 -21
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js +3 -0
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/PlaceholderPlugin.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js +1 -6
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +2 -8
 - package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/AttachmentCard.styles.d.ts +1 -1
 - package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +3 -3
 - package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +42 -36
 - package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +1 -1
 - package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +29 -17
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +1 -1
 - package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +19 -28
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.d.ts +12 -0
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js +53 -0
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js.map +1 -0
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/{image-upload → ImageUpload}/useImageUpload.js +7 -21
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/useImageUpload.js.map +1 -0
 - package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js +9 -5
 - package/dist/dist-esm/react-composites/src/composites/common/ParticipantContainer.js.map +1 -1
 - package/package.json +1 -1
 - package/dist/dist-cjs/communication-react/index-B2uDEMiK.js.map +0 -1
 - package/dist/dist-esm/react-composites/src/composites/ChatComposite/image-upload/useImageUpload.js.map +0 -1
 - /package/dist/dist-esm/react-composites/src/composites/ChatComposite/{image-upload → ImageUpload}/useImageUpload.d.ts +0 -0
 
| 
         @@ -1 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"useImageUpload.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/ChatComposite/image-upload/useImageUpload.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;AAElC,gEAAgE;AAChE,OAAO,EAAY,WAAW,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1D,gEAAgE;AAChE,OAAO,EAEL,0BAA0B,EAC1B,uBAAuB,EAGxB,MAAM,kCAAkC,CAAC;AAC1C,gEAAgE;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,gEAAgE;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,gEAAgE;AAChE,MAAM,aAAa,GAAG,CACpB,QAAgC,EAChC,OAAkF,EAC/D,EAAE;IACrB,gCAAgC;IAChC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;IAErD,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE;QACzB,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,EAAE,OAAO,CAAC,CAAC;IAEZ,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,kCAChC,OAAO,KACV,MAAM,EAAE,eAAe,CAAC,MAAM,IAC9B,CAAC;IACH,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAA,CAAC;AAEF,gEAAgE;AAChE,MAAM,kBAAkB,GAAG,CAAO,KAAa,EAA6B,EAAE;IAC5E,MAAM,SAAS,GAAqB,SAAS,CAAC;IAC9C,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,EAAE,eAAe,EAAE,IAAI,eAAe,EAAE,EAAE,CAAC,CAAC;QACnF,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAA,CAAC;AAEF,gEAAgE;AAChE;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAK5B,EAAE;IACF,MAAM,+BAA+B,GAAG,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;IAC7B,MAAM,CAAC,kBAAkB,EAAE,6BAA6B,CAAC,GAAG,UAAU,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC;IAEpG,MAAM,wBAAwB,GAAG,WAAW,CAC1C,CAAO,WAA+B,EAAiB,EAAE;;QACvD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,IAA4B,CAAC;YAChD,MAAM,KAAK,GAAqB,UAAU,CAAC,KAAK,CAAC;YACjD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,UAAU,CAAC,kBAAkB,CAAC,mBAAmB,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,oBAAoB,CAAC,CAAC;gBAC1F,SAAS;YACX,CAAC;YACD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,GAAG,+BAA+B,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBACxE,UAAU,CAAC,kBAAkB,CAC3B,IAAI,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,qCAAqC,+BAA+B,KAAK,CACjG,CAAC;gBACF,SAAS;YACX,CAAC;YAED,MAAM,eAAe,GAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YACrF,MAAM,cAAc,GAAG,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,mCAAI,EAAE,CAAC;YAClE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC9C,UAAU,CAAC,kBAAkB,CAAC,eAAe,cAAc,yBAAyB,CAAC,CAAC;gBACtF,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAA,IAAI,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;gBACvE,UAAU,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,UAAU,CAAC,kBAAkB,CAAC,wDAAwD,CAAC,CAAC;YAC1F,CAAC;QACH,CAAC;IACH,CAAC,CAAA,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAEF,MAAM,mBAAmB,GAAG,WAAW,CACrC,CAAO,KAAa,EAAE,QAAgB,EAAiB,EAAE;QACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAClD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;QACxB,MAAM,UAAU,GAAqB;YACnC,KAAK,EAAE,SAAS;YAChB,MAAM;YACN,QAAQ,EAAE;gBACR,EAAE,EAAE,MAAM;gBACV,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,KAAK;gBACV,QAAQ,EAAE,CAAC;aACZ;YACD,2BAA2B,EAAE,CAAC,KAAa,EAAE,EAAE;gBAC7C,6BAA6B,CAAC,EAAE,IAAI,EAAE,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACxG,CAAC;YACD,qBAAqB,EAAE,CAAC,EAAU,EAAE,GAAW,EAAE,EAAE;gBACjD,6BAA6B,CAAC,EAAE,IAAI,EAAE,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;YACjG,CAAC;YACD,kBAAkB,EAAE,CAAC,OAAe,EAAE,EAAE;gBACtC,6BAA6B,CAAC,EAAE,IAAI,EAAE,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC5F,qFAAqF;gBACrF,yDAAyD;gBACzD,UAAU,CAAC,GAAG,EAAE;oBACd,6BAA6B,CAAC,EAAE,IAAI,EAAE,0BAA0B,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;gBACzF,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;YAChB,CAAC;SACF,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC;QAChC,6BAA6B,CAAC,EAAE,IAAI,EAAE,0BAA0B,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;QACpF,wBAAwB,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC,CAAA,EACD,CAAC,wBAAwB,CAAC,CAC3B,CAAC;IAEF,MAAM,gCAAgC,GAAG,WAAW,CAClD,CAAC,OAAe,EAAE,EAAE;QAClB,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;QACxF,MAAM,QAAQ,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO;QACT,CAAC;QACD,6BAA6B,CAAC,EAAE,IAAI,EAAE,0BAA0B,CAAC,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACzF,0BAA0B;QAC1B,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,QAAQ,CAAC,QAAQ,MAAK,CAAC,EAAE,CAAC;YACzC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,EACD,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAC9B,CAAC;IACF,OAAO,CAAC,kBAAkB,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,gCAAgC,CAAC,CAAC;AACpH,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { Dispatch, useCallback, useReducer } from 'react';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport {\n  AttachmentUpload,\n  AttachmentUploadActionType,\n  AttachmentUploadReducer,\n  AttachmentUploadTask,\n  Actions\n} from '../file-sharing/AttachmentUpload';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { useAdapter } from '../adapter/ChatAdapterProvider';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { nanoid } from 'nanoid';\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nconst fetchBlobData = async (\n  resource: string | URL | Request,\n  options: { timeout?: number; headers?: Headers; abortController: AbortController }\n): Promise<Response> => {\n  // default timeout is 30 seconds\n  const { timeout = 30000, abortController } = options;\n\n  const id = setTimeout(() => {\n    abortController.abort();\n  }, timeout);\n\n  const response = await fetch(resource, {\n    ...options,\n    signal: abortController.signal\n  });\n  clearTimeout(id);\n  return response;\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nconst getInlineImageData = async (image: string): Promise<Blob | undefined> => {\n  const blobImage: Blob | undefined = undefined;\n  if (image.startsWith('blob') || image.startsWith('http')) {\n    const res = await fetchBlobData(image, { abortController: new AbortController() });\n    const blobImage = await res.blob();\n    return blobImage;\n  }\n  return blobImage;\n};\n\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\n/**\n * @private\n */\nexport const useImageUpload = (): [\n  AttachmentUpload[],\n  Dispatch<Actions>,\n  onUploadInlineImage: (image: string, fileName: string) => Promise<void>,\n  onCancelInlineImageUploadHandler: (imageId: string) => void\n] => {\n  const MAX_INLINE_IMAGE_UPLOAD_SIZE_MB = 20;\n  const adapter = useAdapter();\n  const [inlineImageUploads, handleInlineImageUploadAction] = useReducer(AttachmentUploadReducer, []);\n\n  const inlineImageUploadHandler = useCallback(\n    async (uploadTasks: AttachmentUpload[]): Promise<void> => {\n      for (const task of uploadTasks) {\n        const uploadTask = task as AttachmentUploadTask;\n        const image: Blob | undefined = uploadTask.image;\n        if (!image) {\n          uploadTask.notifyUploadFailed(`Image data for \"${task.metadata?.name}\" is not provided.`);\n          continue;\n        }\n        if (image && image.size > MAX_INLINE_IMAGE_UPLOAD_SIZE_MB * 1024 * 1024) {\n          uploadTask.notifyUploadFailed(\n            `\"${task.metadata?.name}\" is too big. Select a file under ${MAX_INLINE_IMAGE_UPLOAD_SIZE_MB}MB.`\n          );\n          continue;\n        }\n\n        const SUPPORTED_FILES: Array<string> = ['jpg', 'jpeg', 'png', 'gif', 'heic', 'webp'];\n        const imageExtension = task.metadata?.name.split('.').pop() ?? '';\n        if (!SUPPORTED_FILES.includes(imageExtension)) {\n          uploadTask.notifyUploadFailed(`Uploading \".${imageExtension}\" image is not allowed.`);\n          continue;\n        }\n\n        try {\n          const response = await adapter.uploadImage(image, task.metadata?.name);\n          uploadTask.notifyUploadCompleted(response.id, task.metadata.url || '');\n        } catch (error) {\n          console.error(error);\n          uploadTask.notifyUploadFailed('Unable to upload inline image. Please try again later.');\n        }\n      }\n    },\n    [adapter]\n  );\n\n  const onUploadInlineImage = useCallback(\n    async (image: string, fileName: string): Promise<void> => {\n      if (!image) {\n        return;\n      }\n      const imageData = await getInlineImageData(image);\n      if (!imageData) {\n        return;\n      }\n      const taskId = nanoid();\n      const uploadTask: AttachmentUpload = {\n        image: imageData,\n        taskId,\n        metadata: {\n          id: taskId,\n          name: fileName,\n          url: image,\n          progress: 0\n        },\n        notifyUploadProgressChanged: (value: number) => {\n          handleInlineImageUploadAction({ type: AttachmentUploadActionType.Progress, taskId, progress: value });\n        },\n        notifyUploadCompleted: (id: string, url: string) => {\n          handleInlineImageUploadAction({ type: AttachmentUploadActionType.Completed, taskId, id, url });\n        },\n        notifyUploadFailed: (message: string) => {\n          handleInlineImageUploadAction({ type: AttachmentUploadActionType.Failed, taskId, message });\n          // remove the failed upload task when error banner is auto dismissed after 10 seconds\n          // so the banner won't be shown again on UI re-rendering.\n          setTimeout(() => {\n            handleInlineImageUploadAction({ type: AttachmentUploadActionType.Remove, id: taskId });\n          }, 10 * 1000);\n        }\n      };\n\n      const newUploads = [uploadTask];\n      handleInlineImageUploadAction({ type: AttachmentUploadActionType.Set, newUploads });\n      inlineImageUploadHandler(newUploads);\n    },\n    [inlineImageUploadHandler]\n  );\n\n  const onCancelInlineImageUploadHandler = useCallback(\n    (imageId: string) => {\n      const imageUpload = inlineImageUploads.find((upload) => upload.metadata.id === imageId);\n      const uploadId = imageUpload?.metadata.id;\n      if (!uploadId) {\n        return;\n      }\n      handleInlineImageUploadAction({ type: AttachmentUploadActionType.Remove, id: uploadId });\n      // TODO: remove local blob\n      if (imageUpload?.metadata.progress === 1) {\n        adapter.deleteImage(imageId);\n      }\n    },\n    [adapter, inlineImageUploads]\n  );\n  return [inlineImageUploads, handleInlineImageUploadAction, onUploadInlineImage, onCancelInlineImageUploadHandler];\n};\n"]}
         
     |