@googleworkspace/meet-addons 0.9.0-657751814 → 0.9.0-658160217

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
@@ -1,10 +1,54 @@
1
1
  # Meet Addons Web SDK
2
2
 
3
- Embed your app in Google Meet as an Addon.
3
+ Embed your app in Google Meet as an Add-on.
4
4
 
5
- You can view the official documentation
5
+ You can view the official documentation for add-ons
6
6
  [here](https://developers.google.com/meet/add-ons/guides/overview).
7
7
 
8
+ ## Usage
9
+
10
+ First, install the package:
11
+
12
+ ```bash
13
+ npm install @googleworkspace/meet-addons
14
+ ```
15
+
16
+ For TypeScript users, TypeScript definitions are packaged with the module. There
17
+ is no need to install any modules from DefinitelyTyped.
18
+
19
+ ### Creating an add-on session
20
+
21
+ ```typescript
22
+ import {meet} from '@googleworkspace/meet-addons/meet.addons';
23
+ ...
24
+ await meet.addon.createAddonSession({
25
+ // TODO: Replace the Cloud project number.
26
+ cloudProjectNumber: "YOUR_CLOUD_PROJECT_NUMBER"
27
+ });
28
+ ```
29
+
30
+ For more detail, see the developer guide on
31
+ [creating a side panel page](https://developers.google.com/meet/add-ons/guides/use-SDK#side-panel).
32
+
33
+ ### Promoting an add-on through screen sharing
34
+
35
+ ```typescript
36
+ import {
37
+ meet as meetScreenshare
38
+ } from '@googleworkspace/meet-addons/meet.addons.screenshare';
39
+ ...
40
+ meetScreenshare.addon.screensharing.exposeToMeetWhenScreensharing({
41
+ // TODO: Replace the Cloud project number.
42
+ cloudProjectNumber: "YOUR_CLOUD_PROJECT_NUMBER",
43
+ startActivityOnOpen: true,
44
+ // Replace this with the URL to the site to iframe in the main stage.
45
+ mainStageUrl: "MAIN_STAGE_URL",
46
+ });
47
+ ```
48
+
49
+ For more detail, see the developer guide on
50
+ [promoting an add-on through screen sharing](https://developers.google.com/meet/add-ons/guides/screen-sharing).
51
+
8
52
  ## Where's the source code?
9
53
 
10
54
  Unfortunately, the code has some dependencies on Google proprietary libraries
package/meet.addons.d.ts CHANGED
@@ -257,14 +257,24 @@ export interface MeetAddon {
257
257
  createAddonSession: (options: AddonSessionOptions) => Promise<AddonSession>;
258
258
  }
259
259
 
260
+ /** The structure of the top-level Add-on export. */
261
+ interface MeetAddonExport {
262
+ addon: MeetAddon;
263
+ }
264
+
260
265
  /** The structure of an error generated from the Meet Add-ons SDK. */
261
266
  interface MeetAddonError extends Error {
262
267
  readonly errorType: ErrorType;
263
268
  }
264
269
 
270
+ /**
271
+ * The main entry point for accessing Meet add-on functionality.
272
+ */
273
+ export const meet: MeetAddonExport;
274
+
265
275
  declare global {
266
276
  export interface Window {
267
- meet: {addon: MeetAddon};
277
+ meet: MeetAddonExport;
268
278
  }
269
279
  }
270
280
 
package/meet.addons.js CHANGED
@@ -5,7 +5,7 @@ a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=
5
5
  SPDX-License-Identifier: Apache-2.0
6
6
  */
7
7
  var m=this||self,ea=function(a,b){a:{var c=["CLOSURE_FLAGS"];for(var d=m,e=0;e<c.length;e++)if(d=d[c[e]],d==null){c=null;break a}c=d}a=c&&c[a];return a!=null?a:b},fa=function(a){var b=typeof a;return b=="object"&&a!=null||b=="function"},ha=function(a,b,c){return a.call.apply(a.bind,arguments)},ia=function(a,b,c){ia=ha;return ia.apply(null,arguments)},ja=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}},
8
- ka=function(a,b){function c(){}c.prototype=b.prototype;a.Z=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.Mb=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};function la(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,la);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));b!==void 0&&(this.cause=b)}ka(la,Error);la.prototype.name="CustomError";function ma(a){m.setTimeout(()=>{throw a;},0)};var na=ea(610401301,!1),oa=ea(188588736,!0),pa=ea(645172343,ea(1,!0));function qa(){var a=m.navigator;return a&&(a=a.userAgent)?a:""}var ra;const sa=m.navigator;ra=sa?sa.userAgentData||null:null;function ta(a){return na?ra?ra.brands.some(({brand:b})=>b&&b.indexOf(a)!=-1):!1:!1}function n(a){return qa().indexOf(a)!=-1};function q(){return na?!!ra&&ra.brands.length>0:!1}function ua(){return q()?ta("Chromium"):(n("Chrome")||n("CriOS"))&&!(q()?0:n("Edge"))||n("Silk")};function va(a,b){b=Array.prototype.indexOf.call(a,b,void 0);let c;(c=b>=0)&&Array.prototype.splice.call(a,b,1);return c};var wa=qa().toLowerCase().indexOf("webkit")!=-1&&!n("Edge");!n("Android")||ua();ua();n("Safari")&&(ua()||(q()?0:n("Coast"))||(q()?0:n("Opera"))||(q()?0:n("Edge"))||(q()?ta("Microsoft Edge"):n("Edg/"))||q()&&ta("Opera"));function xa(a){let b="",c=0;const d=a.length-10240;for(;c<d;)b+=String.fromCharCode.apply(null,a.subarray(c,c+=10240));b+=String.fromCharCode.apply(null,c?a.subarray(c):a);return btoa(b)}const ya=/[-_.]/g,za={"-":"+",_:"/",".":"="};function Aa(a){return za[a]||""}function Ba(a){return a!=null&&a instanceof Uint8Array}var Ca={};let Da;function Ea(a){if(a!==Ca)throw Error("illegal external caller");}var Ga=function(){return Da||(Da=new Fa(null,Ca))},Fa=class{constructor(a,b){Ea(b);this.pa=a;if(a!=null&&a.length===0)throw Error("ByteString should be constructed with non-empty values");}};var Ha=function(a,b){a.__closure__error__context__984382||(a.__closure__error__context__984382={});a.__closure__error__context__984382.severity=b};let Ia;function Ja(){const a=Error();Ha(a,"incident");ma(a)}function Ka(a){a=Error(a);Ha(a,"warning");return a}function La(a,b){if(b!=null){if(a==null){var c;a=(c=Ia)!=null?c:Ia={}}else a=a.constructor;c=a[b]||0;c>=4||(a[b]=c+1,Ja())}};function Ma(){return typeof BigInt==="function"};function Na(a){return Array.prototype.slice.call(a)};var t=Symbol(),Oa=Symbol(),Pa=Symbol(),Qa=Symbol();function Ra(a,b){b[t]=(a|0)&-14591}function Sa(a,b){b[t]=(a|34)&-14557};var Ta={},Ua={};function Va(a){return!(!a||typeof a!=="object"||a.Sb!==Ua)}function Xa(a){return a!==null&&typeof a==="object"&&!Array.isArray(a)&&a.constructor===Object}function Ya(a,b,c){if(a!=null)if(typeof a==="string")a=a?new Fa(a,Ca):Ga();else if(a.constructor!==Fa)if(Ba(a))a=a.length?new Fa(c?a:new Uint8Array(a),Ca):Ga();else{if(!b)throw Error();a=void 0}return a}
8
+ ka=function(a,b){function c(){}c.prototype=b.prototype;a.Z=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.Mb=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,g)}};function la(a,b){if(Error.captureStackTrace)Error.captureStackTrace(this,la);else{const c=Error().stack;c&&(this.stack=c)}a&&(this.message=String(a));b!==void 0&&(this.cause=b)}ka(la,Error);la.prototype.name="CustomError";function ma(a){m.setTimeout(()=>{throw a;},0)};var na=ea(610401301,!1),oa=ea(188588736,!0),pa=ea(645172343,ea(1,!0));function qa(){var a=m.navigator;return a&&(a=a.userAgent)?a:""}var ra;const sa=m.navigator;ra=sa?sa.userAgentData||null:null;function ta(a){return na?ra?ra.brands.some(({brand:b})=>b&&b.indexOf(a)!=-1):!1:!1}function n(a){return qa().indexOf(a)!=-1};function q(){return na?!!ra&&ra.brands.length>0:!1}function ua(){return q()?ta("Chromium"):(n("Chrome")||n("CriOS"))&&!(q()?0:n("Edge"))||n("Silk")};function va(a,b){b=Array.prototype.indexOf.call(a,b,void 0);let c;(c=b>=0)&&Array.prototype.splice.call(a,b,1);return c};var wa=qa().toLowerCase().indexOf("webkit")!=-1&&!n("Edge");!n("Android")||ua();ua();n("Safari")&&(ua()||(q()?0:n("Coast"))||(q()?0:n("Opera"))||(q()?0:n("Edge"))||(q()?ta("Microsoft Edge"):n("Edg/"))||q()&&ta("Opera"));function xa(a){let b="",c=0;const d=a.length-10240;for(;c<d;)b+=String.fromCharCode.apply(null,a.subarray(c,c+=10240));b+=String.fromCharCode.apply(null,c?a.subarray(c):a);return btoa(b)}const ya=/[-_.]/g,za={"-":"+",_:"/",".":"="};function Aa(a){return za[a]||""}function Ba(a){return a!=null&&a instanceof Uint8Array}var Ca={};let Da;function Ea(a){if(a!==Ca)throw Error("illegal external caller");}var Ga=function(){return Da||(Da=new Fa(null,Ca))},Fa=class{constructor(a,b){Ea(b);this.pa=a;if(a!=null&&a.length===0)throw Error("ByteString should be constructed with non-empty values");}};var Ha=function(a,b){a.__closure__error__context__984382||(a.__closure__error__context__984382={});a.__closure__error__context__984382.severity=b};let Ia;function Ja(){const a=Error();Ha(a,"incident");ma(a)}function Ka(a){a=Error(a);Ha(a,"warning");return a}function La(a,b){if(b!=null){if(a==null){var c;a=(c=Ia)!=null?c:Ia={}}else a=a.constructor;c=a[b]||0;c>=4||(a[b]=c+1,Ja())}};function Ma(){return typeof BigInt==="function"};function Na(a){return Array.prototype.slice.call(a)};var t=Symbol(),Oa=Symbol(),Pa=Symbol(),Qa=Symbol();function Ra(a,b){b[t]=(a|0)&-14591}function Sa(a,b){b[t]=(a|34)&-14557};var Ta={},Ua={};function Va(a){return!(!a||typeof a!=="object"||a.Rb!==Ua)}function Xa(a){return a!==null&&typeof a==="object"&&!Array.isArray(a)&&a.constructor===Object}function Ya(a,b,c){if(a!=null)if(typeof a==="string")a=a?new Fa(a,Ca):Ga();else if(a.constructor!==Fa)if(Ba(a))a=a.length?new Fa(c?a:new Uint8Array(a),Ca):Ga();else{if(!b)throw Error();a=void 0}return a}
9
9
  function Za(a,b,c){if(!Array.isArray(a)||a.length)return!1;const d=a[t]|0;if(d&1)return!0;if(!(b&&(Array.isArray(b)?b.includes(c):b.has(c))))return!1;a[t]=d|1;return!0}var $a;const ab=[];ab[t]=55;$a=Object.freeze(ab);function bb(a){if(a&2)throw Error();}var cb=Object.freeze({});Object.freeze({});var db=Object.freeze({});let v=0,w=0;function eb(a){const b=a>>>0;v=b;w=(a-b)/4294967296>>>0}function fb(a){if(a<0){eb(0-a);const [b,c]=gb(v,w);v=b>>>0;w=c>>>0}else eb(a)}function hb(a,b){b>>>=0;a>>>=0;if(b<=2097151)var c=""+(4294967296*b+a);else Ma()?c=""+(BigInt(b)<<BigInt(32)|BigInt(a)):(c=(a>>>24|b<<8)&16777215,b=b>>16&65535,a=(a&16777215)+c*6777216+b*6710656,c+=b*8147497,b*=2,a>=1E7&&(c+=a/1E7>>>0,a%=1E7),c>=1E7&&(b+=c/1E7>>>0,c%=1E7),c=b+ib(c)+ib(a));return c}
