@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
 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"ImageUploadUtils.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;;;;;;;;;;AAElC,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;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAO,KAAa,EAA6B,EAAE;IACnF,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;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAoC,EAAQ,EAAE;IAC5E,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACtD,4FAA4F;QAC5F,IAAI,UAAU,GAAuB,KAAK,CAAC,aAAa,CAAC;QACzD,IAAI,WAAW,GAAgB,KAAK,CAAC;QACrC,OAAO,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,UAAU,CAAC,MAAM,MAAK,CAAC,EAAE,CAAC;YAC3C,WAAW,GAAG,UAAU,CAAC;YACzB,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;QACxC,CAAC;QACD,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,MAAM,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\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) */\n/**\n * @private\n */\nexport const 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 * @internal\n * Exported only for unit testing\n */\nexport const removeImageTags = (event: { content: DocumentFragment }): void => {\n  event.content.querySelectorAll('img').forEach((image) => {\n    // If the image is the only child of its parent, remove all the parents of this img element.\n    let parentNode: HTMLElement | null = image.parentElement;\n    let currentNode: HTMLElement = image;\n    while (parentNode?.childNodes.length === 1) {\n      currentNode = parentNode;\n      parentNode = parentNode.parentElement;\n    }\n    currentNode?.remove();\n  });\n};\n"]}
         
     | 
| 
         @@ -18,26 +18,7 @@ import { useAdapter } from '../adapter/ChatAdapterProvider'; 
     | 
|
| 
       18 
18 
     | 
    
         
             
            /* @conditional-compile-remove(rich-text-editor-image-upload) */
         
     | 
| 
       19 
19 
     | 
    
         
             
            import { nanoid } from 'nanoid';
         
     | 
| 
       20 
20 
     | 
    
         
             
            /* @conditional-compile-remove(rich-text-editor-image-upload) */
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
     | 
    
         
            -
                // default timeout is 30 seconds
         
     | 
| 
       23 
     | 
    
         
            -
                const { timeout = 30000, abortController } = options;
         
     | 
| 
       24 
     | 
    
         
            -
                const id = setTimeout(() => {
         
     | 
| 
       25 
     | 
    
         
            -
                    abortController.abort();
         
     | 
| 
       26 
     | 
    
         
            -
                }, timeout);
         
     | 
| 
       27 
     | 
    
         
            -
                const response = yield fetch(resource, Object.assign(Object.assign({}, options), { signal: abortController.signal }));
         
     | 
| 
       28 
     | 
    
         
            -
                clearTimeout(id);
         
     | 
| 
       29 
     | 
    
         
            -
                return response;
         
     | 
| 
       30 
     | 
    
         
            -
            });
         
     | 
| 
       31 
     | 
    
         
            -
            /* @conditional-compile-remove(rich-text-editor-image-upload) */
         
     | 
| 
       32 
     | 
    
         
            -
            const getInlineImageData = (image) => __awaiter(void 0, void 0, void 0, function* () {
         
     | 
| 
       33 
     | 
    
         
            -
                const blobImage = undefined;
         
     | 
| 
       34 
     | 
    
         
            -
                if (image.startsWith('blob') || image.startsWith('http')) {
         
     | 
| 
       35 
     | 
    
         
            -
                    const res = yield fetchBlobData(image, { abortController: new AbortController() });
         
     | 
| 
       36 
     | 
    
         
            -
                    const blobImage = yield res.blob();
         
     | 
| 
       37 
     | 
    
         
            -
                    return blobImage;
         
     | 
| 
       38 
     | 
    
         
            -
                }
         
     | 
| 
       39 
     | 
    
         
            -
                return blobImage;
         
     | 
| 
       40 
     | 
    
         
            -
            });
         
     | 
| 
      
 21 
     | 
    
         
            +
            import { getInlineImageData } from './ImageUploadUtils';
         
     | 
| 
       41 
22 
     | 
    
         
             
            /* @conditional-compile-remove(rich-text-editor-image-upload) */
         
     | 
| 
       42 
