@microsoft/teams-js 2.30.0-beta.0 → 2.31.0-beta.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 (136) hide show
  1. package/README.md +4 -4
  2. package/dist/esm/_virtual/__polyfill-node.os.js +1 -0
  3. package/dist/esm/_virtual/_polyfill-node.os.js +1 -0
  4. package/dist/esm/node_modules/.pnpm/debug@4.3.5/node_modules/debug/src/node.js +1 -1
  5. package/dist/esm/node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js +1 -0
  6. package/dist/esm/node_modules/.pnpm/supports-color@7.2.0/node_modules/supports-color/index.js +1 -0
  7. package/dist/esm/packages/teams-js/dts/index.d.ts +2 -0
  8. package/dist/esm/packages/teams-js/dts/internal/VideoFrameTypes.d.ts +78 -0
  9. package/dist/esm/packages/teams-js/dts/internal/appHelpers.d.ts +8 -0
  10. package/dist/esm/packages/teams-js/dts/internal/appIdValidation.d.ts +16 -0
  11. package/dist/esm/packages/teams-js/dts/internal/communication.d.ts +162 -0
  12. package/dist/esm/packages/teams-js/dts/internal/constants.d.ts +146 -0
  13. package/dist/esm/packages/teams-js/dts/internal/deepLinkConstants.d.ts +26 -0
  14. package/dist/esm/packages/teams-js/dts/internal/deepLinkUtilities.d.ts +4 -0
  15. package/dist/esm/packages/teams-js/dts/internal/emailAddressValidation.d.ts +1 -0
  16. package/dist/esm/packages/teams-js/dts/internal/globalVars.d.ts +12 -0
  17. package/dist/esm/packages/teams-js/dts/internal/handlers.d.ts +80 -0
  18. package/dist/esm/packages/teams-js/dts/internal/interfaces.d.ts +47 -0
  19. package/dist/esm/packages/teams-js/dts/internal/internalAPIs.d.ts +61 -0
  20. package/dist/esm/packages/teams-js/dts/internal/marketplaceUtils.d.ts +94 -0
  21. package/dist/esm/packages/teams-js/dts/internal/mediaUtil.d.ts +95 -0
  22. package/dist/esm/packages/teams-js/dts/internal/messageObjects.d.ts +73 -0
  23. package/dist/esm/packages/teams-js/dts/internal/nestedAppAuthUtils.d.ts +105 -0
  24. package/dist/esm/packages/teams-js/dts/internal/profileUtil.d.ts +11 -0
  25. package/dist/esm/packages/teams-js/dts/internal/responseHandler.d.ts +30 -0
  26. package/dist/esm/packages/teams-js/dts/internal/telemetry.d.ts +344 -0
  27. package/dist/esm/packages/teams-js/dts/internal/typeCheckUtilities.d.ts +1 -0
  28. package/dist/esm/packages/teams-js/dts/internal/utils.d.ts +200 -0
  29. package/dist/esm/packages/teams-js/dts/internal/uuidObject.d.ts +11 -0
  30. package/dist/esm/packages/teams-js/dts/internal/validOrigins.d.ts +6 -0
  31. package/dist/esm/packages/teams-js/dts/internal/videoEffectsUtils.d.ts +31 -0
  32. package/dist/esm/packages/teams-js/dts/internal/videoFrameTick.d.ts +10 -0
  33. package/dist/esm/packages/teams-js/dts/internal/videoPerformanceMonitor.d.ts +54 -0
  34. package/dist/esm/packages/teams-js/dts/internal/videoPerformanceStatistics.d.ts +49 -0
  35. package/dist/esm/packages/teams-js/dts/private/appEntity.d.ts +89 -0
  36. package/dist/esm/packages/teams-js/dts/private/constants.d.ts +9 -0
  37. package/dist/esm/packages/teams-js/dts/private/conversations.d.ts +152 -0
  38. package/dist/esm/packages/teams-js/dts/private/copilot.d.ts +39 -0
  39. package/dist/esm/packages/teams-js/dts/private/externalAppAuthentication.d.ts +378 -0
  40. package/dist/esm/packages/teams-js/dts/private/externalAppAuthenticationForCEA.d.ts +75 -0
  41. package/dist/esm/packages/teams-js/dts/private/externalAppCardActions.d.ts +112 -0
  42. package/dist/esm/packages/teams-js/dts/private/externalAppCardActionsForCEA.d.ts +49 -0
  43. package/dist/esm/packages/teams-js/dts/private/externalAppCommands.d.ts +123 -0
  44. package/dist/esm/packages/teams-js/dts/private/files.d.ts +758 -0
  45. package/dist/esm/packages/teams-js/dts/private/hostEntity.d.ts +176 -0
  46. package/dist/esm/packages/teams-js/dts/private/index.d.ts +20 -0
  47. package/dist/esm/packages/teams-js/dts/private/interfaces.d.ts +250 -0
  48. package/dist/esm/packages/teams-js/dts/private/logs.d.ts +25 -0
  49. package/dist/esm/packages/teams-js/dts/private/meetingRoom.d.ts +203 -0
  50. package/dist/esm/packages/teams-js/dts/private/messageChannels.d.ts +107 -0
  51. package/dist/esm/packages/teams-js/dts/private/notifications.d.ts +26 -0
  52. package/dist/esm/packages/teams-js/dts/private/otherAppStateChange.d.ts +81 -0
  53. package/dist/esm/packages/teams-js/dts/private/privateAPIs.d.ts +60 -0
  54. package/dist/esm/packages/teams-js/dts/private/remoteCamera.d.ts +298 -0
  55. package/dist/esm/packages/teams-js/dts/private/teams.d.ts +116 -0
  56. package/dist/esm/packages/teams-js/dts/private/videoEffectsEx.d.ts +244 -0
  57. package/dist/esm/packages/teams-js/dts/public/adaptiveCards.d.ts +6 -0
  58. package/dist/esm/packages/teams-js/dts/public/app.d.ts +592 -0
  59. package/dist/esm/packages/teams-js/dts/public/appId.d.ts +33 -0
  60. package/dist/esm/packages/teams-js/dts/public/appInitialization.d.ts +57 -0
  61. package/dist/esm/packages/teams-js/dts/public/appInstallDialog.d.ts +18 -0
  62. package/dist/esm/packages/teams-js/dts/public/appWindow.d.ts +66 -0
  63. package/dist/esm/packages/teams-js/dts/public/authentication.d.ts +409 -0
  64. package/dist/esm/packages/teams-js/dts/public/barCode.d.ts +53 -0
  65. package/dist/esm/packages/teams-js/dts/public/calendar.d.ts +40 -0
  66. package/dist/esm/packages/teams-js/dts/public/call.d.ts +53 -0
  67. package/dist/esm/packages/teams-js/dts/public/chat.d.ts +66 -0
  68. package/dist/esm/packages/teams-js/dts/public/clipboard.d.ts +34 -0
  69. package/dist/esm/packages/teams-js/dts/public/constants.d.ts +179 -0
  70. package/dist/esm/packages/teams-js/dts/public/dialog.d.ts +286 -0
  71. package/dist/esm/packages/teams-js/dts/public/emailAddress.d.ts +12 -0
  72. package/dist/esm/packages/teams-js/dts/public/geoLocation.d.ts +100 -0
  73. package/dist/esm/packages/teams-js/dts/public/index.d.ts +44 -0
  74. package/dist/esm/packages/teams-js/dts/public/interfaces.d.ts +1133 -0
  75. package/dist/esm/packages/teams-js/dts/public/liveShareHost.d.ts +221 -0
  76. package/dist/esm/packages/teams-js/dts/public/location.d.ts +86 -0
  77. package/dist/esm/packages/teams-js/dts/public/mail.d.ts +95 -0
  78. package/dist/esm/packages/teams-js/dts/public/marketplace.d.ts +321 -0
  79. package/dist/esm/packages/teams-js/dts/public/media.d.ts +440 -0
  80. package/dist/esm/packages/teams-js/dts/public/meeting.d.ts +906 -0
  81. package/dist/esm/packages/teams-js/dts/public/menus.d.ts +188 -0
  82. package/dist/esm/packages/teams-js/dts/public/monetization.d.ts +58 -0
  83. package/dist/esm/packages/teams-js/dts/public/navigation.d.ts +45 -0
  84. package/dist/esm/packages/teams-js/dts/public/nestedAppAuth.d.ts +15 -0
  85. package/dist/esm/packages/teams-js/dts/public/pages.d.ts +574 -0
  86. package/dist/esm/packages/teams-js/dts/public/people.d.ts +75 -0
  87. package/dist/esm/packages/teams-js/dts/public/profile.d.ts +127 -0
  88. package/dist/esm/packages/teams-js/dts/public/publicAPIs.d.ts +218 -0
  89. package/dist/esm/packages/teams-js/dts/public/runtime.d.ts +207 -0
  90. package/dist/esm/packages/teams-js/dts/public/search.d.ts +91 -0
  91. package/dist/esm/packages/teams-js/dts/public/secondaryBrowser.d.ts +32 -0
  92. package/dist/esm/packages/teams-js/dts/public/serializable.interface.d.ts +17 -0
  93. package/dist/esm/packages/teams-js/dts/public/settings.d.ts +101 -0
  94. package/dist/esm/packages/teams-js/dts/public/sharing.d.ts +124 -0
  95. package/dist/esm/packages/teams-js/dts/public/stageView.d.ts +104 -0
  96. package/dist/esm/packages/teams-js/dts/public/tasks.d.ts +62 -0
  97. package/dist/esm/packages/teams-js/dts/public/teamsAPIs.d.ts +77 -0
  98. package/dist/esm/packages/teams-js/dts/public/thirdPartyCloudStorage.d.ts +119 -0
  99. package/dist/esm/packages/teams-js/dts/public/version.d.ts +5 -0
  100. package/dist/esm/packages/teams-js/dts/public/videoEffects.d.ts +213 -0
  101. package/dist/esm/packages/teams-js/dts/public/visualMedia.d.ts +192 -0
  102. package/dist/esm/packages/teams-js/dts/public/webStorage.d.ts +27 -0
  103. package/dist/esm/packages/teams-js/src/artifactsForCDN/validDomains.json.js +1 -1
  104. package/dist/esm/packages/teams-js/src/index.js +1 -1
  105. package/dist/esm/packages/teams-js/src/internal/appHelpers.js +1 -0
  106. package/dist/esm/packages/teams-js/src/internal/communication.js +1 -1
  107. package/dist/esm/packages/teams-js/src/internal/deepLinkUtilities.js +1 -1
  108. package/dist/esm/packages/teams-js/src/internal/responseHandler.js +1 -0
  109. package/dist/esm/packages/teams-js/src/private/externalAppAuthentication.js +1 -1
  110. package/dist/esm/packages/teams-js/src/private/externalAppAuthenticationForCEA.js +1 -1
  111. package/dist/esm/packages/teams-js/src/private/hostEntity.js +1 -1
  112. package/dist/esm/packages/teams-js/src/private/videoEffectsEx.js +1 -1
  113. package/dist/esm/packages/teams-js/src/public/app.js +1 -1
  114. package/dist/esm/packages/teams-js/src/public/appId.js +1 -1
  115. package/dist/esm/packages/teams-js/src/public/appInitialization.js +1 -1
  116. package/dist/esm/packages/teams-js/src/public/appInstallDialog.js +1 -1
  117. package/dist/esm/packages/teams-js/src/public/authentication.js +1 -1
  118. package/dist/esm/packages/teams-js/src/public/barCode.js +1 -1
  119. package/dist/esm/packages/teams-js/src/public/calendar.js +1 -1
  120. package/dist/esm/packages/teams-js/src/public/call.js +1 -1
  121. package/dist/esm/packages/teams-js/src/public/clipboard.js +1 -1
  122. package/dist/esm/packages/teams-js/src/public/constants.js +1 -1
  123. package/dist/esm/packages/teams-js/src/public/pages.js +1 -1
  124. package/dist/esm/packages/teams-js/src/public/publicAPIs.js +1 -1
  125. package/dist/esm/packages/teams-js/src/public/serializable.interface.js +1 -0
  126. package/dist/esm/packages/teams-js/src/public/settings.js +1 -1
  127. package/dist/esm/packages/teams-js/src/public/tasks.js +1 -1
  128. package/dist/esm/packages/teams-js/src/public/version.js +1 -1
  129. package/dist/esm/packages/teams-js/src/public/webStorage.js +1 -1
  130. package/dist/umd/MicrosoftTeams.d.ts +10740 -10768
  131. package/dist/umd/MicrosoftTeams.js +1572 -1360
  132. package/dist/umd/MicrosoftTeams.js.map +1 -1
  133. package/dist/umd/MicrosoftTeams.min.js +1 -1
  134. package/dist/umd/MicrosoftTeams.min.js.map +1 -1
  135. package/package.json +1 -1
  136. package/dist/esm/node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/browser.js +0 -1
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Namespace to video extensibility of the SDK
3
+ * @beta
4
+ */
5
+ export declare namespace videoEffects {
6
+ /** Notify video frame processed function type */
7
+ type notifyVideoFrameProcessedFunctionType = () => void;
8
+ /** Notify error function type */
9
+ type notifyErrorFunctionType = (errorMessage: string) => void;
10
+ /**
11
+ * Represents a video frame
12
+ * @beta
13
+ */
14
+ interface VideoBufferData {
15
+ /**
16
+ * Video frame width
17
+ */
18
+ width: number;
19
+ /**
20
+ * Video frame height
21
+ */
22
+ height: number;
23
+ /**
24
+ * Video frame buffer
25
+ */
26
+ videoFrameBuffer: Uint8ClampedArray;
27
+ /**
28
+ * NV12 luma stride, valid only when video frame format is NV12
29
+ */
30
+ lumaStride?: number;
31
+ /**
32
+ * NV12 chroma stride, valid only when video frame format is NV12
33
+ */
34
+ chromaStride?: number;
35
+ /**
36
+ * RGB stride, valid only when video frame format is RGB
37
+ */
38
+ stride?: number;
39
+ /**
40
+ * The time stamp of the current video frame
41
+ */
42
+ timestamp?: number;
43
+ }
44
+ /**
45
+ * Video frame format enum, currently only support NV12
46
+ * @beta
47
+ */
48
+ enum VideoFrameFormat {
49
+ /** Video format used for encoding and decoding YUV color data in video streaming and storage applications. */
50
+ NV12 = "NV12"
51
+ }
52
+ /**
53
+ * Video frame configuration supplied to the host to customize the generated video frame parameters, like format
54
+ * @beta
55
+ */
56
+ interface VideoFrameConfig {
57
+ /**
58
+ * Video format
59
+ */
60
+ format: VideoFrameFormat;
61
+ }
62
+ /**
63
+ * Video effect change type enum
64
+ * @beta
65
+ */
66
+ enum EffectChangeType {
67
+ /**
68
+ * Current video effect changed
69
+ */
70
+ EffectChanged = "EffectChanged",
71
+ /**
72
+ * Disable the video effect
73
+ */
74
+ EffectDisabled = "EffectDisabled"
75
+ }
76
+ /**
77
+ * Predefined failure reasons for preparing the selected video effect
78
+ * @beta
79
+ */
80
+ enum EffectFailureReason {
81
+ /**
82
+ * A wrong effect id is provide.
83
+ * Use this reason when the effect id is not found or empty, this may indicate a mismatch between the app and its manifest or a bug of the host.
84
+ */
85
+ InvalidEffectId = "InvalidEffectId",
86
+ /**
87
+ * The effect can't be initialized
88
+ */
89
+ InitializationFailure = "InitializationFailure"
90
+ }
91
+ /**
92
+ * Video effect change call back function definition
93
+ * Return a Promise which will be resolved when the effect is prepared, or throw an {@link EffectFailureReason} on error.
94
+ * @beta
95
+ */
96
+ type VideoEffectCallback = (effectId: string | undefined) => Promise<void>;
97
+ /**
98
+ * @beta
99
+ * Video frame call back function definition
100
+ * The callback will be called on every frame when running on the supported host.
101
+ * We require the frame rate of the video to be at least 22fps for 720p, thus the callback should process a frame timely.
102
+ * The video app should call `notifyVideoFrameProcessed` to notify a successfully processed video frame.
103
+ * The video app should call `notifyError` to notify a failure. When the failures accumulate to a certain number, the host will see the app is "frozen" and ask the user to close it or not.
104
+ */
105
+ type VideoBufferHandler = (videoBufferData: VideoBufferData, notifyVideoFrameProcessed: notifyVideoFrameProcessedFunctionType, notifyError: notifyErrorFunctionType) => void;
106
+ /**
107
+ * @beta
108
+ * VideoFrame definition, align with the W3C spec: https://www.w3.org/TR/webcodecs/#videoframe-interface.
109
+ * The current version of typescript doesn't have the definition of VideoFrame so we have to define it here.
110
+ * At runtime it can be cast to VideoFrame directly: `(videoFrame as VideoFrame)`.
111
+ */
112
+ interface VideoFrame {
113
+ }
114
+ /**
115
+ * @beta
116
+ * Video frame data extracted from the media stream. More properties may be added in the future.
117
+ */
118
+ type VideoFrameData = {
119
+ /**
120
+ * The video frame from the media stream.
121
+ */
122
+ videoFrame: VideoFrame;
123
+ };
124
+ /**
125
+ * @beta
126
+ * Video frame call back function definition.
127
+ * The callback will be called on every frame when running on the supported host.
128
+ * We require the frame rate of the video to be at least 22fps for 720p, thus the callback should process a frame timely.
129
+ * The video app should resolve the promise to notify a successfully processed video frame.
130
+ * The video app should reject the promise to notify a failure. When the failures accumulate to a certain number, the host will see the app is "frozen" and ask the user to close it or not.
131
+ */
132
+ type VideoFrameHandler = (receivedVideoFrame: VideoFrameData) => Promise<VideoFrame>;
133
+ /**
134
+ * @beta
135
+ * Callbacks and configuration supplied to the host to process the video frames.
136
+ */
137
+ type RegisterForVideoFrameParameters = {
138
+ /**
139
+ * Callback function to process the video frames extracted from a media stream.
140
+ */
141
+ videoFrameHandler: VideoFrameHandler;
142
+ /**
143
+ * Callback function to process the video frames shared by the host.
144
+ */
145
+ videoBufferHandler: VideoBufferHandler;
146
+ /**
147
+ * Video frame configuration supplied to the host to customize the generated video frame parameters, like format
148
+ */
149
+ config: VideoFrameConfig;
150
+ };
151
+ /**
152
+ * Register callbacks to process the video frames if the host supports it.
153
+ * @beta
154
+ * @param parameters - Callbacks and configuration to process the video frames. A host may support either {@link VideoFrameHandler} or {@link VideoBufferHandler}, but not both.
155
+ * To ensure the video effect works on all supported hosts, the video app must provide both {@link VideoFrameHandler} and {@link VideoBufferHandler}.
156
+ * The host will choose the appropriate callback based on the host's capability.
157
+ *
158
+ * @example
159
+ * ```typescript
160
+ * videoEffects.registerForVideoFrame({
161
+ * videoFrameHandler: async (videoFrameData) => {
162
+ * const originalFrame = videoFrameData.videoFrame as VideoFrame;
163
+ * try {
164
+ * const processedFrame = await processFrame(originalFrame);
165
+ * return processedFrame;
166
+ * } catch (e) {
167
+ * throw e;
168
+ * }
169
+ * },
170
+ * videoBufferHandler: (
171
+ * bufferData: VideoBufferData,
172
+ * notifyVideoFrameProcessed: notifyVideoFrameProcessedFunctionType,
173
+ * notifyError: notifyErrorFunctionType
174
+ * ) => {
175
+ * try {
176
+ * processFrameInplace(bufferData);
177
+ * notifyVideoFrameProcessed();
178
+ * } catch (e) {
179
+ * notifyError(e);
180
+ * }
181
+ * },
182
+ * config: {
183
+ * format: videoEffects.VideoPixelFormat.NV12,
184
+ * }
185
+ * });
186
+ * ```
187
+ */
188
+ function registerForVideoFrame(parameters: RegisterForVideoFrameParameters): void;
189
+ /**
190
+ * Video extension should call this to notify host that the current selected effect parameter changed.
191
+ * If it's pre-meeting, host will call videoEffectCallback immediately then use the videoEffect.
192
+ * If it's the in-meeting scenario, we will call videoEffectCallback when apply button clicked.
193
+ * @beta
194
+ * @param effectChangeType - the effect change type.
195
+ * @param effectId - Newly selected effect id.
196
+ */
197
+ function notifySelectedVideoEffectChanged(effectChangeType: EffectChangeType, effectId: string | undefined): void;
198
+ /**
199
+ * Register a callback to be notified when a new video effect is applied.
200
+ * @beta
201
+ * @param callback - Function to be called when new video effect is applied.
202
+ */
203
+ function registerForVideoEffect(callback: VideoEffectCallback): void;
204
+ /**
205
+ * Checks if video capability is supported by the host.
206
+ * @beta
207
+ * @returns boolean to represent whether the video capability is supported
208
+ *
209
+ * @throws Error if {@linkcode app.initialize} has not successfully completed
210
+ *
211
+ */
212
+ function isSupported(): boolean;
213
+ }
@@ -0,0 +1,192 @@
1
+ /**
2
+ * @hidden
3
+ * Interact with images. Allows the app developer ask the user to get images from their camera / camera roll / file system.
4
+ *
5
+ * @beta
6
+ */
7
+ export declare namespace visualMedia {
8
+ /**
9
+ * @hidden
10
+ * All properties common to Image and Video Props
11
+ *
12
+ * @beta
13
+ */
14
+ interface VisualMediaProps {
15
+ /**
16
+ * @hidden
17
+ * The maximum number of media items that can be selected at once is limited to values that are less than or equal to the maximum visual media selection limit.
18
+ */
19
+ maxVisualMediaCount: number;
20
+ }
21
+ /**
22
+ * @hidden
23
+ * The required value of the visualMedia files from gallery
24
+ *
25
+ * @beta
26
+ */
27
+ export interface GalleryProps {
28
+ /**
29
+ * The visualMedia source
30
+ */
31
+ source: Source.Gallery;
32
+ }
33
+ /**
34
+ * @hidden
35
+ * The required value of the visualMedia files from camera
36
+ *
37
+ * @beta
38
+ */
39
+ export interface CameraProps {
40
+ /**
41
+ * @hidden
42
+ * The visualMedia source
43
+ */
44
+ source: Source.Camera;
45
+ /**
46
+ * @hidden
47
+ * Optional; Specify whether users have the option to switch between the front and rear cameras. The default setting is FrontOrRear.
48
+ * Default value is FrontOrRear
49
+ */
50
+ cameraRestriction?: CameraRestriction;
51
+ }
52
+ /**
53
+ * @hidden
54
+ * Indicate if user is allowed to move between front and back camera or stay in front/back camera only
55
+ * If the camera option requested by the app isn't available, the SDK will silently default to the platform's standard camera.
56
+ *
57
+ * @beta
58
+ */
59
+ export enum CameraRestriction {
60
+ /** User can move between front and back camera */
61
+ FrontOrRear = 1,
62
+ /** User can only use the front camera */
63
+ FrontOnly = 2,
64
+ /** User can only use the back camera */
65
+ RearOnly = 3
66
+ }
67
+ /**
68
+ * @hidden
69
+ * Specifies the image source
70
+ *
71
+ * @beta
72
+ */
73
+ export enum Source {
74
+ /** The camera is the source of visual media. */
75
+ Camera = 1,
76
+ /** The source of visual media is the gallery. */
77
+ Gallery = 2
78
+ }
79
+ /**
80
+ * @hidden
81
+ * VisualMediaFile object that can be used to represent image or video from host apps.
82
+ *
83
+ * @beta
84
+ */
85
+ export interface VisualMediaFile {
86
+ /**
87
+ * @hidden
88
+ * This is the base64 content of file.
89
+ * If app needs to use this directly in HTML tags, it should convert this to a data url.
90
+ */
91
+ content: string;
92
+ /**
93
+ * @hidden
94
+ * The size of file represented in VisualMediaFile in KB
95
+ */
96
+ sizeInKB: number;
97
+ /**
98
+ * @hidden
99
+ * Name of the file (does not include the extension)
100
+ */
101
+ name: string;
102
+ /**
103
+ * @hidden
104
+ * File's MIME type. More information on supported `mimeTypes`(https://docs.lens.xyz/docs/metadata-standards#supported-mime-types-for-imagesaudiovideos).
105
+ */
106
+ mimeType: string;
107
+ }
108
+ /**
109
+ * @hidden
110
+ * Checks whether or not visualMedia has user permission
111
+ * @returns Promise that will resolve with true if the user had granted the app permission to media information(including Camera and Gallery permission), or with false otherwise,
112
+ * In case of an error, promise will reject with the error.
113
+ * @throws NOT_SUPPORTED_ON_PLATFORM Error if the DevicePermission.Media permission has not successfully granted.
114
+ *
115
+ * @beta
116
+ */
117
+ export function hasPermission(): Promise<boolean>;
118
+ /**
119
+ * @hidden
120
+ * Requests user permission for visualMedia
121
+ * @returns Promise that will resolve with true if the user consented permission for media(including Camera and Gallery permission), or with false otherwise,
122
+ * In case of an error, promise will reject with the error.
123
+ * @throws NOT_SUPPORTED_ON_PLATFORM Error if the DevicePermission.Media permission has not successfully granted.
124
+ *
125
+ * @beta
126
+ */
127
+ export function requestPermission(): Promise<boolean>;
128
+ /**
129
+ * @hidden
130
+ * To enable this image capability will let the app developer ask the user to get images from camera/local storage
131
+ *
132
+ * @beta
133
+ */
134
+ export namespace image {
135
+ /**
136
+ * @hidden
137
+ * CameraImageProperties is for the image taken from the camera
138
+ *
139
+ * @beta
140
+ */
141
+ interface CameraImageProperties extends VisualMediaProps {
142
+ /**
143
+ * @hidden
144
+ * The source in CameraImageProperties should always be CameraProps
145
+ */
146
+ sourceProps: CameraProps;
147
+ }
148
+ /**
149
+ * @hidden
150
+ * CameraImageProperties is for the image taken from the camera
151
+ *
152
+ * @beta
153
+ */
154
+ interface GalleryImageProperties extends VisualMediaProps {
155
+ /**
156
+ * @hidden
157
+ * The source in GalleryImageProperties should always be GalleryProps
158
+ */
159
+ sourceProps: GalleryProps;
160
+ }
161
+ /**
162
+ * @hidden
163
+ * Capture one or multiple image(s) using camera.
164
+ * @param cameraImageInputs - The input params to customize the image(s) to be captured
165
+ * @returns Promise that will resolve with {@link VisualMediaFile[]} object or reject with an error.
166
+ * @throws INVALID_ARGUMENTS Error if imageInputs is null or imageInputs.maxVisualMediaCount is greater than maxVisualMediaSelectionLimit or lesser than 1.
167
+ *
168
+ * @beta
169
+ */
170
+ function captureImages(cameraImageInputs: CameraImageProperties): Promise<VisualMediaFile[]>;
171
+ /**
172
+ * @hidden
173
+ * Upload the existing image(s) from the gallery.
174
+ * @param galleryImageInputs - The input params to customize the image(s) to be captured
175
+ * @returns Promise that will resolve with {@link VisualMediaFile[]} object or reject with an error.
176
+ * @throws INVALID_ARGUMENTS Error if imageInputs is null or imageInputs.maxVisualMediaCount is greater than maxVisualMediaSelectionLimit or lesser than 1.
177
+ *
178
+ * @beta
179
+ */
180
+ function retrieveImages(galleryImageInputs: GalleryImageProperties): Promise<VisualMediaFile[]>;
181
+ /**
182
+ * @hidden
183
+ * Checks if visualMedia.image capability is supported by the host
184
+ * @returns boolean to represent whether visualMedia.image is supported
185
+ * @throws Error if {@linkcode app.initialize} has not successfully completed
186
+ *
187
+ * @beta
188
+ */
189
+ function isSupported(): boolean;
190
+ }
191
+ export {};
192
+ }
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Contains functionality enabling apps to query properties about how the host manages web storage (`Window.LocalStorage`)
3
+ *
4
+ * @beta
5
+ */
6
+ export declare namespace webStorage {
7
+ /**
8
+ * Checks if web storage (`Window.LocalStorage`) gets cleared when a user logs out from host
9
+ *
10
+ * @returns `true` if web storage gets cleared on logout and `false` if not
11
+ *
12
+ * @throws `Error` if {@linkcode app.initialize} has not successfully completed
13
+ *
14
+ * @beta
15
+ */
16
+ function isWebStorageClearedOnUserLogOut(): Promise<boolean>;
17
+ /**
18
+ * Checks if webStorage capability is supported by the host
19
+ * @returns boolean to represent whether the webStorage capability is supported
20
+ *
21
+ * @throws Error if {@linkcode app.initialize} has not successfully completed
22
+ *
23
+ * @beta
24
+ */
25
+ function isSupported(): boolean;
26
+ }
27
+ export declare function clearWebStorageCachedHostNameForTests(): void;
@@ -1 +1 @@
1
- var o=["teams.microsoft.com","teams.microsoft.us","gov.teams.microsoft.us","dod.teams.microsoft.us","int.teams.microsoft.com","outlook.office.com","outlook-sdf.office.com","outlook.office365.com","outlook-sdf.office365.com","outlook.live.com","outlook-sdf.live.com","teams.live.com","local.teams.live.com","local.teams.live.com:8080","local.teams.office.com","local.teams.office.com:8080","devspaces.skype.com","*.www.office.com","www.office.com","word.office.com","excel.office.com","powerpoint.office.com","www.officeppe.com","*.www.microsoft365.com","www.microsoft365.com","bing.com","edgeservices.bing.com","work.bing.com","www.bing.com","www.staging-bing-int.com","*.cloud.microsoft","*.m365.cloud.microsoft","edgeapi.freya.svc.cloud.microsoft","copilot.microsoft.com","windows.msn.com","fa000000125.resources.office.net","fa000000129.resources.office.net","fa000000124.resources.office.net","fa000000128.resources.office.net","fa000000136.resources.office.net"],c={validOrigins:o};export{c as default,o as validOrigins};
1
+ var o=["teams.microsoft.com","teams.microsoft.us","gov.teams.microsoft.us","dod.teams.microsoft.us","int.teams.microsoft.com","outlook.office.com","outlook-sdf.office.com","outlook.office365.com","outlook-sdf.office365.com","outlook.live.com","outlook-sdf.live.com","teams.live.com","local.teams.live.com","local.teams.live.com:8080","local.teams.office.com","local.teams.office.com:8080","devspaces.skype.com","*.www.office.com","www.office.com","word.office.com","excel.office.com","powerpoint.office.com","www.officeppe.com","*.www.microsoft365.com","www.microsoft365.com","bing.com","edgeservices.bing.com","work.bing.com","www.bing.com","www.staging-bing-int.com","*.cloud.microsoft","*.m365.cloud.microsoft","chatuxmanager.svc.cloud.microsoft","copilot.microsoft.com","windows.msn.com","fa000000125.resources.office.net","fa000000129.resources.office.net","fa000000124.resources.office.net","fa000000128.resources.office.net","fa000000136.resources.office.net"],c={validOrigins:o};export{c as default,o as validOrigins};
@@ -1 +1 @@
1
- export{logs}from"./private/logs.js";export{NotificationTypes,UserSettingTypes,ViewerActionTypes}from"./private/interfaces.js";export{openFilePreview,registerCustomHandler,registerUserSettingsChangeHandler,sendCustomEvent,sendCustomMessage,uploadCustomApp}from"./private/privateAPIs.js";export{conversations}from"./private/conversations.js";export{copilot}from"./private/copilot.js";export{externalAppAuthentication}from"./private/externalAppAuthentication.js";export{externalAppAuthenticationForCEA}from"./private/externalAppAuthenticationForCEA.js";export{externalAppCardActions}from"./private/externalAppCardActions.js";export{externalAppCardActionsForCEA}from"./private/externalAppCardActionsForCEA.js";export{externalAppCommands}from"./private/externalAppCommands.js";export{files}from"./private/files.js";export{meetingRoom}from"./private/meetingRoom.js";export{messageChannels}from"./private/messageChannels.js";export{notifications}from"./private/notifications.js";export{otherAppStateChange}from"./private/otherAppStateChange.js";export{remoteCamera}from"./private/remoteCamera.js";export{appEntity}from"./private/appEntity.js";export{teams}from"./private/teams.js";export{videoEffectsEx}from"./private/videoEffectsEx.js";export{hostEntity}from"./private/hostEntity.js";export{authentication}from"./public/authentication.js";export{ChannelType,DialogDimension,FrameContexts,HostClientType,HostName,TaskModuleDimension,TeamType,UserTeamRole}from"./public/constants.js";export{ActionObjectType,ErrorCode,FileOpenPreference,SecondaryM365ContentIdName}from"./public/interfaces.js";export{app}from"./public/app.js";export{AppId}from"./public/appId.js";export{EmailAddress}from"./public/emailAddress.js";export{appInstallDialog}from"./public/appInstallDialog.js";export{barCode}from"./public/barCode.js";export{chat}from"./public/chat.js";export{clipboard}from"./public/clipboard.js";export{dialog}from"./public/dialog.js";export{nestedAppAuth}from"./public/nestedAppAuth.js";export{geoLocation}from"./public/geoLocation.js";export{getAdaptiveCardSchemaVersion}from"./public/adaptiveCards.js";export{pages}from"./public/pages.js";export{ChildAppWindow,ParentAppWindow}from"./public/appWindow.js";export{menus}from"./public/menus.js";export{media}from"./public/media.js";export{secondaryBrowser}from"./public/secondaryBrowser.js";export{location}from"./public/location.js";export{meeting}from"./public/meeting.js";export{monetization}from"./public/monetization.js";export{calendar}from"./public/calendar.js";export{mail}from"./public/mail.js";export{teamsCore}from"./public/teamsAPIs.js";export{people}from"./public/people.js";export{profile}from"./public/profile.js";export{videoEffects}from"./public/videoEffects.js";export{search}from"./public/search.js";export{sharing}from"./public/sharing.js";export{stageView}from"./public/stageView.js";export{version}from"./public/version.js";export{visualMedia}from"./public/visualMedia.js";export{webStorage}from"./public/webStorage.js";export{call}from"./public/call.js";export{appInitialization}from"./public/appInitialization.js";export{thirdPartyCloudStorage}from"./public/thirdPartyCloudStorage.js";export{enablePrintCapability,executeDeepLink,getContext,getMruTabInstances,getTabInstances,initialize,initializeWithFrameContext,print,registerAppButtonClickHandler,registerAppButtonHoverEnterHandler,registerAppButtonHoverLeaveHandler,registerBackButtonHandler,registerBeforeUnloadHandler,registerChangeSettingsHandler,registerFocusEnterHandler,registerFullScreenHandler,registerOnLoadHandler,registerOnThemeChangeHandler,setFrameContext,shareDeepLink}from"./public/publicAPIs.js";export{navigateBack,navigateCrossDomain,navigateToTab,returnFocus}from"./public/navigation.js";export{settings}from"./public/settings.js";export{tasks}from"./public/tasks.js";export{LiveShareHost,liveShare}from"./public/liveShareHost.js";export{marketplace}from"./public/marketplace.js";
1
+ export{logs}from"./private/logs.js";export{NotificationTypes,UserSettingTypes,ViewerActionTypes}from"./private/interfaces.js";export{openFilePreview,registerCustomHandler,registerUserSettingsChangeHandler,sendCustomEvent,sendCustomMessage,uploadCustomApp}from"./private/privateAPIs.js";export{conversations}from"./private/conversations.js";export{copilot}from"./private/copilot.js";export{externalAppAuthentication}from"./private/externalAppAuthentication.js";export{externalAppAuthenticationForCEA}from"./private/externalAppAuthenticationForCEA.js";export{externalAppCardActions}from"./private/externalAppCardActions.js";export{externalAppCardActionsForCEA}from"./private/externalAppCardActionsForCEA.js";export{externalAppCommands}from"./private/externalAppCommands.js";export{files}from"./private/files.js";export{meetingRoom}from"./private/meetingRoom.js";export{messageChannels}from"./private/messageChannels.js";export{notifications}from"./private/notifications.js";export{otherAppStateChange}from"./private/otherAppStateChange.js";export{remoteCamera}from"./private/remoteCamera.js";export{appEntity}from"./private/appEntity.js";export{teams}from"./private/teams.js";export{videoEffectsEx}from"./private/videoEffectsEx.js";export{hostEntity}from"./private/hostEntity.js";export{ChannelType,DialogDimension,FrameContexts,HostClientType,HostName,DialogDimension as TaskModuleDimension,TeamType,UserTeamRole}from"./public/constants.js";export{ActionObjectType,ErrorCode,FileOpenPreference,SecondaryM365ContentIdName}from"./public/interfaces.js";export{AppId}from"./public/appId.js";export{EmailAddress}from"./public/emailAddress.js";export{chat}from"./public/chat.js";export{dialog}from"./public/dialog.js";export{nestedAppAuth}from"./public/nestedAppAuth.js";export{geoLocation}from"./public/geoLocation.js";export{getAdaptiveCardSchemaVersion}from"./public/adaptiveCards.js";export{pages}from"./public/pages.js";export{ChildAppWindow,ParentAppWindow}from"./public/appWindow.js";export{menus}from"./public/menus.js";export{media}from"./public/media.js";export{secondaryBrowser}from"./public/secondaryBrowser.js";export{location}from"./public/location.js";export{meeting}from"./public/meeting.js";export{monetization}from"./public/monetization.js";export{mail}from"./public/mail.js";export{teamsCore}from"./public/teamsAPIs.js";export{people}from"./public/people.js";export{profile}from"./public/profile.js";export{videoEffects}from"./public/videoEffects.js";export{search}from"./public/search.js";export{sharing}from"./public/sharing.js";export{stageView}from"./public/stageView.js";export{version}from"./public/version.js";export{visualMedia}from"./public/visualMedia.js";export{webStorage}from"./public/webStorage.js";export{thirdPartyCloudStorage}from"./public/thirdPartyCloudStorage.js";export{enablePrintCapability,executeDeepLink,getContext,getMruTabInstances,getTabInstances,initialize,initializeWithFrameContext,print,registerAppButtonClickHandler,registerAppButtonHoverEnterHandler,registerAppButtonHoverLeaveHandler,registerBackButtonHandler,registerBeforeUnloadHandler,registerChangeSettingsHandler,registerFocusEnterHandler,registerFullScreenHandler,registerOnLoadHandler,registerOnThemeChangeHandler,setFrameContext,shareDeepLink}from"./public/publicAPIs.js";export{navigateBack,navigateCrossDomain,navigateToTab,returnFocus}from"./public/navigation.js";export{tasks}from"./public/tasks.js";export{LiveShareHost,liveShare}from"./public/liveShareHost.js";export{marketplace}from"./public/marketplace.js";import*as e from"./public/authentication.js";export{e as authentication};import*as r from"./public/app.js";export{r as app};import*as t from"./public/appInstallDialog.js";export{t as appInstallDialog};import*as o from"./public/barCode.js";export{o as barCode};import*as p from"./public/clipboard.js";export{p as clipboard};import*as i from"./public/calendar.js";export{i as calendar};import*as a from"./public/call.js";export{a as call};import*as s from"./public/appInitialization.js";export{s as appInitialization};import*as n from"./public/settings.js";export{n as settings};
@@ -0,0 +1 @@
1
+ import{sendMessageToParent as i,sendAndHandleStatusAndReason as e,initializeCommunication as t}from"./communication.js";import{defaultSDKVersionForCompatCheck as n}from"./constants.js";import{GlobalVars as o}from"./globalVars.js";import{registerOnThemeChangeHandler as r,initializeHandlers as s}from"./handlers.js";import{ensureInitializeCalled as a,ensureInitialized as l,processAdditionalValidOrigins as m}from"./internalAPIs.js";import{getLogger as p}from"./telemetry.js";import{isNullOrUndefined as c}from"./typeCheckUtilities.js";import{inServerSideRenderingEnvironment as u,runWithTimeout as f,compareSDKVersions as d}from"./utils.js";import{Messages as g}from"../public/app.js";import{initialize as j}from"../public/authentication.js";import{FrameContexts as S}from"../public/constants.js";import{dialog as z}from"../public/dialog.js";import{menus as w}from"../public/menus.js";import{pages as b}from"../public/pages.js";import{runtime as h,applyRuntimeConfig as y,generateVersionBasedTeamsRuntimeConfig as v,mapTeamsVersionToSupportedCapabilities as x,versionAndPlatformAgnosticTeamsRuntimeConfig as C}from"../public/runtime.js";import{version as P}from"../public/version.js";const D=p("app");function V(i,e){if(u()){return D.extend("initialize")("window object undefined at initialization"),Promise.resolve()}return f((()=>function(i,e){return new Promise((r=>{o.initializeCalled||(o.initializeCalled=!0,s(),o.initializePromise=t(e,i).then((({context:i,clientType:e,runtimeConfig:t,clientSupportedSDKVersion:r=n})=>{o.frameContext=i,o.hostClientType=e,o.clientSupportedSDKVersion=r;try{N("Parsing %s",t);const i=JSON.parse(t);if(N("Checking if %o is a valid runtime object",null!=i?i:"null"),!i||!i.apiVersion)throw new Error("Received runtime config is invalid");t&&y(i)}catch(i){if(!(i instanceof SyntaxError))throw i;try{N("Attempting to parse %s as an SDK version",t),isNaN(d(t,n))||(o.clientSupportedSDKVersion=t);const i=JSON.parse(r);if(N("givenRuntimeConfig parsed to %o",null!=i?i:"null"),!i)throw new Error("givenRuntimeConfig string was successfully parsed. However, it parsed to value of null");y(i)}catch(i){if(!(i instanceof SyntaxError))throw i;y(v(o.clientSupportedSDKVersion,C,x))}}o.initializeCompleted=!0})),j(),w.initialize(),b.config.initialize(),z.initialize()),Array.isArray(e)&&m(e),void 0!==o.initializePromise?r(o.initializePromise):N("GlobalVars.initializePromise is unexpectedly undefined")}))}(i,e)),5e3,new Error("SDK initialization timed out."))}function E(e){i(e,g.AppLoaded,[P])}function K(e,t){i(e,g.ExpectedFailure,[t.reason,t.message])}function A(e,t){i(e,g.Failure,[t.reason,t.message])}function k(e){i(e,g.Success,[P])}const N=D.extend("initializeHelper");function R(i,e){!c(e)&&a(),r(i,e)}function F(i,t){return new Promise((n=>{l(h,S.content,S.sidePanel,S.settings,S.task,S.stage,S.meetingStage),n(e(i,"executeDeepLink",t))}))}export{V as appInitializeHelper,E as notifyAppLoadedHelper,K as notifyExpectedFailureHelper,A as notifyFailureHelper,k as notifySuccessHelper,F as openLinkHelper,R as registerOnThemeChangeHandlerHelper};
@@ -1 +1 @@
1
- import{__awaiter as e}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.0_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{getLogger as n,isFollowingApiVersionTagFormat as i,getApiVersionTag as t}from"./telemetry.js";import{latestRuntimeApiVersion as o}from"../public/runtime.js";import{version as s}from"../public/version.js";import{GlobalVars as r}from"./globalVars.js";import{callHandler as a}from"./handlers.js";import{serializeMessageRequest as d,deserializeMessageResponse as c,deserializeMessageRequest as u,serializeMessageResponse as l}from"./messageObjects.js";import{tryPolyfillWithNestedAppAuthBridge as g}from"./nestedAppAuthUtils.js";import{ssrSafeWindow as p}from"./utils.js";import{UUID as f}from"./uuidObject.js";import{validateOrigin as w}from"./validOrigins.js";const m=n("communication");class h{}class W{}function v(n,i){if(W.messageListener=n=>function(n){return e(this,void 0,void 0,(function*(){if(!n||!n.data||"object"!=typeof n.data)return void C("Unrecognized message format received by app, message being ignored. Message: %o",n);const e=n.source||n.originalEvent&&n.originalEvent.source,i=n.origin||n.originalEvent&&n.originalEvent.origin;return N(e,i).then((o=>{o?(function(e,n){r.isFramelessWindow||h.parentWindow&&!h.parentWindow.closed&&e!==h.parentWindow?h.childWindow&&!h.childWindow.closed&&e!==h.childWindow||(h.childWindow=e,h.childOrigin=n):(h.parentWindow=e,h.parentOrigin=n);h.parentWindow&&h.parentWindow.closed&&(h.parentWindow=null,h.parentOrigin=null);h.childWindow&&h.childWindow.closed&&(h.childWindow=null,h.childOrigin=null);K(h.parentWindow),K(h.childWindow)}(e,i),e===h.parentWindow?_(n):e===h.childWindow&&function(e){if("id"in e.data&&"func"in e.data){const n=u(e.data),[i,o]=a(n.func,n.args);i&&void 0!==o?(z("Returning message %s from child back to child, action: %s.",Z(n),n.func),X(n.id,n.uuid,Array.isArray(o)?o:[o])):(z("Relaying message %s from child to parent, action: %s. Relayed message will have a new id.",Z(n),n.func),S(t("v2","tasks.startTask"),n.func,n.args,((...e)=>{if(h.childWindow){const i=e.pop();z("Message from parent being relayed to child, id: %s",Z(n)),X(n.id,n.uuid,e,i)}})))}}(n)):C("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin, message: %o, source: %o, origin: %o",n,e,i)}))}))}(n),h.currentWindow=h.currentWindow||p(),h.parentWindow=h.currentWindow.parent!==h.currentWindow.self?h.currentWindow.parent:h.currentWindow.opener,h.topWindow=h.currentWindow.top,(h.parentWindow||n)&&h.currentWindow.addEventListener("message",W.messageListener,!1),!h.parentWindow){const e=h.currentWindow;if(!e.nativeInterface)return Promise.reject(new Error("Initialization Failed. No Parent window found."));r.isFramelessWindow=!0,e.onNativeMessage=_}try{return h.parentOrigin="*",T(i,"initialize",[s,o,n]).then((([e,n,i,t])=>(g(t,h.currentWindow,{onMessage:Q,sendPostMessage:R}),{context:e,clientType:n,runtimeConfig:i,clientSupportedSDKVersion:t})))}finally{h.parentOrigin=null}}function M(){h.currentWindow&&h.currentWindow.removeEventListener("message",W.messageListener,!1),h.currentWindow=null,h.parentWindow=null,h.parentOrigin=null,h.childWindow=null,h.childOrigin=null,W.parentMessageQueue=[],W.childMessageQueue=[],W.nextMessageId=0,W.callbacks.clear(),W.promiseCallbacks.clear(),W.portCallbacks.clear(),W.legacyMessageIdsToUuidMap={}}function b(e,n,...i){return T(e,n,i).then((([e])=>e))}function y(e,n,...i){return T(e,n,i).then((([e,n])=>{if(!e)throw new Error(n)}))}function k(e,n,i,...t){return T(e,n,t).then((([e,n])=>{if(!e)throw new Error(n||i)}))}function I(e,n,...i){return T(e,n,i).then((([e,n])=>{if(e)throw e;return n}))}function T(e,n,t=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);return new Promise((i=>{const o=A(e,n,t);var s;i((s=o.uuid,new Promise((e=>{W.promiseCallbacks.set(s,e)}))))}))}function O(e,n,t=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const o=A(e,n,t);return s=o.uuid,new Promise(((e,n)=>{W.portCallbacks.set(s,((i,t)=>{i instanceof MessagePort?e(i):n(t&&t.length>0?t[0]:new Error("Host responded without port or error details."))}))}));var s}function S(e,n,t,o){let s;if(t instanceof Function?o=t:t instanceof Array&&(s=t),!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const r=A(e,n,s);o&&W.callbacks.set(r.uuid,o)}W.parentMessageQueue=[],W.childMessageQueue=[],W.topMessageQueue=[],W.nextMessageId=0,W.callbacks=new Map,W.promiseCallbacks=new Map,W.portCallbacks=new Map,W.legacyMessageIdsToUuidMap={};const j=m.extend("sendNestedAuthRequestToTopWindow");function R(e){const n=j,i=h.topWindow,t=function(e){const n=W.nextMessageId++,i=new f;return W.legacyMessageIdsToUuidMap[n]=i,{id:n,uuid:i,func:"nestedAppAuth.execute",timestamp:Date.now(),args:[],data:e}}(e);return n("Message %s information: %o",Z(t),{actionName:t.func}),P(i,t)}const x=m.extend("sendRequestToTargetWindowHelper");function P(e,n){const i=x,t=J(e),o=d(n);if(r.isFramelessWindow)h.currentWindow&&h.currentWindow.nativeInterface&&(i("Sending message %s to %s via framelessPostMessage interface",Z(o),t),h.currentWindow.nativeInterface.framelessPostMessage(JSON.stringify(o)));else{const s=H(e);e&&s?(i("Sending message %s to %s via postMessage",Z(o),t),e.postMessage(o,s)):(i("Adding message %s to %s message queue",Z(o),t),D(e).push(n))}return n}const E=m.extend("sendMessageToParentHelper");function A(e,n,i){const t=E,o=h.parentWindow,s=function(e,n,i){const t=W.nextMessageId++,o=new f;return W.legacyMessageIdsToUuidMap[t]=o,{id:t,uuid:o,func:n,timestamp:Date.now(),args:i||[],apiVersionTag:e}}(e,n,i);return t("Message %s information: %o",Z(s),{actionName:n,args:i}),P(o,s)}const C=m.extend("processIncomingMessage");const U=m.extend("processAuthBridgeMessage");function Q(e,n){var i,t;const o=U;if(!e||!e.data||"object"!=typeof e.data)return void o("Unrecognized message format received by app, message being ignored. Message: %o",e);const{args:s}=e.data,[,r]=null!=s?s:[],a=(()=>{try{return JSON.parse(r)}catch(e){return null}})();if(!a||"object"!=typeof a||"NestedAppAuthResponse"!==a.messageType)return void o("Unrecognized data format received by app, message being ignored. Message: %o",e);const d=e.source||(null===(i=null==e?void 0:e.originalEvent)||void 0===i?void 0:i.source),c=e.origin||(null===(t=null==e?void 0:e.originalEvent)||void 0===t?void 0:t.origin);d?N(d,c)?(h.topWindow&&!h.topWindow.closed&&d!==h.topWindow||(h.topWindow=d,h.topOrigin=c),h.topWindow&&h.topWindow.closed&&(h.topWindow=null,h.topOrigin=null),K(h.topWindow),n(r)):o("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin"):o("Message being ignored by app because it is coming for a target that is null")}const F=m.extend("shouldProcessIncomingMessage");function N(n,i){return e(this,void 0,void 0,(function*(){if(h.currentWindow&&n===h.currentWindow)return F("Should not process message because it is coming from the current window"),!1;if(h.currentWindow&&h.currentWindow.location&&i&&i===h.currentWindow.location.origin)return!0;{let e;try{e=new URL(i)}catch(e){return F("Message has an invalid origin of %s",i),!1}const n=yield w(e);return n||F("Message has an invalid origin of %s",i),n}}))}const $=m.extend("handleIncomingMessageFromParent");function L(e,n){if(n){const i=[...e].find((([e,i])=>e.toString()===n.toString()));if(i)return i[0]}}function V(e,n){const i=L(n,e.uuid);i&&n.delete(i),e.uuid?W.legacyMessageIdsToUuidMap={}:delete W.legacyMessageIdsToUuidMap[e.id]}function _(e){const n=$;if("id"in e.data&&"number"==typeof e.data.id){const i=e.data,t=c(i),o=function(e){const n=$;if(!e.uuid)return W.legacyMessageIdsToUuidMap[e.id];{const n=e.uuid,i=L(W.callbacks,n);if(i)return i;const t=L(W.promiseCallbacks,n);if(t)return t;const o=L(W.portCallbacks,n);if(o)return o}n("Received message %s that failed to produce a callbackId",Z(e))}(t);if(o){const i=W.callbacks.get(o);n("Received a response from parent for message %s",o.toString()),i&&(n("Invoking the registered callback for message %s with arguments %o",o.toString(),t.args),i.apply(null,[...t.args,t.isPartialResponse]),function(e){return!0===e.data.isPartialResponse}(e)||(n("Removing registered callback for message %s",o.toString()),V(t,W.callbacks)));const s=W.promiseCallbacks.get(o);s&&(n("Invoking the registered promise callback for message %s with arguments %o",o.toString(),t.args),s(t.args),n("Removing registered promise callback for message %s",o.toString()),V(t,W.promiseCallbacks));const r=W.portCallbacks.get(o);if(r){let i;n("Invoking the registered port callback for message %s with arguments %o",o.toString(),t.args),e.ports&&e.ports[0]instanceof MessagePort&&(i=e.ports[0]),r(i,t.args),n("Removing registered port callback for message %s",o.toString()),V(t,W.portCallbacks)}t.uuid&&(W.legacyMessageIdsToUuidMap={})}}else if("func"in e.data&&"string"==typeof e.data.func){const i=e.data;n('Received a message from parent %s, action: "%s"',Z(i),i.func),a(i.func,i.args)}else n("Received an unknown message: %O",e)}const z=m.extend("handleIncomingMessageFromChild");function q(){return h.topWindow!==h.parentWindow}function D(e){return e===h.topWindow&&q()?W.topMessageQueue:e===h.parentWindow?W.parentMessageQueue:e===h.childWindow?W.childMessageQueue:[]}function H(e){return e===h.topWindow&&q()?h.topOrigin:e===h.parentWindow?h.parentOrigin:e===h.childWindow?h.childOrigin:null}function J(e){return e===h.topWindow&&q()?"top":e===h.parentWindow?"parent":e===h.childWindow?"child":null}const B=m.extend("flushMessageQueue");function K(e){const n=H(e),i=D(e),t=J(e);for(;e&&n&&i.length>0;){const o=i.shift();if(o){const i=d(o);B("Flushing message %s from %s message queue via postMessage.",Z(i),t),e.postMessage(i,n)}}}function G(e,n){let i;i=h.currentWindow.setInterval((()=>{0===D(e).length&&(clearInterval(i),n())}),100)}function X(e,n,i,t){const o=h.childWindow,s=function(e,n,i,t){return{id:e,uuid:n,args:i||[],isPartialResponse:t}}(e,n,i,t),r=l(s),a=H(o);o&&a&&o.postMessage(r,a)}function Y(e,n){const i=h.childWindow,t=function(e,n){return{func:e,args:n||[]}}(e,n),o=H(i);i&&o?i.postMessage(t,o):D(i).push(t)}function Z(e){return"uuidAsString"in e?`${e.uuidAsString} (legacy id: ${e.id})`:"uuid"in e&&void 0!==e.uuid?`${e.uuid.toString()} (legacy id: ${e.id})`:`legacy id: ${e.id} (no uuid)`}export{h as Communication,v as initializeCommunication,O as requestPortFromParentWithVersion,I as sendAndHandleSdkError,y as sendAndHandleStatusAndReason,k as sendAndHandleStatusAndReasonWithDefaultError,b as sendAndUnwrap,Y as sendMessageEventToChild,S as sendMessageToParent,T as sendMessageToParentAsync,R as sendNestedAuthRequestToTopWindow,M as uninitializeCommunication,G as waitForMessageQueue};
1
+ import{__awaiter as e}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.0_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{getLogger as n,isFollowingApiVersionTagFormat as i,getApiVersionTag as t}from"./telemetry.js";import{isSdkError as o,ErrorCode as s}from"../public/interfaces.js";import{latestRuntimeApiVersion as r}from"../public/runtime.js";import{isSerializable as a}from"../public/serializable.interface.js";import{version as d}from"../public/version.js";import{GlobalVars as c}from"./globalVars.js";import{callHandler as u}from"./handlers.js";import{serializeMessageRequest as l,deserializeMessageResponse as g,deserializeMessageRequest as p,serializeMessageResponse as f}from"./messageObjects.js";import{tryPolyfillWithNestedAppAuthBridge as w}from"./nestedAppAuthUtils.js";import{ssrSafeWindow as m}from"./utils.js";import{UUID as h}from"./uuidObject.js";import{validateOrigin as W}from"./validOrigins.js";const v=n("communication");class M{}class b{}function y(n,i){if(b.messageListener=n=>function(n){return e(this,void 0,void 0,(function*(){if(!n||!n.data||"object"!=typeof n.data)return void F("Unrecognized message format received by app, message being ignored. Message: %o",n);const e=n.source||n.originalEvent&&n.originalEvent.source,i=n.origin||n.originalEvent&&n.originalEvent.origin;return q(e,i).then((o=>{o?(function(e,n){c.isFramelessWindow||M.parentWindow&&!M.parentWindow.closed&&e!==M.parentWindow?M.childWindow&&!M.childWindow.closed&&e!==M.childWindow||(M.childWindow=e,M.childOrigin=n):(M.parentWindow=e,M.parentOrigin=n);M.parentWindow&&M.parentWindow.closed&&(M.parentWindow=null,M.parentOrigin=null);M.childWindow&&M.childWindow.closed&&(M.childWindow=null,M.childOrigin=null);ne(M.parentWindow),ne(M.childWindow)}(e,i),e===M.parentWindow?B(n):e===M.childWindow&&function(e){if("id"in e.data&&"func"in e.data){const n=p(e.data),[i,o]=u(n.func,n.args);i&&void 0!==o?(K("Returning message %s from child back to child, action: %s.",se(n),n.func),te(n.id,n.uuid,Array.isArray(o)?o:[o])):(K("Relaying message %s from child to parent, action: %s. Relayed message will have a new id.",se(n),n.func),C(t("v2","tasks.startTask"),n.func,n.args,((...e)=>{if(M.childWindow){const i=e.pop();K("Message from parent being relayed to child, id: %s",se(n)),te(n.id,n.uuid,e,i)}})))}}(n)):F("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin, message: %o, source: %o, origin: %o",n,e,i)}))}))}(n),M.currentWindow=M.currentWindow||m(),M.parentWindow=M.currentWindow.parent!==M.currentWindow.self?M.currentWindow.parent:M.currentWindow.opener,M.topWindow=M.currentWindow.top,(M.parentWindow||n)&&M.currentWindow.addEventListener("message",b.messageListener,!1),!M.parentWindow){const e=M.currentWindow;if(!e.nativeInterface)return Promise.reject(new Error("Initialization Failed. No Parent window found."));c.isFramelessWindow=!0,e.onNativeMessage=B}try{return M.parentOrigin="*",T(i,"initialize",[d,r,n]).then((([e,n,i,t])=>(w(t,M.currentWindow,{onMessage:_,sendPostMessage:N}),{context:e,clientType:n,runtimeConfig:i,clientSupportedSDKVersion:t})))}finally{M.parentOrigin=null}}function k(){M.currentWindow&&M.currentWindow.removeEventListener("message",b.messageListener,!1),M.currentWindow=null,M.parentWindow=null,M.parentOrigin=null,M.childWindow=null,M.childOrigin=null,b.parentMessageQueue=[],b.childMessageQueue=[],b.nextMessageId=0,b.callbacks.clear(),b.promiseCallbacks.clear(),b.portCallbacks.clear(),b.legacyMessageIdsToUuidMap={}}function I(e,n,...i){return T(e,n,i).then((([e])=>e))}function R(e,n,...i){return T(e,n,i).then((([e,n])=>{if(!e)throw new Error(n)}))}function E(e,n,i,...t){return T(e,n,t).then((([e,n])=>{if(!e)throw new Error(n||i)}))}function O(e,n,...i){return T(e,n,i).then((([e,n])=>{if(e)throw e;return n}))}function T(e,n,t=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);return new Promise((i=>{const o=z(e,n,t);var s;i((s=o.uuid,new Promise((e=>{b.promiseCallbacks.set(s,e)}))))}))}function S(e){return e.map((e=>a(e)?e.serialize():e))}function j(n,i,t,r,a){var d;return e(this,void 0,void 0,(function*(){const e=S(i),[c]=yield T(r,n,e);if(a&&a(c)||!a&&o(c))throw new Error(`${c.errorCode}, message: ${null!==(d=c.message)&&void 0!==d?d:"None"}`);if(t.validate(c))return t.deserialize(c);throw new Error(`${s.INTERNAL_ERROR}, message: Invalid response from host - ${JSON.stringify(c)}`)}))}function x(n,i,t,r){var a;return e(this,void 0,void 0,(function*(){const e=S(i),[d]=yield T(t,n,e);if(r&&r(d)||!r&&o(d))throw new Error(`${d.errorCode}, message: ${null!==(a=d.message)&&void 0!==a?a:"None"}`);if(void 0!==d)throw new Error(`${s.INTERNAL_ERROR}, message: Invalid response from host`)}))}function A(e,n,t=void 0){if(!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const o=z(e,n,t);return s=o.uuid,new Promise(((e,n)=>{b.portCallbacks.set(s,((i,t)=>{i instanceof MessagePort?e(i):n(t&&t.length>0?t[0]:new Error("Host responded without port or error details."))}))}));var s}function C(e,n,t,o){let s;if(t instanceof Function?o=t:t instanceof Array&&(s=t),!i(e))throw Error(`apiVersionTag: ${e} passed in doesn't follow the pattern starting with 'v' followed by digits, then underscore with words, please check.`);const r=z(e,n,s);o&&b.callbacks.set(r.uuid,o)}b.parentMessageQueue=[],b.childMessageQueue=[],b.topMessageQueue=[],b.nextMessageId=0,b.callbacks=new Map,b.promiseCallbacks=new Map,b.portCallbacks=new Map,b.legacyMessageIdsToUuidMap={};const P=v.extend("sendNestedAuthRequestToTopWindow");function N(e){const n=P,i=M.topWindow,t=function(e){const n=b.nextMessageId++,i=new h;return b.legacyMessageIdsToUuidMap[n]=i,{id:n,uuid:i,func:"nestedAppAuth.execute",timestamp:Date.now(),args:[],data:e}}(e);return n("Message %s information: %o",se(t),{actionName:t.func}),U(i,t)}const $=v.extend("sendRequestToTargetWindowHelper");function U(e,n){const i=$,t=Z(e),o=l(n);if(c.isFramelessWindow)M.currentWindow&&M.currentWindow.nativeInterface&&(i("Sending message %s to %s via framelessPostMessage interface",se(o),t),M.currentWindow.nativeInterface.framelessPostMessage(JSON.stringify(o)));else{const s=Y(e);e&&s?(i("Sending message %s to %s via postMessage",se(o),t),e.postMessage(o,s)):(i("Adding message %s to %s message queue",se(o),t),X(e).push(n))}return n}const Q=v.extend("sendMessageToParentHelper");function z(e,n,i){const t=Q,o=M.parentWindow,s=function(e,n,i){const t=b.nextMessageId++,o=new h;return b.legacyMessageIdsToUuidMap[t]=o,{id:t,uuid:o,func:n,timestamp:Date.now(),args:i||[],apiVersionTag:e}}(e,n,i);return t("Message %s information: %o",se(s),{actionName:n,args:i}),U(o,s)}const F=v.extend("processIncomingMessage");const L=v.extend("processAuthBridgeMessage");function _(e,n){var i,t;const o=L;if(!e||!e.data||"object"!=typeof e.data)return void o("Unrecognized message format received by app, message being ignored. Message: %o",e);const{args:s}=e.data,[,r]=null!=s?s:[],a=(()=>{try{return JSON.parse(r)}catch(e){return null}})();if(!a||"object"!=typeof a||"NestedAppAuthResponse"!==a.messageType)return void o("Unrecognized data format received by app, message being ignored. Message: %o",e);const d=e.source||(null===(i=null==e?void 0:e.originalEvent)||void 0===i?void 0:i.source),c=e.origin||(null===(t=null==e?void 0:e.originalEvent)||void 0===t?void 0:t.origin);d?q(d,c)?(M.topWindow&&!M.topWindow.closed&&d!==M.topWindow||(M.topWindow=d,M.topOrigin=c),M.topWindow&&M.topWindow.closed&&(M.topWindow=null,M.topOrigin=null),ne(M.topWindow),n(r)):o("Message being ignored by app because it is either coming from the current window or a different window with an invalid origin"):o("Message being ignored by app because it is coming for a target that is null")}const V=v.extend("shouldProcessIncomingMessage");function q(n,i){return e(this,void 0,void 0,(function*(){if(M.currentWindow&&n===M.currentWindow)return V("Should not process message because it is coming from the current window"),!1;if(M.currentWindow&&M.currentWindow.location&&i&&i===M.currentWindow.location.origin)return!0;{let e;try{e=new URL(i)}catch(e){return V("Message has an invalid origin of %s",i),!1}const n=yield W(e);return n||V("Message has an invalid origin of %s",i),n}}))}const D=v.extend("handleIncomingMessageFromParent");function H(e,n){if(n){const i=[...e].find((([e,i])=>e.toString()===n.toString()));if(i)return i[0]}}function J(e,n){const i=H(n,e.uuid);i&&n.delete(i),e.uuid?b.legacyMessageIdsToUuidMap={}:delete b.legacyMessageIdsToUuidMap[e.id]}function B(e){const n=D;if("id"in e.data&&"number"==typeof e.data.id){const i=e.data,t=g(i),o=function(e){const n=D;if(!e.uuid)return b.legacyMessageIdsToUuidMap[e.id];{const n=e.uuid,i=H(b.callbacks,n);if(i)return i;const t=H(b.promiseCallbacks,n);if(t)return t;const o=H(b.portCallbacks,n);if(o)return o}n("Received message %s that failed to produce a callbackId",se(e))}(t);if(o){const i=b.callbacks.get(o);n("Received a response from parent for message %s",o.toString()),i&&(n("Invoking the registered callback for message %s with arguments %o",o.toString(),t.args),i.apply(null,[...t.args,t.isPartialResponse]),function(e){return!0===e.data.isPartialResponse}(e)||(n("Removing registered callback for message %s",o.toString()),J(t,b.callbacks)));const s=b.promiseCallbacks.get(o);s&&(n("Invoking the registered promise callback for message %s with arguments %o",o.toString(),t.args),s(t.args),n("Removing registered promise callback for message %s",o.toString()),J(t,b.promiseCallbacks));const r=b.portCallbacks.get(o);if(r){let i;n("Invoking the registered port callback for message %s with arguments %o",o.toString(),t.args),e.ports&&e.ports[0]instanceof MessagePort&&(i=e.ports[0]),r(i,t.args),n("Removing registered port callback for message %s",o.toString()),J(t,b.portCallbacks)}t.uuid&&(b.legacyMessageIdsToUuidMap={})}}else if("func"in e.data&&"string"==typeof e.data.func){const i=e.data;n('Received a message from parent %s, action: "%s"',se(i),i.func),u(i.func,i.args)}else n("Received an unknown message: %O",e)}const K=v.extend("handleIncomingMessageFromChild");function G(){return M.topWindow!==M.parentWindow}function X(e){return e===M.topWindow&&G()?b.topMessageQueue:e===M.parentWindow?b.parentMessageQueue:e===M.childWindow?b.childMessageQueue:[]}function Y(e){return e===M.topWindow&&G()?M.topOrigin:e===M.parentWindow?M.parentOrigin:e===M.childWindow?M.childOrigin:null}function Z(e){return e===M.topWindow&&G()?"top":e===M.parentWindow?"parent":e===M.childWindow?"child":null}const ee=v.extend("flushMessageQueue");function ne(e){const n=Y(e),i=X(e),t=Z(e);for(;e&&n&&i.length>0;){const o=i.shift();if(o){const i=l(o);ee("Flushing message %s from %s message queue via postMessage.",se(i),t),e.postMessage(i,n)}}}function ie(e,n){let i;i=M.currentWindow.setInterval((()=>{0===X(e).length&&(clearInterval(i),n())}),100)}function te(e,n,i,t){const o=M.childWindow,s=function(e,n,i,t){return{id:e,uuid:n,args:i||[],isPartialResponse:t}}(e,n,i,t),r=f(s),a=Y(o);o&&a&&o.postMessage(r,a)}function oe(e,n){const i=M.childWindow,t=function(e,n){return{func:e,args:n||[]}}(e,n),o=Y(i);i&&o?i.postMessage(t,o):X(i).push(t)}function se(e){return"uuidAsString"in e?`${e.uuidAsString} (legacy id: ${e.id})`:"uuid"in e&&void 0!==e.uuid?`${e.uuid.toString()} (legacy id: ${e.id})`:`legacy id: ${e.id} (no uuid)`}export{M as Communication,x as callFunctionInHost,j as callFunctionInHostAndHandleResponse,y as initializeCommunication,A as requestPortFromParentWithVersion,O as sendAndHandleSdkError,R as sendAndHandleStatusAndReason,E as sendAndHandleStatusAndReasonWithDefaultError,I as sendAndUnwrap,oe as sendMessageEventToChild,C as sendMessageToParent,T as sendMessageToParentAsync,N as sendNestedAuthRequestToTopWindow,k as uninitializeCommunication,ie as waitForMessageQueue};
@@ -1 +1 @@
1
- import{teamsDeepLinkProtocol as n,teamsDeepLinkHost as o}from"./constants.js";import{teamsDeepLinkUsersUrlParameterName as e,teamsDeepLinkUrlPathForChat as t,teamsDeepLinkUrlPathForCall as $,teamsDeepLinkAttendeesUrlParameterName as i,teamsDeepLinkUrlPathForCalendar as r,teamsDeepLinkUrlPathForAppInstall as d,teamsDeepLinkTopicUrlParameterName as p,teamsDeepLinkMessageUrlParameterName as c,teamsDeepLinkWithVideoUrlParameterName as a,teamsDeepLinkSourceUrlParameterName as m,teamsDeepLinkStartTimeUrlParameterName as s,teamsDeepLinkEndTimeUrlParameterName as C,teamsDeepLinkSubjectUrlParameterName as I,teamsDeepLinkContentUrlParameterName as l}from"./deepLinkConstants.js";function u($,i,r){if(0===$.length)throw new Error("Must have at least one user when creating a chat deep link");const d=`${e}=`+$.map((n=>encodeURIComponent(n))).join(","),a=void 0===i?"":`&${p}=${encodeURIComponent(i)}`,m=void 0===r?"":`&${c}=${encodeURIComponent(r)}`;return`${n}://${o}${t}?${d}${a}${m}`}function R(t,i,r){if(0===t.length)throw new Error("Must have at least one target when creating a call deep link");const d=`${e}=`+t.map((n=>encodeURIComponent(n))).join(","),p=void 0===i?"":`&${a}=${encodeURIComponent(i)}`,c=void 0===r?"":`&${m}=${encodeURIComponent(r)}`;return`${n}://${o}${$}?${d}${p}${c}`}function U(e,t,$,d,p){const c=void 0===e?"":`${i}=`+e.map((n=>encodeURIComponent(n))).join(","),a=void 0===t?"":`&${s}=${encodeURIComponent(t)}`,m=void 0===$?"":`&${C}=${encodeURIComponent($)}`,u=void 0===d?"":`&${I}=${encodeURIComponent(d)}`,R=void 0===p?"":`&${l}=${encodeURIComponent(p)}`;return`${n}://${o}${r}?${c}${a}${m}${u}${R}`}function h(e){if(!e)throw new Error("App ID must be set when creating an app install dialog deep link");return`${n}://${o}${d}${encodeURIComponent(e)}`}export{h as createTeamsDeepLinkForAppInstallDialog,U as createTeamsDeepLinkForCalendar,R as createTeamsDeepLinkForCall,u as createTeamsDeepLinkForChat};
1
+ import{teamsDeepLinkProtocol as n,teamsDeepLinkHost as o}from"./constants.js";import{teamsDeepLinkUsersUrlParameterName as e,teamsDeepLinkUrlPathForCall as t,teamsDeepLinkAttendeesUrlParameterName as $,teamsDeepLinkUrlPathForCalendar as i,teamsDeepLinkUrlPathForAppInstall as r,teamsDeepLinkUrlPathForChat as d,teamsDeepLinkWithVideoUrlParameterName as p,teamsDeepLinkSourceUrlParameterName as c,teamsDeepLinkStartTimeUrlParameterName as a,teamsDeepLinkEndTimeUrlParameterName as m,teamsDeepLinkSubjectUrlParameterName as s,teamsDeepLinkContentUrlParameterName as C,teamsDeepLinkTopicUrlParameterName as I,teamsDeepLinkMessageUrlParameterName as l}from"./deepLinkConstants.js";function u(t,$,i){if(0===t.length)throw new Error("Must have at least one user when creating a chat deep link");const r=`${e}=`+t.map((n=>encodeURIComponent(n))).join(","),p=void 0===$?"":`&${I}=${encodeURIComponent($)}`,c=void 0===i?"":`&${l}=${encodeURIComponent(i)}`;return`${n}://${o}${d}?${r}${p}${c}`}function R($,i,r){if(0===$.length)throw new Error("Must have at least one target when creating a call deep link");const d=`${e}=`+$.map((n=>encodeURIComponent(n))).join(","),a=void 0===i?"":`&${p}=${encodeURIComponent(i)}`,m=void 0===r?"":`&${c}=${encodeURIComponent(r)}`;return`${n}://${o}${t}?${d}${a}${m}`}function U(e,t,r,d,p){const c=void 0===e?"":`${$}=`+e.map((n=>encodeURIComponent(n))).join(","),I=void 0===t?"":`&${a}=${encodeURIComponent(t)}`,l=void 0===r?"":`&${m}=${encodeURIComponent(r)}`,u=void 0===d?"":`&${s}=${encodeURIComponent(d)}`,R=void 0===p?"":`&${C}=${encodeURIComponent(p)}`;return`${n}://${o}${i}?${c}${I}${l}${u}${R}`}function h(e){if(!e)throw new Error("App ID must be set when creating an app install dialog deep link");return`${n}://${o}${r}${encodeURIComponent(e)}`}export{h as createTeamsDeepLinkForAppInstallDialog,U as createTeamsDeepLinkForCalendar,R as createTeamsDeepLinkForCall,u as createTeamsDeepLinkForChat};
@@ -0,0 +1 @@
1
+ class e{}class r extends e{validate(e){return!0}deserialize(e){return e}}export{e as ResponseHandler,r as SimpleTypeResponseHandler};
@@ -1 +1 @@
1
- import{sendMessageToParentAsync as e}from"../internal/communication.js";import{ensureInitialized as t}from"../internal/internalAPIs.js";import{getApiVersionTag as n}from"../internal/telemetry.js";import{validateId as o,validateUrl as i}from"../internal/utils.js";import{FrameContexts as r,errorNotSupportedOnPlatform as s}from"../public/constants.js";import{runtime as a}from"../public/runtime.js";import{AppId as u}from"../public/appId.js";const c="v2";var h;!function(h){let p;var l;let f;function m(e){if(e.requestType===p.ActionExecuteInvokeRequest){const t=e;if(t.type!==h.ActionExecuteInvokeRequestType){throw{errorCode:f.INTERNAL_ERROR,message:`Invalid action type ${t.type}. Action type must be "${h.ActionExecuteInvokeRequestType}"`}}}else if(e.requestType===p.QueryMessageExtensionRequest){if(e.commandId.length>64)throw new Error("originalRequestInfo.commandId exceeds the maximum size of 64 characters");if(e.parameters.length>5)throw new Error("originalRequestInfo.parameters exceeds the maximum size of 5");for(const t of e.parameters){if(t.name.length>64)throw new Error("originalRequestInfo.parameters.name exceeds the maximum size of 64 characters");if(t.value.length>512)throw new Error("originalRequestInfo.parameters.value exceeds the maximum size of 512 characters")}}}function R(){return!(!t(a)||!a.supports.externalAppAuthentication)}h.isActionExecuteResponse=function(e){const t=e;return t.responseType===h.InvokeResponseType.ActionExecuteInvokeResponse&&void 0!==t.value&&void 0!==t.statusCode&&void 0!==t.type},h.ActionExecuteInvokeRequestType="Action.Execute",function(e){e.ActionExecuteInvokeRequest="ActionExecuteInvokeRequest",e.QueryMessageExtensionRequest="QueryMessageExtensionRequest"}(p=h.OriginalRequestType||(h.OriginalRequestType={})),(l=h.InvokeResponseType||(h.InvokeResponseType={})).ActionExecuteInvokeResponse="ActionExecuteInvokeResponse",l.QueryMessageExtensionResponse="QueryMessageExtensionResponse",h.isInvokeError=function(e){if("object"!=typeof e||null===e)return!1;const t=e;return Object.values(h.InvokeErrorCode).includes(t.errorCode)&&(void 0===t.message||"string"==typeof t.message)},function(e){e.INTERNAL_ERROR="INTERNAL_ERROR"}(f=h.InvokeErrorCode||(h.InvokeErrorCode={})),h.authenticateAndResendRequest=function(o,i,h){if(t(a,r.content),!R())throw s;const p=new u(o);return m(h),e(n(c,"externalAppAuthentication.authenticateAndResendRequest"),"externalAppAuthentication.authenticateAndResendRequest",[p.toString(),h,i.url.href,i.width,i.height,i.isExternal]).then((([e,t])=>{if(e&&null!=t.responseType)return t;throw t}))},h.authenticateWithSSO=function(o,i){if(t(a,r.content),!R())throw s;const h=new u(o);return e(n(c,"externalAppAuthentication.authenticateWithSSO"),"externalAppAuthentication.authenticateWithSSO",[h.toString(),i.claims,i.silent]).then((([e,t])=>{if(!e)throw t}))},h.authenticateWithSSOAndResendRequest=function(o,i,h){if(t(a,r.content),!R())throw s;const p=new u(o);return m(h),e(n(c,"externalAppAuthentication.authenticateWithSSOAndResendRequest"),"externalAppAuthentication.authenticateWithSSOAndResendRequest",[p.toString(),h,i.claims,i.silent]).then((([e,t])=>{if(e&&null!=t.responseType)return t;throw t}))},h.authenticateWithOauth2=function(i,u,h){if(t(a,r.content),!R())throw s;return o(i,new Error("titleId is Invalid.")),o(u,new Error("oauthConfigId is Invalid.")),e(n(c,"externalAppAuthentication.authenticateWithOauth2"),"externalAppAuthentication.authenticateWithOauth2",[i,u,h.width,h.height,h.isExternal]).then((([e,t])=>{if(!e)throw t}))},h.authenticateWithPowerPlatformConnectorPlugins=function(u,h,p){if(t(a,r.content),!R())throw s;return o(u,new Error("titleId is Invalid.")),h&&i(h),e(n(c,"externalAppAuthentication.authenticateWithPowerPlatformConnectorPlugins"),"externalAppAuthentication.authenticateWithPowerPlatformConnectorPlugins",[u,null==h?void 0:h.toString(),null==p?void 0:p.width,null==p?void 0:p.height,null==p?void 0:p.isExternal]).then((([e,t])=>{if(!e)throw t}))},h.isSupported=R}(h||(h={}));export{h as externalAppAuthentication};
1
+ import{sendMessageToParentAsync as e}from"../internal/communication.js";import{ensureInitialized as t}from"../internal/internalAPIs.js";import{ResponseHandler as n}from"../internal/responseHandler.js";import{getApiVersionTag as i}from"../internal/telemetry.js";import{validateId as o,validateUrl as r}from"../internal/utils.js";import{FrameContexts as s,errorNotSupportedOnPlatform as a}from"../public/constants.js";import{runtime as u}from"../public/runtime.js";import{AppId as c}from"../public/appId.js";const h="v2";var l;!function(l){let p;var f;l.SerializableActionExecuteInvokeRequest=class{constructor(e){this.invokeRequest=e}serialize(){return this.invokeRequest}},l.isActionExecuteResponse=function(e){const t=e;return t.responseType===l.InvokeResponseType.ActionExecuteInvokeResponse&&void 0!==t.value&&void 0!==t.statusCode&&void 0!==t.type},l.ActionExecuteInvokeRequestType="Action.Execute",function(e){e.ActionExecuteInvokeRequest="ActionExecuteInvokeRequest",e.QueryMessageExtensionRequest="QueryMessageExtensionRequest"}(p=l.OriginalRequestType||(l.OriginalRequestType={})),(f=l.InvokeResponseType||(l.InvokeResponseType={})).ActionExecuteInvokeResponse="ActionExecuteInvokeResponse",f.QueryMessageExtensionResponse="QueryMessageExtensionResponse";let R;function d(e){if(e.requestType===p.ActionExecuteInvokeRequest){const t=e;if(t.type!==l.ActionExecuteInvokeRequestType){throw{errorCode:R.INTERNAL_ERROR,message:`Invalid action type ${t.type}. Action type must be "${l.ActionExecuteInvokeRequestType}"`}}}else if(e.requestType===p.QueryMessageExtensionRequest){if(e.commandId.length>64)throw new Error("originalRequestInfo.commandId exceeds the maximum size of 64 characters");if(e.parameters.length>5)throw new Error("originalRequestInfo.parameters exceeds the maximum size of 5");for(const t of e.parameters){if(t.name.length>64)throw new Error("originalRequestInfo.parameters.name exceeds the maximum size of 64 characters");if(t.value.length>512)throw new Error("originalRequestInfo.parameters.value exceeds the maximum size of 512 characters")}}}function m(){return!(!t(u)||!u.supports.externalAppAuthentication)}l.ActionExecuteResponseHandler=class extends n{validate(e){return l.isActionExecuteResponse(e)}deserialize(e){return e}},l.isInvokeError=function(e){if("object"!=typeof e||null===e)return!1;const t=e;return Object.values(l.InvokeErrorCode).includes(t.errorCode)&&(void 0===t.message||"string"==typeof t.message)},function(e){e.INTERNAL_ERROR="INTERNAL_ERROR"}(R=l.InvokeErrorCode||(l.InvokeErrorCode={})),l.authenticateAndResendRequest=function(n,o,r){if(t(u,s.content),!m())throw a;const l=new c(n);return d(r),e(i(h,"externalAppAuthentication.authenticateAndResendRequest"),"externalAppAuthentication.authenticateAndResendRequest",[l.toString(),r,o.url.href,o.width,o.height,o.isExternal]).then((([e,t])=>{if(e&&null!=t.responseType)return t;throw t}))},l.authenticateWithSSO=function(n,o){if(t(u,s.content),!m())throw a;const r=new c(n);return e(i(h,"externalAppAuthentication.authenticateWithSSO"),"externalAppAuthentication.authenticateWithSSO",[r.toString(),o.claims,o.silent]).then((([e,t])=>{if(!e)throw t}))},l.authenticateWithSSOAndResendRequest=function(n,o,r){if(t(u,s.content),!m())throw a;const l=new c(n);return d(r),e(i(h,"externalAppAuthentication.authenticateWithSSOAndResendRequest"),"externalAppAuthentication.authenticateWithSSOAndResendRequest",[l.toString(),r,o.claims,o.silent]).then((([e,t])=>{if(e&&null!=t.responseType)return t;throw t}))},l.authenticateWithOauth2=function(n,r,c){if(t(u,s.content),!m())throw a;return o(n,new Error("titleId is Invalid.")),o(r,new Error("oauthConfigId is Invalid.")),e(i(h,"externalAppAuthentication.authenticateWithOauth2"),"externalAppAuthentication.authenticateWithOauth2",[n,r,c.width,c.height,c.isExternal]).then((([e,t])=>{if(!e)throw t}))},l.authenticateWithPowerPlatformConnectorPlugins=function(n,c,l){if(t(u,s.content),!m())throw a;return o(n,new Error("titleId is Invalid.")),c&&r(c),e(i(h,"externalAppAuthentication.authenticateWithPowerPlatformConnectorPlugins"),"externalAppAuthentication.authenticateWithPowerPlatformConnectorPlugins",[n,null==c?void 0:c.toString(),null==l?void 0:l.width,null==l?void 0:l.height,null==l?void 0:l.isExternal]).then((([e,t])=>{if(!e)throw t}))},l.isSupported=m}(l||(l={}));export{l as externalAppAuthentication};
@@ -1 +1 @@
1
- import{__awaiter as t}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.0_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{sendAndUnwrap as e}from"../internal/communication.js";import{ensureInitialized as n}from"../internal/internalAPIs.js";import{getApiVersionTag as i}from"../internal/telemetry.js";import{validateId as o}from"../internal/utils.js";import{FrameContexts as r,errorNotSupportedOnPlatform as s}from"../public/constants.js";import{runtime as a}from"../public/runtime.js";import{externalAppAuthentication as u}from"./externalAppAuthentication.js";const c="v2";var h;!function(h){function p(){return!(!n(a)||!a.supports.externalAppAuthenticationForCEA)}function l(t){if(t.type!==u.ActionExecuteInvokeRequestType){throw{errorCode:u.InvokeErrorCode.INTERNAL_ERROR,message:`Invalid action type ${t.type}. Action type must be "${u.ActionExecuteInvokeRequestType}"`}}}h.authenticateWithSSO=function(u,h,l){return t(this,void 0,void 0,(function*(){if(n(a,r.content),!p())throw s;o(h,new Error("conversation id is not valid."));const t=yield e(i(c,"externalAppAuthenticationForCEA.authenticateWithSSO"),"externalAppAuthenticationForCEA.authenticateWithSSO",u.toString(),h,l.claims,l.silent);if(t)throw t}))},h.authenticateWithOauth=function(u,h,l){return t(this,void 0,void 0,(function*(){if(n(a,r.content),!p())throw s;o(h,new Error("conversation id is not valid."));const t=yield e(i(c,"externalAppAuthenticationForCEA.authenticateWithOauth"),"externalAppAuthenticationForCEA.authenticateWithOauth",u.toString(),h,l.url.href,l.width,l.height,l.isExternal);if(t)throw t}))},h.authenticateAndResendRequest=function(h,A,f,m){return t(this,void 0,void 0,(function*(){if(n(a,r.content),!p())throw s;o(A,new Error("conversation id is not valid.")),l(m);const t=yield e(i(c,"externalAppAuthenticationForCEA.authenticateAndResendRequest"),"externalAppAuthenticationForCEA.authenticateAndResendRequest",h.toString(),A,m,f.url.href,f.width,f.height,f.isExternal);if(u.isActionExecuteResponse(t))return t;throw u.isInvokeError(t)?t:d}))},h.authenticateWithSSOAndResendRequest=function(h,A,f,m){return t(this,void 0,void 0,(function*(){if(n(a,r.content),!p())throw s;o(A,new Error("conversation id is not valid.")),l(m);const t=yield e(i(c,"externalAppAuthenticationForCEA.authenticateWithSSOAndResendRequest"),"externalAppAuthenticationForCEA.authenticateWithSSOAndResendRequest",h.toString(),A,m,f.claims,f.silent);if(u.isActionExecuteResponse(t))return t;throw u.isInvokeError(t)?t:d}))},h.isSupported=p;const d={errorCode:u.InvokeErrorCode.INTERNAL_ERROR,message:"No valid response received"}}(h||(h={}));export{h as externalAppAuthenticationForCEA};
1
+ import{__awaiter as t}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.24.0_tslib@2.6.3_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{callFunctionInHost as e,callFunctionInHostAndHandleResponse as n}from"../internal/communication.js";import{ensureInitialized as i}from"../internal/internalAPIs.js";import{getApiVersionTag as o}from"../internal/telemetry.js";import{validateId as r}from"../internal/utils.js";import{FrameContexts as a,errorNotSupportedOnPlatform as u}from"../public/constants.js";import{runtime as s}from"../public/runtime.js";import{externalAppAuthentication as c}from"./externalAppAuthentication.js";const p="v2";var h;!function(h){function l(){return!(!i(s)||!s.supports.externalAppAuthenticationForCEA)}function A(t){if(t.type!==c.ActionExecuteInvokeRequestType){throw{errorCode:c.InvokeErrorCode.INTERNAL_ERROR,message:`Invalid action type ${t.type}. Action type must be "${c.ActionExecuteInvokeRequestType}"`}}}h.authenticateWithSSO=function(n,h,A){return t(this,void 0,void 0,(function*(){if(i(s,a.content),!l())throw u;return r(h,new Error("conversation id is not valid.")),e("externalAppAuthenticationForCEA.authenticateWithSSO",[n,h,A.claims,A.silent],o(p,"externalAppAuthenticationForCEA.authenticateWithSSO"),c.isInvokeError)}))},h.authenticateWithOauth=function(n,h,A){return t(this,void 0,void 0,(function*(){if(i(s,a.content),!l())throw u;return r(h,new Error("conversation id is not valid.")),e("externalAppAuthenticationForCEA.authenticateWithOauth",[n,h,A.url.href,A.width,A.height,A.isExternal],o(p,"externalAppAuthenticationForCEA.authenticateWithOauth"),c.isInvokeError)}))},h.authenticateAndResendRequest=function(e,h,d,v){return t(this,void 0,void 0,(function*(){if(i(s,a.content),!l())throw u;return r(h,new Error("conversation id is not valid.")),A(v),n("externalAppAuthenticationForCEA.authenticateAndResendRequest",[e,h,new c.SerializableActionExecuteInvokeRequest(v),d.url.href,d.width,d.height,d.isExternal],new c.ActionExecuteResponseHandler,o(p,"externalAppAuthenticationForCEA.authenticateAndResendRequest"),c.isInvokeError)}))},h.authenticateWithSSOAndResendRequest=function(e,h,d,v){return t(this,void 0,void 0,(function*(){if(i(s,a.content),!l())throw u;return r(h,new Error("conversation id is not valid.")),A(v),n("externalAppAuthenticationForCEA.authenticateWithSSOAndResendRequest",[e,h,new c.SerializableActionExecuteInvokeRequest(v),d.claims,d.silent],new c.ActionExecuteResponseHandler,o(p,"externalAppAuthenticationForCEA.authenticateWithSSOAndResendRequest"),c.isInvokeError)}))},h.isSupported=l}(h||(h={}));export{h as externalAppAuthenticationForCEA};
@@ -1 +1 @@
1
- import{sendMessageToParentAsync as r}from"../internal/communication.js";import{ensureInitialized as e}from"../internal/internalAPIs.js";import{getApiVersionTag as o}from"../internal/telemetry.js";import{ErrorCode as t,isSdkError as n}from"../public/interfaces.js";import{runtime as a}from"../public/runtime.js";const s="v2";var i;!function(i){(i.AppTypes||(i.AppTypes={})).edu="EDU",function(d){function u(){var r;return!!(e(a)&&i.isSupported()&&(null===(r=a.supports.hostEntity)||void 0===r?void 0:r.tab))}function E(r){if(!r||0==r.length)throw new Error(`Error code: ${t.INVALID_ARGUMENTS}, message: ThreadId cannot be null or empty`)}function m(r){if(!(null==r?void 0:r.internalTabInstanceId)||0===r.internalTabInstanceId.length)throw new Error(`Error code: ${t.INVALID_ARGUMENTS}, message: TabId cannot be null or empty`)}d.addAndConfigure=function(i,d){if(e(a),!u())throw new Error(`Error code: ${t.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);if(E(i.threadId),d&&0===d.length)throw new Error(`Error code: ${t.INVALID_ARGUMENTS}, message: App types cannot be an empty array`);return r(o(s,"hostEntity.tab.addAndConfigure"),"hostEntity.tab.addAndConfigure",[i,d]).then((([r])=>{var e;if(n(r))throw new Error(`Error code: ${r.errorCode}, message: ${null!==(e=r.message)&&void 0!==e?e:"None"}`);return r}))},d.getAll=function(i){if(e(a),!u())throw new Error(`Error code: ${t.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return E(i.threadId),r(o(s,"hostEntity.tab.getAll"),"hostEntity.tab.getAll",[i]).then((([r])=>{var e;if(n(r))throw new Error(`Error code: ${r.errorCode}, message: ${null!==(e=r.message)&&void 0!==e?e:"None"}`);return r}))},d.reconfigure=function(i,d){if(e(a),!u())throw new Error(`Error code: ${t.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return m(i),E(d.threadId),r(o(s,"hostEntity.tab.reconfigure"),"hostEntity.tab.reconfigure",[i,d]).then((([r])=>{var e;if(n(r))throw new Error(`Error code: ${r.errorCode}, message: ${null!==(e=r.message)&&void 0!==e?e:"None"}`);return r}))},d.rename=function(i,d){if(e(a),!u())throw new Error(`Error code: ${t.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return m(i),E(d.threadId),r(o(s,"hostEntity.tab.rename"),"hostEntity.tab.rename",[i,d]).then((([r])=>{var e;if(n(r))throw new Error(`Error code: ${r.errorCode}, message: ${null!==(e=r.message)&&void 0!==e?e:"None"}`);return r}))},d.remove=function(i,d){if(e(a),!u())throw new Error(`Error code: ${t.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return E(d.threadId),m(i),r(o(s,"hostEntity.tab.remove"),"hostEntity.tab.remove",[i,d]).then((([r])=>{var e;if(n(r))throw new Error(`Error code: ${r.errorCode}, message: ${null!==(e=r.message)&&void 0!==e?e:"None"}`);return!0}))},d.isSupported=u}(i.tab||(i.tab={})),i.isSupported=function(){return!(!e(a)||!a.supports.hostEntity)}}(i||(i={}));export{i as hostEntity};
1
+ import{callFunctionInHostAndHandleResponse as t}from"../internal/communication.js";import{ensureInitialized as r}from"../internal/internalAPIs.js";import{SimpleTypeResponseHandler as e,ResponseHandler as n}from"../internal/responseHandler.js";import{getApiVersionTag as o}from"../internal/telemetry.js";import{runtime as a}from"../public/runtime.js";import{ErrorCode as s}from"../public/interfaces.js";const i="v2";var u;!function(u){(u.AppTypes||(u.AppTypes={})).edu="EDU";class d{constructor(t){this.hostEntityId=t}serialize(){return this.hostEntityId}}!function(l){class c extends n{validate(t){return"ConfigurableTab"===t.tabType}deserialize(t){return t}}class p{constructor(t){this.configurableTabInstance=t}serialize(){return this.configurableTabInstance}}class f extends n{validate(t){return"ConfigurableTab"===t.tabType||"StaticTab"===t.tabType}deserialize(t){return t}}class E{constructor(t){this.hostEntityTabInstance=t}serialize(){return this.hostEntityTabInstance}}class h extends n{validate(t){return t.allTabs&&t.allTabs.forEach((t=>{})),!0}deserialize(t){return t}}function m(){var t;return!!(r(a)&&u.isSupported()&&(null===(t=a.supports.hostEntity)||void 0===t?void 0:t.tab))}function b(t){if(!t||0==t.length)throw new Error(`Error code: ${s.INVALID_ARGUMENTS}, message: ThreadId cannot be null or empty`)}function T(t){if(!(null==t?void 0:t.internalTabInstanceId)||0===t.internalTabInstanceId.length)throw new Error(`Error code: ${s.INVALID_ARGUMENTS}, message: TabId cannot be null or empty`)}l.addAndConfigure=function(e,n){if(r(a),!m())throw new Error(`Error code: ${s.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);if(b(e.threadId),n&&0===n.length)throw new Error(`Error code: ${s.INVALID_ARGUMENTS}, message: App types cannot be an empty array`);return t("hostEntity.tab.addAndConfigure",[new d(e),n],new f,o(i,"hostEntity.tab.addAndConfigure"))},l.getAll=function(e){if(r(a),!m())throw new Error(`Error code: ${s.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return b(e.threadId),t("hostEntity.tab.getAll",[new d(e)],new h,o(i,"hostEntity.tab.getAll"))},l.reconfigure=function(e,n){if(r(a),!m())throw new Error(`Error code: ${s.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return T(e),b(n.threadId),t("hostEntity.tab.reconfigure",[new p(e),new d(n)],new c,o(i,"hostEntity.tab.reconfigure"))},l.rename=function(e,n){if(r(a),!m())throw new Error(`Error code: ${s.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return T(e),b(n.threadId),t("hostEntity.tab.rename",[new p(e),new d(n)],new c,o(i,"hostEntity.tab.rename"))},l.remove=function(n,u){if(r(a),!m())throw new Error(`Error code: ${s.NOT_SUPPORTED_ON_PLATFORM}, message: Not supported on platform`);return b(u.threadId),T(n),t("hostEntity.tab.remove",[new E(n),new d(u)],new e,o(i,"hostEntity.tab.remove"))},l.isSupported=m}(u.tab||(u.tab={})),u.isSupported=function(){return!(!r(a)||!a.supports.hostEntity)}}(u||(u={}));export{u as hostEntity};