forked from google/web-activities
-
Notifications
You must be signed in to change notification settings - Fork 0
/
activities.min.js
43 lines (38 loc) · 13.9 KB
/
activities.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(function(){/*
Copyright 2017 The Web Activities Authors. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS-IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
var c;function h(a,b,d,e,f,g){this.code=a;this.data="ok"==a?b:null;this.mode=d;this.origin=e;this.originVerified=f;this.secureChannel=g;this.ok="ok"==a;this.error="failed"==a?Error(String(b)||""):null};function m(a,b,d){this.a=a;this.U=b;this.c=d;this.O=this.B=this.w=null;this.V=this.da.bind(this)}c=m.prototype;c.connect=function(a){if(this.B)throw Error("already connected");this.B=a;this.a.addEventListener("message",this.V)};c.disconnect=function(){this.B&&(this.B=null,this.a.removeEventListener("message",this.V))};c.isConnected=function(){return null!=this.c};c.getTarget=function(){var a=p(this);if(!a)throw Error("not connected");return a};
function p(a){a.B&&!a.w&&(a.w="function"==typeof a.U?a.U():a.U);return a.w}c.getTargetOrigin=function(){if(null==this.c)throw Error("not connected");return this.c};c.sendCommand=function(a,b){var d=this.getTarget(),e="connect"==a?null!=this.c?this.c:"*":this.getTargetOrigin();d.postMessage({sentinel:"__ACTIVITIES__",cmd:a,payload:b||null},e)};c.customMessage=function(a){this.sendCommand("msg",a)};c.onCustomMessage=function(a){this.O=a};
c.da=function(a){var b=a.data;if(b&&"__ACTIVITIES__"==b.sentinel){var d=a.origin,e=b.cmd,b=b.payload||null;null==this.c&&"start"==e&&(this.c=d);null==this.c&&a.source&&p(this)==a.source&&(this.c=d);d==this.c&&this.s(e,b)}};c.s=function(a,b){"msg"==a?null!=this.O&&null!=b&&this.O(b):this.B(a,b)};function q(a){var b=this;this.a=a;this.w=a.parent;this.b=new m(this.a,this.w,null);this.h=null;this.f=!1;this.i=null;this.F=new Promise(function(a){b.i=a});this.g=!1;this.o=this.l=null;this.H=this.Y=0;this.W=this.fa.bind(this)}c=q.prototype;c.connect=function(){this.g=this.f=!1;this.b.connect(this.s.bind(this));this.b.sendCommand("connect");return this.F};c.disconnect=function(){this.g=this.f=!1;this.b.disconnect();this.a.removeEventListener("resize",this.W)};
c.getRequestString=function(){r(this);return null};c.getMode=function(){return"iframe"};c.getTargetOrigin=function(){r(this);return this.b.getTargetOrigin()};c.isTargetOriginVerified=function(){r(this);return!0};c.isSecureChannel=function(){return!0};c.accept=function(){r(this);this.g=!0};c.getArgs=function(){r(this);return this.h};c.ready=function(){t(this);this.b.sendCommand("ready");this.C();this.a.addEventListener("resize",this.W)};c.setSizeContainer=function(a){this.o=a};
c.onResizeComplete=function(a){this.l=a};c.resized=function(){var a=this;setTimeout(function(){return a.C()},50)};c.message=function(a){t(this);this.b.customMessage(a)};c.onMessage=function(a){t(this);this.b.onCustomMessage(a)};c.result=function(a){this.m("ok",a)};c.cancel=function(){this.m("canceled",null)};c.failed=function(a){this.m("failed",String(a))};function r(a){if(!a.f)throw Error("not connected");}function t(a){if(!a.g)throw Error("not accepted");}
c.m=function(a,b){"ok"==a?t(this):r(this);this.b.sendCommand("result",{code:a,data:b})};c.s=function(a,b){if("start"==a)this.h=b,this.f=!0,this.i(this),this.i=null;else if("close"==a)this.disconnect();else if("resized"==a){var d=b.height;this.l&&this.l(d,this.H,d<this.H)}};c.C=function(){if(this.o){var a=this.o.scrollHeight;a!=this.H&&(this.H=a,this.b.sendCommand("resize",{height:this.H}))}};c.fa=function(){var a=this.a.innerWidth;this.Y!=a&&(this.Y=a,this.resized())};var u;function v(a){u||(u=document.createElement("a"));u.href=a;return u}function w(a){return a.origin||a.protocol+"//"+a.host}function x(a){var b=a.indexOf("#");return-1==b?a:a.substring(0,b)}function y(a){return a?(/^[?#]/.test(a)?a.slice(1):a).split("&").reduce(function(a,d){var b=d.split("=");d=decodeURIComponent(b[0]||"");var f=decodeURIComponent(b[1]||"");d&&(a[d]=f);return a},{}):{}}
function z(a){var b={requestId:a.requestId,returnUrl:a.returnUrl,args:a.args};void 0!==a.origin&&(b.origin=a.origin);void 0!==a.originVerified&&(b.originVerified=a.originVerified);return JSON.stringify(b)}function A(a,b,d){if(b.ok)d(b);else{var e;(e=b.error)||("DOMException"in a?a=new DOMException("AbortError","AbortError"):(a=Error("AbortError"),a.name="AbortError",a.code=20),e=a);a=e;a.activityResult=b;d(Promise.reject(a))}};function B(a){var b=this;if(!a.opener||a.opener==a)throw Error("No window.opener");this.a=a;this.w=a.opener;this.b=new m(this.a,this.w,null);this.h=null;this.f=!1;this.i=null;this.F=new Promise(function(a){b.i=a});this.g=!1;this.o=this.l=null;this.R=new C(this.a)}c=B.prototype;c.connect=function(a){var b=this;this.g=this.f=!1;return this.R.connect(a).then(function(){b.b.connect(b.s.bind(b));b.b.sendCommand("connect");setTimeout(function(){b.i&&(b.i(b.R),b.i=null)},5E3);return b.F})};
c.disconnect=function(){this.g=this.f=!1;this.b.disconnect();try{this.a.close()}catch(a){}};c.getRequestString=function(){r(this);return this.R.getRequestString()};c.getMode=function(){return"popup"};c.getTargetOrigin=function(){r(this);return this.b.getTargetOrigin()};c.isTargetOriginVerified=function(){r(this);return!0};c.isSecureChannel=function(){return!0};c.accept=function(){r(this);this.g=!0};c.getArgs=function(){r(this);return this.h};c.ready=function(){t(this);this.b.sendCommand("ready")};
c.setSizeContainer=function(a){this.o=a};c.onResizeComplete=function(a){this.l=a};c.resized=function(){var a=this;setTimeout(function(){return a.C()},50)};c.message=function(){t(this)};c.onMessage=function(){t(this)};c.result=function(a){this.m("ok",a)};c.cancel=function(){this.m("canceled",null)};c.failed=function(a){this.m("failed",String(a))};c.ca=function(){if(!this.f)throw Error("not connected");};c.ba=function(){if(!this.g)throw Error("not accepted");};
c.m=function(a,b){"ok"==a?t(this):r(this);this.b.sendCommand("result",{code:a,data:b})};c.s=function(a,b){"start"==a?(this.h=b,this.f=!0,this.i(this)):"close"==a&&this.disconnect()};c.C=function(){if(this.o){var a=this.o.scrollHeight,b=this.a.innerHeight;this.l&&this.l(b,a,b<a)}};function C(a){this.a=a;this.c=this.M=this.I=null;this.D=!1;this.h=null;this.g=this.f=!1;this.o=this.l=null}c=C.prototype;
c.connect=function(a){var b=this;return Promise.resolve().then(function(){b.f=!1;b.g=!1;var d;if(a&&"object"==typeof a)d=a;else{var e=!1,f;if(a&&"string"==typeof a)e=!0,f=a;else{var g=y(b.a.location.hash).__WA__;g&&(f=decodeURIComponent(g))}if(f)if(d=e,d=void 0===d?!1:d,f){f=JSON.parse(f);var k={requestId:f.requestId,returnUrl:f.returnUrl,args:f.args||null};d&&(k.origin=f.origin||void 0,k.originVerified=f.originVerified||void 0);d=k}else d=null}if(!d||!d.requestId||!d.returnUrl)throw Error("Request must have requestId and returnUrl");
b.I=d.requestId;b.h=d.args;b.M=d.returnUrl;if(d.origin)b.c=d.origin,b.D=d.originVerified||!1;else{b.c=w(v(d.returnUrl));var l=b.a.document.referrer&&w(v(b.a.document.referrer));b.D=l==b.c}b.f=!0;return b})};c.disconnect=function(){this.g=this.f=!1};c.getRequestString=function(){r(this);return z({requestId:this.I,returnUrl:this.M,args:this.h,origin:this.c,originVerified:this.D})};c.getMode=function(){return"redirect"};c.getTargetOrigin=function(){r(this);return this.c};
c.isTargetOriginVerified=function(){r(this);return this.D};c.isSecureChannel=function(){return!1};c.accept=function(){r(this);this.g=!0};c.getArgs=function(){r(this);return this.h};c.ready=function(){t(this)};c.setSizeContainer=function(a){this.o=a};c.onResizeComplete=function(a){this.l=a};c.resized=function(){var a=this;setTimeout(function(){return a.C()},50)};c.message=function(){t(this)};c.onMessage=function(){t(this)};c.result=function(a){this.m("ok",a)};
c.cancel=function(){this.m("canceled",null)};c.failed=function(a){this.m("failed",String(a))};c.ca=function(){if(!this.f)throw Error("not connected");};c.ba=function(){if(!this.g)throw Error("not accepted");};c.m=function(a,b){"ok"==a?t(this):r(this);var d=this.I,e;e=this.a;e=e.origin||w(e.location);a={requestId:d,origin:e,code:a,data:b};var f=this.M+(-1==this.M.indexOf("#")?"#":"&")+"__WA_RES__="+encodeURIComponent(JSON.stringify(a));a=f;this.a.location.replace?this.a.location.replace(a):this.a.location.assign(a)};
c.C=function(){if(this.o){var a=this.o.scrollHeight,b=this.a.innerHeight;this.l&&this.l(b,a,b<a)}};function D(a){this.version="1.2.0";this.a=a}D.prototype.connectHost=function(a){var b;b=this.a.top!=this.a?new q(this.a):this.a.opener&&!this.a.opener.closed?new B(this.a):new C(this.a);return b.connect(a)};function E(a,b,d){var e=this;this.G=a;this.N=b;this.h=d||null;this.a=this.G.ownerDocument.defaultView;this.c=w(v(b));this.f=!1;this.i=null;this.F=new Promise(function(a){e.i=a});this.J=null;this.ea=new Promise(function(a){e.J=a});this.j=null;this.L=new Promise(function(a){e.j=a});this.K=this.P=null;this.b=new m(this.a,function(){return e.G.contentWindow},this.c)}c=E.prototype;c.getMode=function(){return"iframe"};
c.connect=function(){if(!this.a.document.documentElement.contains(this.G))throw Error("iframe must be in DOM");this.b.connect(this.s.bind(this));this.G.src=this.N;return this.F};c.disconnect=function(){this.f=!1;this.b.disconnect()};c.acceptResult=function(){return this.L};c.message=function(a){this.b.customMessage(a)};c.onMessage=function(a){this.b.onCustomMessage(a)};c.whenReady=function(){return this.ea};
c.onResizeRequest=function(a){var b=this;this.P=a;Promise.resolve().then(function(){null!=b.K&&a(b.K)})};c.resized=function(){this.f&&this.b.sendCommand("resized",{height:this.G.offsetHeight})};
c.s=function(a,b){"connect"==a?(this.f=!0,this.b.sendCommand("start",this.h),this.i()):"result"==a?this.j&&(a=b.code,b=new h(a,"failed"==a?Error(b.data||""):b.data,"iframe",this.b.getTargetOrigin(),!0,!0),A(this.a,b,this.j),this.j=null,this.b.sendCommand("close"),this.disconnect()):"ready"==a?this.J&&(this.J(),this.J=null):"resize"==a&&(this.K=b.height,this.P&&this.P(this.K))};function F(a,b,d,e,f,g){var k=this,l=e&&("_blank"==e||"_top"==e||"_"!=e[0]);if(!l)throw Error('The only allowed targets are "_blank", "_top" and name targets');this.a=a;this.I=b;this.N=d;this.Z=e;this.h=f||null;this.u=g||null;this.j=null;this.L=new Promise(function(a){k.j=a});this.b=this.A=this.v=null}c=F.prototype;c.getMode=function(){return"_top"==this.Z?"redirect":"popup"};c.open=function(){return G(this)};
c.disconnect=function(){this.A&&(this.a.clearInterval(this.A),this.A=null);this.b&&(this.b.disconnect(),this.b=null);if(this.v){try{this.v.close()}catch(a){}this.v=null}this.j=null};c.acceptResult=function(){return this.L};
function G(a){var b=H(a),d=a.N;if(!a.u||!a.u.skipRequestInUrl)var e=a.u&&a.u.returnUrl||x(a.a.location.href),e=z({requestId:a.I,returnUrl:e,args:a.h}),d=d+(-1==d.indexOf("#")?"#":"&")+encodeURIComponent("__WA__")+"="+encodeURIComponent(e);var f,g=a.Z;try{f=a.a.open(d,g,b)}catch(k){}if(!f&&"_top"!=g){g="_top";try{f=a.a.open(d,g)}catch(k){}}f?(a.v=f,"_top"!=g&&I(a)):K(a,Error("failed to open window"));return a.L.catch(function(){})}
function H(a){var b=a.a.screen,d=Math.floor(Math.min(600,.9*b.width)),e=Math.floor(Math.min(600,.9*b.height));a.u&&(a.u.width&&(d=Math.min(a.u.width,b.width)),a.u.height&&(e=Math.min(a.u.height,b.height)));a={height:e,width:d,left:Math.floor((b.width-d)/2),top:Math.floor((b.height-e)/2),resizable:"yes",scrollbars:"yes"};var b="",f;for(f in a)b&&(b+=","),b+=f+"="+a[f];return b}
function I(a){a.A=a.a.setInterval(function(){if(!a.v||a.v.closed)a.a.clearInterval(a.A),a.A=null,a.a.setTimeout(function(){try{L(a,"canceled",null)}catch(b){K(a,b)}},3E3)},500);a.b=new m(a.a,a.v,null);a.b.connect(a.s.bind(a))}function K(a,b){a.j&&a.j(Promise.reject(b));a.disconnect()}function L(a,b,d){if(a.j){var e=a.b.isConnected();b=new h(b,d,"popup",e?a.b.getTargetOrigin():w(v(a.N)),e,e);A(a.a,b,a.j);a.j=null}a.b&&a.b.sendCommand("close");a.disconnect()}
c.s=function(a,b){"connect"==a?this.b.sendCommand("start",this.h):"result"==a&&(a=b.code,L(this,a,"failed"==a?Error(b.data||""):b.data))};function M(a,b,d,e,f){this.a=a;this.$=b;this.aa=d;this.c=e;this.D=f}M.prototype.getMode=function(){return"redirect"};M.prototype.acceptResult=function(){var a=this,b=new h(this.$,this.aa,"redirect",this.c,this.D,!1);return new Promise(function(d){A(a.a,b,d)})};function N(a){this.version="1.2.0";this.a=a;this.X=a.location.hash;this.S={};this.T={}}N.prototype.openIframe=function(a,b,d){var e=new E(a,b,d);return e.connect().then(function(){return e})};N.prototype.open=function(a,b,d,e,f){var g=this,k=new F(this.a,a,b,d,e,f);k.open().then(function(){O(g,a,k)})};
N.prototype.onResult=function(a,b){var d=this.S[a];d||(d=[],this.S[a]=d);d.push(b);var e=this.T[a];if(!e&&this.X){var e=this.a,f=y(this.X).__WA_RES__;if(f)if((f=JSON.parse(decodeURIComponent(f)))&&f.requestId==a){var g=e.location.hash;if(g){var k=encodeURIComponent("__WA_RES__")+"=",l=-1;do if(l=g.indexOf(k,l),-1!=l){var n=0<l?g.substring(l-1,l):"";""==n||"?"==n||"#"==n||"&"==n?(n=g.indexOf("&",l+1),-1==n&&(n=g.length),g=g.substring(0,l)+g.substring(n+1)):l++}while(-1!=l&&l<g.length)}g=g||"";if(g!=
e.location.hash&&e.history&&e.history.replaceState)try{e.history.replaceState(e.history.state,"",g)}catch(Q){}g=f.code;k=f.data;f=f.origin;l=e.document.referrer&&w(v(e.document.referrer));e=new M(e,g,k,f,f==l)}else e=null;else e=null;e&&(this.T[a]=e)}var J=e;J&&P(J,b)};function P(a,b){Promise.resolve().then(function(){b(a)})}function O(a,b,d){var e=a.S[b];e&&e.forEach(function(a){P(d,a)});a.T[b]=d};(function(a){function b(a){Promise.resolve().then(function(){a(f)})}var d=new N(a),e=new D(a),f={};Object.defineProperty(f,"version",{value:"1.2.0",configurable:!1});Object.defineProperty(f,"ports",{get:function(){return d}});Object.defineProperty(f,"hosts",{get:function(){return e}});var g=a.ACTIVITIES,k={};Object.defineProperty(k,"push",{get:function(){return b},configurable:!1});a.ACTIVITIES=k;g&&g.forEach(b)})(self);})();
//# sourceMappingURL=activities.min.js.map