@microsoft/teams-js 2.51.0 → 2.53.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 (24) hide show
  1. package/README.md +4 -4
  2. package/dist/esm/node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/regex.js +1 -0
  3. package/dist/esm/node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/rng.js +1 -0
  4. package/dist/esm/node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/stringify.js +1 -0
  5. package/dist/esm/node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/v4.js +1 -0
  6. package/dist/esm/packages/teams-js/dts/public/sharing/sharing.d.ts +19 -2
  7. package/dist/esm/packages/teams-js/dts/public/shortcutRelay.d.ts +0 -7
  8. package/dist/esm/packages/teams-js/src/internal/marketplaceUtils.js +1 -1
  9. package/dist/esm/packages/teams-js/src/internal/utils.js +1 -1
  10. package/dist/esm/packages/teams-js/src/private/nestedAppAuth/nestedAppAuthBridge.js +1 -1
  11. package/dist/esm/packages/teams-js/src/public/sharing/sharing.js +1 -1
  12. package/dist/esm/packages/teams-js/src/public/shortcutRelay.js +1 -1
  13. package/dist/esm/packages/teams-js/src/public/version.js +1 -1
  14. package/dist/umd/MicrosoftTeams.js +84 -92
  15. package/dist/umd/MicrosoftTeams.js.map +1 -1
  16. package/dist/umd/MicrosoftTeams.min.js +1 -1
  17. package/dist/umd/MicrosoftTeams.min.js.map +1 -1
  18. package/package.json +1 -53
  19. package/dist/esm/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/regex.js +0 -1
  20. package/dist/esm/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js +0 -1
  21. package/dist/esm/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js +0 -1
  22. package/dist/esm/node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js +0 -1
  23. /package/dist/esm/node_modules/.pnpm/{uuid@9.0.1 → uuid@11.1.1}/node_modules/uuid/dist/esm-browser/native.js +0 -0
  24. /package/dist/esm/node_modules/.pnpm/{uuid@9.0.1 → uuid@11.1.1}/node_modules/uuid/dist/esm-browser/validate.js +0 -0
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.51.0/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.53.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.51.0/js/MicrosoftTeams.min.js"
49
- integrity="sha384-U54aLArLUNmLIfKxJ7P5Ybiq6sXmSH6aNROHNdKLpABDXH+KB/wE17SEz43/zsAe"
48
+ src="https://res.cdn.office.net/teams-js/2.53.0/js/MicrosoftTeams.min.js"
49
+ integrity="sha384-UFKwOGC8ix6vOFFC4vH8hSpjwkQXZmSjCx8aaxwhbtm+6joQdNvD7b4pPk82cYAD"
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.51.0/dist/MicrosoftTeams.min.js"></script>
54
+ <script src="node_modules/@microsoft/teams-js@2.53.0/dist/MicrosoftTeams.min.js"></script>
55
55
 
56
56
  <!-- Microsoft Teams JavaScript API (via local) -->
57
57
  <script src="MicrosoftTeams.min.js"></script>
