UNPKG

single-spa-vue

Version:

a single-spa plugin for vue.js applications

5 lines (4 loc) 5.3 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):(e="undefined"!=typeof globalThis?globalThis:e||self).singleSpaVue=n()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function n(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function t(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?n(Object(o),!0).forEach((function(n){r(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(o,n))}))}return e}function r(e,n,t){return(n=function(e){var n=function(e,n){if("object"!==o(e)||null===e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,n||"default");if("object"!==o(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===n?String:Number)(e)}(e,"string");return"symbol"===o(n)?n:String(n)}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e){return o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o(e)} /*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */ !function(n,t){var r;r=e,n.exports=function(e){if(e.CSS&&e.CSS.escape)return e.CSS.escape;var n=function(e){if(0==arguments.length)throw new TypeError("`CSS.escape` requires an argument.");for(var n,t=String(e),r=t.length,o=-1,a="",i=t.charCodeAt(0);++o<r;)0!=(n=t.charCodeAt(o))?a+=n>=1&&n<=31||127==n||0==o&&n>=48&&n<=57||1==o&&n>=48&&n<=57&&45==i?"\\"+n.toString(16)+" ":0==o&&1==r&&45==n||!(n>=128||45==n||95==n||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122)?"\\"+t.charAt(o):t.charAt(o):a+="�";return a};return e.CSS||(e.CSS={}),e.CSS.escape=n,n}(r)}({exports:{}});var a={appOptions:null,template:null,Vue:null,createApp:null,handleInstance:null};function i(e){return e.loadRootComponent?e.loadRootComponent().then((function(n){return e.rootComponent=n})):Promise.resolve()}function u(e,n,r){var o={};return Promise.resolve().then((function(){return function(e,n){return"function"==typeof e.appOptions?e.appOptions(n):Promise.resolve(t({},e.appOptions))}(e,r).then((function(a){var i;if(r.domElement&&!a.el&&(a.el=r.domElement),a.el)if("string"==typeof a.el){if(!(i=document.querySelector(a.el)))throw Error("If appOptions.el is provided to single-spa-vue, the dom element must exist in the dom. Was provided as ".concat(a.el))}else(i=a.el).id||(i.id="single-spa-application:".concat(r.name)),a.el="#".concat(CSS.escape(i.id));else{var u="single-spa-application:".concat(r.name);a.el="#".concat(CSS.escape(u)),(i=document.getElementById(u))||((i=document.createElement("div")).id=u,document.body.appendChild(i))}if(!e.replaceMode&&(a.el=a.el+" .single-spa-container",!i.querySelector(".single-spa-container"))){var l=document.createElement("div");l.className="single-spa-container",i.appendChild(l)}o.domEl=i,a.render||a.template||!e.rootComponent||(a.render=function(n){return n(e.rootComponent)}),a.data||(a.data={});var p=a.data;if(a.data=function(){return t(t({},"function"==typeof p?p.call(this,this):p),r)},e.createApp){if(o.vueInstance=e.createApp(a),e.handleInstance)return Promise.resolve(e.handleInstance(o.vueInstance,r)).then((function(){return o.root=o.vueInstance.mount(a.el),n[r.name]=o,o.vueInstance}));o.root=o.vueInstance.mount(a.el)}else if(o.vueInstance=new e.Vue(a),o.vueInstance.bind&&(o.vueInstance=o.vueInstance.bind(o.vueInstance)),e.handleInstance)return Promise.resolve(e.handleInstance(o.vueInstance,r)).then((function(){return n[r.name]=o,o.vueInstance}));return n[r.name]=o,o.vueInstance}))}))}function l(e,n,r){return Promise.resolve().then((function(){var o=n[r.name],a=t(t({},e.appOptions.data||{}),r),i=o.root||o.vueInstance;for(var u in a)i[u]=a[u]}))}function p(e,n,t){return Promise.resolve().then((function(){var r=n[t.name];e.createApp?r.vueInstance.unmount(r.domEl):(r.vueInstance.$destroy(),r.vueInstance.$el.innerHTML=""),delete r.vueInstance,r.domEl&&(r.domEl.innerHTML="",delete r.domEl)}))}return function(e){if("object"!==o(e))throw new Error("single-spa-vue requires a configuration object");var n=t(t({},a),e);if(!n.Vue&&!n.createApp)throw Error("single-spa-vue must be passed opts.Vue or opts.createApp");if(!n.appOptions)throw Error("single-spa-vue must be passed opts.appOptions");if(n.appOptions.el&&"string"!=typeof n.appOptions.el&&!(n.appOptions.el instanceof HTMLElement))throw Error("single-spa-vue: appOptions.el must be a string CSS selector, an HTMLElement, or not provided at all. Was given ".concat(o(n.appOptions.el)));n.createApp=n.createApp||n.Vue&&n.Vue.createApp;var r={};return{bootstrap:i.bind(null,n,r),mount:u.bind(null,n,r),unmount:p.bind(null,n,r),update:l.bind(null,n,r)}}})); //# sourceMappingURL=single-spa-vue.js.map