1 line
29 KiB
Plaintext
1 line
29 KiB
Plaintext
{"version":3,"file":"portal-vue.min.js","sources":["../src/portal-vue.js"],"sourcesContent":["\n /* eslint-disable */\n /*! \n * portal-vue © Thorsten Lünborg, 2019 \n * \n * Version: 2.1.7\n * \n * LICENCE: MIT \n * \n * https://github.com/linusborg/portal-vue\n * \n */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('./vue')) :\n typeof define === 'function' && define.amd ? define(['exports', './vue'], factory) :\n (factory((global.PortalVue = {}),global.Vue));\n }(this, (function (exports,Vue) { 'use strict';\n \n Vue = Vue && Vue.hasOwnProperty('default') ? Vue['default'] : Vue;\n \n function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n \n return _typeof(obj);\n }\n \n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n \n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n \n return arr2;\n }\n }\n \n function _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n }\n \n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n }\n \n var inBrowser = typeof window !== 'undefined';\n function freeze(item) {\n if (Array.isArray(item) || _typeof(item) === 'object') {\n return Object.freeze(item);\n }\n \n return item;\n }\n function combinePassengers(transports) {\n var slotProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return transports.reduce(function (passengers, transport) {\n var temp = transport.passengers[0];\n var newPassengers = typeof temp === 'function' ? temp(slotProps) : transport.passengers;\n return passengers.concat(newPassengers);\n }, []);\n }\n function stableSort(array, compareFn) {\n return array.map(function (v, idx) {\n return [idx, v];\n }).sort(function (a, b) {\n return compareFn(a[1], b[1]) || a[0] - b[0];\n }).map(function (c) {\n return c[1];\n });\n }\n function pick(obj, keys) {\n return keys.reduce(function (acc, key) {\n if (obj.hasOwnProperty(key)) {\n acc[key] = obj[key];\n }\n \n return acc;\n }, {});\n }\n \n var transports = {};\n var targets = {};\n var sources = {};\n var Wormhole = Vue.extend({\n data: function data() {\n return {\n transports: transports,\n targets: targets,\n sources: sources,\n trackInstances: inBrowser\n };\n },\n methods: {\n open: function open(transport) {\n if (!inBrowser) return;\n var to = transport.to,\n from = transport.from,\n passengers = transport.passengers,\n _transport$order = transport.order,\n order = _transport$order === void 0 ? Infinity : _transport$order;\n if (!to || !from || !passengers) return;\n var newTransport = {\n to: to,\n from: from,\n passengers: freeze(passengers),\n order: order\n };\n var keys = Object.keys(this.transports);\n \n if (keys.indexOf(to) === -1) {\n Vue.set(this.transports, to, []);\n }\n \n var currentIndex = this.$_getTransportIndex(newTransport); // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n \n var newTransports = this.transports[to].slice(0);\n \n if (currentIndex === -1) {\n newTransports.push(newTransport);\n } else {\n newTransports[currentIndex] = newTransport;\n }\n \n this.transports[to] = stableSort(newTransports, function (a, b) {\n return a.order - b.order;\n });\n },\n close: function close(transport) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var to = transport.to,\n from = transport.from;\n if (!to || !from && force === false) return;\n \n if (!this.transports[to]) {\n return;\n }\n \n if (force) {\n this.transports[to] = [];\n } else {\n var index = this.$_getTransportIndex(transport);\n \n if (index >= 0) {\n // Copying the array here so that the PortalTarget change event will actually contain two distinct arrays\n var newTransports = this.transports[to].slice(0);\n newTransports.splice(index, 1);\n this.transports[to] = newTransports;\n }\n }\n },\n registerTarget: function registerTarget(target, vm, force) {\n if (!inBrowser) return;\n \n if (this.trackInstances && !force && this.targets[target]) {\n console.warn(\"[portal-vue]: Target \".concat(target, \" already exists\"));\n }\n \n this.$set(this.targets, target, Object.freeze([vm]));\n },\n unregisterTarget: function unregisterTarget(target) {\n this.$delete(this.targets, target);\n },\n registerSource: function registerSource(source, vm, force) {\n if (!inBrowser) return;\n \n if (this.trackInstances && !force && this.sources[source]) {\n console.warn(\"[portal-vue]: source \".concat(source, \" already exists\"));\n }\n \n this.$set(this.sources, source, Object.freeze([vm]));\n },\n unregisterSource: function unregisterSource(source) {\n this.$delete(this.sources, source);\n },\n hasTarget: function hasTarget(to) {\n return !!(this.targets[to] && this.targets[to][0]);\n },\n hasSource: function hasSource(to) {\n return !!(this.sources[to] && this.sources[to][0]);\n },\n hasContentFor: function hasContentFor(to) {\n return !!this.transports[to] && !!this.transports[to].length;\n },\n // Internal\n $_getTransportIndex: function $_getTransportIndex(_ref) {\n var to = _ref.to,\n from = _ref.from;\n \n for (var i in this.transports[to]) {\n if (this.transports[to][i].from === from) {\n return +i;\n }\n }\n \n return -1;\n }\n }\n });\n var wormhole = new Wormhole(transports);\n \n var _id = 1;\n var Portal = Vue.extend({\n name: 'portal',\n props: {\n disabled: {\n type: Boolean\n },\n name: {\n type: String,\n default: function _default() {\n return String(_id++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n }\n },\n created: function created() {\n var _this = this;\n \n this.$nextTick(function () {\n wormhole.registerSource(_this.name, _this);\n });\n },\n mounted: function mounted() {\n if (!this.disabled) {\n this.sendUpdate();\n }\n },\n updated: function updated() {\n if (this.disabled) {\n this.clear();\n } else {\n this.sendUpdate();\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterSource(this.name);\n this.clear();\n },\n watch: {\n to: function to(newValue, oldValue) {\n oldValue && oldValue !== newValue && this.clear(oldValue);\n this.sendUpdate();\n }\n },\n methods: {\n clear: function clear(target) {\n var closer = {\n from: this.name,\n to: target || this.to\n };\n wormhole.close(closer);\n },\n normalizeSlots: function normalizeSlots() {\n return this.$scopedSlots.default ? [this.$scopedSlots.default] : this.$slots.default;\n },\n normalizeOwnChildren: function normalizeOwnChildren(children) {\n return typeof children === 'function' ? children(this.slotProps) : children;\n },\n sendUpdate: function sendUpdate() {\n var slotContent = this.normalizeSlots();\n \n if (slotContent) {\n var transport = {\n from: this.name,\n to: this.to,\n passengers: _toConsumableArray(slotContent),\n order: this.order\n };\n wormhole.open(transport);\n } else {\n this.clear();\n }\n }\n },\n render: function render(h) {\n var children = this.$slots.default || this.$scopedSlots.default || [];\n var Tag = this.tag;\n \n if (children && this.disabled) {\n return children.length <= 1 && this.slim ? this.normalizeOwnChildren(children)[0] : h(Tag, [this.normalizeOwnChildren(children)]);\n } else {\n return this.slim ? h() : h(Tag, {\n class: {\n 'v-portal': true\n },\n style: {\n display: 'none'\n },\n key: 'v-portal-placeholder'\n });\n }\n }\n });\n \n var PortalTarget = Vue.extend({\n name: 'portalTarget',\n props: {\n multiple: {\n type: Boolean,\n default: false\n },\n name: {\n type: String,\n required: true\n },\n slim: {\n type: Boolean,\n default: false\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n data: function data() {\n return {\n transports: wormhole.transports,\n firstRender: true\n };\n },\n created: function created() {\n var _this = this;\n \n this.$nextTick(function () {\n wormhole.registerTarget(_this.name, _this);\n });\n },\n watch: {\n ownTransports: function ownTransports() {\n this.$emit('change', this.children().length > 0);\n },\n name: function name(newVal, oldVal) {\n /**\n * TODO\n * This should warn as well ...\n */\n wormhole.unregisterTarget(oldVal);\n wormhole.registerTarget(newVal, this);\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n \n if (this.transition) {\n this.$nextTick(function () {\n // only when we have a transition, because it causes a re-render\n _this2.firstRender = false;\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n wormhole.unregisterTarget(this.name);\n },\n computed: {\n ownTransports: function ownTransports() {\n var transports = this.transports[this.name] || [];\n \n if (this.multiple) {\n return transports;\n }\n \n return transports.length === 0 ? [] : [transports[transports.length - 1]];\n },\n passengers: function passengers() {\n return combinePassengers(this.ownTransports, this.slotProps);\n }\n },\n methods: {\n // can't be a computed prop because it has to \"react\" to $slot changes.\n children: function children() {\n return this.passengers.length !== 0 ? this.passengers : this.$scopedSlots.default ? this.$scopedSlots.default(this.slotProps) : this.$slots.default || [];\n },\n // can't be a computed prop because it has to \"react\" to this.children().\n noWrapper: function noWrapper() {\n var noWrapper = this.slim && !this.transition;\n \n if (noWrapper && this.children().length > 1) {\n console.warn('[portal-vue]: PortalTarget with `slim` option received more than one child element.');\n }\n \n return noWrapper;\n }\n },\n render: function render(h) {\n var noWrapper = this.noWrapper();\n var children = this.children();\n var Tag = this.transition || this.tag;\n return noWrapper ? children[0] : this.slim && !Tag ? h() : h(Tag, {\n props: {\n // if we have a transition component, pass the tag if it exists\n tag: this.transition && this.tag ? this.tag : undefined\n },\n class: {\n 'vue-portal-target': true\n }\n }, children);\n }\n });\n \n var _id$1 = 0;\n var portalProps = ['disabled', 'name', 'order', 'slim', 'slotProps', 'tag', 'to'];\n var targetProps = ['multiple', 'transition'];\n var MountingPortal = Vue.extend({\n name: 'MountingPortal',\n inheritAttrs: false,\n props: {\n append: {\n type: [Boolean, String]\n },\n bail: {\n type: Boolean\n },\n mountTo: {\n type: String,\n required: true\n },\n // Portal\n disabled: {\n type: Boolean\n },\n // name for the portal\n name: {\n type: String,\n default: function _default() {\n return 'mounted_' + String(_id$1++);\n }\n },\n order: {\n type: Number,\n default: 0\n },\n slim: {\n type: Boolean\n },\n slotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n },\n // name for the target\n to: {\n type: String,\n default: function _default() {\n return String(Math.round(Math.random() * 10000000));\n }\n },\n // Target\n multiple: {\n type: Boolean,\n default: false\n },\n targetSlim: {\n type: Boolean\n },\n targetSlotProps: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n targetTag: {\n type: String,\n default: 'div'\n },\n transition: {\n type: [String, Object, Function]\n }\n },\n created: function created() {\n if (typeof document === 'undefined') return;\n var el = document.querySelector(this.mountTo);\n \n if (!el) {\n console.error(\"[portal-vue]: Mount Point '\".concat(this.mountTo, \"' not found in document\"));\n return;\n }\n \n var props = this.$props; // Target already exists\n \n if (wormhole.targets[props.name]) {\n if (props.bail) {\n console.warn(\"[portal-vue]: Target \".concat(props.name, \" is already mounted.\\n Aborting because 'bail: true' is set\"));\n } else {\n this.portalTarget = wormhole.targets[props.name];\n }\n \n return;\n }\n \n var append = props.append;\n \n if (append) {\n var type = typeof append === 'string' ? append : 'DIV';\n var mountEl = document.createElement(type);\n el.appendChild(mountEl);\n el = mountEl;\n } // get props for target from $props\n // we have to rename a few of them\n \n \n var _props = pick(this.$props, targetProps);\n \n _props.slim = this.targetSlim;\n _props.tag = this.targetTag;\n _props.slotProps = this.targetSlotProps;\n _props.name = this.to;\n this.portalTarget = new PortalTarget({\n el: el,\n parent: this.$parent || this,\n propsData: _props\n });\n },\n beforeDestroy: function beforeDestroy() {\n var target = this.portalTarget;\n \n if (this.append) {\n var el = target.$el;\n el.parentNode.removeChild(el);\n }\n \n target.$destroy();\n },\n render: function render(h) {\n if (!this.portalTarget) {\n console.warn(\"[portal-vue] Target wasn't mounted\");\n return h();\n } // if there's no \"manual\" scoped slot, so we create a <Portal> ourselves\n \n \n if (!this.$scopedSlots.manual) {\n var props = pick(this.$props, portalProps);\n return h(Portal, {\n props: props,\n attrs: this.$attrs,\n on: this.$listeners,\n scopedSlots: this.$scopedSlots\n }, this.$slots.default);\n } // else, we render the scoped slot\n \n \n var content = this.$scopedSlots.manual({\n to: this.to\n }); // if user used <template> for the scoped slot\n // content will be an array\n \n if (Array.isArray(content)) {\n content = content[0];\n }\n \n if (!content) return h();\n return content;\n }\n });\n \n function install(Vue$$1) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Vue$$1.component(options.portalName || 'Portal', Portal);\n Vue$$1.component(options.portalTargetName || 'PortalTarget', PortalTarget);\n Vue$$1.component(options.MountingPortalName || 'MountingPortal', MountingPortal);\n }\n \n if ( // @ts-ignore\n typeof window !== 'undefined' && window.Vue && window.Vue === Vue) {\n window.Vue.use({\n install: install\n });\n }\n \n var index = {\n install: install\n };\n \n exports.default = index;\n exports.Portal = Portal;\n exports.PortalTarget = PortalTarget;\n exports.MountingPortal = MountingPortal;\n exports.Wormhole = wormhole;\n \n Object.defineProperty(exports, '__esModule', { value: true });\n \n })));\n "],"names":["global","factory","this","exports","Vue","_typeof","obj","Symbol","_typeof2","iterator","constructor","prototype","_toConsumableArray","arr","Array","isArray","i","arr2","length","_arrayWithoutHoles","iter","Object","toString","call","from","_iterableToArray","TypeError","_nonIterableSpread","hasOwnProperty","inBrowser","window","pick","keys","reduce","acc","key","transports","targets","sources","Wormhole","extend","data","trackInstances","methods","open","transport","to","passengers","_transport$order","order","Infinity","item","newTransport","freeze","indexOf","set","compareFn","currentIndex","$_getTransportIndex","newTransports","slice","push","a","b","map","v","idx","sort","c","close","force","arguments","undefined","index","splice","registerTarget","target","vm","console","warn","concat","$set","unregisterTarget","$delete","registerSource","source","unregisterSource","hasTarget","hasSource","hasContentFor","_ref","wormhole","_id","Portal","name","props","disabled","type","Boolean","String","default","Number","slim","slotProps","tag","Math","round","random","created","_this","$nextTick","mounted","sendUpdate","updated","clear","beforeDestroy","watch","newValue","oldValue","closer","normalizeSlots","$scopedSlots","$slots","normalizeOwnChildren","children","slotContent","render","h","Tag","class","style","display","PortalTarget","multiple","required","transition","Function","firstRender","ownTransports","$emit","newVal","oldVal","_this2","computed","temp","newPassengers","combinePassengers","noWrapper","_id$1","portalProps","targetProps","MountingPortal","inheritAttrs","append","bail","mountTo","targetSlim","targetSlotProps","targetTag","document","el","querySelector","$props","portalTarget","mountEl","createElement","appendChild","_props","parent","$parent","propsData","error","$el","parentNode","removeChild","$destroy","manual","attrs","$attrs","on","$listeners","scopedSlots","content","install","Vue$$1","options","component","portalName","portalTargetName","MountingPortalName","use","defineProperty","value","module","require","define","amd","PortalVue"],"mappings":"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"} |