@@ -0,0 +1 @@
1
+ var f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i;export{f as default};
@@ -0,0 +1 @@
1
+ let t;const e=new Uint8Array(16);function o(){if(!t){if("undefined"==typeof crypto||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");t=crypto.getRandomValues.bind(crypto)}return t(e)}export{o as default};
@@ -0,0 +1 @@
1
+ const t=[];for(let o=0;o<256;++o)t.push((o+256).toString(16).slice(1));function o(o,e=0){return(t[o[e+0]]+t[o[e+1]]+t[o[e+2]]+t[o[e+3]]+"-"+t[o[e+4]]+t[o[e+5]]+"-"+t[o[e+6]]+t[o[e+7]]+"-"+t[o[e+8]]+t[o[e+9]]+"-"+t[o[e+10]]+t[o[e+11]]+t[o[e+12]]+t[o[e+13]]+t[o[e+14]]+t[o[e+15]]).toLowerCase()}export{o as unsafeStringify};
@@ -0,0 +1 @@
1
+ import r from"./native.js";import n from"./rng.js";import{unsafeStringify as t}from"./stringify.js";function o(o,m,e){if(r.randomUUID&&!o)return r.randomUUID();const i=(o=o||{}).random??o.rng?.()??n();if(i.length<16)throw new Error("Random bytes length must be >= 16");return i[6]=15&i[6]|64,i[8]=63&i[8]|128,t(i)}export{o as default};
@@ -15,14 +15,14 @@ export declare const SharingAPIMessages: {
15
15
  */
16
16
  shareWebContent: string;
17
17
  };
18
- type ContentType = 'URL';
18
+ type ContentType = 'URL' | 'FILE';
19
19
  /** Represents parameters for base shared content. */
20
20
  interface IBaseSharedContent {
21
21
  /** Shared content type */
22
22
  type: ContentType;
23
23
  }
24
24
  /** IShareRequestContentType defines share request type. */
25
- export type IShareRequestContentType = IURLContent;
25
+ export type IShareRequestContentType = IURLContent | IFileContent;
26
26
  /** Represents IShareRequest parameters interface.
27
27
  * @typeparam T - The identity type
28
28
  */
@@ -30,6 +30,23 @@ export interface IShareRequest<T> {
30
30
  /** Content of the share request. */
31
31
  content: T[];
32
32
  }
33
+ /** Represents IFileContent parameters. */
34
+ export interface IFileContent extends IBaseSharedContent {
35
+ /** Type */
36
+ type: 'FILE';
37
+ /**
38
+ * Required URL of the file to share
39
+ */
40
+ url: string;
41
+ /**
42
+ * Default initial message text
43
+ */
44
+ message?: string;
45
+ /**
46
+ * Show file preview, defaults to true
47
+ */
48
+ preview?: boolean;
49
+ }
33
50
  /** Represents IURLContent parameters. */
34
51
  export interface IURLContent extends IBaseSharedContent {
35
52
  /** Type */
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * Allows host shortcuts to function in your application by forwarding keyboard shortcuts to the host.
3
3
  *
4
- * This functionality is in Beta.
5
- * @beta
6
4
  * @module
7
5
  */
8
6
  /**
@@ -26,20 +24,17 @@ export type OverridableShortcutHandler = (event: KeyboardEvent, data: Overridabl
26
24
  * • Pass `undefined` to remove an existing handler.
27
25
  * • Returns the previous handler so callers can restore it if needed.
28
26
  *
29
- * @beta
30
27
  */
31
28
  export declare function setOverridableShortcutHandler(handler: OverridableShortcutHandler | undefined): OverridableShortcutHandler | undefined;
32
29
  /**
33
30
  * Reset the state of the shortcut relay capability.
34
31
  * This is useful for tests to ensure a clean state.
35
32
  *
36
- * @beta
37
33
  */
38
34
  export declare function resetIsShortcutRelayCapabilityEnabled(): void;
39
35
  /**
40
36
  * Enable capability to support host shortcuts.
41
37
  *
42
- * @beta
43
38
  */
44
39
  export declare function enableShortcutRelayCapability(): Promise<void>;
45
40
  /**
@@ -48,13 +43,11 @@ export declare function enableShortcutRelayCapability(): Promise<void>;
48
43
  *
49
44
  * @throws Error if {@link app.initialize} has not successfully completed
50
45
  *
51
- * @beta
52
46
  */
53
47
  export declare function isSupported(): boolean;
54
48
  /**
55
49
  * Allow apps to define zones where shortcuts should not be forwarded to the host.
56
50
  * This is useful for input fields for password where shortcuts should not trigger host actions.
57
51
  *
58
- * @beta
59
52
  */
60
53
  export declare const DISABLE_SHORTCUT_FORWARDING_ATTRIBUTE = "data-disable-shortcuts-forwarding";
@@ -1 +1 @@
1
- import{__rest as r}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{CartStatus as e}from"../public/marketplace.js";import t from"../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/validate.js";function o(r){try{return r.cartItems=s(r.cartItems),r}catch(r){throw new Error("Error deserializing cart")}}function s(r){return r.map(r=>{if(r.imageURL){const e=new URL(r.imageURL);r.imageURL=e}return r.accessories&&(r.accessories=s(r.accessories)),r})}const i=e=>{try{return e.map(e=>{const{imageURL:t,accessories:o}=e,s=r(e,["imageURL","accessories"]),n=Object.assign({},s);return t&&(n.imageURL=t.href),o&&(n.accessories=i(o)),n})}catch(r){throw new Error("Error serializing cart items")}};function n(r){if(!Array.isArray(r)||0===r.length)throw new Error("cartItems must be a non-empty array");for(const e of r)c(e),a(e.accessories)}function a(r){if(null!=r){if(!Array.isArray(r)||0===r.length)throw new Error("CartItem.accessories must be a non-empty array");for(const e of r){if(e.accessories)throw new Error("Item in CartItem.accessories cannot have accessories");c(e)}}}function c(r){if(!r.id)throw new Error("cartItem.id must not be empty");if(!r.name)throw new Error("cartItem.name must not be empty");u(r.price),f(r.quantity)}function m(r){if(null!=r){if(!r)throw new Error("id must not be empty");if(!1===t(r))throw new Error("id must be a valid UUID")}}function u(r){if("number"!=typeof r||r<0)throw new Error(`price ${r} must be a number not less than 0`);if(parseFloat(r.toFixed(3))!==r)throw new Error(`price ${r} must have at most 3 decimal places`)}function f(r){if("number"!=typeof r||r<=0||parseInt(r.toString())!==r)throw new Error(`quantity ${r} must be an integer greater than 0`)}function p(r){if(!Object.values(e).includes(r))throw new Error(`cartStatus ${r} is not valid`)}export{o as deserializeCart,s as deserializeCartItems,i as serializeCartItems,a as validateAccessoryItems,c as validateBasicCartItem,n as validateCartItems,p as validateCartStatus,u as validatePrice,f as validateQuantity,m as validateUuid};
1
+ import{__rest as r}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{CartStatus as e}from"../public/marketplace.js";import t from"../../../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/validate.js";function o(r){try{return r.cartItems=s(r.cartItems),r}catch(r){throw new Error("Error deserializing cart")}}function s(r){return r.map(r=>{if(r.imageURL){const e=new URL(r.imageURL);r.imageURL=e}return r.accessories&&(r.accessories=s(r.accessories)),r})}const i=e=>{try{return e.map(e=>{const{imageURL:t,accessories:o}=e,s=r(e,["imageURL","accessories"]),n=Object.assign({},s);return t&&(n.imageURL=t.href),o&&(n.accessories=i(o)),n})}catch(r){throw new Error("Error serializing cart items")}};function n(r){if(!Array.isArray(r)||0===r.length)throw new Error("cartItems must be a non-empty array");for(const e of r)c(e),a(e.accessories)}function a(r){if(null!=r){if(!Array.isArray(r)||0===r.length)throw new Error("CartItem.accessories must be a non-empty array");for(const e of r){if(e.accessories)throw new Error("Item in CartItem.accessories cannot have accessories");c(e)}}}function c(r){if(!r.id)throw new Error("cartItem.id must not be empty");if(!r.name)throw new Error("cartItem.name must not be empty");u(r.price),f(r.quantity)}function m(r){if(null!=r){if(!r)throw new Error("id must not be empty");if(!1===t(r))throw new Error("id must be a valid UUID")}}function u(r){if("number"!=typeof r||r<0)throw new Error(`price ${r} must be a number not less than 0`);if(parseFloat(r.toFixed(3))!==r)throw new Error(`price ${r} must have at most 3 decimal places`)}function f(r){if("number"!=typeof r||r<=0||parseInt(r.toString())!==r)throw new Error(`quantity ${r} must be an integer greater than 0`)}function p(r){if(!Object.values(e).includes(r))throw new Error(`cartStatus ${r} is not valid`)}export{o as deserializeCart,s as deserializeCartItems,i as serializeCartItems,a as validateAccessoryItems,c as validateBasicCartItem,n as validateCartItems,p as validateCartStatus,u as validatePrice,f as validateQuantity,m as validateUuid};
@@ -1 +1 @@
1
- import{Buffer as t}from"../../../../_virtual/_polyfill-node.buffer.js";import{minAdaptiveCardVersion as e}from"../public/constants.js";import{LegalAgeGroupClassification as n}from"../public/interfaces.js";import r from"../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js";import o from"../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/validate.js";function i(t){return(t,e)=>{if(!t)throw new Error(e)}}function s(t,e){if("string"!=typeof t||"string"!=typeof e)return NaN;const n=t.split("."),r=e.split(".");function o(t){return/^\d+$/.test(t)}if(!n.every(o)||!r.every(o))return NaN;for(;n.length<r.length;)n.push("0");for(;r.length<n.length;)r.push("0");for(let t=0;t<n.length;++t)if(Number(n[t])!=Number(r[t]))return Number(n[t])>Number(r[t])?1:-1;return 0}function u(){return r()}function c(t){return Object.keys(t).forEach(e=>{null!==t[e]&&void 0!==t[e]&&"object"==typeof t[e]&&c(t[e])}),Object.freeze(t)}function a(t,e,...n){const r=t(...n);return r.then(t=>{e&&e(void 0,t)}).catch(t=>{e&&e(t)}),r}function l(t,e,...n){const r=t(...n);return r.then(()=>{e&&e(null)}).catch(t=>{e&&e(t)}),r}function f(t,e,...n){const r=t(...n);return r.then(t=>{e&&e(null,t)}).catch(t=>{e&&e(t,null)}),r}function p(t,e,n){return new Promise((r,o)=>{const i=setTimeout(o,e,n);t().then(t=>{clearTimeout(i),r(t)}).catch(t=>{clearTimeout(i),o(t)})})}function d(t){const e=new URL("https://teams.microsoft.com/l/entity/"+encodeURIComponent(t.appId.toString())+"/"+encodeURIComponent(t.pageId));return t.webUrl&&e.searchParams.append("webUrl",t.webUrl.toString()),(t.chatId||t.channelId||t.subPageId)&&e.searchParams.append("context",JSON.stringify({chatId:t.chatId,channelId:t.channelId,subEntityId:t.subPageId})),e.toString()}function m(t){return!(s(`${t.majorVersion}.${t.minorVersion}`,`${e.majorVersion}.${e.minorVersion}`)>=0)}function h(t){return"https:"===t.protocol}function b(e,n){return new Promise((r,o)=>{if(e||o("MimeType cannot be null or empty."),n||o("Base64 string cannot be null or empty."),e.startsWith("image/")){const t=atob(n),o=new Uint8Array(t.length);for(let e=0;e<t.length;e++)o[e]=t.charCodeAt(e);r(new Blob([o],{type:e}))}const i=t.from(n,"base64").toString();r(new Blob([i],{type:e}))})}function g(t){return new Promise((e,n)=>{0===t.size&&n(new Error("Blob cannot be empty."));const r=new FileReader;r.onloadend=()=>{r.result?e(r.result.toString().split(",")[1]):n(new Error("Failed to read the blob"))},r.onerror=()=>{n(r.error)},r.readAsDataURL(t)})}function w(){if(y())throw new Error("window object undefined at SSR check");return window}function y(){return"undefined"==typeof window}function j(t,e){if(E(t)||!function(t){return t.length<256&&t.length>4}(t)||!function(t){for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<32||n>126)return!1}return!0}(t))throw e||new Error("id is not valid.")}function I(t,e){const n=t.toString().toLocaleLowerCase();if(E(n))throw new Error("Invalid Url");if(n.length>2048)throw new Error("Url exceeds the maximum size of 2048 characters");if(!h(t))throw new Error("Url should be a valid https url")}function v(t){const e=document.createElement("a");return e.href=t,new URL(e.href)}function E(t){return new RegExp(`${/<script[^>]*>|&lt;script[^&]*&gt;|%3Cscript[^%]*%3E/gi.source}|${/<\/script[^>]*>|&lt;\/script[^&]*&gt;|%3C\/script[^%]*%3E/gi.source}`,"gi").test(t)}function O(t){if(!t)throw new Error("id must not be empty");if(!1===o(t))throw new Error("id must be a valid UUID")}const U=!!performance&&"now"in performance;function N(){return U?performance.now()+performance.timeOrigin:void 0}function S(t,e=0){if(e>1e3)return!1;if(void 0===t||"boolean"==typeof t||"number"==typeof t||"bigint"==typeof t||"string"==typeof t||null===t)return!0;if(Array.isArray(t))return t.every(t=>S(t,e+1));return!("object"!=typeof t||"[object Object]"!==Object.prototype.toString.call(t)||Object.getPrototypeOf(t)!==Object.prototype&&null!==Object.getPrototypeOf(t))&&Object.keys(t).every(n=>S(t[n],e+1))}function P(t){var e,r;if(!(null===(r=null===(e=t.hostVersionsInfo)||void 0===e?void 0:e.appEligibilityInformation)||void 0===r?void 0:r.ageGroup))return t;const o=t.hostVersionsInfo.appEligibilityInformation.ageGroup;return"nonadult"!==(null==o?void 0:o.toLowerCase())?t:Object.assign(Object.assign({},t),{hostVersionsInfo:Object.assign(Object.assign({},t.hostVersionsInfo),{appEligibilityInformation:Object.assign(Object.assign({},t.hostVersionsInfo.appEligibilityInformation),{ageGroup:n.NotAdult})})})}export{b as base64ToBlob,a as callCallbackWithErrorOrResultFromPromiseAndReturnPromise,f as callCallbackWithErrorOrResultOrNullFromPromiseAndReturnPromise,l as callCallbackWithSdkErrorFromPromiseAndReturnPromise,s as compareSDKVersions,d as createTeamsAppLink,c as deepFreeze,v as fullyQualifyUrlString,u as generateGUID,g as getBase64StringFromBlob,N as getCurrentTimestamp,i as getGenericOnCompleteHandler,E as hasScriptTags,y as inServerSideRenderingEnvironment,m as isHostAdaptiveCardSchemaVersionUnsupported,S as isPrimitiveOrPlainObject,h as isValidHttpsURL,P as normalizeAgeGroupValue,p as runWithTimeout,w as ssrSafeWindow,j as validateId,I as validateUrl,O as validateUuid};
1
+ import{Buffer as t}from"../../../../_virtual/_polyfill-node.buffer.js";import{minAdaptiveCardVersion as e}from"../public/constants.js";import{LegalAgeGroupClassification as n}from"../public/interfaces.js";import r from"../../../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/v4.js";import o from"../../../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/validate.js";function i(t){return(t,e)=>{if(!t)throw new Error(e)}}function s(t,e){if("string"!=typeof t||"string"!=typeof e)return NaN;const n=t.split("."),r=e.split(".");function o(t){return/^\d+$/.test(t)}if(!n.every(o)||!r.every(o))return NaN;for(;n.length<r.length;)n.push("0");for(;r.length<n.length;)r.push("0");for(let t=0;t<n.length;++t)if(Number(n[t])!=Number(r[t]))return Number(n[t])>Number(r[t])?1:-1;return 0}function u(){return r()}function c(t){return Object.keys(t).forEach(e=>{null!==t[e]&&void 0!==t[e]&&"object"==typeof t[e]&&c(t[e])}),Object.freeze(t)}function a(t,e,...n){const r=t(...n);return r.then(t=>{e&&e(void 0,t)}).catch(t=>{e&&e(t)}),r}function l(t,e,...n){const r=t(...n);return r.then(()=>{e&&e(null)}).catch(t=>{e&&e(t)}),r}function f(t,e,...n){const r=t(...n);return r.then(t=>{e&&e(null,t)}).catch(t=>{e&&e(t,null)}),r}function p(t,e,n){return new Promise((r,o)=>{const i=setTimeout(o,e,n);t().then(t=>{clearTimeout(i),r(t)}).catch(t=>{clearTimeout(i),o(t)})})}function d(t){const e=new URL("https://teams.microsoft.com/l/entity/"+encodeURIComponent(t.appId.toString())+"/"+encodeURIComponent(t.pageId));return t.webUrl&&e.searchParams.append("webUrl",t.webUrl.toString()),(t.chatId||t.channelId||t.subPageId)&&e.searchParams.append("context",JSON.stringify({chatId:t.chatId,channelId:t.channelId,subEntityId:t.subPageId})),e.toString()}function m(t){return!(s(`${t.majorVersion}.${t.minorVersion}`,`${e.majorVersion}.${e.minorVersion}`)>=0)}function h(t){return"https:"===t.protocol}function b(e,n){return new Promise((r,o)=>{if(e||o("MimeType cannot be null or empty."),n||o("Base64 string cannot be null or empty."),e.startsWith("image/")){const t=atob(n),o=new Uint8Array(t.length);for(let e=0;e<t.length;e++)o[e]=t.charCodeAt(e);r(new Blob([o],{type:e}))}const i=t.from(n,"base64").toString();r(new Blob([i],{type:e}))})}function g(t){return new Promise((e,n)=>{0===t.size&&n(new Error("Blob cannot be empty."));const r=new FileReader;r.onloadend=()=>{r.result?e(r.result.toString().split(",")[1]):n(new Error("Failed to read the blob"))},r.onerror=()=>{n(r.error)},r.readAsDataURL(t)})}function w(){if(y())throw new Error("window object undefined at SSR check");return window}function y(){return"undefined"==typeof window}function j(t,e){if(E(t)||!function(t){return t.length<256&&t.length>4}(t)||!function(t){for(let e=0;e<t.length;e++){const n=t.charCodeAt(e);if(n<32||n>126)return!1}return!0}(t))throw e||new Error("id is not valid.")}function I(t,e){const n=t.toString().toLocaleLowerCase();if(E(n))throw new Error("Invalid Url");if(n.length>2048)throw new Error("Url exceeds the maximum size of 2048 characters");if(!h(t))throw new Error("Url should be a valid https url")}function v(t){const e=document.createElement("a");return e.href=t,new URL(e.href)}function E(t){return new RegExp(`${/<script[^>]*>|&lt;script[^&]*&gt;|%3Cscript[^%]*%3E/gi.source}|${/<\/script[^>]*>|&lt;\/script[^&]*&gt;|%3C\/script[^%]*%3E/gi.source}`,"gi").test(t)}function O(t){if(!t)throw new Error("id must not be empty");if(!1===o(t))throw new Error("id must be a valid UUID")}const U=!!performance&&"now"in performance;function N(){return U?performance.now()+performance.timeOrigin:void 0}function S(t,e=0){if(e>1e3)return!1;if(void 0===t||"boolean"==typeof t||"number"==typeof t||"bigint"==typeof t||"string"==typeof t||null===t)return!0;if(Array.isArray(t))return t.every(t=>S(t,e+1));return!("object"!=typeof t||"[object Object]"!==Object.prototype.toString.call(t)||Object.getPrototypeOf(t)!==Object.prototype&&null!==Object.getPrototypeOf(t))&&Object.keys(t).every(n=>S(t[n],e+1))}function P(t){var e,r;if(!(null===(r=null===(e=t.hostVersionsInfo)||void 0===e?void 0:e.appEligibilityInformation)||void 0===r?void 0:r.ageGroup))return t;const o=t.hostVersionsInfo.appEligibilityInformation.ageGroup;return"nonadult"!==(null==o?void 0:o.toLowerCase())?t:Object.assign(Object.assign({},t),{hostVersionsInfo:Object.assign(Object.assign({},t.hostVersionsInfo),{appEligibilityInformation:Object.assign(Object.assign({},t.hostVersionsInfo.appEligibilityInformation),{ageGroup:n.NotAdult})})})}export{b as base64ToBlob,a as callCallbackWithErrorOrResultFromPromiseAndReturnPromise,f as callCallbackWithErrorOrResultOrNullFromPromiseAndReturnPromise,l as callCallbackWithSdkErrorFromPromiseAndReturnPromise,s as compareSDKVersions,d as createTeamsAppLink,c as deepFreeze,v as fullyQualifyUrlString,u as generateGUID,g as getBase64StringFromBlob,N as getCurrentTimestamp,i as getGenericOnCompleteHandler,E as hasScriptTags,y as inServerSideRenderingEnvironment,m as isHostAdaptiveCardSchemaVersionUnsupported,S as isPrimitiveOrPlainObject,h as isValidHttpsURL,P as normalizeAgeGroupValue,p as runWithTimeout,w as ssrSafeWindow,j as validateId,I as validateUrl,O as validateUuid};
@@ -1 +1 @@
1
- import e from"../../../../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js";const t="1.0.1",n={onMessage:function(e,t){if(!e||!e.data||"object"!=typeof e.data||null===e.data)return void a("Invalid message format, ignoring. Message: %o",e);if(!function(e,t){if(t===o)try{return"https:"===new URL(t).protocol}catch(e){return d("Invalid message origin URL:",e),!1}return!1}(e.source,e.origin))return void a("Message source/origin not allowed, ignoring.");const{args:n}=e.data,[,r]=null!=n?n:[],i=(()=>{try{return JSON.parse(r)}catch(e){return d("Failed to parse response message:",e),null}})();if(!i||"NestedAppAuthResponse"!==i.messageType)return void a("Invalid response format, ignoring. Message: %o",e);t(r)}};let o=null,r=!1;function i(t,i,p=!1){if(r=p,!t)throw new Error("Cannot polyfill nestedAppAuthBridge as the current window does not exist");if(!i)throw new Error("Top origin is required to initialize the Nested App Auth Bridge");try{const e=new URL(i);if("https:"!==e.protocol)throw new Error(`Invalid top origin: ${i}. Only HTTPS origins are allowed.`);o=e.origin}catch(e){throw new Error(`Failed to initialize bridge: invalid top origin: ${i}`)}const u=t;if(u.nestedAppAuthBridge)return void a("Nested App Auth Bridge is already present");const g=function(t){const r=new WeakMap,{onMessage:i}=n,p=e=>t=>i(t,e);return{addEventListener:(e,n)=>{if("message"===e){const o=p(n);r.set(n,o),t.addEventListener(e,o)}else a(`Event ${e} is not supported by nestedAppAuthBridge`)},postMessage:n=>{if(!t.top)throw new Error("window.top is not available for posting messages");try{const r=JSON.parse(n);if("object"==typeof r&&"NestedAppAuthRequest"===r.messageType){const r=function(t){const n=Date.now();return{id:s(),uuid:e(),func:"nestedAppAuth.execute",timestamp:n,apiVersionTag:"v2_nestedAppAuth.execute",monotonicTimestamp:n,args:[],data:t}}(n);if(t===t.top||!o)return void d("Not in an embedded iframe; skipping postMessage.");t.top.postMessage(r,o)}}catch(e){return void d("Failed to parse message:",e,"Original message:",n)}},removeEventListener:(e,n)=>{const o=r.get(n);o&&(t.removeEventListener(e,o),r.delete(n))}}}(u);g&&(u.nestedAppAuthBridge=g)}function s(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).substring(2,11)}function a(...e){r&&console.log(...e)}function d(...e){r&&console.error(...e)}export{i as initialize,t as version};
1
+ import e from"../../../../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/v4.js";const t="1.0.1",n={onMessage:function(e,t){if(!e||!e.data||"object"!=typeof e.data||null===e.data)return void a("Invalid message format, ignoring. Message: %o",e);if(!function(e,t){if(t===o)try{return"https:"===new URL(t).protocol}catch(e){return d("Invalid message origin URL:",e),!1}return!1}(e.source,e.origin))return void a("Message source/origin not allowed, ignoring.");const{args:n}=e.data,[,r]=null!=n?n:[],i=(()=>{try{return JSON.parse(r)}catch(e){return d("Failed to parse response message:",e),null}})();if(!i||"NestedAppAuthResponse"!==i.messageType)return void a("Invalid response format, ignoring. Message: %o",e);t(r)}};let o=null,r=!1;function i(t,i,p=!1){if(r=p,!t)throw new Error("Cannot polyfill nestedAppAuthBridge as the current window does not exist");if(!i)throw new Error("Top origin is required to initialize the Nested App Auth Bridge");try{const e=new URL(i);if("https:"!==e.protocol)throw new Error(`Invalid top origin: ${i}. Only HTTPS origins are allowed.`);o=e.origin}catch(e){throw new Error(`Failed to initialize bridge: invalid top origin: ${i}`)}const u=t;if(u.nestedAppAuthBridge)return void a("Nested App Auth Bridge is already present");const g=function(t){const r=new WeakMap,{onMessage:i}=n,p=e=>t=>i(t,e);return{addEventListener:(e,n)=>{if("message"===e){const o=p(n);r.set(n,o),t.addEventListener(e,o)}else a(`Event ${e} is not supported by nestedAppAuthBridge`)},postMessage:n=>{if(!t.top)throw new Error("window.top is not available for posting messages");try{const r=JSON.parse(n);if("object"==typeof r&&"NestedAppAuthRequest"===r.messageType){const r=function(t){const n=Date.now();return{id:s(),uuid:e(),func:"nestedAppAuth.execute",timestamp:n,apiVersionTag:"v2_nestedAppAuth.execute",monotonicTimestamp:n,args:[],data:t}}(n);if(t===t.top||!o)return void d("Not in an embedded iframe; skipping postMessage.");t.top.postMessage(r,o)}}catch(e){return void d("Failed to parse message:",e,"Original message:",n)}},removeEventListener:(e,n)=>{const o=r.get(n);o&&(t.removeEventListener(e,o),r.delete(n))}}}(u);g&&(u.nestedAppAuthBridge=g)}function s(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():Math.random().toString(36).substring(2,11)}function a(...e){r&&console.log(...e)}function d(...e){r&&console.error(...e)}export{i as initialize,t as version};
@@ -1 +1 @@
1
- import{sendAndHandleSdkError as e}from"../../internal/communication.js";import{ensureInitialized as t}from"../../internal/internalAPIs.js";import{getApiVersionTag as n}from"../../internal/telemetry.js";import{callCallbackWithSdkErrorFromPromiseAndReturnPromise as r}from"../../internal/utils.js";import{FrameContexts as o,errorNotSupportedOnPlatform as s}from"../constants.js";import{ErrorCode as i}from"../interfaces.js";import{runtime as m}from"../runtime.js";import*as a from"./history.js";export{a as history};const c={shareWebContent:"sharing.shareWebContent"};function f(e,s){try{!function(e){if(!(e&&e.content&&e.content.length)){throw{errorCode:i.INVALID_ARGUMENTS,message:"Shared content is missing"}}}(e),function(e){let t;if(e.content.some(e=>!e.type))throw t={errorCode:i.INVALID_ARGUMENTS,message:"Shared content type cannot be undefined"},t;if(e.content.some(t=>t.type!==e.content[0].type))throw t={errorCode:i.INVALID_ARGUMENTS,message:"Shared content must be of the same type"},t}(e),function(e){let t;if("URL"!==e.content[0].type)throw t={errorCode:i.INVALID_ARGUMENTS,message:"Content type is unsupported"},t;if(e.content.some(e=>!e.url))throw t={errorCode:i.INVALID_ARGUMENTS,message:"URLs are required for URL content types"},t}(e)}catch(e){return r(()=>Promise.reject(e),s)}t(m,o.content,o.sidePanel,o.task,o.stage,o.meetingStage);const a=n(s?"v1":"v2","sharing.shareWebContent");return r(p,s,a,e)}function p(t,n){return new Promise(r=>{if(!h())throw s;r(e(t,c.shareWebContent,n))})}function h(){return!(!t(m)||!m.supports.sharing)}export{c as SharingAPIMessages,h as isSupported,f as shareWebContent};
1
+ import{sendAndHandleSdkError as e}from"../../internal/communication.js";import{ensureInitialized as t}from"../../internal/internalAPIs.js";import{getApiVersionTag as r}from"../../internal/telemetry.js";import{callCallbackWithSdkErrorFromPromiseAndReturnPromise as n}from"../../internal/utils.js";import{FrameContexts as o,errorNotSupportedOnPlatform as s}from"../constants.js";import{ErrorCode as i}from"../interfaces.js";import{runtime as a}from"../runtime.js";import*as m from"./history.js";export{m as history};const c={shareWebContent:"sharing.shareWebContent"};function f(e,s){try{!function(e){if(!(e&&e.content&&e.content.length)){throw{errorCode:i.INVALID_ARGUMENTS,message:"Shared content is missing"}}}(e),function(e){let t;if(e.content.some(e=>!e.type))throw t={errorCode:i.INVALID_ARGUMENTS,message:"Shared content type cannot be undefined"},t;if(e.content.some(t=>t.type!==e.content[0].type))throw t={errorCode:i.INVALID_ARGUMENTS,message:"Shared content must be of the same type"},t}(e),e.content.forEach(h)}catch(e){return n(()=>Promise.reject(e),s)}t(a,o.content,o.sidePanel,o.task,o.stage,o.meetingStage);const m=r(s?"v1":"v2","sharing.shareWebContent");return n(p,s,m,e)}function p(t,r){return new Promise(n=>{if(!u())throw s;n(e(t,c.shareWebContent,r))})}function h(e){if("URL"===e.type){if(!e.url)throw{errorCode:i.INVALID_ARGUMENTS,message:"URLs are required for URL content types"}}else{if("FILE"!==e.type)throw{errorCode:i.INVALID_ARGUMENTS,message:"Content type is unsupported"};if(!e.url)throw{errorCode:i.INVALID_ARGUMENTS,message:"File URLs are required for File content types"}}}function u(){return!(!t(a)||!a.supports.sharing)}export{c as SharingAPIMessages,u as isSupported,f as shareWebContent};
@@ -1 +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,callFunctionInHostAndHandleResponse as r}from"../internal/communication.js";import{registerHandler as o}from"../internal/handlers.js";import{ensureInitialized as n}from"../internal/internalAPIs.js";import{ResponseHandler as s}from"../internal/responseHandler.js";import{getApiVersionTag as i}from"../internal/telemetry.js";import{errorNotSupportedOnPlatform as a}from"./constants.js";import{runtime as c}from"./runtime.js";class h{constructor(t){this.event=t}serialize(){return{altKey:this.event.altKey,bubbles:this.event.bubbles,cancelBubble:this.event.cancelBubble,charCode:this.event.charCode,code:this.event.code,composed:this.event.composed,ctrlKey:this.event.ctrlKey,defaultPrevented:this.event.defaultPrevented,detail:this.event.detail,eventPhase:this.event.eventPhase,isComposing:this.event.isComposing,isTrusted:this.event.isTrusted,key:this.event.key,keyCode:this.event.keyCode,location:this.event.location,metaKey:this.event.metaKey,repeat:this.event.repeat,returnValue:this.event.returnValue,shiftKey:this.event.shiftKey,timeStamp:this.event.timeStamp,type:this.event.type,which:this.event.which}}}function u(t){return t.toLowerCase().split("+").sort().join("+")}function l(t,e){if(function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey||!!t.key&&"escape"===t.key.toLowerCase()}(e)){const r=function(t){return[t.ctrlKey&&"ctrl",t.shiftKey&&"shift",t.altKey&&"alt",t.metaKey&&"meta",t.key.toLowerCase()].filter(Boolean).sort().join("+")}(e);if(t.has(r))return{matchedShortcut:r,isOverridable:f.has(r)}}return{matchedShortcut:void 0,isOverridable:!1}}function d(t){y.clear(),t.shortcuts.forEach(t=>{y.add(u(t))}),f.clear(),t.overridableShortcuts.forEach(t=>{f.add(u(t))})}class v extends s{validate(t){return t&&Array.isArray(t.shortcuts)&&Array.isArray(t.overridableShortcuts)}deserialize(t){return t}}function m(t){if(t.target.closest(`[${g}]`))return;const{matchedShortcut:r,isOverridable:o}=l(y,t);if(!r)return;if(o&&p){if(p(t,{matchedShortcut:r}))return}const n=new h(t);e("shortcutRelay.forwardShortcutEvent",[n],i("v2","shortcutRelay.forwardShortcutEvent")),t.preventDefault(),t.stopImmediatePropagation()}const f=new Set,y=new Set;let p,b=!1;function w(t){if(!C())throw a;const e=p;return p=t,e}function K(){if(!C())throw a;b=!1,y.clear(),f.clear(),p=void 0,document.removeEventListener("keydown",m,{capture:!0})}function S(){return t(this,void 0,void 0,function*(){if(!C())throw a;var t;d(yield r("shortcutRelay.getHostShortcuts",[],new v,i("v2","shortcutRelay.getHostShortcuts"))),b||document.addEventListener("keydown",m,{capture:!0}),b=!0,t=t=>{d(t)},o(i("v2","shortcutRelay.hostShortcutChanged"),"shortcutRelay.hostShortcutChanged",t)})}function C(){return!(!n(c)||!c.supports.shortcutRelay)}const g="data-disable-shortcuts-forwarding";export{g as DISABLE_SHORTCUT_FORWARDING_ATTRIBUTE,S as enableShortcutRelayCapability,C as isSupported,K as resetIsShortcutRelayCapabilityEnabled,w as setOverridableShortcutHandler};
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,callFunctionInHostAndHandleResponse as r}from"../internal/communication.js";import{registerHandler as o}from"../internal/handlers.js";import{ensureInitialized as n}from"../internal/internalAPIs.js";import{ResponseHandler as s}from"../internal/responseHandler.js";import{getApiVersionTag as i}from"../internal/telemetry.js";import{errorNotSupportedOnPlatform as a}from"./constants.js";import{runtime as c}from"./runtime.js";class h{constructor(t){this.event=t}serialize(){return{altKey:this.event.altKey,bubbles:this.event.bubbles,cancelBubble:this.event.cancelBubble,charCode:this.event.charCode,code:this.event.code,composed:this.event.composed,ctrlKey:this.event.ctrlKey,defaultPrevented:this.event.defaultPrevented,detail:this.event.detail,eventPhase:this.event.eventPhase,isComposing:this.event.isComposing,isTrusted:this.event.isTrusted,key:this.event.key,keyCode:this.event.keyCode,location:this.event.location,metaKey:this.event.metaKey,repeat:this.event.repeat,returnValue:this.event.returnValue,shiftKey:this.event.shiftKey,timeStamp:this.event.timeStamp,type:this.event.type,which:this.event.which}}}function u(t){return t.toLowerCase().split("+").sort().join("+")}function l(t,e){if(function(t){return t.ctrlKey||t.shiftKey||t.altKey||t.metaKey||!!t.key&&"escape"===t.key.toLowerCase()||!!t.key&&/^F\d+$/i.test(t.key)}(e)){const r=function(t){return[t.ctrlKey&&"ctrl",t.shiftKey&&"shift",t.altKey&&"alt",t.metaKey&&"meta",t.key.toLowerCase()].filter(Boolean).sort().join("+")}(e);if(t.has(r))return{matchedShortcut:r,isOverridable:y.has(r)}}return{matchedShortcut:void 0,isOverridable:!1}}function d(t){f.clear(),t.shortcuts.forEach(t=>{f.add(u(t))}),y.clear(),t.overridableShortcuts.forEach(t=>{y.add(u(t))})}class v extends s{validate(t){return t&&Array.isArray(t.shortcuts)&&Array.isArray(t.overridableShortcuts)}deserialize(t){return t}}function m(t){if(t.target.closest(`[${C}]`))return;const{matchedShortcut:r,isOverridable:o}=l(f,t);if(!r)return;if(o&&p){if(p(t,{matchedShortcut:r}))return}const n=new h(t);e("shortcutRelay.forwardShortcutEvent",[n],i("v2","shortcutRelay.forwardShortcutEvent")),t.preventDefault(),t.stopImmediatePropagation()}const y=new Set,f=new Set;let p,b=!1;function w(t){if(!k())throw a;const e=p;return p=t,e}function K(){if(!k())throw a;b=!1,f.clear(),y.clear(),p=void 0,document.removeEventListener("keydown",m,{capture:!0})}function S(){return t(this,void 0,void 0,function*(){if(!k())throw a;var t;d(yield r("shortcutRelay.getHostShortcuts",[],new v,i("v2","shortcutRelay.getHostShortcuts"))),b||document.addEventListener("keydown",m,{capture:!0}),b=!0,t=t=>{d(t)},o(i("v2","shortcutRelay.hostShortcutChanged"),"shortcutRelay.hostShortcutChanged",t)})}function k(){return!(!n(c)||!c.supports.shortcutRelay)}const C="data-disable-shortcuts-forwarding";export{C as DISABLE_SHORTCUT_FORWARDING_ATTRIBUTE,S as enableShortcutRelayCapability,k as isSupported,K as resetIsShortcutRelayCapabilityEnabled,w as setOverridableShortcutHandler};
@@ -1 +1 @@
1
- const o="2.51.0";export{o as version};
1
+ const t="2.53.0-beta.0";export{t as version};
@@ -3328,104 +3328,99 @@ function fromObject(obj) {
3328
3328
  }
