@azure/communication-react 1.0.0 → 1.0.1-alpha-202112170009.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 (104) hide show
  1. package/dist/communication-react.d.ts +214 -0
  2. package/dist/dist-cjs/communication-react/index.js +1225 -178
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/chat-stateful-client/src/ChatContext.js.map +1 -1
  7. package/dist/dist-esm/react-components/src/components/DevicesButton.d.ts.map +1 -1
  8. package/dist/dist-esm/react-components/src/components/DevicesButton.js +3 -0
  9. package/dist/dist-esm/react-components/src/components/DevicesButton.js.map +1 -1
  10. package/dist/dist-esm/react-components/src/components/MessageThread.js +3 -4
  11. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  12. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts.map +1 -1
  13. package/dist/dist-esm/react-components/src/components/VideoGallery.js +10 -6
  14. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  15. package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.d.ts.map +1 -1
  16. package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.js +8 -2
  17. package/dist/dist-esm/react-components/src/components/styles/ControlBar.styles.js.map +1 -1
  18. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.d.ts +4 -6
  19. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.d.ts.map +1 -1
  20. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js +11 -6
  21. package/dist/dist-esm/react-components/src/components/styles/VideoGallery.styles.js.map +1 -1
  22. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.d.ts +7 -0
  23. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.d.ts.map +1 -1
  24. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatComposite.js.map +1 -1
  25. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.d.ts.map +1 -1
  26. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +7 -5
  27. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  28. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ParticipantContainer.d.ts +14 -0
  29. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ParticipantContainer.d.ts.map +1 -0
  30. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ParticipantContainer.js +24 -0
  31. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ParticipantContainer.js.map +1 -0
  32. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/ChatButton.d.ts +7 -0
  33. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/ChatButton.d.ts.map +1 -0
  34. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/ChatButton.js +16 -0
  35. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/ChatButton.js.map +1 -0
  36. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingCallControlBar.d.ts +19 -0
  37. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingCallControlBar.d.ts.map +1 -0
  38. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingCallControlBar.js +38 -0
  39. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingCallControlBar.js.map +1 -0
  40. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingComposite.d.ts +37 -0
  41. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingComposite.d.ts.map +1 -0
  42. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingComposite.js +59 -0
  43. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/MeetingComposite.js.map +1 -0
  44. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/PeopleButton.d.ts +7 -0
  45. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/PeopleButton.d.ts.map +1 -0
  46. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/PeopleButton.js +16 -0
  47. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/PeopleButton.js.map +1 -0
  48. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/SidePane.d.ts +25 -0
  49. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/SidePane.d.ts.map +1 -0
  50. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/SidePane.js +76 -0
  51. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/SidePane.js.map +1 -0
  52. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/AzureCommunicationMeetingAdapter.d.ts +129 -0
  53. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/AzureCommunicationMeetingAdapter.d.ts.map +1 -0
  54. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/AzureCommunicationMeetingAdapter.js +385 -0
  55. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/AzureCommunicationMeetingAdapter.js.map +1 -0
  56. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingAdapter.d.ts +73 -0
  57. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingAdapter.d.ts.map +1 -0
  58. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingAdapter.js +4 -0
  59. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingAdapter.js.map +1 -0
  60. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedCallAdapter.d.ts +40 -0
  61. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedCallAdapter.d.ts.map +1 -0
  62. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedCallAdapter.js +100 -0
  63. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedCallAdapter.js.map +1 -0
  64. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedChatAdapter.d.ts +30 -0
  65. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedChatAdapter.d.ts.map +1 -0
  66. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedChatAdapter.js +79 -0
  67. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/adapter/MeetingBackedChatAdapter.js.map +1 -0
  68. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/index.d.ts +10 -0
  69. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/index.d.ts.map +1 -0
  70. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/index.js +5 -0
  71. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/index.js.map +1 -0
  72. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingAdapterState.d.ts +50 -0
  73. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingAdapterState.d.ts.map +1 -0
  74. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingAdapterState.js +50 -0
  75. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingAdapterState.js.map +1 -0
  76. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingCompositePage.d.ts +21 -0
  77. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingCompositePage.d.ts.map +1 -0
  78. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingCompositePage.js +41 -0
  79. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingCompositePage.js.map +1 -0
  80. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingEndReason.d.ts +8 -0
  81. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingEndReason.d.ts.map +1 -0
  82. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingEndReason.js +4 -0
  83. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingEndReason.js.map +1 -0
  84. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingParticipants.d.ts +35 -0
  85. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingParticipants.d.ts.map +1 -0
  86. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingParticipants.js +51 -0
  87. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingParticipants.js.map +1 -0
  88. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingState.d.ts +42 -0
  89. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingState.d.ts.map +1 -0
  90. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingState.js +72 -0
  91. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/state/MeetingState.js.map +1 -0
  92. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/MeetingCompositeStyles.d.ts +6 -0
  93. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/MeetingCompositeStyles.d.ts.map +1 -0
  94. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/MeetingCompositeStyles.js +17 -0
  95. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/MeetingCompositeStyles.js.map +1 -0
  96. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/SidePane.styles.d.ts +38 -0
  97. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/SidePane.styles.d.ts.map +1 -0
  98. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/SidePane.styles.js +63 -0
  99. package/dist/dist-esm/react-composites/src/composites/MeetingComposite/styles/SidePane.styles.js.map +1 -0
  100. package/dist/dist-esm/react-composites/src/composites/index.d.ts +2 -0
  101. package/dist/dist-esm/react-composites/src/composites/index.d.ts.map +1 -1
  102. package/dist/dist-esm/react-composites/src/composites/index.js +4 -0
  103. package/dist/dist-esm/react-composites/src/composites/index.js.map +1 -1
  104. package/package.json +24 -9