10
10
  function ib(a){a=String(a);return"0000000".slice(a.length)+a}function jb(){var a=v,b=w;if(b&2147483648)if(Ma())a=""+(BigInt(b|0)<<BigInt(32)|BigInt(a>>>0));else{const [c,d]=gb(a,b);a="-"+hb(c,d)}else a=hb(a,b);return a}function gb(a,b){b=~b;a?a=~a+1:b+=1;return[a,b]};function kb(a){if(a==null||typeof a==="boolean")return a;if(typeof a==="number")return!!a}const lb=/^-?([1-9][0-9]*|0)(\.[0-9]+)?$/;function mb(a){const b=typeof a;return b==="number"?Number.isFinite(a):b!=="string"?!1:lb.test(a)}function nb(a){return a[0]==="-"?a.length<20?!0:a.length===20&&Number(a.substring(0,7))>-922337:a.length<19?!0:a.length===19&&Number(a.substring(0,6))<922337}
11
11
  function ob(a){a=Math.trunc(a);if(!Number.isSafeInteger(a)){fb(a);var b=v,c=w;if(a=c&2147483648)b=~b+1>>>0,c=~c>>>0,b==0&&(c=c+1>>>0);b=c*4294967296+(b>>>0);a=a?-b:b}return a}
@@ -19,8 +19,8 @@ var A=function(a,b,c){b=Pb(a,b,c,!1);if(b==null)return b;a=a.h;let d=a[t];if(!(d
19
19
  var Yb=function(a){a=Mb(a,1);a=a==null?a:mb(a)?typeof a==="number"?ob(a):pb(a):void 0;return Xb(a,0)},E=function(a,b){a=Mb(a,b);return Xb(a==null||typeof a==="string"?a:void 0,"")},F=function(a,b){a=Mb(a,b);a=a==null?a:Number.isFinite(a)?a|0:void 0;return Xb(a,0)},G=function(a,b,c,d){c=y(a,d)===c?c:-1;return A(a,b,c)},Zb=function(a,b){if(b!=null){var c=!!c;if(!mb(b))throw Ka("int64");typeof b==="string"?b=pb(b):c?(b=Math.trunc(b),Number.isSafeInteger(b)?b=String(b):(c=String(b),nb(c)?b=c:(fb(b),b=
20
20
  jb()))):b=ob(b)}return Rb(a,1,b,"0")},I=function(a,b,c){return Rb(a,b,qb(c),"")},J=function(a,b,c){if(c!=null){if(!Number.isFinite(c))throw Ka("enum");c|=0}return Rb(a,b,c,0)};let $b;
21
21
  var bc=function(a){try{return $b=!0,JSON.stringify(ac(a),Ab)}finally{$b=!1}},K=class{constructor(a){a:{a==null&&(a=yb);yb=void 0;if(a==null){var b=96;a=[]}else{if(!Array.isArray(a))throw Error("narr");b=a[t]|0;if(b&2048)throw Error("farr");if(b&64)break a;var c=a;b|=64;var d=c.length;if(d&&(--d,Xa(c[d]))){b|=256;c=d-(+!!(b&512)-1);if(c>=1024)throw Error("pvtlmt");b=b&-16760833|(c&1023)<<14}}a[t]=b}this.h=a}toJSON(){return ac(this)}getExtension(a){const b=a.J?a.wb?a.U(this,a.J,a.L,void 0===cb?2:4,
22
- !0):a.U(this,a.J,a.L,!0):a.wb?a.U(this,a.L,void 0===cb?2:4,!0):a.U(this,a.L,a.defaultValue,!0);return a.Rb&&b==null?a.defaultValue:b}hasExtension(a){a.J?a=Pb(this,a.J,a.L,!0)!==void 0:(a=a.J?a.U(this,a.J,a.L,!0):a.U(this,a.L,null,!0),a=(a===null?void 0:a)!==void 0);return a}clone(){const a=this.h;return zb(this.constructor,Jb(a,a[t],!1))}};K.prototype.Ga=Ta;K.prototype.toString=function(){try{return $b=!0,ac(this).toString()}finally{$b=!1}};
23
- function ac(a){var b=$b?a.h:Gb(a.h,Hb,void 0,void 0,!1);var c=!$b;var d=oa?void 0:a.constructor.Tb;var e=(c?a.h:b)[t];if(a=b.length){var f=b[a-1],g=Xa(f);g?a--:f=void 0;e=+!!(e&512)-1;var h=b;if(g){b:{var l=f;var p={};g=!1;if(l)for(var r in l){if(isNaN(+r)){p[r]=l[r];continue}let C=l[r];Array.isArray(C)&&(Za(C,d,+r)||Va(C)&&C.size===0)&&(C=null);C==null&&(g=!0);C!=null&&(p[r]=C)}if(g){for(var u in p)break b;p=null}else p=l}l=p==null?f!=null:p!==f}for(var H;a>0;a--){u=a-1;r=h[u];u-=e;if(!(r==null||
22
+ !0):a.U(this,a.J,a.L,!0):a.wb?a.U(this,a.L,void 0===cb?2:4,!0):a.U(this,a.L,a.defaultValue,!0);return a.Qb&&b==null?a.defaultValue:b}hasExtension(a){a.J?a=Pb(this,a.J,a.L,!0)!==void 0:(a=a.J?a.U(this,a.J,a.L,!0):a.U(this,a.L,null,!0),a=(a===null?void 0:a)!==void 0);return a}clone(){const a=this.h;return zb(this.constructor,Jb(a,a[t],!1))}};K.prototype.Ga=Ta;K.prototype.toString=function(){try{return $b=!0,ac(this).toString()}finally{$b=!1}};
23
+ function ac(a){var b=$b?a.h:Gb(a.h,Hb,void 0,void 0,!1);var c=!$b;var d=oa?void 0:a.constructor.Sb;var e=(c?a.h:b)[t];if(a=b.length){var f=b[a-1],g=Xa(f);g?a--:f=void 0;e=+!!(e&512)-1;var h=b;if(g){b:{var l=f;var p={};g=!1;if(l)for(var r in l){if(isNaN(+r)){p[r]=l[r];continue}let C=l[r];Array.isArray(C)&&(Za(C,d,+r)||Va(C)&&C.size===0)&&(C=null);C==null&&(g=!0);C!=null&&(p[r]=C)}if(g){for(var u in p)break b;p=null}else p=l}l=p==null?f!=null:p!==f}for(var H;a>0;a--){u=a-1;r=h[u];u-=e;if(!(r==null||
24
24
  Za(r,d,u)||Va(r)&&r.size===0))break;H=!0}if(h!==b||l||H){if(!c)h=Array.prototype.slice.call(h,0,a);else if(H||l||p)h.length=a;p&&h.push(p)}b=h}return b};function cc(a){return b=>{if(b==null||b=="")b=new a;else{b=JSON.parse(b);if(!Array.isArray(b))throw Error("dnarr");b[t]|=32;b=zb(a,b)}return b}};var dc=function(a){return b=>{b=JSON.parse(b);if(!Array.isArray(b)){var c=typeof b;throw Error("Expected jspb data to be an array, got "+(c!="object"?c:b?Array.isArray(b)?"array":c:"null")+": "+b);}b[t]|=34;return new a(b)}}(class extends K{});var ec=class extends K{getSeconds(){La(this,Qa);return Yb(this)}setSeconds(a){return Zb(this,a)}};var fc=class extends K{};var hc=class extends K{Sa(){return y(this,gc)}},gc=[2,3];var ic=class extends K{};var L=class extends Error{constructor({errorType:a,message:b,g:c}){super(`Meet Add-on SDK error: ${`${b}${c?` - ${c}`:""}`}`);this.errorType=a}},jc={errorType:"InternalError",message:"An unexpected error has occurred.",g:"No further information is available."},kc={errorType:"InternalError",message:"An unexpected error has occurred.",g:"No further information is available."},lc={errorType:"MissingUrlParameter",message:"Missing required Meet SDK URL parameter",g:"This parameter is automatically appended by Meet to the iframe URL. Ensure that your infrastructure does not strip URL parameters (e.g. as part of a redirect)."},
25
25
  mc={errorType:"NeedsMainStageContext",message:"This method can only be invoked if the addon is running in the main stage.",g:"Use getFrameType to check whether the addon is running in the main stage before invoking this method."},nc={errorType:"NeedsSidePanelContext",message:"This method can only be invoked if the addon is running in the side panel.",g:"Use getFrameType to check whether the addon is running in the side panel before invoking this method."},oc={errorType:"NotSupportedInStandalone",
26
26
  message:"This method is not supported in standalone mode.",g:"Do not call this method in standalone mode."},pc={errorType:"InternalError",message:"The frame type URL parameter is set to an unexpected value.",g:"This parameter is automatically appended by Meet to the iframe URL. Ensure that your infrastructure does not modify URL parameters (e.g. as part of a redirect)."},qc={errorType:"InvalidCloudProjectNumber",message:"Cloud Project Number provided by meet does not match the one passed in by the SDK. Ensure that the correct Cloud Project Number is passed to the SDK as a string.",
@@ -50,12 +50,12 @@ var pe=function(a,b,c,d){if(c==3&&b.N&&!b.S)for(;a&&a.fa;a=a.H)a.fa=!1;if(b.C)b.
50
50
  var ye=function(a,b,c){var d=xe;a.jb.has(b);d(b,c)},Ae=class extends N{constructor(){super();this.jb=new Set}signal(){const a=new ze;this.jb.add(a);fd(this,ja(ed,a));return a}},xe=function(a,b){return new Promise(c=>{Be(()=>{a.Oa&&(a.xb=b,a.Xa=!0);for(const {La:d,slot:e}of a.l.values())try{e(b,{signal:a,La:d})}catch(f){ma(f)}for(const d of a.O)d.resolve(b);a.O.clear();c()})})},hd=function(a,b,c){const d=ve++;Be(()=>{Ce(a,d,b,c)});return d},Ce=function(a,b,c,d){if(!a.u)if(d){if(!d.u){const e=()=>{Be(()=>
51
51
  {a.l.delete(b);const f=we.get(d);f&&va(f,e)})};a.l.set(b,{La:b,slot:c,ua:e});De(d,e)}}else a.l.set(b,{La:b,slot:c,ua:()=>a.l.delete(b)})},ze=class extends N{constructor(){super();this.Oa=!1;this.l=new Map;this.O=new Set;this.Xa=!1}detach(a){Be(()=>{const b=this.l.get(a);b&&b.ua()})}value(a){return this.promise(!0,a)}next(a){return this.promise(!1,a)}promise(a,b){const c=je();Be(()=>{if(this.u)c.reject(new R("Signal initially disposed"));else if(b&&b.u)c.reject(new R("Owner initially disposed"));else if(a&&
52
52
  this.Oa&&this.Xa)c.resolve(this.xb);else if(this.O.add(c),me(c.promise,()=>{this.O.delete(c)}),b){const d=()=>{c.reject(new R("Owner asynchronously disposed"))};me(c.promise,()=>{const e=we.get(b);e&&va(e,d)});De(b,d)}});return c.promise}D(){super.D();Be(()=>{for(const {ua:a}of this.l.values())a();this.l.clear();for(const a of this.O)a.reject(new R("Signal asynchronously disposed"));this.O.clear()})}};const Ee=[];let Fe=!1;function Be(a){Ee.push(a);Ge()}
53
- async function Ge(){if(!Fe)try{Fe=!0;let a=He(0);for(;a<Ee.length;)await Promise.resolve(),a=He(a)}catch(a){ma(a)}finally{Ee.length=0,Fe=!1}}function He(a){const b=a+100;for(;a<b&&a<Ee.length;)try{Ee[a++]()}catch(c){ma(c)}return a}function De(a,b){if(a.u)b();else{var c=we.get(a);if(c)c.push(b);else{const d=[b];we.set(a,d);fd(a,()=>{for(const e of[...d])e();we.delete(a)})}}};function S(a){var b=new Fd;a=D(b,1,Hd,a);return{content:bc(a)}}const Ie=new Ae;function Je(a,b){const c=Ie.signal();return{channel:Nd(a,d=>{const e=b(d.data);ye(Ie,c,{content:e,bb:d})}),signal:c}};var Ke=function(a,b){return J(a,1,b)},Le=class extends K{};var Me=class extends K{fb(a){return B(this,1,a)}};var Ne=class extends K{fb(a){return B(this,1,a)}};var Pe=cc(class extends K{F(){return y(this,Oe)}za(){return G(this,Me,1,Oe)}oa(a){return D(this,1,Oe,a)}}),Oe=[1,2];let Qe;var T=class extends K{getState(){const a=this.h;let b=a[t];const c=Lb(a,b,1),d=Ya(c,!0,!!(b&34));d!=null&&d!==c&&x(a,b,1,d);return d==null?Ga():d}};var U=class extends K{};var Se=class extends K{xa(){return G(this,T,2,Re)}ma(a){D(this,2,Re,a)}ha(){return z(this,T,2,Re)}ya(){return G(this,U,3,Re)}na(a){D(this,3,Re,a)}Ba(){return z(this,U,3,Re)}},Re=[2,3];var Te=cc(class extends K{});var Ve=cc(class extends K{F(){return y(this,Ue)}}),Ue=[1,2];var We=({destination:a,origin:b,Ub:c,lb:d="ZNWN1d",onMessage:e})=>{if(b==="*")throw Error("Sending to wildcard origin not allowed.");const f=Ld(e);a.postMessage(c?{n:d,t:c}:d,b,[f.port2]);return Nd(f.port1,e)};function Xe(a,b){const c=new Ae,d=c.signal();a=We({destination:window.parent,origin:b,lb:a,onMessage:e=>{const f=Gd(e.data.content);y(f,Hd)===2&&ye(c,d,{content:G(f,Zc,2,Hd),bb:e,messagePort:e.data.messagePort})}});return new Ye(d,a)}
53
+ async function Ge(){if(!Fe)try{Fe=!0;let a=He(0);for(;a<Ee.length;)await Promise.resolve(),a=He(a)}catch(a){ma(a)}finally{Ee.length=0,Fe=!1}}function He(a){const b=a+100;for(;a<b&&a<Ee.length;)try{Ee[a++]()}catch(c){ma(c)}return a}function De(a,b){if(a.u)b();else{var c=we.get(a);if(c)c.push(b);else{const d=[b];we.set(a,d);fd(a,()=>{for(const e of[...d])e();we.delete(a)})}}};function S(a){var b=new Fd;a=D(b,1,Hd,a);return{content:bc(a)}}const Ie=new Ae;function Je(a,b){const c=Ie.signal();return{channel:Nd(a,d=>{const e=b(d.data);ye(Ie,c,{content:e,bb:d})}),signal:c}};var Ke=function(a,b){return J(a,1,b)},Le=class extends K{};var Me=class extends K{fb(a){return B(this,1,a)}};var Ne=class extends K{fb(a){return B(this,1,a)}};var Pe=cc(class extends K{F(){return y(this,Oe)}za(){return G(this,Me,1,Oe)}oa(a){return D(this,1,Oe,a)}}),Oe=[1,2];let Qe;var T=class extends K{getState(){const a=this.h;let b=a[t];const c=Lb(a,b,1),d=Ya(c,!0,!!(b&34));d!=null&&d!==c&&x(a,b,1,d);return d==null?Ga():d}};var U=class extends K{};var Se=class extends K{xa(){return G(this,T,2,Re)}ma(a){D(this,2,Re,a)}ha(){return z(this,T,2,Re)}ya(){return G(this,U,3,Re)}na(a){D(this,3,Re,a)}Ba(){return z(this,U,3,Re)}},Re=[2,3];var Te=cc(class extends K{});var Ve=cc(class extends K{F(){return y(this,Ue)}}),Ue=[1,2];var We=({destination:a,origin:b,Tb:c,lb:d="ZNWN1d",onMessage:e})=>{if(b==="*")throw Error("Sending to wildcard origin not allowed.");const f=Ld(e);a.postMessage(c?{n:d,t:c}:d,b,[f.port2]);return Nd(f.port1,e)};function Xe(a,b){const c=new Ae,d=c.signal();a=We({destination:window.parent,origin:b,lb:a,onMessage:e=>{const f=Gd(e.data.content);y(f,Hd)===2&&ye(c,d,{content:G(f,Zc,2,Hd),bb:e,messagePort:e.data.messagePort})}});return new Ye(d,a)}
54
54
  var id=async function(a){a=a.channel;var b=a.Y;var c=new P;var d=new Dd;c=D(c,13,O,d);await b.call(a,S(c))},jd=async function(a,b){var c=V,d=new P;b=D(d,9,O,b);a=await c(a,S(b));let e;return(e=G(Gd(a.data.content),Zc,2,Hd))==null?void 0:G(e,Tc,9,Yc)},kd=async function(a,b){var c=V,d=new P;b=D(d,8,O,b);await c(a,S(b))},ld=async function(a){var b=V;var c=new P;var d=new sd;c=D(c,10,O,d);await b(a,S(c))},md=async function(a){var b=V;var c=new P;var d=new td;c=D(c,11,O,d);await b(a,S(c))},nd=async function(a,
55
55
  b){var c=V,d=new P;b=D(d,14,O,b);await c(a,S(b))},od=async function(a,b){var c=V,d=new P;b=D(d,15,O,b);await c(a,S(b))},Ze=async function(a){setInterval(async()=>{await id(a)},1E3)},V=async function(a,b){(a=await a.channel.Y(b))||Gc(kc,"Falsy response received from the message channel."+` ${JSON.stringify(a)}`);(b=a.data)||Gc(kc,"Data field in the response from the message channel is falsy."+` ${JSON.stringify(b)}`);(b=b.content)||Gc(kc,"Content field in the response from the message channel is falsy."+
56
56
  ` ${JSON.stringify(b)}`);let c=void 0;try{c=Gd(b)}catch(d){Gc(kc,"The ControlMessage can't be deserialized."+` ${JSON.stringify(b)}. ${JSON.stringify(d)}`)}(b=G(c,Zc,2,Hd))||Gc(kc,"MeetToAddonMessage field on ControlMessage is falsy."+` ${JSON.stringify(b)}`);b=b==null?void 0:G(b,ic,10,Yc);if((b==null?void 0:F(b,1))!==void 0)throw new L(Dc(F(b,1)));return a},$e=async function(a,b,c){var d=V,e=new P;b=D(e,1,O,b);d=await d(a,S(b));a=d.data.messagePort;var f;(d=(f=G(Gd(d.data.content),Zc,2,Hd))==null?
57
57
  void 0:G(f,hc,1,Yc))!=null?f=d:(f=new hc,f=J(f,1,0));return{channel:a?Je(a,c):void 0,response:f}},af=async function(a){const b=yd(),{channel:c,response:d}=await $e(a,b,e=>Ve(e));if(!c)throw new L(Ec(d));return c},bf=async function(a){const b=zd(),{channel:c,response:d}=await $e(a,b,e=>Pe(e));if(!c)throw new L(Ec(d));return{channel:c,response:d}},cf=async function(a){var b=V;var c=new P;var d=new Ed;c=D(c,5,O,d);await b(a,S(c))},df=async function(a){var b=V;var c=new P;var d=new Bd;c=D(c,6,O,d);await b(a,
58
- S(c))},ef=async function(a,b,c){var d=V,e=new P,f=new Cd;b=J(f,1,b).gb(c);e=D(e,7,O,b);await d(a,S(e))};class Ye extends N{constructor(a,b){super();this.Db=a;this.channel=b;a=Qe||(Qe=dc("[0,9,0]"));a=Kb(a);a=Ob(a,4,qb("657751814"));b=a.h;var c=b[t];b=c&2?a:zb(a.constructor,Jb(b,c,!0));a=new P;c=new Ad;b=B(c,2,b);a=D(a,2,O,b);this.channel.send(S(a));Ze(this)}};let ff;function gf(a){var b=a.cloudProjectNumber;a=rd();if(a.cloudProjectNumber!==b)throw new L(qc);b=a.ab;const c=a.ob;let d;ff=(d=ff)!=null?d:Xe(c,b);return new hf(a)}var hf=class{constructor(a){var b=ff;this.sa=a;this.i=b}delete(){throw Error("Not implemented.");}};var jf=class extends K{constructor(){super()}};var kf=class extends K{constructor(){super()}};var mf=class extends K{constructor(){super()}F(){return y(this,lf)}za(){return G(this,Me,1,lf)}oa(a){return D(this,1,lf,a)}},lf=[1,2,3];var W=function(a,b){this.type=a;this.currentTarget=this.target=b;this.defaultPrevented=this.W=!1};W.prototype.stopPropagation=function(){this.W=!0};W.prototype.preventDefault=function(){this.defaultPrevented=!0};var X=function(a,b){W.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.key="";this.charCode=this.keyCode=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.pointerId=0;this.pointerType="";this.timeStamp=0;this.T=null;if(a){var c=this.type=a.type,d=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;
58
+ S(c))},ef=async function(a,b,c){var d=V,e=new P,f=new Cd;b=J(f,1,b).gb(c);e=D(e,7,O,b);await d(a,S(e))};class Ye extends N{constructor(a,b){super();this.Db=a;this.channel=b;a=Qe||(Qe=dc("[0,9,0]"));a=Kb(a);a=Ob(a,4,qb("658160217"));b=a.h;var c=b[t];b=c&2?a:zb(a.constructor,Jb(b,c,!0));a=new P;c=new Ad;b=B(c,2,b);a=D(a,2,O,b);this.channel.send(S(a));Ze(this)}};let ff;function gf(a){var b=a.cloudProjectNumber;a=rd();if(a.cloudProjectNumber!==b)throw new L(qc);b=a.ab;const c=a.ob;let d;ff=(d=ff)!=null?d:Xe(c,b);return new hf(a)}var hf=class{constructor(a){var b=ff;this.sa=a;this.i=b}delete(){throw Error("Not implemented.");}};var jf=class extends K{constructor(){super()}};var kf=class extends K{constructor(){super()}};var mf=class extends K{constructor(){super()}F(){return y(this,lf)}za(){return G(this,Me,1,lf)}oa(a){return D(this,1,lf,a)}},lf=[1,2,3];var W=function(a,b){this.type=a;this.currentTarget=this.target=b;this.defaultPrevented=this.W=!1};W.prototype.stopPropagation=function(){this.W=!0};W.prototype.preventDefault=function(){this.defaultPrevented=!0};var X=function(a,b){W.call(this,a?a.type:"");this.relatedTarget=this.currentTarget=this.target=null;this.button=this.screenY=this.screenX=this.clientY=this.clientX=this.offsetY=this.offsetX=0;this.key="";this.charCode=this.keyCode=0;this.metaKey=this.shiftKey=this.altKey=this.ctrlKey=!1;this.state=null;this.pointerId=0;this.pointerType="";this.timeStamp=0;this.T=null;if(a){var c=this.type=a.type,d=a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:null;this.target=a.target||a.srcElement;
59
59
  this.currentTarget=b;b=a.relatedTarget;b||(c=="mouseover"?b=a.fromElement:c=="mouseout"&&(b=a.toElement));this.relatedTarget=b;d?(this.clientX=d.clientX!==void 0?d.clientX:d.pageX,this.clientY=d.clientY!==void 0?d.clientY:d.pageY,this.screenX=d.screenX||0,this.screenY=d.screenY||0):(this.offsetX=wa||a.offsetX!==void 0?a.offsetX:a.layerX,this.offsetY=wa||a.offsetY!==void 0?a.offsetY:a.layerY,this.clientX=a.clientX!==void 0?a.clientX:a.pageX,this.clientY=a.clientY!==void 0?a.clientY:a.pageY,this.screenX=
60
60
  a.screenX||0,this.screenY=a.screenY||0);this.button=a.button;this.keyCode=a.keyCode||0;this.key=a.key||"";this.charCode=a.charCode||(c=="keypress"?a.keyCode:0);this.ctrlKey=a.ctrlKey;this.altKey=a.altKey;this.shiftKey=a.shiftKey;this.metaKey=a.metaKey;this.pointerId=a.pointerId||0;this.pointerType=a.pointerType;this.state=a.state;this.timeStamp=a.timeStamp;this.T=a;a.defaultPrevented&&X.Z.preventDefault.call(this)}};ka(X,W);
61
61
  X.prototype.stopPropagation=function(){X.Z.stopPropagation.call(this);this.T.stopPropagation?this.T.stopPropagation():this.T.cancelBubble=!0};X.prototype.preventDefault=function(){X.Z.preventDefault.call(this);var a=this.T;a.preventDefault?a.preventDefault():a.returnValue=!1};var nf="closure_listenable_"+(Math.random()*1E6|0);var of=0;var pf=function(a,b,c,d,e){this.listener=a;this.proxy=null;this.src=b;this.type=c;this.capture=!!d;this.ga=e;this.key=++of;this.X=this.ca=!1},qf=function(a){a.X=!0;a.listener=null;a.proxy=null;a.src=null;a.ga=null};var rf=function(a){this.src=a;this.j={};this.ba=0};rf.prototype.add=function(a,b,c,d,e){var f=a.toString();a=this.j[f];a||(a=this.j[f]=[],this.ba++);var g=sf(a,b,d,e);g>-1?(b=a[g],c||(b.ca=!1)):(b=new pf(b,this.src,f,!!d,e),b.ca=c,a.push(b));return b};rf.prototype.remove=function(a,b,c,d){a=a.toString();if(!(a in this.j))return!1;var e=this.j[a];b=sf(e,b,c,d);return b>-1?(qf(e[b]),Array.prototype.splice.call(e,b,1),e.length==0&&(delete this.j[a],this.ba--),!0):!1};
@@ -78,5 +78,5 @@ class Cg{constructor(a,b,c,d){this.K=a;this.da=b;this.config=c;this.qb=fg(e=>voi
78
78
  this.A=null;this.Fa=0;d&&Dg(this,d)}disconnect(){this.da.shutdown();this.ub.shutdown()}notify(a,b,c){var d=c?xg(c):void 0;c=this.config;var e=c.ib,f=(new ag).Ka(this.Fa);d=B(f,4,d);a=e.call(c,d,a);a=this.config.eb(a,b);b=this.da;c=b.send;e=new eg;a=D(e,2,dg,a);c.call(b,a)}};var Gg=class{constructor(a){this.s=a}broadcastStateUpdate(a){Eg(this.s,()=>({state:a,context:{}}))}disconnect(){this.s.disconnect()}};function Hg(a,b){return a==null||b==null?!1:a.bytes.length===b.bytes.length&&a.bytes.every((c,d)=>c===b.bytes[d])};var Ig=class{constructor(a){this.s=a}notifySwitchedToMedia(a,b,c){Eg(this.s,()=>({state:{mediaId:b,mediaPlayoutRate:1,mediaPlayoutPosition:c,playbackState:"PLAY"},Ab:{activityTitle:a},context:{M:1}}))}notifyPauseState(a,b){Eg(this.s,c=>{if(c==null)throw Error("Invalid before coWatchingState");return{state:{...c,playbackState:a?"PAUSE":"PLAY",mediaPlayoutPosition:b},context:{M:3}}})}notifySeekToTimestamp(a){Eg(this.s,b=>{if(b==null)throw Error("Invalid before coWatchingState");return{state:{...b,mediaPlayoutPosition:a},
79
79
  context:{M:2}}})}notifyPlayoutRate(a){Eg(this.s,b=>{if(b==null)throw Error("Invalid before coWatchingState");return{state:{...b,mediaPlayoutRate:a},context:{M:4}}})}notifyBuffering(a){Eg(this.s,b=>{if(b==null)throw Error("Invalid before coWatchingState");return{state:{...b,mediaPlayoutPosition:a,playbackState:"BUFFERING"},context:{M:3}}})}notifyReady(a){Eg(this.s,b=>{if(b==null)throw Error("Invalid before coWatchingState");return{state:{...b,mediaPlayoutPosition:a},context:{M:3}}})}disconnect(){this.s.disconnect()}};
80
80
  function Jg(a,b){if(a==null||b==null)return!1;const c=a.playbackState==="PLAY"?3*Math.max(a.mediaPlayoutRate,1):0,d=Math.abs(a.mediaPlayoutPosition-b.mediaPlayoutPosition);return a.mediaId===b.mediaId&&a.mediaPlayoutRate===b.mediaPlayoutRate&&d<=c&&a.playbackState===b.playbackState};var Fg=function(a,b){const c=hd(a.signal,d=>{b(d)});a.l.push(c)},Kg=class{constructor(a,b){this.channel=a;this.signal=b;this.l=[]}send(a){this.channel.send(bc(a))}async Y(a,b){a=await this.channel.Y(bc(a));return b(a.data)}shutdown(){this.l.forEach(a=>{this.signal.detach(a)})}};function Lg(a,b){var c=Mg;const d=a.signal(),e=a.signal();hd(b,f=>{const g=c(f)?d:e;ye(a,g,f)},a);return{Eb:d,Bb:e}}function Ng(a,b,c,d=e=>e){hd(c,e=>{ye(a,b,d(e))},a)};async function Og(a,b){if(b)return a=await Bg({activityTitle:b.activityTitle,Ma:"co-watching",Gb:()=>b.onCoWatchingStateQuery(),Wa:c=>{b.onCoWatchingStateChanged(c)}},a,{ib:tg,hb:vg,eb:yg,Ua:rg,Ra:Jg}),new Ig(a)}async function Pg(a,b){if(b)return a=await Bg({activityTitle:b.activityTitle,Ma:"co-doing",Wa:c=>{b.onCoDoingStateChanged(c)}},a,{ib:og,hb:qg,eb:zg,Ua:ng,Ra:Hg}),new Gg(a)}
81
- async function Qg(a){const b=new Ae,c=b.signal();a=await a;Ng(b,c,a.signal,f=>f.content);const {Eb:d,Bb:e}=Lg(b,c);return{mb:new Kg(a.channel,d),nb:new Kg(a.channel,e)}}function Mg(a){a:switch(a.F()){case 1:a=G(a,Se,1,Ue);break a;default:throw Error("CA Message arrived with no known content message set");}return a.ha()};async function Rg(a,b){({mb:a}=await Qg(af(a.i)));b=await Pg(a,b);if(!b)throw Error("Failed to create co-doing session");return b}async function Sg(a,b){({nb:a}=await Qg(af(a.i)));b=await Og(a,b);if(!b)throw Error("Failed to create co-watching session");return b};function Tg(a){if(a.sa.frameType!==2)throw new L(mc);return Promise.resolve(new Ug(a))}var Ug=class extends pd{async notifySidePanel(a){await ef(this.context.i,1,a)}async unloadSidePanel(){await cf(this.context.i)}async loadSidePanel(){await df(this.context.i)}};function Vg(a){if(a.sa.frameType!==1)throw new L(nc);return Promise.resolve(new Wg(a))}var Wg=class extends pd{async notifyMainStage(a){await ef(this.context.i,2,a)}};var Xg=class{constructor(a){this.R=gf(a)}async createMainStageClient(){return await Tg(this.R)}async createSidePanelClient(){return await Vg(this.R)}async createCoWatchingClient(a){return await Sg(this.R,a)}async createCoDoingClient(a){return await Rg(this.R,a)}async createGuaranteedDeliveryClient(a){return await Uf(this.R,a)}};let Yg=null;var Zg=class{};var $g={addon:{Ob:gf,getFrameType:function(){a:{var a=rd().frameType;switch(a){case 2:a="MAIN_STAGE";break a;case 1:a="SIDE_PANEL";break a;default:throw Error(`Unknown frame type: ${a}`);}}return a},Pb:Tg,Qb:Vg,Nb:function(a){a=af(a.i);Qg(a);return new Zg},createAddonSession:async function(a){if(Yg&&rd().ab!=="integration.test.google.com")throw Error("AddonSession already created");return Yg=new Xg(a)}}},ah=["meet"],Z=m;ah[0]in Z||typeof Z.execScript=="undefined"||Z.execScript("var "+ah[0]);
82
- for(var bh;ah.length&&(bh=ah.shift());)ah.length||$g===void 0?Z=Z[bh]&&Z[bh]!==Object.prototype[bh]?Z[bh]:Z[bh]={}:Z[bh]=$g;}).call(this);
81
+ async function Qg(a){const b=new Ae,c=b.signal();a=await a;Ng(b,c,a.signal,f=>f.content);const {Eb:d,Bb:e}=Lg(b,c);return{mb:new Kg(a.channel,d),nb:new Kg(a.channel,e)}}function Mg(a){a:switch(a.F()){case 1:a=G(a,Se,1,Ue);break a;default:throw Error("CA Message arrived with no known content message set");}return a.ha()};async function Rg(a,b){({mb:a}=await Qg(af(a.i)));b=await Pg(a,b);if(!b)throw Error("Failed to create co-doing session");return b}async function Sg(a,b){({nb:a}=await Qg(af(a.i)));b=await Og(a,b);if(!b)throw Error("Failed to create co-watching session");return b};var Tg=class extends pd{async notifySidePanel(a){await ef(this.context.i,1,a)}async unloadSidePanel(){await cf(this.context.i)}async loadSidePanel(){await df(this.context.i)}};function Ug(a){if(a.sa.frameType!==1)throw new L(nc);return Promise.resolve(new Vg(a))}var Vg=class extends pd{async notifyMainStage(a){await ef(this.context.i,2,a)}};var Wg=class{constructor(a){this.R=gf(a)}async createMainStageClient(){var a=this.R;if(a.sa.frameType!==2)throw new L(mc);return await Promise.resolve(new Tg(a))}async createSidePanelClient(){return await Ug(this.R)}async createCoWatchingClient(a){return await Sg(this.R,a)}async createCoDoingClient(a){return await Rg(this.R,a)}async createGuaranteedDeliveryClient(a){return await Uf(this.R,a)}};let Xg=null;var Yg=class{};var Zg={addon:{Ob:gf,getFrameType:function(){a:{var a=rd().frameType;switch(a){case 2:a="MAIN_STAGE";break a;case 1:a="SIDE_PANEL";break a;default:throw Error(`Unknown frame type: ${a}`);}}return a},Pb:Ug,Nb:function(a){a=af(a.i);Qg(a);return new Yg},createAddonSession:async function(a){if(Xg&&rd().ab!=="integration.test.google.com")throw Error("AddonSession already created");return Xg=new Wg(a)}}},$g=["meet"],Z=m;$g[0]in Z||typeof Z.execScript=="undefined"||Z.execScript("var "+$g[0]);
82
+ for(var ah;$g.length&&(ah=$g.shift());)$g.length||Zg===void 0?Z=Z[ah]&&Z[ah]!==Object.prototype[ah]?Z[ah]:Z[ah]={}:Z[ah]=Zg;}).call(this);
@@ -40,7 +40,8 @@ export interface AddonScreenshareInfo {
40
40
 
41
41
  /**
42
42
  * The main entry point for accessing Meet add-on screenshare functionality.
43
- * Available globally under `window.meet.addon.screensharing`.
43
+ * Available globally under `window.meet.addon.screensharing`, or by importing
44
+ * `meet.addon.screensharing`.
44
45
  */
45
46
  export interface MeetAddonScreenshare {
46
47
  /**
@@ -52,8 +53,18 @@ export interface MeetAddonScreenshare {
52
53
  ): void;
53
54
  }
54
55
 
56
+ /** The structure of the top-level Add-on screenshare export. */
57
+ interface MeetAddonScreenshareExport {
58
+ addon: {screensharing: MeetAddonScreenshare};
59
+ }
60
+
61
+ /**
62
+ * The main entry point for accessing Meet add-on screenshare functionality.
63
+ */
64
+ export const meet: MeetAddonScreenshareExport;
65
+
55
66
  declare global {
56
67
  export interface Window {
57
- meet: {addon: {screensharing: MeetAddonScreenshare}};
68
+ meet: MeetAddonScreenshareExport;
58
69
  }
59
70
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@googleworkspace/meet-addons",
3
3
  "description": "The Google Meet Add-ons SDK lets you embed your app into Google Meet as an add-on where users can discover, share, and collaborate in the app without leaving Meet",
4
- "version": "0.9.0-657751814",
4
+ "version": "0.9.0-658160217",
5
5
  "repository": "googleworkspace/meet",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "homepage": "https://developers.google.com/meet/add-ons/guides/overview",