3329
3329
  }
3330
3330
 
3331
- ;// ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/native.js
3331
+ ;// ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/native.js
3332
3332
  const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);
3333
- /* harmony default export */ const esm_browser_native = ({
3334
- randomUUID
3335
- });
3336
- ;// ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/rng.js
3337
- // Unique ID creation requires a high quality random # generator. In the browser we therefore
3338
- // require the crypto API and do not support built-in fallback to lower quality random number
3339
- // generators (like Math.random()).
3333
+ /* harmony default export */ const esm_browser_native = ({ randomUUID });
3334
+
3335
+ ;// ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/rng.js
3340
3336
  let getRandomValues;
3341
3337
  const rnds8 = new Uint8Array(16);
3342
3338
  function rng() {
3343
- // lazy load so that environments that need to polyfill have a chance to do so
3344
- if (!getRandomValues) {
3345
- // getRandomValues needs to be invoked in a context where "this" is a Crypto implementation.
3346
- getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);
3347
-
3348
3339
  if (!getRandomValues) {
3349
- throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
3340
+ if (typeof crypto === 'undefined' || !crypto.getRandomValues) {
3341
+ throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');
3342
+ }
3343
+ getRandomValues = crypto.getRandomValues.bind(crypto);
3350
3344
  }
3351
- }
3352
-
3353
- return getRandomValues(rnds8);
3345
+ return getRandomValues(rnds8);
3354
3346
  }
