@microsoft/teams-js 2.53.1 → 2.54.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.
package/README.md CHANGED
@@ -24,7 +24,7 @@ To install the stable [version](https://learn.microsoft.com/javascript/api/overv
24
24
 
25
25
  ### Production
26
26
 
27
- You can reference these files directly [from here](https://res.cdn.office.net/teams-js/2.53.1/js/MicrosoftTeams.min.js) or point your package manager at them.
27
+ You can reference these files directly [from here](https://res.cdn.office.net/teams-js/2.54.0/js/MicrosoftTeams.min.js) or point your package manager at them.
28
28
 
29
29
  ## Usage
30
30
 
@@ -45,13 +45,13 @@ Reference the library inside of your `.html` page using:
45
45
  ```html
46
46
  <!-- Microsoft Teams JavaScript API (via CDN) -->
47
47
  <script
48
- src="https://res.cdn.office.net/teams-js/2.53.1/js/MicrosoftTeams.min.js"
49
- integrity="sha384-u/ADAeV1WhPQrTvoCmXcIhzguvD7vpAOyMxZFTIk4lTwgZAKtRKT1SFqOWTyQJ/s"
48
+ src="https://res.cdn.office.net/teams-js/2.54.0/js/MicrosoftTeams.min.js"
49
+ integrity="sha384-PIuQ2V7hlz4b1x3G1mPCYYZiWTjxzRTL6bf547xR9ARsAeNv2DAzti86LQnFCwlo"
50
50
  crossorigin="anonymous"
51
51
  ></script>
52
52
 
53
53
  <!-- Microsoft Teams JavaScript API (via npm) -->
54
- <script src="node_modules/@microsoft/teams-js@2.53.1/dist/MicrosoftTeams.min.js"></script>
54
+ <script src="node_modules/@microsoft/teams-js@2.54.0/dist/MicrosoftTeams.min.js"></script>
55
55
 
56
56
  <!-- Microsoft Teams JavaScript API (via local) -->
57
57
  <script src="MicrosoftTeams.min.js"></script>
@@ -216,6 +216,7 @@ export declare const enum ApiName {
216
216
  MessageChannels_Telemetry_GetTelemetryPort = "messageChannels.telemetry.getTelemetryPort",
217
217
  MessageChannels_DataLayer_GetDataLayerPort = "messageChannels.dataLayer.getDataLayerPort",
218
218
  Monetization_OpenPurchaseExperience = "monetization.openPurchaseExperience",
219
+ MouseRelay_NavigateHistory = "mouseRelay.navigateHistory",
219
220
  Navigation_NavigateBack = "navigation.navigateBack",
220
221
  Navigation_NavigateCrossDomain = "navigation.navigateCrossDomain",
221
222
  Navigation_NavigateToTab = "navigation.navigateToTab",
@@ -1,11 +1,32 @@
1
1
  /**
2
2
  * Interact with the system clipboard
3
3
  *
4
+ * @deprecated
5
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
6
+ * any time without notice: support for this capability in Teams and other host apps may be removed
7
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
8
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
9
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
10
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
11
+ * supported; it depends on native device permission handling that is still being enabled as a
12
+ * separate effort.
13
+ *
4
14
  * @beta
5
15
  * @module
6
16
  */
7
17
  /**
8
18
  * Function to copy data to clipboard.
19
+ *
20
+ * @deprecated
21
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
22
+ * any time without notice: support for this capability in Teams and other host apps may be removed
23
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
24
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
25
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
26
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
27
+ * supported; it depends on native device permission handling that is still being enabled as a
28
+ * separate effort.
29
+ *
9
30
  * @remarks
10
31
  * Note: clipboard.write only supports Text, HTML, PNG, and JPEG data format.
11
32
  * MIME type for Text -> `text/plain`, HTML -> `text/html`, PNG/JPEG -> `image/(png | jpeg)`
@@ -19,6 +40,16 @@ export declare function write(blob: Blob): Promise<void>;
19
40
  /**
20
41
  * Function to read data from clipboard.
21
42
  *
43
+ * @deprecated
44
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
45
+ * any time without notice: support for this capability in Teams and other host apps may be removed
46
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
47
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
48
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
49
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
50
+ * supported; it depends on native device permission handling that is still being enabled as a
51
+ * separate effort.
52
+ *
22
53
  * @returns A promise blob which resolves to the data read from the clipboard or
23
54
  * rejects stating the reason for failure.
24
55
  * Note: Returned blob type will contain one of the MIME type `image/png`, `text/plain` or `text/html`.
@@ -30,6 +61,16 @@ export declare function read(): Promise<Blob>;
30
61
  *
31
62
  * @throws Error if {@linkcode app.initialize} has not successfully completed
32
63
  *
64
+ * @deprecated
65
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
66
+ * any time without notice: support for this capability in Teams and other host apps may be removed
67
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
68
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
69
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
70
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
71
+ * supported; it depends on native device permission handling that is still being enabled as a
72
+ * separate effort.
73
+ *
33
74
  * @beta
34
75
  */
35
76
  export declare function isSupported(): boolean;
@@ -47,5 +47,6 @@ export * as tasks from './tasks';
47
47
  export * as liveShare from './liveShareHost';
48
48
  export { LiveShareHost } from './liveShareHost';
49
49
  export * as marketplace from './marketplace';
50
+ export * as mouseRelay from './mouseRelay';
50
51
  export { ISerializable } from './serializable.interface';
51
52
  export * as shortcutRelay from './shortcutRelay';
@@ -1225,7 +1225,17 @@ export declare enum EduType {
1225
1225
  Other = "other"
1226
1226
  }
1227
1227
  /**
1228
- * Currently supported Mime type
1228
+ * Currently supported MIME types
1229
+ *
1230
+ * @deprecated
1231
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
1232
+ * any time without notice: support for this capability in Teams and other host apps may be removed
1233
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
1234
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
1235
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
1236
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
1237
+ * supported; it depends on native device permission handling that is still being enabled as a
1238
+ * separate effort.
1229
1239
  */
1230
1240
  export declare enum ClipboardSupportedMimeType {
1231
1241
  TextPlain = "text/plain",
@@ -1235,9 +1245,19 @@ export declare enum ClipboardSupportedMimeType {
1235
1245
  }
1236
1246
  /**
1237
1247
  * Clipboard write parameters
1248
+ *
1249
+ * @deprecated
1250
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
1251
+ * any time without notice: support for this capability in Teams and other host apps may be removed
1252
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
1253
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
1254
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
1255
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
1256
+ * supported; it depends on native device permission handling that is still being enabled as a
1257
+ * separate effort.
1238
1258
  */
1239
1259
  export interface ClipboardParams {
1240
- /** Mime Type of data to be copied to Clipboard */
1260
+ /** MIME type of data to be copied to Clipboard */
1241
1261
  mimeType: ClipboardSupportedMimeType;
1242
1262
  /** Blob content in Base64 string format */
1243
1263
  content: string;
@@ -806,6 +806,10 @@ export declare enum EventActionSource {
806
806
  * Source is calendar form join teams meeting button.
807
807
  */
808
808
  M365CalendarFormJoinTeamsMeetingButton = "m365_calendar_form_join_teams_meeting_button",
809
+ /**
810
+ * Source is the M365 calendar Meet Now start action.
811
+ */
812
+ M365CalendarMeetNow = "m365_calendar_meet_now",
809
813
  /**
810
814
  * Other sources.
811
815
  */
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Lets an app inside a Teams iframe relay the mouse back (X1) / forward (X2)
3
+ * buttons to the host so they drive Teams history navigation.
4
+ *
5
+ * @module
6
+ */
7
+ /**
8
+ * The direction of a relayed history-navigation intent.
9
+ */
10
+ export type NavigationDirection = 'back' | 'forward';
11
+ /**
12
+ * Enable the capability so the mouse back (X1) / forward (X2) buttons pressed
13
+ * inside this iframe drive Teams history navigation in the host.
14
+ *
15
+ * @throws Error if {@link app.initialize} has not successfully completed or the
16
+ * host does not support the mouseRelay capability.
17
+ */
18
+ export declare function enableMouseRelayCapability(): Promise<void>;
19
+ /**
20
+ * Disable the mouse relay capability, detaching its listeners so the mouse
21
+ * back (X1) / forward (X2) buttons no longer drive Teams history navigation.
22
+ *
23
+ * @throws Error if {@link app.initialize} has not successfully completed or the
24
+ * host does not support the mouseRelay capability.
25
+ */
26
+ export declare function disableMouseRelayCapability(): void;
27
+ /**
28
+ * Checks if the mouseRelay capability is supported by the host.
29
+ * @returns boolean to represent whether the mouseRelay capability is supported.
30
+ *
31
+ * @throws Error if {@link app.initialize} has not successfully completed.
32
+ */
33
+ export declare function isSupported(): boolean;
@@ -74,6 +74,7 @@ interface IRuntimeV4 extends IBaseRuntime {
74
74
  readonly dataLayer?: {};
75
75
  };
76
76
  readonly monetization?: {};
77
+ readonly mouseRelay?: {};
77
78
  readonly nestedAppAuth?: {};
78
79
  readonly notifications?: {};
79
80
  readonly otherAppStateChange?: {};
@@ -1 +1 @@
1
- export{NotificationTypes,UserSettingTypes,ViewerActionTypes}from"./private/interfaces.js";export{openFilePreview,registerCustomHandler,registerUserSettingsChangeHandler,sendCustomEvent,sendCustomMessage,uploadCustomApp}from"./private/privateAPIs.js";import*as e from"./private/externalAppAuthentication.js";export{e as externalAppAuthentication};export{UserAuthenticationState}from"./private/externalAppAuthentication.js";import*as r from"./private/logs.js";export{r as logs};import*as t from"./private/conversations.js";export{t as conversations};import*as o from"./private/copilot/copilot.js";export{o as copilot};import*as p from"./private/copilot/sidePanelInterfaces.js";export{p as sidePanelInterfaces};import*as i from"./private/externalAppAuthenticationForCEA.js";export{i as externalAppAuthenticationForCEA};import*as a from"./private/externalAppCardActions.js";export{a as externalAppCardActions};import*as s from"./private/externalAppCardActionsForCEA.js";export{s as externalAppCardActionsForCEA};import*as m from"./private/externalAppCardActionsForDA.js";export{m as externalAppCardActionsForDA};import*as n from"./private/externalAppCommands.js";export{n as externalAppCommands};import*as l from"./private/files.js";export{l as files};import*as c from"./private/meetingRoom.js";export{c as meetingRoom};import*as f from"./private/messageChannels/messageChannels.js";export{f as messageChannels};import*as u from"./private/nestedAppAuth/nestedAppAuthBridge.js";export{u as nestedAppAuthBridge};import*as x from"./private/notifications.js";export{x as notifications};import*as j from"./private/otherAppStateChange.js";export{j as otherAppStateChange};import*as d from"./private/plugins.js";export{d as plugins};import*as g from"./private/remoteCamera.js";export{g as remoteCamera};import*as b from"./private/appEntity.js";export{b as appEntity};import*as v from"./private/teams/teams.js";export{v as teams};import*as A from"./private/videoEffectsEx.js";export{A as videoEffectsEx};import*as C from"./private/hostEntity/hostEntity.js";export{C as hostEntity};import*as h from"./private/store.js";export{h as store};import*as S from"./private/widgetHosting/widgetHosting.js";export{S as widgetHosting};export{ChannelType,DialogDimension,FrameContexts,HostClientType,HostName,RenderingSurfaces,DialogDimension as TaskModuleDimension,TeamType,UserTeamRole}from"./public/constants.js";export{ActionObjectType,EduType,ErrorCode,FileOpenPreference,SecondaryM365ContentIdName}from"./public/interfaces.js";export{AppId}from"./public/appId.js";export{EmailAddress}from"./public/emailAddress.js";export{activateChildProxyingCommunication,getCurrentFeatureFlagsState,overwriteFeatureFlagsState,setFeatureFlagsState}from"./public/featureFlags.js";export{getAdaptiveCardSchemaVersion}from"./public/adaptiveCards.js";export{ChildAppWindow,ParentAppWindow}from"./public/appWindow.js";export{ValidatedSafeString}from"./public/validatedSafeString.js";export{version}from"./public/version.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{UUID}from"./public/uuidObject.js";import*as H from"./public/liveShareHost.js";export{H as liveShare};export{LiveShareHost}from"./public/liveShareHost.js";import*as F from"./public/authentication.js";export{F as authentication};import*as y from"./public/app/app.js";export{y as app};import*as T from"./public/appPerformanceMetrics.js";export{T as appPerformanceMetrics};import*as E from"./public/appInstallDialog.js";export{E as appInstallDialog};import*as w from"./public/barCode.js";export{w as barCode};import*as I from"./public/chat.js";export{I as chat};import*as D from"./public/clipboard.js";export{D as clipboard};import*as P from"./public/dialog/dialog.js";export{P as dialog};import*as B from"./public/nestedAppAuth.js";export{B as nestedAppAuth};import*as k from"./public/geoLocation/geoLocation.js";export{k as geoLocation};import*as L from"./public/pages/pages.js";export{L as pages};import*as M from"./public/menus.js";export{M as menus};import*as U from"./public/media.js";export{U as media};import*as O from"./public/secondaryBrowser.js";export{O as secondaryBrowser};import*as V from"./public/location.js";export{V as location};import*as z from"./public/meeting/meeting.js";export{z as meeting};import*as R from"./public/monetization.js";export{R as monetization};import*as W from"./public/calendar.js";export{W as calendar};import*as N from"./public/mail/mail.js";export{N as mail};import*as q from"./public/teamsAPIs.js";export{q as teamsCore};import*as G from"./public/people.js";export{G as people};import*as J from"./public/profile.js";export{J as profile};import*as K from"./public/videoEffects.js";export{K as videoEffects};import*as Q from"./public/search.js";export{Q as search};import*as X from"./public/sharing/sharing.js";export{X as sharing};import*as Y from"./public/stageView/stageView.js";export{Y as stageView};import*as Z from"./public/visualMedia/visualMedia.js";export{Z as visualMedia};import*as $ from"./public/webStorage.js";export{$ as webStorage};import*as _ from"./public/call.js";export{_ as call};import*as ee from"./public/appInitialization.js";export{ee as appInitialization};import*as re from"./public/thirdPartyCloudStorage.js";export{re as thirdPartyCloudStorage};import*as te from"./public/settings.js";export{te as settings};import*as oe from"./public/tasks.js";export{oe as tasks};import*as pe from"./public/marketplace.js";export{pe as marketplace};import*as ie from"./public/shortcutRelay.js";export{ie as shortcutRelay};
1
+ export{NotificationTypes,UserSettingTypes,ViewerActionTypes}from"./private/interfaces.js";export{openFilePreview,registerCustomHandler,registerUserSettingsChangeHandler,sendCustomEvent,sendCustomMessage,uploadCustomApp}from"./private/privateAPIs.js";import*as e from"./private/externalAppAuthentication.js";export{e as externalAppAuthentication};export{UserAuthenticationState}from"./private/externalAppAuthentication.js";import*as r from"./private/logs.js";export{r as logs};import*as t from"./private/conversations.js";export{t as conversations};import*as o from"./private/copilot/copilot.js";export{o as copilot};import*as p from"./private/copilot/sidePanelInterfaces.js";export{p as sidePanelInterfaces};import*as i from"./private/externalAppAuthenticationForCEA.js";export{i as externalAppAuthenticationForCEA};import*as a from"./private/externalAppCardActions.js";export{a as externalAppCardActions};import*as s from"./private/externalAppCardActionsForCEA.js";export{s as externalAppCardActionsForCEA};import*as m from"./private/externalAppCardActionsForDA.js";export{m as externalAppCardActionsForDA};import*as n from"./private/externalAppCommands.js";export{n as externalAppCommands};import*as l from"./private/files.js";export{l as files};import*as c from"./private/meetingRoom.js";export{c as meetingRoom};import*as f from"./private/messageChannels/messageChannels.js";export{f as messageChannels};import*as u from"./private/nestedAppAuth/nestedAppAuthBridge.js";export{u as nestedAppAuthBridge};import*as x from"./private/notifications.js";export{x as notifications};import*as j from"./private/otherAppStateChange.js";export{j as otherAppStateChange};import*as d from"./private/plugins.js";export{d as plugins};import*as g from"./private/remoteCamera.js";export{g as remoteCamera};import*as b from"./private/appEntity.js";export{b as appEntity};import*as v from"./private/teams/teams.js";export{v as teams};import*as A from"./private/videoEffectsEx.js";export{A as videoEffectsEx};import*as C from"./private/hostEntity/hostEntity.js";export{C as hostEntity};import*as h from"./private/store.js";export{h as store};import*as S from"./private/widgetHosting/widgetHosting.js";export{S as widgetHosting};export{ChannelType,DialogDimension,FrameContexts,HostClientType,HostName,RenderingSurfaces,DialogDimension as TaskModuleDimension,TeamType,UserTeamRole}from"./public/constants.js";export{ActionObjectType,EduType,ErrorCode,FileOpenPreference,SecondaryM365ContentIdName}from"./public/interfaces.js";export{AppId}from"./public/appId.js";export{EmailAddress}from"./public/emailAddress.js";export{activateChildProxyingCommunication,getCurrentFeatureFlagsState,overwriteFeatureFlagsState,setFeatureFlagsState}from"./public/featureFlags.js";export{getAdaptiveCardSchemaVersion}from"./public/adaptiveCards.js";export{ChildAppWindow,ParentAppWindow}from"./public/appWindow.js";export{ValidatedSafeString}from"./public/validatedSafeString.js";export{version}from"./public/version.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{UUID}from"./public/uuidObject.js";import*as H from"./public/liveShareHost.js";export{H as liveShare};export{LiveShareHost}from"./public/liveShareHost.js";import*as y from"./public/authentication.js";export{y as authentication};import*as F from"./public/app/app.js";export{F as app};import*as T from"./public/appPerformanceMetrics.js";export{T as appPerformanceMetrics};import*as E from"./public/appInstallDialog.js";export{E as appInstallDialog};import*as w from"./public/barCode.js";export{w as barCode};import*as I from"./public/chat.js";export{I as chat};import*as D from"./public/clipboard.js";export{D as clipboard};import*as P from"./public/dialog/dialog.js";export{P as dialog};import*as B from"./public/nestedAppAuth.js";export{B as nestedAppAuth};import*as k from"./public/geoLocation/geoLocation.js";export{k as geoLocation};import*as L from"./public/pages/pages.js";export{L as pages};import*as M from"./public/menus.js";export{M as menus};import*as U from"./public/media.js";export{U as media};import*as O from"./public/secondaryBrowser.js";export{O as secondaryBrowser};import*as R from"./public/location.js";export{R as location};import*as V from"./public/meeting/meeting.js";export{V as meeting};import*as z from"./public/monetization.js";export{z as monetization};import*as W from"./public/calendar.js";export{W as calendar};import*as N from"./public/mail/mail.js";export{N as mail};import*as q from"./public/teamsAPIs.js";export{q as teamsCore};import*as G from"./public/people.js";export{G as people};import*as J from"./public/profile.js";export{J as profile};import*as K from"./public/videoEffects.js";export{K as videoEffects};import*as Q from"./public/search.js";export{Q as search};import*as X from"./public/sharing/sharing.js";export{X as sharing};import*as Y from"./public/stageView/stageView.js";export{Y as stageView};import*as Z from"./public/visualMedia/visualMedia.js";export{Z as visualMedia};import*as $ from"./public/webStorage.js";export{$ as webStorage};import*as _ from"./public/call.js";export{_ as call};import*as ee from"./public/appInitialization.js";export{ee as appInitialization};import*as re from"./public/thirdPartyCloudStorage.js";export{re as thirdPartyCloudStorage};import*as te from"./public/settings.js";export{te as settings};import*as oe from"./public/tasks.js";export{oe as tasks};import*as pe from"./public/marketplace.js";export{pe as marketplace};import*as ie from"./public/mouseRelay.js";export{ie as mouseRelay};import*as ae from"./public/shortcutRelay.js";export{ae as shortcutRelay};
@@ -1 +1 @@
1
- import{__awaiter as e}from"../../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.55.1_tslib@2.8.1_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{sendMessageToParent as n,sendAndHandleSdkError as t}from"../../internal/communication.js";import{registerHandler as i,doesHandlerExist as a,removeHandler as o}from"../../internal/handlers.js";import{ensureInitialized as r}from"../../internal/internalAPIs.js";import{getApiVersionTag as l}from"../../internal/telemetry.js";import{FrameContexts as g}from"../constants.js";import{ErrorCode as s}from"../interfaces.js";import{runtime as d}from"../runtime.js";import*as c from"./appShareButton.js";export{c as appShareButton};const u="v1";var m,p,h,C,S,f;function b(e){if(!e)throw new Error("[get incoming client audio state] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.getIncomingClientAudioState"),"getIncomingClientAudioState",e)}function A(e){if(!e)throw new Error("[toggle incoming client audio] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.toggleIncomingClientAudio"),"toggleIncomingClientAudio",e)}function w(e){if(!e)throw new Error("[get meeting details] Callback cannot be null");r(d,g.sidePanel,g.meetingStage,g.settings,g.content),n(l(u,"meeting.getMeetingDetails"),"meeting.getMeetingDetails",e)}function v(){var n,i,a;return e(this,void 0,void 0,function*(){let e;r(d,g.sidePanel,g.meetingStage,g.settings,g.content);try{const n=!0;e=yield t(l("v2","meeting.getMeetingDetailsVerbose"),"meeting.getMeetingDetails",n)}catch(e){throw new Error(null===(n=null==e?void 0:e.errorCode)||void 0===n?void 0:n.toString())}if(((null===(i=e.details)||void 0===i?void 0:i.type)==C.GroupCall||(null===(a=e.details)||void 0===a?void 0:a.type)==C.OneOnOneCall)&&!e.details.originalCallerInfo)throw new Error(s.NOT_SUPPORTED_ON_PLATFORM.toString());return e})}function H(e){if(!e)throw new Error("[get Authentication Token For AnonymousUser] Callback cannot be null");r(d,g.sidePanel,g.meetingStage,g.task),n(l(u,"meeting.getAuthenticationTokenForAnonymousUser"),"meeting.getAuthenticationTokenForAnonymousUser",e)}function k(e){if(!e)throw new Error("[get live stream state] Callback cannot be null");r(d,g.sidePanel),n(l(u,"meeting.getLiveStreamState"),"meeting.getLiveStreamState",e)}function _(e,t,i){if(!e)throw new Error("[request start live streaming] Callback cannot be null");r(d,g.sidePanel),n(l(u,"meeting.requestStartLiveStreaming"),"meeting.requestStartLiveStreaming",[t,i],e)}function M(e){if(!e)throw new Error("[request stop live streaming] Callback cannot be null");r(d,g.sidePanel),n(l(u,"meeting.requestStopLiveStreaming"),"meeting.requestStopLiveStreaming",e)}function E(e){if(!e)throw new Error("[register live stream changed handler] Handler cannot be null");r(d,g.sidePanel),i(l(u,"meeting.registerLiveStreamChangedHandler"),"meeting.liveStreamChanged",e)}function P(e,t,i={sharingProtocol:S.Collaborative}){if(!e)throw new Error("[share app content to stage] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.shareAppContentToStage"),"meeting.shareAppContentToStage",[t,i],e)}function j(e){if(!e)throw new Error("[get app content stage sharing capabilities] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.getAppContentStageSharingCapabilities"),"meeting.getAppContentStageSharingCapabilities",e)}function q(e){if(!e)throw new Error("[stop sharing app content to stage] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.stopSharingAppContentToStage"),"meeting.stopSharingAppContentToStage",e)}function T(e){if(!e)throw new Error("[get app content stage sharing state] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.getAppContentStageSharingState"),"meeting.getAppContentStageSharingState",e)}function D(e){if(!e)throw new Error("[registerSpeakingStateChangeHandler] Handler cannot be null");r(d,g.sidePanel,g.meetingStage),i(l(u,"meeting.registerSpeakingStateChangeHandler"),"meeting.speakingStateChanged",e)}function y(e){if(!e)throw new Error("[registerRaiseHandStateChangedHandler] Handler cannot be null");r(d,g.sidePanel,g.meetingStage),i(l(u,"meeting.registerRaiseHandStateChangedHandler"),"meeting.raiseHandStateChanged",e)}function O(e){if(!e)throw new Error("[registerMeetingReactionReceivedHandler] Handler cannot be null");r(d,g.sidePanel,g.meetingStage),i(l(u,"meeting.registerMeetingReactionReceivedHandler"),"meeting.meetingReactionReceived",e)}function R(e){if(void 0===(null==e?void 0:e.joinWebUrl)||null===(null==e?void 0:e.joinWebUrl))return Promise.reject(new Error("Invalid joinMeetingParams"));r(d);const n={joinWebUrl:e.joinWebUrl.href,source:e.source||f.Other};return t(l("v2","meeting.joinMeeting"),"meeting.joinMeeting",n)}function I(t,s){if(!s)throw new Error("[requestAppAudioHandling] Callback response cannot be null");if(!t.micMuteStateChangedCallback)throw new Error("[requestAppAudioHandling] Callback Mic mute state handler cannot be null");r(d,g.sidePanel,g.meetingStage),t.isAppHandlingAudio?function(t,a){const o=(n,o)=>{if(n&&null!=o)throw new Error("[requestAppAudioHandling] Callback response - both parameters cannot be set");if(n)throw new Error(`[requestAppAudioHandling] Callback response - SDK error ${n.errorCode} ${n.message}`);if("boolean"!=typeof o)throw new Error("[requestAppAudioHandling] Callback response - isHostAudioless must be a boolean");const r=n=>e(this,void 0,void 0,function*(){try{const e=yield t.micMuteStateChangedCallback(n);F(e,e.isMicMuted===n.isMicMuted?m.HostInitiated:m.AppDeclinedToChange)}catch(e){F(n,m.AppFailedToChange)}});i(l(u,"meeting.registerMicStateChangeHandler"),"meeting.micStateChanged",r);const g=e=>{var n;null===(n=t.audioDeviceSelectionChangedCallback)||void 0===n||n.call(t,e)};i(l(u,"meeting.registerAudioDeviceSelectionChangedHandler"),"meeting.audioDeviceSelectionChanged",g),a(o)};n(l(u,"meeting.requestAppAudioHandling"),"meeting.requestAppAudioHandling",[t.isAppHandlingAudio],o)}(t,s):function(e,t){const i=(e,n)=>{if(e&&null!=n)throw new Error("[requestAppAudioHandling] Callback response - both parameters cannot be set");if(e)throw new Error(`[requestAppAudioHandling] Callback response - SDK error ${e.errorCode} ${e.message}`);if("boolean"!=typeof n)throw new Error("[requestAppAudioHandling] Callback response - isHostAudioless must be a boolean");a("meeting.micStateChanged")&&o("meeting.micStateChanged"),a("meeting.audioDeviceSelectionChanged")&&o("meeting.audioDeviceSelectionChanged"),t(n)};n(l(u,"meeting.requestAppAudioHandling"),"meeting.requestAppAudioHandling",[e.isAppHandlingAudio],i)}(t,s)}function U(e){F(e,m.AppInitiated)}function F(e,t){r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.setMicStateWithReason"),"meeting.updateMicState",[e,t])}!function(e){e[e.HostInitiated=0]="HostInitiated",e[e.AppInitiated=1]="AppInitiated",e[e.AppDeclinedToChange=2]="AppDeclinedToChange",e[e.AppFailedToChange=3]="AppFailedToChange"}(m||(m={})),function(e){e.like="like",e.heart="heart",e.laugh="laugh",e.surprised="surprised",e.applause="applause"}(p||(p={})),function(e){e.Unknown="Unknown",e.Adhoc="Adhoc",e.Scheduled="Scheduled",e.Recurring="Recurring",e.Broadcast="Broadcast",e.MeetNow="MeetNow"}(h||(h={})),function(e){e.OneOnOneCall="oneOnOneCall",e.GroupCall="groupCall"}(C||(C={})),function(e){e.Collaborative="Collaborative",e.ScreenShare="ScreenShare"}(S||(S={})),function(e){e.M365CalendarGridContextMenu="m365_calendar_grid_context_menu",e.M365CalendarGridPeek="m365_calendar_grid_peek",e.M365CalendarGridEventCardJoinButton="m365_calendar_grid_event_card_join_button",e.M365CalendarFormRibbonJoinButton="m365_calendar_form_ribbon_join_button",e.M365CalendarFormJoinTeamsMeetingButton="m365_calendar_form_join_teams_meeting_button",e.Other="other"}(f||(f={}));export{C as CallType,f as EventActionSource,p as MeetingReactionType,h as MeetingType,S as SharingProtocol,j as getAppContentStageSharingCapabilities,T as getAppContentStageSharingState,H as getAuthenticationTokenForAnonymousUser,b as getIncomingClientAudioState,k as getLiveStreamState,w as getMeetingDetails,v as getMeetingDetailsVerbose,R as joinMeeting,E as registerLiveStreamChangedHandler,O as registerMeetingReactionReceivedHandler,y as registerRaiseHandStateChangedHandler,D as registerSpeakingStateChangeHandler,I as requestAppAudioHandling,_ as requestStartLiveStreaming,M as requestStopLiveStreaming,P as shareAppContentToStage,q as stopSharingAppContentToStage,A as toggleIncomingClientAudio,U as updateMicState};
1
+ import{__awaiter as e}from"../../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.55.1_tslib@2.8.1_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{sendMessageToParent as n,sendAndHandleSdkError as t}from"../../internal/communication.js";import{registerHandler as i,doesHandlerExist as a,removeHandler as o}from"../../internal/handlers.js";import{ensureInitialized as r}from"../../internal/internalAPIs.js";import{getApiVersionTag as l}from"../../internal/telemetry.js";import{FrameContexts as g}from"../constants.js";import{ErrorCode as s}from"../interfaces.js";import{runtime as d}from"../runtime.js";import*as c from"./appShareButton.js";export{c as appShareButton};const u="v1";var m,p,h,C,S,f;function b(e){if(!e)throw new Error("[get incoming client audio state] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.getIncomingClientAudioState"),"getIncomingClientAudioState",e)}function A(e){if(!e)throw new Error("[toggle incoming client audio] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.toggleIncomingClientAudio"),"toggleIncomingClientAudio",e)}function w(e){if(!e)throw new Error("[get meeting details] Callback cannot be null");r(d,g.sidePanel,g.meetingStage,g.settings,g.content),n(l(u,"meeting.getMeetingDetails"),"meeting.getMeetingDetails",e)}function v(){var n,i,a;return e(this,void 0,void 0,function*(){let e;r(d,g.sidePanel,g.meetingStage,g.settings,g.content);try{const n=!0;e=yield t(l("v2","meeting.getMeetingDetailsVerbose"),"meeting.getMeetingDetails",n)}catch(e){throw new Error(null===(n=null==e?void 0:e.errorCode)||void 0===n?void 0:n.toString())}if(((null===(i=e.details)||void 0===i?void 0:i.type)==C.GroupCall||(null===(a=e.details)||void 0===a?void 0:a.type)==C.OneOnOneCall)&&!e.details.originalCallerInfo)throw new Error(s.NOT_SUPPORTED_ON_PLATFORM.toString());return e})}function H(e){if(!e)throw new Error("[get Authentication Token For AnonymousUser] Callback cannot be null");r(d,g.sidePanel,g.meetingStage,g.task),n(l(u,"meeting.getAuthenticationTokenForAnonymousUser"),"meeting.getAuthenticationTokenForAnonymousUser",e)}function _(e){if(!e)throw new Error("[get live stream state] Callback cannot be null");r(d,g.sidePanel),n(l(u,"meeting.getLiveStreamState"),"meeting.getLiveStreamState",e)}function k(e,t,i){if(!e)throw new Error("[request start live streaming] Callback cannot be null");r(d,g.sidePanel),n(l(u,"meeting.requestStartLiveStreaming"),"meeting.requestStartLiveStreaming",[t,i],e)}function M(e){if(!e)throw new Error("[request stop live streaming] Callback cannot be null");r(d,g.sidePanel),n(l(u,"meeting.requestStopLiveStreaming"),"meeting.requestStopLiveStreaming",e)}function E(e){if(!e)throw new Error("[register live stream changed handler] Handler cannot be null");r(d,g.sidePanel),i(l(u,"meeting.registerLiveStreamChangedHandler"),"meeting.liveStreamChanged",e)}function P(e,t,i={sharingProtocol:S.Collaborative}){if(!e)throw new Error("[share app content to stage] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.shareAppContentToStage"),"meeting.shareAppContentToStage",[t,i],e)}function j(e){if(!e)throw new Error("[get app content stage sharing capabilities] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.getAppContentStageSharingCapabilities"),"meeting.getAppContentStageSharingCapabilities",e)}function q(e){if(!e)throw new Error("[stop sharing app content to stage] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.stopSharingAppContentToStage"),"meeting.stopSharingAppContentToStage",e)}function T(e){if(!e)throw new Error("[get app content stage sharing state] Callback cannot be null");r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.getAppContentStageSharingState"),"meeting.getAppContentStageSharingState",e)}function D(e){if(!e)throw new Error("[registerSpeakingStateChangeHandler] Handler cannot be null");r(d,g.sidePanel,g.meetingStage),i(l(u,"meeting.registerSpeakingStateChangeHandler"),"meeting.speakingStateChanged",e)}function y(e){if(!e)throw new Error("[registerRaiseHandStateChangedHandler] Handler cannot be null");r(d,g.sidePanel,g.meetingStage),i(l(u,"meeting.registerRaiseHandStateChangedHandler"),"meeting.raiseHandStateChanged",e)}function O(e){if(!e)throw new Error("[registerMeetingReactionReceivedHandler] Handler cannot be null");r(d,g.sidePanel,g.meetingStage),i(l(u,"meeting.registerMeetingReactionReceivedHandler"),"meeting.meetingReactionReceived",e)}function R(e){if(void 0===(null==e?void 0:e.joinWebUrl)||null===(null==e?void 0:e.joinWebUrl))return Promise.reject(new Error("Invalid joinMeetingParams"));r(d);const n={joinWebUrl:e.joinWebUrl.href,source:e.source||f.Other};return t(l("v2","meeting.joinMeeting"),"meeting.joinMeeting",n)}function I(t,s){if(!s)throw new Error("[requestAppAudioHandling] Callback response cannot be null");if(!t.micMuteStateChangedCallback)throw new Error("[requestAppAudioHandling] Callback Mic mute state handler cannot be null");r(d,g.sidePanel,g.meetingStage),t.isAppHandlingAudio?function(t,a){const o=(n,o)=>{if(n&&null!=o)throw new Error("[requestAppAudioHandling] Callback response - both parameters cannot be set");if(n)throw new Error(`[requestAppAudioHandling] Callback response - SDK error ${n.errorCode} ${n.message}`);if("boolean"!=typeof o)throw new Error("[requestAppAudioHandling] Callback response - isHostAudioless must be a boolean");const r=n=>e(this,void 0,void 0,function*(){try{const e=yield t.micMuteStateChangedCallback(n);F(e,e.isMicMuted===n.isMicMuted?m.HostInitiated:m.AppDeclinedToChange)}catch(e){F(n,m.AppFailedToChange)}});i(l(u,"meeting.registerMicStateChangeHandler"),"meeting.micStateChanged",r);const g=e=>{var n;null===(n=t.audioDeviceSelectionChangedCallback)||void 0===n||n.call(t,e)};i(l(u,"meeting.registerAudioDeviceSelectionChangedHandler"),"meeting.audioDeviceSelectionChanged",g),a(o)};n(l(u,"meeting.requestAppAudioHandling"),"meeting.requestAppAudioHandling",[t.isAppHandlingAudio],o)}(t,s):function(e,t){const i=(e,n)=>{if(e&&null!=n)throw new Error("[requestAppAudioHandling] Callback response - both parameters cannot be set");if(e)throw new Error(`[requestAppAudioHandling] Callback response - SDK error ${e.errorCode} ${e.message}`);if("boolean"!=typeof n)throw new Error("[requestAppAudioHandling] Callback response - isHostAudioless must be a boolean");a("meeting.micStateChanged")&&o("meeting.micStateChanged"),a("meeting.audioDeviceSelectionChanged")&&o("meeting.audioDeviceSelectionChanged"),t(n)};n(l(u,"meeting.requestAppAudioHandling"),"meeting.requestAppAudioHandling",[e.isAppHandlingAudio],i)}(t,s)}function U(e){F(e,m.AppInitiated)}function F(e,t){r(d,g.sidePanel,g.meetingStage),n(l(u,"meeting.setMicStateWithReason"),"meeting.updateMicState",[e,t])}!function(e){e[e.HostInitiated=0]="HostInitiated",e[e.AppInitiated=1]="AppInitiated",e[e.AppDeclinedToChange=2]="AppDeclinedToChange",e[e.AppFailedToChange=3]="AppFailedToChange"}(m||(m={})),function(e){e.like="like",e.heart="heart",e.laugh="laugh",e.surprised="surprised",e.applause="applause"}(p||(p={})),function(e){e.Unknown="Unknown",e.Adhoc="Adhoc",e.Scheduled="Scheduled",e.Recurring="Recurring",e.Broadcast="Broadcast",e.MeetNow="MeetNow"}(h||(h={})),function(e){e.OneOnOneCall="oneOnOneCall",e.GroupCall="groupCall"}(C||(C={})),function(e){e.Collaborative="Collaborative",e.ScreenShare="ScreenShare"}(S||(S={})),function(e){e.M365CalendarGridContextMenu="m365_calendar_grid_context_menu",e.M365CalendarGridPeek="m365_calendar_grid_peek",e.M365CalendarGridEventCardJoinButton="m365_calendar_grid_event_card_join_button",e.M365CalendarFormRibbonJoinButton="m365_calendar_form_ribbon_join_button",e.M365CalendarFormJoinTeamsMeetingButton="m365_calendar_form_join_teams_meeting_button",e.M365CalendarMeetNow="m365_calendar_meet_now",e.Other="other"}(f||(f={}));export{C as CallType,f as EventActionSource,p as MeetingReactionType,h as MeetingType,S as SharingProtocol,j as getAppContentStageSharingCapabilities,T as getAppContentStageSharingState,H as getAuthenticationTokenForAnonymousUser,b as getIncomingClientAudioState,_ as getLiveStreamState,w as getMeetingDetails,v as getMeetingDetailsVerbose,R as joinMeeting,E as registerLiveStreamChangedHandler,O as registerMeetingReactionReceivedHandler,y as registerRaiseHandStateChangedHandler,D as registerSpeakingStateChangeHandler,I as requestAppAudioHandling,k as requestStartLiveStreaming,M as requestStopLiveStreaming,P as shareAppContentToStage,q as stopSharingAppContentToStage,A as toggleIncomingClientAudio,U as updateMicState};
@@ -0,0 +1 @@
1
+ import{__awaiter as t}from"../../../../node_modules/.pnpm/@rollup_plugin-typescript@11.1.6_rollup@4.55.1_tslib@2.8.1_typescript@4.9.5/node_modules/tslib/tslib.es6.js";import{callFunctionInHost as e}from"../internal/communication.js";import{ensureInitialized as o}from"../internal/internalAPIs.js";import{getApiVersionTag as n}from"../internal/telemetry.js";import{errorNotSupportedOnPlatform as r}from"./constants.js";import{runtime as i}from"./runtime.js";class u{constructor(t){this.direction=t}serialize(){return{direction:this.direction}}}function s(t){return 3===t?"back":4===t?"forward":void 0}function m(t){void 0!==s(t.button)&&(t.preventDefault(),t.stopImmediatePropagation())}function a(t){const o=s(t.button);o&&(t.preventDefault(),t.stopImmediatePropagation(),e("mouseRelay.navigateHistory",[new u(o)],n("v2","mouseRelay.navigateHistory")))}let c=!1;function p(){return t(this,void 0,void 0,function*(){if(!l())throw r;c||(document.addEventListener("mousedown",m,{capture:!0}),document.addEventListener("mouseup",a,{capture:!0}),document.addEventListener("auxclick",m,{capture:!0})),c=!0})}function d(){if(!l())throw r;c=!1,document.removeEventListener("mousedown",m,{capture:!0}),document.removeEventListener("mouseup",a,{capture:!0}),document.removeEventListener("auxclick",m,{capture:!0})}function l(){return!(!o(i)||!i.supports.mouseRelay)}export{d as disableMouseRelayCapability,p as enableMouseRelayCapability,l as isSupported};
@@ -1 +1 @@
1
- const o="2.53.1";export{o as version};
1
+ const o="2.54.0";export{o as version};
@@ -1059,6 +1059,7 @@ __webpack_require__.d(__webpack_exports__, {
1059
1059
  menus: () => (/* reexport */ menus_namespaceObject),
1060
1060
  messageChannels: () => (/* reexport */ messageChannels_namespaceObject),
1061
1061
  monetization: () => (/* reexport */ monetization_namespaceObject),
1062
+ mouseRelay: () => (/* reexport */ mouseRelay_namespaceObject),
1062
1063
  navigateBack: () => (/* reexport */ navigation_navigateBack),
1063
1064
  navigateCrossDomain: () => (/* reexport */ navigation_navigateCrossDomain),
1064
1065
  navigateToTab: () => (/* reexport */ navigation_navigateToTab),
@@ -2081,6 +2082,15 @@ __webpack_require__.d(marketplace_namespaceObject, {
2081
2082
  updateCartStatus: () => (updateCartStatus)
2082
2083
  });
2083
2084
 
2085
+ // NAMESPACE OBJECT: ./src/public/mouseRelay.ts
2086
+ var mouseRelay_namespaceObject = {};
2087
+ __webpack_require__.r(mouseRelay_namespaceObject);
2088
+ __webpack_require__.d(mouseRelay_namespaceObject, {
2089
+ disableMouseRelayCapability: () => (disableMouseRelayCapability),
2090
+ enableMouseRelayCapability: () => (enableMouseRelayCapability),
2091
+ isSupported: () => (mouseRelay_isSupported)
2092
+ });
2093
+
2084
2094
  // NAMESPACE OBJECT: ./src/public/shortcutRelay.ts
2085
2095
  var shortcutRelay_namespaceObject = {};
2086
2096
  __webpack_require__.r(shortcutRelay_namespaceObject);
@@ -2294,7 +2304,17 @@ var EduType;
2294
2304
  EduType["Other"] = "other";
2295
2305
  })(EduType || (EduType = {}));
2296
2306
  /**
2297
- * Currently supported Mime type
2307
+ * Currently supported MIME types
2308
+ *
2309
+ * @deprecated
2310
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
2311
+ * any time without notice: support for this capability in Teams and other host apps may be removed
2312
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
2313
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
2314
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
2315
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
2316
+ * supported; it depends on native device permission handling that is still being enabled as a
2317
+ * separate effort.
2298
2318
  */
2299
2319
  var ClipboardSupportedMimeType;
2300
2320
  (function (ClipboardSupportedMimeType) {
@@ -4674,7 +4694,7 @@ function isSerializable(arg) {
4674
4694
  * @hidden
4675
4695
  * Package version.
4676
4696
  */
4677
- const version = "2.53.1";
4697
+ const version = "2.54.0";
4678
4698
 
4679
4699
  ;// ./src/public/featureFlags.ts
4680
4700
  // All build feature flags are defined inside this object. Any build feature flag must have its own unique getter and setter function. This pattern allows for client apps to treeshake unused code and avoid including code guarded by this feature flags in the final bundle. If this property isn't desired, use the below runtime feature flags object.
@@ -16123,6 +16143,16 @@ function chat_isSupported() {
16123
16143
  /**
16124
16144
  * Interact with the system clipboard
16125
16145
  *
16146
+ * @deprecated
16147
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
16148
+ * any time without notice: support for this capability in Teams and other host apps may be removed
16149
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
16150
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
16151
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
16152
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
16153
+ * supported; it depends on native device permission handling that is still being enabled as a
16154
+ * separate effort.
16155
+ *
16126
16156
  * @beta
16127
16157
  * @module
16128
16158
  */
@@ -16149,6 +16179,17 @@ var clipboard_awaiter = (undefined && undefined.__awaiter) || function (thisArg,
16149
16179
  const clipboardTelemetryVersionNumber = "v2" /* ApiVersionNumber.V_2 */;
16150
16180
  /**
16151
16181
  * Function to copy data to clipboard.
16182
+ *
16183
+ * @deprecated
16184
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
16185
+ * any time without notice: support for this capability in Teams and other host apps may be removed
16186
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
16187
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
16188
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
16189
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
16190
+ * supported; it depends on native device permission handling that is still being enabled as a
16191
+ * separate effort.
16192
+ *
16152
16193
  * @remarks
16153
16194
  * Note: clipboard.write only supports Text, HTML, PNG, and JPEG data format.
16154
16195
  * MIME type for Text -> `text/plain`, HTML -> `text/html`, PNG/JPEG -> `image/(png | jpeg)`
@@ -16178,6 +16219,16 @@ function write(blob) {
16178
16219
  /**
16179
16220
  * Function to read data from clipboard.
16180
16221
  *
16222
+ * @deprecated
16223
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
16224
+ * any time without notice: support for this capability in Teams and other host apps may be removed
16225
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
16226
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
16227
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
16228
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
16229
+ * supported; it depends on native device permission handling that is still being enabled as a
16230
+ * separate effort.
16231
+ *
16181
16232
  * @returns A promise blob which resolves to the data read from the clipboard or
16182
16233
  * rejects stating the reason for failure.
16183
16234
  * Note: Returned blob type will contain one of the MIME type `image/png`, `text/plain` or `text/html`.
@@ -16205,6 +16256,16 @@ function read() {
16205
16256
  *
16206
16257
  * @throws Error if {@linkcode app.initialize} has not successfully completed
16207
16258
  *
16259
+ * @deprecated
16260
+ * As of TeamsJS v2.54.0, the clipboard capability is deprecated. These APIs may stop working at
16261
+ * any time without notice: support for this capability in Teams and other host apps may be removed
16262
+ * entirely and independently of a TeamsJS major release, so continued functionality is not
16263
+ * guaranteed. The intended long-term replacement is the standardized Clipboard API provided by the
16264
+ * browser ({@link https://developer.mozilla.org/docs/Web/API/Clipboard_API | Clipboard API}, `navigator.clipboard`).
16265
+ * Note that using the browser-native Clipboard API directly within Teams hosts is not yet fully
16266
+ * supported; it depends on native device permission handling that is still being enabled as a
16267
+ * separate effort.
16268
+ *
16208
16269
  * @beta
16209
16270
  */
16210
16271
  function clipboard_isSupported() {
@@ -17409,6 +17470,10 @@ var EventActionSource;
17409
17470
  * Source is calendar form join teams meeting button.
17410
17471
  */
17411
17472
  EventActionSource["M365CalendarFormJoinTeamsMeetingButton"] = "m365_calendar_form_join_teams_meeting_button";
17473
+ /**
17474
+ * Source is the M365 calendar Meet Now start action.
17475
+ */
17476
+ EventActionSource["M365CalendarMeetNow"] = "m365_calendar_meet_now";
17412
17477
  /**
17413
17478
  * Other sources.
17414
17479
  */
@@ -20353,6 +20418,138 @@ function marketplace_isSupported() {
20353
20418
  return ensureInitialized(runtime) && runtime.supports.marketplace ? true : false;
20354
20419
  }
20355
20420
 
20421
+ ;// ./src/public/mouseRelay.ts
20422
+ /**
20423
+ * Lets an app inside a Teams iframe relay the mouse back (X1) / forward (X2)
20424
+ * buttons to the host so they drive Teams history navigation.
20425
+ *
20426
+ * @module
20427
+ */
20428
+ var mouseRelay_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
20429
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20430
+ return new (P || (P = Promise))(function (resolve, reject) {
20431
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20432
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20433
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20434
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20435
+ });
20436
+ };
20437
+
20438
+
20439
+
20440
+
20441
+
20442
+ /* ------------------------------------------------------------------ */
20443
+ /* Utils */
20444
+ /* ------------------------------------------------------------------ */
20445
+ /** `MouseEvent.button` value for the back (X1) button. */
20446
+ const MOUSE_BUTTON_BACK = 3;
20447
+ /** `MouseEvent.button` value for the forward (X2) button. */
20448
+ const MOUSE_BUTTON_FORWARD = 4;
20449
+ class SerializableNavigationIntent {
20450
+ constructor(direction) {
20451
+ this.direction = direction;
20452
+ }
20453
+ serialize() {
20454
+ return { direction: this.direction };
20455
+ }
20456
+ }
20457
+ /**
20458
+ * Maps a `MouseEvent.button` value to a navigation direction, or `undefined`
20459
+ * for any button other than the back (X1) / forward (X2) buttons.
20460
+ */
20461
+ function directionForButton(button) {
20462
+ if (button === MOUSE_BUTTON_BACK) {
20463
+ return 'back';
20464
+ }
20465
+ if (button === MOUSE_BUTTON_FORWARD) {
20466
+ return 'forward';
20467
+ }
20468
+ return undefined;
20469
+ }
20470
+ /**
20471
+ * Suppress the iframe's own native X1/X2 history navigation (and the synthetic
20472
+ * `click`). Attached to `mousedown` (earliest, most reliable) and `auxclick`;
20473
+ * never relays.
20474
+ */
20475
+ function suppressX1X2(event) {
20476
+ if (directionForButton(event.button) !== undefined) {
20477
+ event.preventDefault();
20478
+ event.stopImmediatePropagation();
20479
+ }
20480
+ }
20481
+ /**
20482
+ * Relay the back/forward intent to the host on `mouseup` (release), matching
20483
+ * the browser's native timing so press-and-hold does nothing until release.
20484
+ */
20485
+ function mouseupHandler(event) {
20486
+ const direction = directionForButton(event.button);
20487
+ if (!direction) {
20488
+ return; // not the back/forward button
20489
+ }
20490
+ event.preventDefault();
20491
+ event.stopImmediatePropagation();
20492
+ callFunctionInHost("mouseRelay.navigateHistory" /* ApiName.MouseRelay_NavigateHistory */, [new SerializableNavigationIntent(direction)], getApiVersionTag("v2" /* ApiVersionNumber.V_2 */, "mouseRelay.navigateHistory" /* ApiName.MouseRelay_NavigateHistory */));
20493
+ }
20494
+ /* ------------------------------------------------------------------ */
20495
+ /* In-memory */
20496
+ /* ------------------------------------------------------------------ */
20497
+ /**
20498
+ * @hidden
20499
+ * @internal
20500
+ * Flag to indicate the mouse relay capability has been enabled, so that we do
20501
+ * not register the event listeners multiple times.
20502
+ */
20503
+ let isMouseRelayCapabilityEnabled = false;
20504
+ /* ------------------------------------------------------------------ */
20505
+ /* API */
20506
+ /* ------------------------------------------------------------------ */
20507
+ /**
20508
+ * Enable the capability so the mouse back (X1) / forward (X2) buttons pressed
20509
+ * inside this iframe drive Teams history navigation in the host.
20510
+ *
20511
+ * @throws Error if {@link app.initialize} has not successfully completed or the
20512
+ * host does not support the mouseRelay capability.
20513
+ */
20514
+ function enableMouseRelayCapability() {
20515
+ return mouseRelay_awaiter(this, void 0, void 0, function* () {
20516
+ if (!mouseRelay_isSupported()) {
20517
+ throw errorNotSupportedOnPlatform;
20518
+ }
20519
+ if (!isMouseRelayCapabilityEnabled) {
20520
+ document.addEventListener('mousedown', suppressX1X2, { capture: true });
20521
+ document.addEventListener('mouseup', mouseupHandler, { capture: true });
20522
+ document.addEventListener('auxclick', suppressX1X2, { capture: true });
20523
+ }
20524
+ isMouseRelayCapabilityEnabled = true;
20525
+ });
20526
+ }
20527
+ /**
20528
+ * Disable the mouse relay capability, detaching its listeners so the mouse
20529
+ * back (X1) / forward (X2) buttons no longer drive Teams history navigation.
20530
+ *
20531
+ * @throws Error if {@link app.initialize} has not successfully completed or the
20532
+ * host does not support the mouseRelay capability.
20533
+ */
20534
+ function disableMouseRelayCapability() {
20535
+ if (!mouseRelay_isSupported()) {
20536
+ throw errorNotSupportedOnPlatform;
20537
+ }
20538
+ isMouseRelayCapabilityEnabled = false;
20539
+ document.removeEventListener('mousedown', suppressX1X2, { capture: true });
20540
+ document.removeEventListener('mouseup', mouseupHandler, { capture: true });
20541
+ document.removeEventListener('auxclick', suppressX1X2, { capture: true });
20542
+ }
20543
+ /**
20544
+ * Checks if the mouseRelay capability is supported by the host.
20545
+ * @returns boolean to represent whether the mouseRelay capability is supported.
20546
+ *
20547
+ * @throws Error if {@link app.initialize} has not successfully completed.
20548
+ */
20549
+ function mouseRelay_isSupported() {
20550
+ return ensureInitialized(runtime) && runtime.supports.mouseRelay ? true : false;
20551
+ }
20552
+
20356
20553
  ;// ./src/public/shortcutRelay.ts
20357
20554
  /**
20358
20555
  * Allows host shortcuts to function in your application by forwarding keyboard shortcuts to the host.
@@ -20695,6 +20892,8 @@ const DISABLE_SHORTCUT_FORWARDING_ATTRIBUTE = 'data-disable-shortcuts-forwarding
20695
20892
 
20696
20893
 
20697
20894
 
20895
+
20896
+
20698
20897
 
20699
20898
  ;// ./src/index.ts
20700
20899