23 
     | 
    
         
             
            /**
         
     | 
| 
       43 
24 
     | 
    
         
             
             * @private
         
     | 
| 
         @@ -121,7 +102,12 @@ export const useImageUpload = () => { 
     | 
|
| 
       121 
102 
     | 
    
         
             
                    handleInlineImageUploadAction({ type: AttachmentUploadActionType.Remove, id: uploadId });
         
     | 
| 
       122 
103 
     | 
    
         
             
                    // TODO: remove local blob
         
     | 
| 
       123 
104 
     | 
    
         
             
                    if ((imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.progress) === 1) {
         
     | 
| 
       124 
     | 
    
         
            -
                         
     | 
| 
      
 105 
     | 
    
         
            +
                        try {
         
     | 
| 
      
 106 
     | 
    
         
            +
                            adapter.deleteImage(imageId);
         
     | 
| 
      
 107 
     | 
    
         
            +
                        }
         
     | 
| 
      
 108 
     | 
    
         
            +
                        catch (error) {
         
     | 
| 
      
 109 
     | 
    
         
            +
                            console.error(error);
         
     | 
| 
      
 110 
     | 
    
         
            +
                        }
         
     | 
| 
       125 
111 
     | 
    
         
             
                    }
         
     | 
| 
       126 
112 
     | 
    
         
             
                }, [adapter, inlineImageUploads]);
         
     | 
| 
       127 
113 
     | 
    
         
             
                return [inlineImageUploads, handleInlineImageUploadAction, onUploadInlineImage, onCancelInlineImageUploadHandler];
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"useImageUpload.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/ChatComposite/ImageUpload/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;AAChC,gEAAgE;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,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,IAAI,CAAC;gBACH,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC/B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,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/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { getInlineImageData } from './ImageUploadUtils';\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        try {\n          adapter.deleteImage(imageId);\n        } catch (error) {\n          console.error(error);\n        }\n      }\n    },\n    [adapter, inlineImageUploads]\n  );\n  return [inlineImageUploads, handleInlineImageUploadAction, onUploadInlineImage, onCancelInlineImageUploadHandler];\n};\n"]}
         
     | 
| 
         @@ -29,15 +29,19 @@ export const ParticipantListWithHeading = (props) => { 
     | 
|
| 
       29 
29 
     | 
    
         
             
                const tooltipId = getId('text-tooltip');
         
     | 
| 
       30 
30 
     | 
    
         
             
                const subheadingStyleThemed = useMemo(() => ({
         
     | 
| 
       31 
31 
     | 
    
         
             
                    root: {
         
     | 
| 
       32 
     | 
    
         
            -
                         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
      
 32 
     | 
    
         
            +
                        h2: {
         
     | 
| 
      
 33 
     | 
    
         
            +
                            color: theme.palette.neutralSecondary,
         
     | 
| 
      
 34 
     | 
    
         
            +
                            margin: props.isMobile ? '0.5rem 1rem' : '0.5rem',
         
     | 
| 
      
 35 
     | 
    
         
            +
                            fontSize: theme.fonts.smallPlus.fontSize,
         
     | 
| 
      
 36 
     | 
    
         
            +
                            fontWeight: 'normal'
         
     | 
| 
      
 37 
     | 
    
         
            +
                        }
         
     | 
| 
       35 
38 
     | 
    
         
             
                    }
         
     | 
| 
       36 
39 
     | 
    
         
             
                }), [theme.palette.neutralSecondary, theme.fonts.smallPlus.fontSize, props.isMobile]);
         
     | 
| 
       37 
40 
     | 
    
         
             
                return (React.createElement(Stack, { className: participantListStack },
         
     | 
| 
       38 
41 
     | 
    
         
             
                    React.createElement(Stack, { horizontal: true, horizontalAlign: "space-between", verticalAlign: "center" },
         
     | 
| 
       39 
     | 
    
         
            -
                        React.createElement(Stack.Item, { grow: true, styles: subheadingStyleThemed, "aria-label": title, id: subheadingUniqueId }, 
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
                        React.createElement(Stack.Item, { grow: true, styles: subheadingStyleThemed, "aria-label": title, id: subheadingUniqueId },
         
     | 
| 
      
 43 
     | 
    
         
            +
                            React.createElement("h2", null, paneTitleTrampoline(title !== null && title !== void 0 ? title : '', 
         
     | 
| 
      
 44 
     | 
    
         
            +
                            /* @conditional-compile-remove(total-participant-count) */ totalParticipantCount))),
         
     | 
| 
       41 