3355
- ;// ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/stringify.js
3356
3347
 
3357
- /**
3358
- * Convert array of 16 byte values to UUID string format of the form:
3359
- * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
3360
- */
3348
+ ;// ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/stringify.js
3361
3349
 
3362
3350
  const byteToHex = [];
3363
-
3364
3351
  for (let i = 0; i < 256; ++i) {
3365
- byteToHex.push((i + 0x100).toString(16).slice(1));
3352
+ byteToHex.push((i + 0x100).toString(16).slice(1));
3366
3353
  }
3367
-
3368
3354
  function unsafeStringify(arr, offset = 0) {
3369
- // Note: Be careful editing this code! It's been tuned for performance
3370
- // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434
3371
- return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];
3355
+ return (byteToHex[arr[offset + 0]] +
3356
+ byteToHex[arr[offset + 1]] +
3357
+ byteToHex[arr[offset + 2]] +
3358
+ byteToHex[arr[offset + 3]] +
3359
+ '-' +
3360
+ byteToHex[arr[offset + 4]] +
3361
+ byteToHex[arr[offset + 5]] +
3362
+ '-' +
3363
+ byteToHex[arr[offset + 6]] +
3364
+ byteToHex[arr[offset + 7]] +
3365
+ '-' +
3366
+ byteToHex[arr[offset + 8]] +
3367
+ byteToHex[arr[offset + 9]] +
3368
+ '-' +
3369
+ byteToHex[arr[offset + 10]] +
3370
+ byteToHex[arr[offset + 11]] +
3371
+ byteToHex[arr[offset + 12]] +
3372
+ byteToHex[arr[offset + 13]] +
3373
+ byteToHex[arr[offset + 14]] +
3374
+ byteToHex[arr[offset + 15]]).toLowerCase();
3372
3375
  }
