UNPKG

vue-script2

Version:

Brings back <script> to your favorite Single Page App!

7 lines (6 loc) 2.11 kB
/*! * vue-script2 v2.1.0 * (c) 2016-2019 Greg Slepak * @license MIT License */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).VueScript2=t()}(this,function(){"use strict";var e={installed:!1,p:Promise.resolve(),version:"2.1.0",loaded:{},install(r){if(!e.installed){var n=["unload"].concat(["src","type","async","integrity","text","crossorigin"]);r.component("script2",{props:n,render(e){return e("div",{style:"display:none"},this.$slots.default)},mounted(){var r=this.$el.parentElement;if(this.src){var i=t.omitBy(t.pick(this,n),t.isUndefined);i.parent=r;var s=()=>e.load(this.src,i).then(()=>this.$emit("loaded"),e=>this.$emit("error",e));t.isUndefined(this.async)||"false"===this.async?e.p=e.p.then(s):s()}else e.p=e.p.then(()=>{var e=document.createElement("script"),t=this.$el.innerHTML;t=t.replace(/&lt;/gi,"<").replace(/&gt;/gi,">").replace(/&amp;/gi,"&"),e.type="text/javascript",e.appendChild(document.createTextNode(t)),r.appendChild(e),this.$emit("loaded")});this.$nextTick(()=>{this.$el.parentElement.removeChild(this.$el)})},destroyed(){this.unload&&(new Function(this.unload)(),delete e.loaded[this.src])}}),e.installed=!0}},load(r){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{parent:document.head};return e.loaded[r]||(e.loaded[r]=new Promise((e,i)=>{var s=document.createElement("script");t.defaults2(s,t.omit(n,["unload","parent"]),{type:"text/javascript"}),s.async=!1,s.src=r,n.crossorigin&&(s.crossOrigin=n.crossorigin),s.onload=()=>e(r),s.onerror=()=>i(new Error(r)),n.parent.appendChild(s)})),e.loaded[r]}},t={isUndefined:e=>void 0===e,pick(e,t){var r={};return t.forEach(t=>{r[t]=e[t]}),r},omit(e,t){var r={};return Object.keys(e).forEach(n=>{-1===t.indexOf(n)&&(r[n]=e[n])}),r},omitBy(e,t){var r={};return Object.keys(e).forEach(n=>{t(e[n])||(r[n]=e[n])}),r},defaults2(e){for(var r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];n.forEach(r=>{Object.keys(r).forEach(n=>{(t.isUndefined(e[n])||""===e[n])&&(e[n]=r[n])})})}};return e});