45 
     | 
    
         
             
                        (onClickHeadingMoreButton ||
         
     | 
| 
       42 
46 
     | 
    
         
             
                            ((headingMoreButtonMenuProps === null || headingMoreButtonMenuProps === void 0 ? void 0 : headingMoreButtonMenuProps.items) && headingMoreButtonMenuProps.items.length > 0)) && (React.createElement(Stack.Item, null,
         
     | 
| 
       43 
47 
     | 
    
         
             
                            React.createElement(DefaultButton, { "data-ui-id": "people-pane-header-more-button", ariaLabel: headingMoreButtonAriaLabel, styles: headingMoreButtonStyles(theme), iconProps: { iconName: 'PeoplePaneMoreButton' }, onClick: onClickHeadingMoreButton ? () => onClickHeadingMoreButton() : undefined, menuProps: props.onClickHeadingMoreButton ? undefined : props.headingMoreButtonMenuProps, onRenderMenuIcon: () => null })))),
         
     | 
| 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            {"version":3,"file":"ParticipantContainer.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/common/ParticipantContainer.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EACL,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,iBAAiB,EACjB,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAsD,yCAAmC;AACjH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,mBAAmB,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5G,OAAO,EAAE,aAAa,EAAwB,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,aAAa,EAA6B,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,sCAAgC;AAUxD;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAe,EAAE;IACpF,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,+BAA+B,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9F,OAAO,CACL,oBAAC,KAAK,IAAC,SAAS,EAAE,+BAA+B;QAC/C,oBAAC,0BAA0B,oBAAK,KAAK,EAAI,CACnC,CACT,CAAC;AACJ,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,KAU1C,EAAe,EAAE;IAChB,MAAM,EACJ,wBAAwB,EACxB,2BAA2B,EAC3B,KAAK,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,wBAAwB,EACxB,0BAA0B,EAC1B,kBAAkB,EACnB,GAAG,KAAK,CAAC;IACV,MAAM,kBAAkB,GAAG,KAAK,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,0DAA0D;IAC1D,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,qBAAqB,CAAC;IACzE,MAAM,SAAS,GAAW,KAAK,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,qBAAqB,GAAG,OAAO,CACnC,GAAG,EAAE,CAAC,CAAC;QACL,IAAI,EAAE;YACJ,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB; 
     | 
| 
      
 1 
     | 
    
         
            +
            {"version":3,"file":"ParticipantContainer.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/common/ParticipantContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport React, { useMemo } from 'react';\nimport {\n  participantListContainerStyle,\n  participantListMobileStyle,\n  participantListStack,\n  participantListStyle,\n  participantListWrapper,\n  displayNameStyles,\n  headingMoreButtonStyles\n} from './styles/ParticipantContainer.styles';\nimport { ParticipantList, ParticipantListProps, ParticipantMenuItemsCallback } from '@internal/react-components';\nimport { FocusZone, Stack, Text, TooltipHost, TooltipOverflowMode, getId, useTheme } from '@fluentui/react';\nimport { DefaultButton, IContextualMenuProps } from '@fluentui/react';\nimport { AvatarPersona, AvatarPersonaDataCallback } from './AvatarPersona';\nimport { useId } from '@fluentui/react-hooks';\nimport { _formatString } from '@internal/acs-ui-common';\n\ntype ParticipantContainerProps = {\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  participantListProps: ParticipantListProps;\n  title?: string;\n  isMobile?: boolean;\n};\n\n/**\n * @private\n */\nexport const ParticipantContainer = (props: ParticipantContainerProps): JSX.Element => {\n  const theme = useTheme();\n  const participantListWrapperClassName = useMemo(() => participantListWrapper(theme), [theme]);\n  return (\n    <Stack className={participantListWrapperClassName}>\n      <ParticipantListWithHeading {...props} />\n    </Stack>\n  );\n};\n\n/**\n * @private\n */\nexport const ParticipantListWithHeading = (props: {\n  participantListProps: ParticipantListProps;\n  title?: string;\n  isMobile?: boolean;\n  onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n  onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n  headingMoreButtonAriaLabel?: string;\n  onClickHeadingMoreButton?: () => void;\n  headingMoreButtonMenuProps?: IContextualMenuProps;\n  pinnedParticipants?: string[];\n}): JSX.Element => {\n  const {\n    onFetchAvatarPersonaData,\n    onFetchParticipantMenuItems,\n    title,\n    participantListProps,\n    headingMoreButtonAriaLabel,\n    onClickHeadingMoreButton,\n    headingMoreButtonMenuProps,\n    pinnedParticipants\n  } = props;\n  const subheadingUniqueId = useId();\n  const theme = useTheme();\n  /* @conditional-compile-remove(total-participant-count) */\n  const totalParticipantCount = participantListProps.totalParticipantCount;\n  const tooltipId: string = getId('text-tooltip');\n  const subheadingStyleThemed = useMemo(\n    () => ({\n      root: {\n        h2: {\n          color: theme.palette.neutralSecondary,\n          margin: props.isMobile ? '0.5rem 1rem' : '0.5rem',\n          fontSize: theme.fonts.smallPlus.fontSize,\n          fontWeight: 'normal'\n        }\n      }\n    }),\n    [theme.palette.neutralSecondary, theme.fonts.smallPlus.fontSize, props.isMobile]\n  );\n\n  return (\n    <Stack className={participantListStack}>\n      <Stack horizontal horizontalAlign=\"space-between\" verticalAlign=\"center\">\n        <Stack.Item grow styles={subheadingStyleThemed} aria-label={title} id={subheadingUniqueId}>\n          <h2>\n            {paneTitleTrampoline(\n              title ?? '',\n              /* @conditional-compile-remove(total-participant-count) */ totalParticipantCount\n            )}\n          </h2>\n        </Stack.Item>\n        {(onClickHeadingMoreButton ||\n          (headingMoreButtonMenuProps?.items && headingMoreButtonMenuProps.items.length > 0)) && (\n          <Stack.Item>\n            <DefaultButton\n              data-ui-id=\"people-pane-header-more-button\"\n              ariaLabel={headingMoreButtonAriaLabel}\n              styles={headingMoreButtonStyles(theme)}\n              iconProps={{ iconName: 'PeoplePaneMoreButton' }}\n              onClick={onClickHeadingMoreButton ? () => onClickHeadingMoreButton() : undefined}\n              menuProps={props.onClickHeadingMoreButton ? undefined : props.headingMoreButtonMenuProps}\n              onRenderMenuIcon={() => null}\n            />\n          </Stack.Item>\n        )}\n      </Stack>\n      <FocusZone className={participantListContainerStyle} shouldFocusOnMount={true}>\n        <ParticipantList\n          {...participantListProps}\n          pinnedParticipants={pinnedParticipants}\n          styles={props.isMobile ? participantListMobileStyle : participantListStyle}\n          onRenderAvatar={(userId, options) => (\n            <>\n              <AvatarPersona\n                data-ui-id=\"chat-composite-participant-custom-avatar\"\n                userId={userId}\n                {...options}\n                {...{ hidePersonaDetails: !!options?.text }}\n                dataProvider={onFetchAvatarPersonaData}\n                allowActiveBorder={true}\n              />\n              {options?.text && (\n                <div style={displayNameStyles}>\n                  <TooltipHost content={options?.text} id={tooltipId} overflowMode={TooltipOverflowMode.Parent}>\n                    <Text nowrap={false} aria-labelledby={tooltipId}>\n                      {options?.text}\n                    </Text>\n                  </TooltipHost>\n                </div>\n              )}\n            </>\n          )}\n          onFetchParticipantMenuItems={onFetchParticipantMenuItems}\n          showParticipantOverflowTooltip={!props.isMobile}\n          participantAriaLabelledBy={subheadingUniqueId}\n        />\n      </FocusZone>\n    </Stack>\n  );\n};\n\nconst paneTitleTrampoline = (paneTitle: string, totalParticipantCount?: number): string => {\n  const participantCountString = totalParticipantCount\n    ? { numberOfPeople: `(${totalParticipantCount})` }\n    : { numberOfPeople: ' ' };\n  return _formatString(paneTitle, participantCountString);\n};\n"]}
         
     | 
    
        package/package.json
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            {
         
     | 
| 
       2 
2 
     | 
    
         
             
              "name": "@azure/communication-react",
         
     | 
| 
       3 
     | 
    
         
            -
              "version": "1.18.0-alpha- 
     | 
| 
      
 3 
     | 
    
         
            +
              "version": "1.18.0-alpha-202407130015",
         
     | 
| 
       4 
4 
     | 
    
         
             
              "sideEffects": false,
         
     | 
| 
       5 
5 
     | 
    
         
             
              "description": "React library for building modern communication user experiences utilizing Azure Communication Services",
         
     | 
| 
       6 
6 
     | 
    
         
             
              "keywords": [
         
     |