@yuanjili/js-es-c
Version:
js工具包
1 lines • 4.4 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var _createClass=function(){function a(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}return function(b,c,d){return c&&a(b.prototype,c),d&&a(b,d),b}}();exports.sendMessageToIframe=sendMessageToIframe,exports.addIframeMessageEvent=addIframeMessageEvent,exports.isNestedIframe=isNestedIframe;function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _toConsumableArray(a){if(Array.isArray(a)){for(var b=0,c=Array(a.length);b<a.length;b++)c[b]=a[b];return c}return Array.from(a)}function sendMessageToIframe(a){var b=1<arguments.length&&arguments[1]!==void 0?arguments[1]:{},c=arguments[2];if(Array.isArray(c)){var d=new URL(a.location.href),e=d.origin;c.includes(e)&&a?a.postMessage(b,e):console.error("Domain "+e+" is not in the allowed domains list.")}else window.parent.postMessage(b,"*")}function addIframeMessageEvent(a,b){if(Array.isArray(a)){console.log("\u76D1\u542C\u767D\u540D\u5355\u7684\u6D88\u606F");var c=[].concat(_toConsumableArray(a));window.addEventListener("message",function(a){var d=a.origin;c.includes(d)?(b&&b(a),console.log("Received message from "+d+":",a.data)):console.warn("Message from unknown domain: "+d)})}else console.log("\u76D1\u542C\u6240\u6709\u6765\u6E90\u7684\u6D88\u606F"),window.addEventListener("message",function(a){b&&b(a)})}var CrossDomainCommunicator=exports.CrossDomainCommunicator=function(){function a(b){_classCallCheck(this,a),this.type="*",this.allowedOrigins=[],Array.isArray(b)?(this.allowedOrigins=b,this.type="list"):this.type="*",this.listeners={},window.addEventListener("message",this.handleMessage.bind(this))}return _createClass(a,[{key:"sendMessage",value:function(a,b){if("*"===a)return void this.sendMessageToAllIframes(b);if(!this.isAllowedOrigin(a))return void console.error("Target origin "+a+" is not in the allowed origins list.");var c=document.querySelector("iframe[src^=\""+a+"\"]");c?c.contentWindow.postMessage(b,a):console.error("No iframe found with src starting with "+a)}},{key:"addMessageListener",value:function(a,b){return this.isAllowedOrigin(a)?void(!this.listeners[a]&&(this.listeners[a]=[]),this.listeners[a].push(b)):void console.error("Origin "+a+" is not in the allowed origins list.")}},{key:"handleMessage",value:function(a){!this.isAllowedOrigin(a.origin)||this.listeners[a.origin]&&this.listeners[a.origin].forEach(function(b){return b(a.data)})}},{key:"isAllowedOrigin",value:function(a){return this.allowedOrigins.includes(a)}},{key:"sendMessageToAllIframes",value:function(a){var b=this;this.allowedOrigins.forEach(function(c){b.sendMessage(c,a)})}}]),a}(),livekitApi=exports.livekitApi=function(){function a(b,c){_classCallCheck(this,a),this.parentElement=b,this.url=c,this.iframe=document.createElement("iframe"),this.iframe.src=this.url,this.iframe.width="100%",this.iframe.height="100%",this.iframe.style.border="none",this.iframe.style.width="100%",this.iframe.style.height="100%",this.iframe.allow="autoplay; camera; clipboard-write; compute-pressure; display-capture; hid; microphone; screen-wake-lock; speaker-selection",this.iframe.sandbox="allow-same-origin allow-popups-to-escape-sandbox allow-scripts allow-storage-access-by-user-activation allow-forms allow-modals allow-orientation-lock allow-pointer-lock allow-presentation",document.getElementById(this.parentElement).appendChild(this.iframe),window.addEventListener("message",this.handleMessage.bind(this))}return _createClass(a,[{key:"handleMessage",value:function(a){a.source===this.iframe.contentWindow&&(console.log("Received message from iframe:",a.data),this.triggerEvent(a.data.event,a.data.data))}},{key:"triggerEvent",value:function(a,b){var c=new CustomEvent(a,{detail:b});document.dispatchEvent(c)}},{key:"addEventListener",value:function(a,b){document.addEventListener(a,b)}},{key:"sendMessageToIframe",value:function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{},d={object:a,method:b,params:c};console.log(d),this.iframe.contentWindow.postMessage(d,"*")}}]),a}();function isNestedIframe(){var a=0<arguments.length&&arguments[0]!==void 0?arguments[0]:"parent";return"parent"===a?window!==window.parent:"top"===a?window.top!==window:"frameElement"===a?!!frameElement:void 0}