@@ -0,0 +1,24 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import React from 'react';
4
+ import { participantListStack, participantListStyle, participantListWrapper, listHeader } from './styles/Chat.styles';
5
+ import { ParticipantList } from "../../../../react-components/src";
6
+ import { FocusZone, Stack } from '@fluentui/react';
7
+ import { useLocale } from '../localization';
8
+ import { usePropsFor } from './hooks/usePropsFor';
9
+ import { AvatarPersona } from '../common/AvatarPersona';
10
+ /**
11
+ * @private
12
+ */
13
+ export const ParticipantContainer = (props) => {
14
+ const { onFetchAvatarPersonaData, onFetchParticipantMenuItems } = props;
15
+ const participantListProps = usePropsFor(ParticipantList);
16
+ const locale = useLocale();
17
+ const chatListHeader = locale.strings.chat.chatListHeader;
18
+ return (React.createElement(Stack, { className: participantListWrapper },
19
+ React.createElement(Stack, { className: participantListStack },
20
+ React.createElement(Stack.Item, { className: listHeader }, chatListHeader),
21
+ React.createElement(FocusZone, { className: participantListStyle },
22
+ React.createElement(ParticipantList, Object.assign({}, participantListProps, { onRenderAvatar: (userId, options) => (React.createElement(AvatarPersona, Object.assign({ "data-ui-id": "chat-composite-participant-custom-avatar", userId: userId }, options, { dataProvider: onFetchAvatarPersonaData }))), onFetchParticipantMenuItems: onFetchParticipantMenuItems }))))));
23
+ };
24
+ //# sourceMappingURL=ParticipantContainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParticipantContainer.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/ChatComposite/ParticipantContainer.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACtH,OAAO,EAA0B,eAAe,EAAgC,yCAAmC;AACnH,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAA6B,MAAM,yBAAyB,CAAC;AAQnF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAgC,EAAe,EAAE;IACpF,MAAM,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,GAAG,KAAK,CAAC;IACxE,MAAM,oBAAoB,GAAG,WAAW,CAAC,eAAe,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;IAC1D,OAAO,CACL,oBAAC,KAAK,IAAC,SAAS,EAAE,sBAAsB;QACtC,oBAAC,KAAK,IAAC,SAAS,EAAE,oBAAoB;YACpC,oBAAC,KAAK,CAAC,IAAI,IAAC,SAAS,EAAE,UAAU,IAAG,cAAc,CAAc;YAChE,oBAAC,SAAS,IAAC,SAAS,EAAE,oBAAoB;gBACxC,oBAAC,eAAe,oBACV,oBAAoB,IACxB,cAAc,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CACnC,oBAAC,aAAa,gCACD,0CAA0C,EACrD,MAAM,EAAE,MAAM,IACV,OAAO,IACX,YAAY,EAAE,wBAAwB,IACtC,CACH,EACD,2BAA2B,EAAE,2BAA2B,IACxD,CACQ,CACN,CACF,CACT,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { ControlBarButtonProps } from "../../../../react-components/src";
3
+ /**
4
+ * @private
5
+ */
6
+ export declare const ChatButton: (props: ControlBarButtonProps) => JSX.Element;
7
+ //# sourceMappingURL=ChatButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatButton.d.ts","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/ChatButton.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAoB,qBAAqB,EAAE,yCAAmC;AAMrF;;GAEG;AACH,eAAO,MAAM,UAAU,UAAW,qBAAqB,KAAG,WAazD,CAAC"}
@@ -0,0 +1,16 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import React from 'react';
4
+ import { ControlBarButton } from "../../../../react-components/src";
5
+ import { Chat20Filled, Chat20Regular } from '@fluentui/react-icons';
6
+ const onRenderOnIcon = () => React.createElement(Chat20Filled, { key: 'chatOnIconKey', primaryFill: "currentColor" });
7
+ const onRenderOffIcon = () => React.createElement(Chat20Regular, { key: 'chatOffIconKey', primaryFill: "currentColor" });
8
+ /**
9
+ * @private
10
+ */
11
+ export const ChatButton = (props) => {
12
+ var _a, _b;
13
+ const strings = Object.assign({ label: 'Chat' }, props.strings);
14
+ return (React.createElement(ControlBarButton, Object.assign({}, props, { labelKey: 'chatButtonLabelKey', strings: strings, onRenderOnIcon: (_a = props.onRenderOnIcon) !== null && _a !== void 0 ? _a : onRenderOnIcon, onRenderOffIcon: (_b = props.onRenderOffIcon) !== null && _b !== void 0 ? _b : onRenderOffIcon, onClick: props.onClick })));
15
+ };
16
+ //# sourceMappingURL=ChatButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatButton.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/ChatButton.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAyB,yCAAmC;AACrF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEpE,MAAM,cAAc,GAAG,GAAgB,EAAE,CAAC,oBAAC,YAAY,IAAC,GAAG,EAAE,eAAe,EAAE,WAAW,EAAC,cAAc,GAAG,CAAC;AAC5G,MAAM,eAAe,GAAG,GAAgB,EAAE,CAAC,oBAAC,aAAa,IAAC,GAAG,EAAE,gBAAgB,EAAE,WAAW,EAAC,cAAc,GAAG,CAAC;AAE/G;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAA4B,EAAe,EAAE;;IACtE,MAAM,OAAO,mBAAK,KAAK,EAAE,MAAM,IAAK,KAAK,CAAC,OAAO,CAAE,CAAC;IAEpD,OAAO,CACL,oBAAC,gBAAgB,oBACX,KAAK,IACT,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,OAAO,EAChB,cAAc,EAAE,MAAA,KAAK,CAAC,cAAc,mCAAI,cAAc,EACtD,eAAe,EAAE,MAAA,KAAK,CAAC,eAAe,mCAAI,eAAe,EACzD,OAAO,EAAE,KAAK,CAAC,OAAO,IACtB,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /// <reference types="react" />
2
+ import { CallAdapter } from '../CallComposite';
3
+ /**
4
+ * @private
5
+ */
6
+ export interface MeetingCallControlBarProps {
7
+ callAdapter: CallAdapter;
8
+ chatButtonChecked: boolean;
9
+ peopleButtonChecked: boolean;
10
+ onChatButtonClicked: () => void;
11
+ onPeopleButtonClicked: () => void;
12
+ mobileView: boolean;
13
+ disableButtonsForLobbyPage: boolean;
14
+ }
15
+ /**
16
+ * @private
17
+ */
18
+ export declare const MeetingCallControlBar: (props: MeetingCallControlBarProps) => JSX.Element;
19
+ //# sourceMappingURL=MeetingCallControlBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeetingCallControlBar.d.ts","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/MeetingCallControlBar.tsx"],"names":[],"mappings":";AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,mBAAmB,EAAE,MAAM,IAAI,CAAC;IAChC,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,0BAA0B,EAAE,OAAO,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,UAAW,0BAA0B,KAAG,WA8CzE,CAAC"}
@@ -0,0 +1,38 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import React from 'react';
4
+ import { CallControls } from '../CallComposite/components/CallControls';
5
+ import { CallAdapterProvider } from '../CallComposite/adapter/CallAdapterProvider';
6
+ import { ChatButton } from './ChatButton';
7
+ import { PeopleButton } from './PeopleButton';
8
+ import { mergeStyles, Stack } from '@fluentui/react';
9
+ import { reduceCallControlsForMobile } from '../CallComposite/utils';
10
+ import { controlBarContainerStyles } from '../CallComposite/styles/CallControls.styles';
11
+ import { callControlsContainerStyles } from '../CallComposite/styles/CallPage.styles';
12
+ /**
13
+ * @private
14
+ */
15
+ export const MeetingCallControlBar = (props) => {
16
+ // Disable the default participants button as meetings composite has its own participants button.
17
+ let callControlsOptions = {
18
+ participantsButton: false,
19
+ screenShareButton: props.mobileView ? false : { disabled: props.disableButtonsForLobbyPage }
20
+ };
21
+ // Reduce the controls shown when mobile view is enabled.
22
+ if (props.mobileView) {
23
+ callControlsOptions = reduceCallControlsForMobile(callControlsOptions);
24
+ }
25
+ /**
26
+ * Until mobile meetings is worked on, statically set the width of the
27
+ * control bar such that all controls can be accessed.
28
+ */
29
+ const temporaryMeetingControlBarStyles = props.mobileView ? { width: '23.5rem' } : undefined;
30
+ return (React.createElement(Stack, { horizontal: true, className: mergeStyles(temporaryMeetingControlBarStyles, callControlsContainerStyles, controlBarContainerStyles) },
31
+ React.createElement(Stack.Item, { grow: true },
32
+ React.createElement(CallAdapterProvider, { adapter: props.callAdapter },
33
+ React.createElement(CallControls, { options: callControlsOptions, increaseFlyoutItemSize: props.mobileView }))),
34
+ React.createElement(Stack.Item, null,
35
+ React.createElement(ChatButton, { checked: props.chatButtonChecked, showLabel: true, onClick: props.onChatButtonClicked, "data-ui-id": "meeting-composite-chat-button", disabled: props.disableButtonsForLobbyPage }),
36
+ React.createElement(PeopleButton, { checked: props.peopleButtonChecked, showLabel: true, onClick: props.onPeopleButtonClicked, "data-ui-id": "meeting-composite-people-button", disabled: props.disableButtonsForLobbyPage }))));
37
+ };
38
+ //# sourceMappingURL=MeetingCallControlBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeetingCallControlBar.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/MeetingCallControlBar.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAsB,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAEnF,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,2BAA2B,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAC;AAetF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAiC,EAAe,EAAE;IACtF,iGAAiG;IACjG,IAAI,mBAAmB,GAA+B;QACpD,kBAAkB,EAAE,KAAK;QACzB,iBAAiB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,0BAA0B,EAAE;KAC7F,CAAC;IAEF,yDAAyD;IACzD,IAAI,KAAK,CAAC,UAAU,EAAE;QACpB,mBAAmB,GAAG,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;KACxE;IAED;;;OAGG;IACH,MAAM,gCAAgC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7F,OAAO,CACL,oBAAC,KAAK,IACJ,UAAU,QACV,SAAS,EAAE,WAAW,CAAC,gCAAgC,EAAE,2BAA2B,EAAE,yBAAyB,CAAC;QAEhH,oBAAC,KAAK,CAAC,IAAI,IAAC,IAAI;YACd,oBAAC,mBAAmB,IAAC,OAAO,EAAE,KAAK,CAAC,WAAW;gBAC7C,oBAAC,YAAY,IAAC,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,KAAK,CAAC,UAAU,GAAI,CACpE,CACX;QACb,oBAAC,KAAK,CAAC,IAAI;YACT,oBAAC,UAAU,IACT,OAAO,EAAE,KAAK,CAAC,iBAAiB,EAChC,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,KAAK,CAAC,mBAAmB,gBACvB,+BAA+B,EAC1C,QAAQ,EAAE,KAAK,CAAC,0BAA0B,GAC1C;YACF,oBAAC,YAAY,IACX,OAAO,EAAE,KAAK,CAAC,mBAAmB,EAClC,SAAS,EAAE,IAAI,EACf,OAAO,EAAE,KAAK,CAAC,qBAAqB,gBACzB,iCAAiC,EAC5C,QAAQ,EAAE,KAAK,CAAC,0BAA0B,GAC1C,CACS,CACP,CACT,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,37 @@
1
+ /// <reference types="react" />
2
+ import { PartialTheme, Theme } from '@fluentui/react';
3
+ import { MeetingAdapter } from './adapter/MeetingAdapter';
4
+ import { BaseCompositeProps } from '../common/BaseComposite';
5
+ import { CallCompositeIcons, ChatCompositeIcons } from '../common/icons';
6
+ /**
7
+ * Props required for the {@link MeetingComposite}
8
+ *
9
+ * @beta
10
+ */
11
+ export interface MeetingCompositeProps extends BaseCompositeProps<CallCompositeIcons & ChatCompositeIcons> {
12
+ meetingAdapter: MeetingAdapter;
13
+ /**
14
+ * Fluent theme for the composite.
15
+ *
16
+ * Defaults to a light theme if undefined.
17
+ */
18
+ fluentTheme?: PartialTheme | Theme;
19
+ /**
20
+ * Optimizes the composite form factor for either desktop or mobile.
21
+ * @remarks `mobile` is currently only optimized for Portrait mode on mobile devices and does not support landscape.
22
+ * @defaultValue 'desktop'
23
+ * @beta
24
+ */
25
+ formFactor?: 'desktop' | 'mobile';
26
+ /**
27
+ * URL that can be used to copy a meeting invite to the Users clipboard.
28
+ */
29
+ meetingInvitationURL?: string;
30
+ }
31
+ /**
32
+ * Meeting Composite brings together key components to provide a full meeting experience out of the box.
33
+ *
34
+ * @beta
35
+ */
36
+ export declare const MeetingComposite: (props: MeetingCompositeProps) => JSX.Element;
37
+ //# sourceMappingURL=MeetingComposite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeetingComposite.d.ts","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/MeetingComposite.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,YAAY,EAAS,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAQ7D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACxG,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;OAIG;IACH,WAAW,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IACnC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IAClC;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAW,qBAAqB,KAAG,WAqF/D,CAAC"}
@@ -0,0 +1,59 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import React, { useCallback, useState, useMemo } from 'react';
4
+ import { Stack } from '@fluentui/react';
5
+ import { CallComposite } from '../CallComposite';
6
+ import { CallAdapterProvider } from '../CallComposite/adapter/CallAdapterProvider';
7
+ import { EmbeddedChatPane, EmbeddedPeoplePane } from './SidePane';
8
+ import { MeetingCallControlBar } from './MeetingCallControlBar';
9
+ import { compositeOuterContainerStyles } from './styles/MeetingCompositeStyles';
10
+ import { FluentThemeProvider } from "../../../../react-components/src";
11
+ import { MeetingBackedCallAdapter } from './adapter/MeetingBackedCallAdapter';
12
+ import { MeetingBackedChatAdapter } from './adapter/MeetingBackedChatAdapter';
13
+ import { hasJoinedCall as hasJoinedCallFn } from './state/MeetingCompositePage';
14
+ /**
15
+ * Meeting Composite brings together key components to provide a full meeting experience out of the box.
16
+ *
17
+ * @beta
18
+ */
19
+ export const MeetingComposite = (props) => {
20
+ const { meetingAdapter, fluentTheme, formFactor = 'desktop' } = props;
21
+ if (!meetingAdapter) {
22
+ throw 'Meeting adapter is undefined';
23
+ }
24
+ const callAdapter = useMemo(() => new MeetingBackedCallAdapter(meetingAdapter), [meetingAdapter]);
25
+ const chatAdapter = useMemo(() => new MeetingBackedChatAdapter(meetingAdapter), [meetingAdapter]);
26
+ const [currentMeetingState, setCurrentMeetingState] = useState();
27
+ const [currentPage, setCurrentPage] = useState();
28
+ meetingAdapter.onStateChange((newState) => {
29
+ var _a;
30
+ setCurrentPage(newState.page);
31
+ setCurrentMeetingState((_a = newState.meeting) === null || _a === void 0 ? void 0 : _a.state);
32
+ });
33
+ const [showChat, setShowChat] = useState(false);
34
+ const [showPeople, setShowPeople] = useState(false);
35
+ const closePane = useCallback(() => {
36
+ setShowChat(false);
37
+ setShowPeople(false);
38
+ }, []);
39
+ const toggleChat = useCallback(() => {
40
+ setShowPeople(false);
41
+ setShowChat(!showChat);
42
+ }, [showChat]);
43
+ const togglePeople = useCallback(() => {
44
+ setShowChat(false);
45
+ setShowPeople(!showPeople);
46
+ }, [showPeople]);
47
+ const isInLobbyOrConnecting = currentPage === 'lobby';
48
+ const hasJoinedCall = !!(currentPage && hasJoinedCallFn(currentPage, currentMeetingState !== null && currentMeetingState !== void 0 ? currentMeetingState : 'None'));
49
+ return (React.createElement(FluentThemeProvider, { fluentTheme: fluentTheme },
50
+ React.createElement(Stack, { verticalFill: true, grow: true, styles: compositeOuterContainerStyles },
51
+ React.createElement(Stack, { horizontal: true, grow: true },
52
+ React.createElement(Stack.Item, { grow: true },
53
+ React.createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: { callControls: false }, adapter: callAdapter, fluentTheme: fluentTheme }))),
54
+ chatAdapter && hasJoinedCall && (React.createElement(EmbeddedChatPane, { chatCompositeProps: props, hidden: !showChat, chatAdapter: chatAdapter, fluentTheme: fluentTheme, onClose: closePane })),
55
+ callAdapter && chatAdapter && hasJoinedCall && (React.createElement(CallAdapterProvider, { adapter: callAdapter },
56
+ React.createElement(EmbeddedPeoplePane, { hidden: !showPeople, inviteLink: props.meetingInvitationURL, onClose: closePane, chatAdapter: chatAdapter, callAdapter: callAdapter })))),
57
+ (isInLobbyOrConnecting || hasJoinedCall) && (React.createElement(MeetingCallControlBar, { callAdapter: callAdapter, chatButtonChecked: showChat, onChatButtonClicked: toggleChat, peopleButtonChecked: showPeople, onPeopleButtonClicked: togglePeople, mobileView: props.formFactor === 'mobile', disableButtonsForLobbyPage: isInLobbyOrConnecting })))));
58
+ };
59
+ //# sourceMappingURL=MeetingComposite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MeetingComposite.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/MeetingComposite.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import { ControlBarButtonProps } from "../../../../react-components/src";
3
+ /**
4
+ * @private
5
+ */
6
+ export declare const PeopleButton: (props: ControlBarButtonProps) => JSX.Element;
7
+ //# sourceMappingURL=PeopleButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeopleButton.d.ts","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/PeopleButton.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAoB,qBAAqB,EAAE,yCAAmC;AAMrF;;GAEG;AACH,eAAO,MAAM,YAAY,UAAW,qBAAqB,KAAG,WAa3D,CAAC"}
@@ -0,0 +1,16 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT license.
3
+ import React from 'react';
4
+ import { ControlBarButton } from "../../../../react-components/src";
5
+ import { People20Filled, People20Regular } from '@fluentui/react-icons';
6
+ const onRenderOnIcon = () => React.createElement(People20Filled, { key: 'peopleOnIconKey', primaryFill: "currentColor" });
7
+ const onRenderOffIcon = () => React.createElement(People20Regular, { key: 'peopleOffIconKey', primaryFill: "currentColor" });
8
+ /**
9
+ * @private
10
+ */
11
+ export const PeopleButton = (props) => {
12
+ var _a, _b;
13
+ const strings = Object.assign({ label: 'People' }, props.strings);
14
+ return (React.createElement(ControlBarButton, Object.assign({}, props, { strings: strings, labelKey: 'peopleButtonLabelKey', onRenderOnIcon: (_a = props.onRenderOnIcon) !== null && _a !== void 0 ? _a : onRenderOnIcon, onRenderOffIcon: (_b = props.onRenderOffIcon) !== null && _b !== void 0 ? _b : onRenderOffIcon, onClick: props.onClick })));
15
+ };
16
+ //# sourceMappingURL=PeopleButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PeopleButton.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/PeopleButton.tsx"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAyB,yCAAmC;AACrF,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExE,MAAM,cAAc,GAAG,GAAgB,EAAE,CAAC,oBAAC,cAAc,IAAC,GAAG,EAAE,iBAAiB,EAAE,WAAW,EAAC,cAAc,GAAG,CAAC;AAChH,MAAM,eAAe,GAAG,GAAgB,EAAE,CAAC,oBAAC,eAAe,IAAC,GAAG,EAAE,kBAAkB,EAAE,WAAW,EAAC,cAAc,GAAG,CAAC;AAEnH;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAA4B,EAAe,EAAE;;IACxE,MAAM,OAAO,mBAAK,KAAK,EAAE,QAAQ,IAAK,KAAK,CAAC,OAAO,CAAE,CAAC;IAEtD,OAAO,CACL,oBAAC,gBAAgB,oBACX,KAAK,IACT,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,sBAAsB,EAChC,cAAc,EAAE,MAAA,KAAK,CAAC,cAAc,mCAAI,cAAc,EACtD,eAAe,EAAE,MAAA,KAAK,CAAC,eAAe,mCAAI,eAAe,EACzD,OAAO,EAAE,KAAK,CAAC,OAAO,IACtB,CACH,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ /// <reference types="react" />
2
+ import { ChatAdapter, ChatCompositeProps } from '../ChatComposite';
3
+ import { PartialTheme, Theme } from '@fluentui/react';
4
+ import { CallAdapter } from '../CallComposite';
5
+ /**
6
+ * @private
7
+ */
8
+ export declare const EmbeddedPeoplePane: (props: {
9
+ inviteLink?: string;
10
+ onClose: () => void;
11
+ hidden: boolean;
12
+ callAdapter: CallAdapter;
13
+ chatAdapter: ChatAdapter;
14
+ }) => JSX.Element;
15
+ /**
16
+ * @private
17
+ */
18
+ export declare const EmbeddedChatPane: (props: {
19
+ chatCompositeProps: Partial<ChatCompositeProps>;
20
+ chatAdapter: ChatAdapter;
21
+ fluentTheme?: PartialTheme | Theme;
22
+ hidden: boolean;
23
+ onClose: () => void;
24
+ }) => JSX.Element;
25
+ //# sourceMappingURL=SidePane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidePane.d.ts","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/SidePane.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAiB,WAAW,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAmC,YAAY,EAAE,KAAK,EAA0B,MAAM,iBAAiB,CAAC;AAe/G,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAuD/C;;GAEG;AACH,eAAO,MAAM,kBAAkB,UAAW;IACxC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,CAAC;CAC1B,KAAG,WAoCH,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,UAAW;IACtC,kBAAkB,EAAE,QAAQ,kBAAkB,CAAC,CAAC;IAChD,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,KAAG,WAgBH,CAAC"}
@@ -0,0 +1,76 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ // Copyright (c) Microsoft Corporation.
11
+ // Licensed under the MIT license.
12
+ import React, { useMemo } from 'react';
13
+ import { ChatComposite } from '../ChatComposite';
14
+ import { CommandBarButton, DefaultButton, Stack, concatStyleSets } from '@fluentui/react';
15
+ import { sidePaneContainerHiddenStyles, sidePaneContainerStyles, sidePaneContainerTokens, sidePaneHeaderStyles, peoplePaneContainerTokens, peopleSubheadingStyle, paneBodyContainer, scrollableContainer, scrollableContainerContents } from './styles/SidePane.styles';
16
+ import { ParticipantList, useTheme } from "../../../../react-components/src";
17
+ import copy from 'copy-to-clipboard';
18
+ import { usePropsFor } from '../CallComposite/hooks/usePropsFor';
19
+ const SidePane = (props) => {
20
+ // We hide the side pane instead of not rendering the entire pane to persist certain elements
21
+ // between renders. An example of this is composing a chat message - a chat message that has been
22
+ // typed but not sent should not be lost if the side panel is closed and then reopened.
23
+ const sidePaneStyles = props.hidden ? sidePaneContainerHiddenStyles : sidePaneContainerStyles;
24
+ const theme = useTheme();
25
+ const sidePaneCloseButtonStyles = {
26
+ icon: { color: theme.palette.neutralSecondary },
27
+ iconHovered: { color: theme.palette.neutralSecondary },
28
+ iconPressed: { color: theme.palette.neutralSecondary }
29
+ };
30
+ return (React.createElement(Stack.Item, { disableShrink: true, verticalFill: true, styles: sidePaneStyles, tokens: sidePaneContainerTokens },
31
+ React.createElement(Stack, { verticalFill: true, "data-ui-id": props.dataUiId },
32
+ React.createElement(Stack, { horizontal: true, horizontalAlign: "space-between", styles: sidePaneHeaderStyles },
33
+ React.createElement(Stack.Item, null, props.headingText),
34
+ React.createElement(CommandBarButton, { styles: sidePaneCloseButtonStyles, iconProps: { iconName: 'cancel' }, onClick: props.onClose })),
35
+ React.createElement(Stack.Item, { verticalFill: true, grow: true, styles: paneBodyContainer },
36
+ React.createElement(Stack, { horizontal: true, styles: scrollableContainer },
37
+ React.createElement(Stack.Item, { verticalFill: true, styles: scrollableContainerContents }, props.children))))));
38
+ };
39
+ /**
40
+ * In a Meeting when a participant is removed, we must remove them from both
41
+ * the call and the chat thread.
42
+ */
43
+ const removeParticipantFromMeeting = (callAdapter, chatAdapter, participantId) => __awaiter(void 0, void 0, void 0, function* () {
44
+ yield callAdapter.removeParticipant(participantId);
45
+ yield chatAdapter.removeParticipant(participantId);
46
+ });
47
+ /**
48
+ * @private
49
+ */
50
+ export const EmbeddedPeoplePane = (props) => {
51
+ const { callAdapter, chatAdapter, inviteLink } = props;
52
+ const participantListDefaultProps = usePropsFor(ParticipantList);
53
+ const participantListProps = useMemo(() => {
54
+ const onRemoveParticipant = (participantId) => __awaiter(void 0, void 0, void 0, function* () { return removeParticipantFromMeeting(callAdapter, chatAdapter, participantId); });
55
+ return Object.assign(Object.assign({}, participantListDefaultProps), { onRemoveParticipant });
56
+ }, [participantListDefaultProps, callAdapter, chatAdapter]);
57
+ const theme = useTheme();
58
+ const peopleSubheadingStyleThemed = concatStyleSets(peopleSubheadingStyle, {
59
+ root: {
60
+ color: theme.palette.neutralSecondary
61
+ }
62
+ });
63
+ return (React.createElement(SidePane, { hidden: props.hidden, headingText: 'People', onClose: props.onClose, dataUiId: 'meeting-composite-people-pane' },
64
+ React.createElement(Stack, { tokens: peoplePaneContainerTokens },
65
+ inviteLink && (React.createElement(DefaultButton, { text: "Copy invite link", iconProps: { iconName: 'Link' }, onClick: () => copy(inviteLink) })),
66
+ React.createElement(Stack.Item, { styles: peopleSubheadingStyleThemed }, "In this call"),
67
+ React.createElement(ParticipantList, Object.assign({}, participantListProps)))));
68
+ };
69
+ /**
70
+ * @private
71
+ */
72
+ export const EmbeddedChatPane = (props) => {
73
+ return (React.createElement(SidePane, { hidden: props.hidden, headingText: 'Chat', onClose: props.onClose, dataUiId: 'meeting-composite-chat-pane' },
74
+ React.createElement(ChatComposite, Object.assign({}, props.chatCompositeProps, { adapter: props.chatAdapter, fluentTheme: props.fluentTheme, options: { topic: false, /* @conditional-compile-remove-from(stable) */ participantPane: false } }))));
75
+ };
76
+ //# sourceMappingURL=SidePane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidePane.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/MeetingComposite/SidePane.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import { AudioDeviceInfo, VideoDeviceInfo, PermissionConstraints, GroupCallLocator, TeamsMeetingLinkLocator, Call } from '@azure/communication-calling';
2
+ import { VideoStreamOptions } from "../../../../../react-components/src";
3
+ import { ParticipantsJoinedListener, ParticipantsLeftListener, IsMutedChangedListener, CallIdChangedListener, IsLocalScreenSharingActiveChangedListener, DisplayNameChangedListener, IsSpeakingChangedListener, CallAdapter, CallEndedListener } from '../../CallComposite';
4
+ import { MessageReceivedListener, MessageReadListener, ChatAdapter } from '../../ChatComposite';
5
+ import { MeetingAdapter } from './MeetingAdapter';
6
+ import { MeetingAdapterState } from '../state/MeetingAdapterState';
7
+ import { CommunicationTokenCredential, CommunicationUserIdentifier } from '@azure/communication-common';
8
+ /**
9
+ * Meeting adapter backed by Azure Communication Services.
10
+ * Created for easy use with the Meeting Composite.
11
+ */
12
+ export declare class AzureCommunicationMeetingAdapter implements MeetingAdapter {
13
+ private callAdapter;
14
+ private chatAdapter;
15
+ private context;
16
+ private onChatStateChange;
17
+ private onCallStateChange;
18
+ constructor(callAdapter: CallAdapter, chatAdapter: ChatAdapter);
19
+ private bindPublicMethods;
20
+ /** Join existing Meeting. */
21
+ joinMeeting(microphoneOn?: boolean): Call | undefined;
22
+ /** Leave current Meeting. */
23
+ leaveMeeting(): Promise<void>;
24
+ /** Start a new Meeting. */
25
+ startMeeting(participants: string[]): Call | undefined;
26
+ /**
27
+ * Subscribe to state change events.
28
+ * @param handler - handler to be called when the state changes. This is passed the new state.
29
+ */
30
+ onStateChange(handler: (state: MeetingAdapterState) => void): void;
31
+ /**
32
+ * Unsubscribe to state change events.
33
+ * @param handler - handler to be no longer called when state changes.
34
+ */
35
+ offStateChange(handler: (state: MeetingAdapterState) => void): void;
36
+ /** Get current Meeting state. */
37
+ getState(): MeetingAdapterState;
38
+ /** Dispose of the current Meeting Adapter. */
39
+ dispose(): void;
40
+ /** Remove a participant from the Meeting. */
41
+ removeParticipant(userId: string): Promise<void>;
42
+ setCamera(device: VideoDeviceInfo, options?: VideoStreamOptions): Promise<void>;
43
+ /** Set the microphone to be used in the meeting. */
44
+ setMicrophone(device: AudioDeviceInfo): Promise<void>;
45
+ /** Set the speaker to be used in the meeting. */
46
+ setSpeaker(device: AudioDeviceInfo): Promise<void>;
47
+ askDevicePermission(constraints: PermissionConstraints): Promise<void>;
48
+ /** Query for available cameras. */
49
+ queryCameras(): Promise<VideoDeviceInfo[]>;
50
+ /** Query for available microphones. */
51
+ queryMicrophones(): Promise<AudioDeviceInfo[]>;
52
+ /** Query for available speakers. */
53
+ querySpeakers(): Promise<AudioDeviceInfo[]>;
54
+ /** Start the camera for the user in the Meeting. */
55
+ startCamera(options?: VideoStreamOptions): Promise<void>;
56
+ /** Stop the camera for the user in the Meeting. */
57
+ stopCamera(): Promise<void>;
58
+ /** Mute the user in the Meeting. */
59
+ mute(): Promise<void>;
60
+ /** Unmute the user in the Meeting. */
61
+ unmute(): Promise<void>;
62
+ /** Trigger the user to start screen share. */
63
+ startScreenShare(): Promise<void>;
64
+ /** Stop the current active screen share. */
65
+ stopScreenShare(): Promise<void>;
66
+ /** Create a stream view for a remote participants video feed. */
67
+ createStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
68
+ /** Dispose of a created stream view of a remote participants video feed. */
69
+ disposeStreamView(remoteUserId?: string, options?: VideoStreamOptions): Promise<void>;
70
+ /** Fetch initial Meeting data such as chat messages. */
71
+ fetchInitialData(): Promise<void>;
72
+ /** Send a chat message. */
73
+ sendMessage(content: string): Promise<void>;
74
+ /** Send a chat read receipt. */
75
+ sendReadReceipt(chatMessageId: string): Promise<void>;
76
+ /** Send an isTyping indicator. */
77
+ sendTypingIndicator(): Promise<void>;
78
+ /** Load previous Meeting chat messages. */
79
+ loadPreviousChatMessages(messagesToLoad: number): Promise<boolean>;
80
+ /** Update an existing message. */
81
+ updateMessage(messageId: string, content: string): Promise<void>;
82
+ /** Delete an existing message. */
83
+ deleteMessage(messageId: string): Promise<void>;
84
+ on(event: 'participantsJoined', listener: ParticipantsJoinedListener): void;
85
+ on(event: 'participantsLeft', listener: ParticipantsLeftListener): void;
86
+ on(event: 'meetingEnded', listener: CallEndedListener): void;
87
+ on(event: 'error', listener: (e: Error) => void): void;
88
+ on(event: 'isMutedChanged', listener: IsMutedChangedListener): void;
89
+ on(event: 'callIdChanged', listener: CallIdChangedListener): void;
90
+ on(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;
91
+ on(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;
92
+ on(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;
93
+ on(event: 'messageReceived', listener: MessageReceivedListener): void;
94
+ on(event: 'messageSent', listener: MessageReceivedListener): void;
95
+ on(event: 'messageRead', listener: MessageReadListener): void;
96
+ off(event: 'participantsJoined', listener: ParticipantsJoinedListener): void;
97
+ off(event: 'participantsLeft', listener: ParticipantsLeftListener): void;
98
+ off(event: 'meetingEnded', listener: CallEndedListener): void;
99
+ off(event: 'error', listener: (e: Error) => void): void;
100
+ off(event: 'isMutedChanged', listener: IsMutedChangedListener): void;
101
+ off(event: 'callIdChanged', listener: CallIdChangedListener): void;
102
+ off(event: 'isLocalScreenSharingActiveChanged', listener: IsLocalScreenSharingActiveChangedListener): void;
103
+ off(event: 'displayNameChanged', listener: DisplayNameChangedListener): void;
104
+ off(event: 'isSpeakingChanged', listener: IsSpeakingChangedListener): void;
105
+ off(event: 'messageReceived', listener: MessageReceivedListener): void;
106
+ off(event: 'messageSent', listener: MessageReceivedListener): void;
107
+ off(event: 'messageRead', listener: MessageReadListener): void;
108
+ }
109
+ /**
110
+ * Arguments for {@link createAzureCommunicationMeetingAdapter}
111
+ *
112
+ * @beta
113
+ */
114
+ export declare type AzureCommunicationMeetingAdapterArgs = {
115
+ endpoint: string;
116
+ userId: CommunicationUserIdentifier;
117
+ displayName: string;
118
+ credential: CommunicationTokenCredential;
119
+ chatThreadId: string;
120
+ callLocator: TeamsMeetingLinkLocator | GroupCallLocator;
121
+ };
122
+ /**
123
+ * Create a meeting adapter backed by Azure Communication services
124
+ * to plug into the Meeting Composite.
125
+ *
126
+ * @beta
127
+ */
128
+ export declare const createAzureCommunicationMeetingAdapter: ({ userId, displayName, credential, endpoint, chatThreadId, callLocator }: AzureCommunicationMeetingAdapterArgs) => Promise<MeetingAdapter>;
129
+ //# sourceMappingURL=AzureCommunicationMeetingAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AzureCommunicationMeetingAdapter.d.ts","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/MeetingComposite/adapter/AzureCommunicationMeetingAdapter.ts"],"names":[],"mappings":"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"}