3373
-
3374
3376
  function stringify(arr, offset = 0) {
3375
- const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one
3376
- // of the following:
3377
- // - One or more input array values don't map to a hex octet (leading to
3378
- // "undefined" in the uuid)
3379
- // - Invalid input values for the RFC `version` or `variant` fields
3380
-
3381
- if (!validate(uuid)) {
3382
- throw TypeError('Stringified UUID is invalid');
3383
- }
3384
-
3385
- return uuid;
3377
+ const uuid = unsafeStringify(arr, offset);
3378
+ if (!validate(uuid)) {
3379
+ throw TypeError('Stringified UUID is invalid');
3380
+ }
3381
+ return uuid;
3386
3382
  }
3387
-
3388
3383
  /* harmony default export */ const esm_browser_stringify = ((/* unused pure expression or super */ null && (stringify)));
3389
- ;// ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/v4.js
3390
3384
 
3385
+ ;// ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/v4.js
3391
3386
 
3392
3387
 
3393
3388
 
3394
3389
  function v4(options, buf, offset) {
3395
- if (esm_browser_native.randomUUID && !buf && !options) {
3396
- return esm_browser_native.randomUUID();
3397
- }
3398
-
3399
- options = options || {};
3400
- const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`
3401
-
3402
- rnds[6] = rnds[6] & 0x0f | 0x40;
3403
- rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided
3404
-
3405
- if (buf) {
3406
- offset = offset || 0;
3407
-
3408
- for (let i = 0; i < 16; ++i) {
3409
- buf[offset + i] = rnds[i];
3390
+ if (esm_browser_native.randomUUID && !buf && !options) {
3391
+ return esm_browser_native.randomUUID();
3410
3392
  }
3411
-
3412
- return buf;
3413
- }
3414
-
3415
- return unsafeStringify(rnds);
3393
+ options = options || {};
3394
+ const rnds = options.random ?? options.rng?.() ?? rng();
3395
+ if (rnds.length < 16) {
3396
+ throw new Error('Random bytes length must be >= 16');
3397
+ }
3398
+ rnds[6] = (rnds[6] & 0x0f) | 0x40;
3399
+ rnds[8] = (rnds[8] & 0x3f) | 0x80;
3400
+ if (buf) {
3401
+ offset = offset || 0;
3402
+ if (offset < 0 || offset + 16 > buf.length) {
3403
+ throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);
3404
+ }
3405
+ for (let i = 0; i < 16; ++i) {
3406
+ buf[offset + i] = rnds[i];
3407
+ }
3408
+ return buf;
3409
+ }
3410
+ return unsafeStringify(rnds);
3416
3411
  }
3417
-
3418
3412
  /* harmony default export */ const esm_browser_v4 = (v4);
3419
- ;// ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/regex.js
3420
- /* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i);
3421
- ;// ../../node_modules/.pnpm/uuid@9.0.1/node_modules/uuid/dist/esm-browser/validate.js
3422
3413
 
3414
+ ;// ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/regex.js
3415
+ /* harmony default export */ const regex = (/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i);
3416
+
3417
+ ;// ../../node_modules/.pnpm/uuid@11.1.1/node_modules/uuid/dist/esm-browser/validate.js
3423
3418
 
3424
3419
  function validate_validate(uuid) {
3425
- return typeof uuid === 'string' && regex.test(uuid);
3420
+ return typeof uuid === 'string' && regex.test(uuid);
3426
3421
  }
3427
-
3428
3422
  /* harmony default export */ const esm_browser_validate = (validate_validate);
3423
+
3429
3424
  ;// ./src/public/constants.ts
3430
3425
  /** HostClientType represents the different client platforms on which host can be run. */
3431
3426
  var HostClientType;
@@ -4679,7 +4674,7 @@ function isSerializable(arg) {
4679
4674
  * @hidden
4680
4675
  * Package version.
4681
4676
  */
4682
- const version = "2.51.0";
4677
+ const version = "2.53.0-beta.0";
4683
4678
 
4684
4679
  ;// ./src/public/featureFlags.ts
4685
4680
  // 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.
@@ -18386,25 +18381,24 @@ function validateTypeConsistency(shareRequest) {
18386
18381
  throw err;
18387
18382
  }
18388
18383
  }
18389
- function validateContentForSupportedTypes(shareRequest) {
18390
- let err;
18391
- if (shareRequest.content[0].type === 'URL') {
18392
- if (shareRequest.content.some((item) => !item.url)) {
18393
- err = {
18394
- errorCode: ErrorCode.INVALID_ARGUMENTS,
18395
- message: 'URLs are required for URL content types',
18396
- };
18397
- throw err;
18384
+ function validateContentItem(item) {
18385
+ if (item.type === 'URL') {
18386
+ if (!item.url) {
18387
+ throw { errorCode: ErrorCode.INVALID_ARGUMENTS, message: 'URLs are required for URL content types' };
18388
+ }
18389
+ }
18390
+ else if (item.type === 'FILE') {
18391
+ if (!item.url) {
18392
+ throw { errorCode: ErrorCode.INVALID_ARGUMENTS, message: 'File URLs are required for File content types' };
18398
18393
  }
18399
18394
  }
18400
18395
  else {
18401
- err = {
18402
- errorCode: ErrorCode.INVALID_ARGUMENTS,
18403
- message: 'Content type is unsupported',
18404
- };
18405
- throw err;
18396
+ throw { errorCode: ErrorCode.INVALID_ARGUMENTS, message: 'Content type is unsupported' };
18406
18397
  }
18407
18398
  }
18399
+ function validateContentForSupportedTypes(shareRequest) {
18400
+ shareRequest.content.forEach(validateContentItem);
18401
+ }
18408
18402
  /**
18409
18403
  * Checks if the sharing capability is supported by the host
18410
18404
  * @returns boolean to represent whether the sharing capability is supported
@@ -20350,8 +20344,6 @@ function marketplace_isSupported() {
20350
20344
  /**
20351
20345
  * Allows host shortcuts to function in your application by forwarding keyboard shortcuts to the host.
20352
20346
  *
20353
- * This functionality is in Beta.
20354
- * @beta
20355
20347
  * @module
20356
20348
  */
20357
20349
  var shortcutRelay_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -20430,10 +20422,15 @@ function eventToCanonicalShortcut(e) {
20430
20422
  /**
20431
20423
  * Checks if the event is a valid shortcut event.
20432
20424
  * A valid shortcut event is one that has at least one modifier key pressed
20433
- * (ctrl, shift, alt, meta) or the Escape key.
20425
+ * (ctrl, shift, alt, meta), the Escape key, or a function key (F1–F24).
20434
20426
  */
20435
20427
  function isValidShortcutEvent(e) {
20436
- return e.ctrlKey || e.shiftKey || e.altKey || e.metaKey || (!!e.key && e.key.toLowerCase() === 'escape');
20428
+ return (e.ctrlKey ||
20429
+ e.shiftKey ||
20430
+ e.altKey ||
20431
+ e.metaKey ||
20432
+ (!!e.key && e.key.toLowerCase() === 'escape') ||
20433
+ (!!e.key && /^F\d+$/i.test(e.key)));
20437
20434
  }
20438
20435
  function isMatchingShortcut(shortcuts, e) {
20439
20436
  if (isValidShortcutEvent(e)) {
@@ -20533,7 +20530,6 @@ let isShortcutRelayCapabilityEnabled = false;
20533
20530
  * • Pass `undefined` to remove an existing handler.
20534
20531
  * • Returns the previous handler so callers can restore it if needed.
20535
20532
  *
20536
- * @beta
20537
20533
  */
20538
20534
  function setOverridableShortcutHandler(handler) {
20539
20535
  if (!shortcutRelay_isSupported()) {
@@ -20547,7 +20543,6 @@ function setOverridableShortcutHandler(handler) {
20547
20543
  * Reset the state of the shortcut relay capability.
20548
20544
  * This is useful for tests to ensure a clean state.
20549
20545
  *
20550
- * @beta
20551
20546
  */
20552
20547
  function resetIsShortcutRelayCapabilityEnabled() {
20553
20548
  if (!shortcutRelay_isSupported()) {
@@ -20562,7 +20557,6 @@ function resetIsShortcutRelayCapabilityEnabled() {
20562
20557
  /**
20563
20558
  * Enable capability to support host shortcuts.
20564
20559
  *
20565
- * @beta
20566
20560
  */
20567
20561
  function enableShortcutRelayCapability() {
20568
20562
  return shortcutRelay_awaiter(this, void 0, void 0, function* () {
@@ -20589,7 +20583,6 @@ function enableShortcutRelayCapability() {
20589
20583
  *
20590
20584
  * @throws Error if {@link app.initialize} has not successfully completed
20591
20585
  *
20592
- * @beta
20593
20586
  */
20594
20587
  function shortcutRelay_isSupported() {
20595
20588
  return ensureInitialized(runtime) && runtime.supports.shortcutRelay ? true : false;
@@ -20598,7 +20591,6 @@ function shortcutRelay_isSupported() {
20598
20591
  * Allow apps to define zones where shortcuts should not be forwarded to the host.
20599
20592
  * This is useful for input fields for password where shortcuts should not trigger host actions.
20600
20593
  *
20601
- * @beta
20602
20594
  */
20603
20595
  const DISABLE_SHORTCUT_FORWARDING_ATTRIBUTE = 'data-disable-shortcuts-forwarding';
20604
20596