vue-friendly-iframe
Version:
Vue component for creating dynamic async iframes
6 lines • 6.56 kB
JavaScript
/*!
* vue-friendly-iframe v0.20.0 (https://github.com/officert/vue-friendly-iframe)
* (c) 2021 Tim Officer
* Released under the MIT License.
*/
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var n=t();for(var i in n)("object"==typeof exports?exports:e)[i]=n[i]}}("undefined"!=typeof self?self:this,function(){return function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={i:i,l:!1,exports:{}};return e[i].call(r.exports,r,r.exports,t),r.l=!0,r.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,i){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:i})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(1),r=function(e){return e&&e.__esModule?e:{default:e}}(i);"undefined"!=typeof window&&window.Vue&&window.Vue.use({install:function(e){e.component("vue-friendly-iframe",r.default)}}),t.default={install:function(e){e.component("vue-friendly-iframe",r.default)},VueFriendlyIframe:r.default},e.exports=t.default},function(e,t,n){var i=n(2)(n(3),n(9),null,null);e.exports=i.exports},function(e,t){e.exports=function(e,t,n,i){var r,s=e=e||{},o=typeof e.default;"object"!==o&&"function"!==o||(r=e,s=e.default);var a="function"==typeof s?s.options:s;if(t&&(a.render=t.render,a.staticRenderFns=t.staticRenderFns),n&&(a._scopeId=n),i){var u=Object.create(a.computed||null);Object.keys(i).forEach(function(e){var t=i[e];u[e]=function(){return t}}),a.computed=u}return{esModule:r,exports:s,options:a}}},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function r(){return(0,o.default)()}Object.defineProperty(t,"__esModule",{value:!0});var s=n(4),o=i(s),a=n(8),u=i(a);t.default={name:"friendly-iframe",props:{src:{type:String,required:!0},crossorigin:{type:String,required:!1,default:"anonymous"},target:{type:String,required:!1,default:"_parent"},className:{type:String,required:!1},allow:{type:String,required:!1},name:{type:String,required:!1},title:{type:String,required:!1},sandbox:{type:String,required:!1}},data:function(){return{iframeEl:null,iframeLoadedMessage:"IFRAME_LOADED_"+r(),iframeOnReadyStateChangeMessage:"IFRAME_ON_READ_STATE_CHANGE_"+r()}},computed:{},watch:{src:function(){this.reinitIframe(this)}},methods:{removeIframe:function(){for(;this.$el.firstChild;)this.$el.removeChild(this.$el.firstChild)},setIframeUrl:function(){if(null===this.iframeEl.contentWindow)return void setTimeout(this.setIframeUrl);var e=this.iframeEl.contentWindow.document;e.open().write("\n <body onload=\"window.location.replace('"+this.src+"'); parent.postMessage('"+this.iframeLoadedMessage+"', '*')\"></body>\n <script>\n window.document.onreadystatechange = function () {\n if (window.document.readyState === 'complete') {\n parent.postMessage('"+this.iframeOnReadyStateChangeMessage+"', '*')\n }\n };\n <\/script>\n "),e.close()},reinitIframe:u.default.debounce(function(e){e.removeIframe(),e.initIframe()},200),initIframe:function(){this.iframeEl=document.createElement("iframe"),this.iframeEl.setAttribute("style","visibility: hidden; position: absolute; top: -99999px; border: none;"),this.src&&this.iframeEl.setAttribute("iframe-src",this.src),this.className&&this.iframeEl.setAttribute("class",this.className),this.class&&this.iframeEl.setAttribute("class",this.class),this.crossorigin&&this.iframeEl.setAttribute("crossorigin",this.crossorigin),this.target&&this.iframeEl.setAttribute("target",this.target),this.allow&&this.iframeEl.setAttribute("allow",this.allow),this.name&&this.iframeEl.setAttribute("name",this.name),this.title&&this.iframeEl.setAttribute("title",this.title),this.sandbox&&this.iframeEl.setAttribute("sandbox",this.sandbox),this.$el.appendChild(this.iframeEl),this.setIframeUrl()},listenForEvents:function(){var e=this,t=window.addEventListener?"addEventListener":"attachEvent";(0,window[t])("attachEvent"===t?"onmessage":"message",function(t){t.data===e.iframeLoadedMessage&&(e.$emit("iframe-load"),e.iframeEl.setAttribute("style","visibility: visible; border: none;")),t.data===e.iframeOnReadyStateChangeMessage&&e.$emit("load")},!1)}},mounted:function(){this.listenForEvents(),this.initIframe()}},e.exports=t.default},function(e,t,n){function i(e,t,n){var i=t&&n||0,r=t||[];e=e||{};var o=void 0!==e.clockseq?e.clockseq:u,c=void 0!==e.msecs?e.msecs:(new Date).getTime(),d=void 0!==e.nsecs?e.nsecs:l+1,m=c-f+(d-l)/1e4;if(m<0&&void 0===e.clockseq&&(o=o+1&16383),(m<0||c>f)&&void 0===e.nsecs&&(d=0),d>=1e4)throw new Error("uuid.v1(): Can't create more than 10M uuids/sec");f=c,l=d,u=o,c+=122192928e5;var p=(1e4*(268435455&c)+d)%4294967296;r[i++]=p>>>24&255,r[i++]=p>>>16&255,r[i++]=p>>>8&255,r[i++]=255&p;var h=c/4294967296*1e4&268435455;r[i++]=h>>>8&255,r[i++]=255&h,r[i++]=h>>>24&15|16,r[i++]=h>>>16&255,r[i++]=o>>>8|128,r[i++]=255&o;for(var v=e.node||a,y=0;y<6;++y)r[i+y]=v[y];return t||s(r)}var r=n(5),s=n(7),o=r(),a=[1|o[0],o[1],o[2],o[3],o[4],o[5]],u=16383&(o[6]<<8|o[7]),f=0,l=0;e.exports=i},function(e,t,n){(function(t){var n,i=t.crypto||t.msCrypto;if(i&&i.getRandomValues){var r=new Uint8Array(16);n=function(){return i.getRandomValues(r),r}}if(!n){var s=new Array(16);n=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),s[t]=e>>>((3&t)<<3)&255;return s}}e.exports=n}).call(t,n(6))},function(e,t){var n;n=function(){return this}();try{n=n||Function("return this")()||(0,eval)("this")}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t){function n(e,t){var n=t||0,r=i;return r[e[n++]]+r[e[n++]]+r[e[n++]]+r[e[n++]]+"-"+r[e[n++]]+r[e[n++]]+"-"+r[e[n++]]+r[e[n++]]+"-"+r[e[n++]]+r[e[n++]]+"-"+r[e[n++]]+r[e[n++]]+r[e[n++]]+r[e[n++]]+r[e[n++]]+r[e[n++]]}for(var i=[],r=0;r<256;++r)i[r]=(r+256).toString(16).substr(1);e.exports=n},function(e,t,n){"use strict";function i(e,t,n){var i=void 0;return function(){var r=this,s=arguments,o=function(){i=null,n||e.apply(r,s)},a=n&&!i;clearTimeout(i),i=setTimeout(o,t),a&&e.apply(r,s)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default={debounce:i},e.exports=t.default},function(e,t){e.exports={render:function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{staticClass:"vue-friendly-iframe"})},staticRenderFns:[]}}])});