load-source
Version:
A simple function for load js/image/css/style
8 lines (7 loc) • 4.38 kB
JavaScript
/*!
* load-source v1.2.0
* A simple function for load js/image/css/style
* (c) 2021-2023 saqqdy<https://github.com/saqqdy>
* Released under the MIT License.
*/
this.loadSource=function(){"use strict";function e(e,t,r,n){return new(r||(r=Promise))((function(o,i){function c(e){try{u(n.next(e))}catch(e){i(e)}}function a(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(c,a)}u((n=n.apply(e,t||[])).next())}))}function t(e,t){var r,n,o,i,c={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function a(a){return function(u){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;i&&(i=0,a[0]&&(c=0)),c;)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;switch(n=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return c.label++,{value:a[1],done:!1};case 5:c.label++,n=a[1],a=[0];continue;case 7:a=c.ops.pop(),c.trys.pop();continue;default:if(!(o=c.trys,(o=o.length>0&&o[o.length-1])||6!==a[0]&&2!==a[0])){c=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){c.label=a[1];break}if(6===a[0]&&c.label<o[1]){c.label=o[1],o=a;break}if(o&&c.label<o[2]){c.label=o[2],c.ops.push(a);break}o[2]&&c.ops.pop(),c.trys.pop();continue}a=t.call(e,c)}catch(e){a=[6,e],n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,u])}}}return function(r,n){var o,i;return e(this,void 0,void 0,(function(){var e,c;return t(this,(function(t){switch(t.label){case 0:if(!r)throw new Error("url is required");if(n||(n={}),"string"==typeof n)n={type:n};else if(!n.type){if(!(e=/\.(\w+)$/.exec(r))||!e[1])throw new Error("The url is not support");n.type=e[1]}if(null!==(o=n.force)&&void 0!==o||(n.force=!1),n.type&&(n.type=n.type.toLowerCase()),!["js","img","css","style"].includes(n.type))throw new Error("Not support type: ".concat(n.type));return c={js:function(e){return function(e,t){if(void 0===t&&(t={}),!e)throw new Error("[mountScript]: url is required");var r=t.attrs,n=t.props,o=t.force,i=void 0!==o&&o;return new Promise((function(t,o){if(i||!document.querySelector('script[src="'.concat(e,'"]'))){var c,a,u=document.createElement("script");if(r)for(c in r)u[c]=r[c];if(n)for(a in n)u[a]=n[a];u.src=e,document.body.appendChild(u),u.onload=u.onreadystatechange=function(){u.readyState&&!["loaded","complete"].includes(u.readyState)||(u.onload=u.onreadystatechange=null,t(!0))},u.onerror=o}else t(!0)}))}(e,n)},img:function(e){return function(e,t){if(void 0===t&&(t={}),!e)throw new Error("[mountImage]: url is required");var r=t.attrs,n=t.props,o=t.force,i=void 0!==o&&o;return new Promise((function(t,o){if(i||!document.querySelector('img[src="'.concat(e,'"]'))){var c,a,u=document.createElement("img");if(r)for(c in r)u[c]=r[c];if(n)for(a in n)u[a]=n[a];u.src=e,document.body.appendChild(u),u.onload=u.onreadystatechange=function(){u.readyState&&!["loaded","complete"].includes(u.readyState)||(u.onload=u.onreadystatechange=null,t(!0))},u.onerror=o}else t(!0)}))}(e,n)},css:function(e){return function(e,t){if(void 0===t&&(t={}),!e)throw new Error("[mountCss]: url is required");var r=t.attrs,n=t.props,o=t.force,i=void 0!==o&&o;return new Promise((function(t,o){if(i||!document.querySelector('link[href="'.concat(e,'"]'))){var c,a,u=document.createElement("link");if(r)for(c in r)u[c]=r[c];if(n)for(a in n)u[a]=n[a];u.rel="stylesheet",u.type="text/css",u.href=e,document.getElementsByTagName("head")[0].appendChild(u),u.onload=u.onreadystatechange=function(){u.readyState&&!["loaded","complete"].includes(u.readyState)||(u.onload=u.onreadystatechange=null,t(!0))},u.onerror=o}else t(!0)}))}(e,n)},style:function(e){return function(e,t){if(void 0===t&&(t={}),!e)throw new Error("[mountStyle]: css string is required");var r=t.attrs,n=t.props;return new Promise((function(t){var o,i,c=document.createElement("style");if(r)for(o in r)c[o]=r[o];if(n)for(i in n)c[i]=n[i];c.type="text/css";try{c.appendChild(document.createTextNode(e))}catch(t){c.textContent=e}document.getElementsByTagName("head")[0].appendChild(c),t(!0)}))}(e,n)}},[4,null===(i=c[n.type])||void 0===i?void 0:i.call(c,r)];case 1:return[2,t.sent()]}}))}))}}();