podgrab/webassets/modal/vue-modal.umd.min.js.map

1 line
23 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"file":"vue-modal.umd.min.js","sources":["../node_modules/nanoid/non-secure/index.js","../node_modules/@linusborg/vue-simple-portal/dist/index.mjs","../src/Modal.vue","../node_modules/vue-runtime-helpers/dist/normalize-component.mjs"],"sourcesContent":["// This alphabet uses a-z A-Z 0-9 _- symbols.\n// Symbols are generated for smaller size.\n// -_zyxwvutsrqponmlkjihgfedcba9876543210ZYXWVUTSRQPONMLKJIHGFEDCBA\nvar url = '-_'\n// Loop from 36 to 0 (from z to a and 9 to 0 in Base36).\nvar i = 36\nwhile (i--) {\n // 36 is radix. Number.prototype.toString(36) returns number\n // in Base36 representation. Base36 is like hex, but it uses 09 and a-z.\n url += i.toString(36)\n}\n// Loop from 36 to 10 (from Z to A in Base36).\ni = 36\nwhile (i-- - 10) {\n url += i.toString(36).toUpperCase()\n}\n\n/**\n * Generate URL-friendly unique ID. This method use non-secure predictable\n * random generator with bigger collision probability.\n *\n * @param {number} [size=21] The number of symbols in ID.\n *\n * @return {string} Random string.\n *\n * @example\n * const nanoid = require('nanoid/non-secure')\n * model.id = nanoid() //=> \"Uakgb_J5m9g-0JDMbcJqL\"\n *\n * @name nonSecure\n * @function\n */\nmodule.exports = function (size) {\n var id = ''\n i = size || 21\n // Compact alternative for `for (var i = 0; i < size; i++)`\n while (i--) {\n // `| 0` is compact and faster alternative for `Math.floor()`\n id += url[Math.random() * 64 | 0]\n }\n return id\n}\n","\n/**\n * vue-simple-portal\n * version: 0.1.4,\n * (c) Thorsten Lünborg, 2019\n * LICENCE: Apache-2.0\n * http://github.com/linusborg/vue-simple-portal\n*/\nimport Vue from 'vue';\nimport id from 'nanoid/non-secure';\n\nfunction _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\nvar config = {\n selector: \"vue-portal-target-\".concat(id())\n};\nvar setSelector = function setSelector(selector) {\n return config.selector = selector;\n};\nvar isBrowser = typeof window !== 'undefined' && (typeof document === \"undefined\" ? \"undefined\" : _typeof(document)) !== undefined;\n\nvar TargetContainer = Vue.extend({\n // as an abstract component, it doesn't appear in\n // the $parent chain of components.\n // which means the next parent of any component rendered inside of this oen\n // will be the parent from which is was portal'd\n abstract: true,\n name: 'PortalOutlet',\n props: ['nodes', 'tag'],\n data: function data(vm) {\n return {\n updatedNodes: vm.nodes\n };\n },\n render: function render(h) {\n var nodes = this.updatedNodes && this.updatedNodes();\n if (!nodes) return h();\n return nodes.length < 2 && !nodes[0].text ? nodes : h(this.tag || 'DIV', nodes);\n },\n destroyed: function destroyed() {\n var el = this.$el;\n el.parentNode.removeChild(el);\n }\n});\n\nvar Portal = Vue.extend({\n name: 'VueSimplePortal',\n props: {\n disabled: {\n type: Boolean\n },\n prepend: {\n type: Boolean\n },\n selector: {\n type: String,\n default: function _default() {\n return \"#\".concat(config.selector);\n }\n },\n tag: {\n type: String,\n default: 'DIV'\n }\n },\n render: function render(h) {\n if (this.disabled) {\n var nodes = this.$scopedSlots && this.$scopedSlots.default();\n if (!nodes) return h();\n return nodes.length < 2 && !nodes[0].text ? nodes : h(this.tag, nodes);\n }\n\n return h();\n },\n created: function created() {\n if (!this.getTargetEl()) {\n this.insertTargetEl();\n }\n },\n updated: function updated() {\n var _this = this;\n\n // We only update the target container component\n // if the scoped slot function is a fresh one\n // The new slot syntax (since Vue 2.6) can cache unchanged slot functions\n // and we want to respect that here.\n this.$nextTick(function () {\n if (!_this.disabled && _this.slotFn !== _this.$scopedSlots.default) {\n _this.container.updatedNodes = _this.$scopedSlots.default;\n }\n\n _this.slotFn = _this.$scopedSlots.default;\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.unmount();\n },\n watch: {\n disabled: {\n immediate: true,\n handler: function handler(disabled) {\n disabled ? this.unmount() : this.$nextTick(this.mount);\n }\n }\n },\n methods: {\n // This returns the element into which the content should be mounted.\n getTargetEl: function getTargetEl() {\n if (!isBrowser) return;\n return document.querySelector(this.selector);\n },\n insertTargetEl: function insertTargetEl() {\n if (!isBrowser) return;\n var parent = document.querySelector('body');\n var child = document.createElement(this.tag);\n child.id = this.selector.substring(1);\n parent.appendChild(child);\n },\n mount: function mount() {\n var targetEl = this.getTargetEl();\n var el = document.createElement('DIV');\n\n if (this.prepend && targetEl.firstChild) {\n targetEl.insertBefore(el, targetEl.firstChild);\n } else {\n targetEl.appendChild(el);\n }\n\n this.container = new TargetContainer({\n el: el,\n parent: this,\n propsData: {\n tag: this.tag,\n nodes: this.$scopedSlots.default\n }\n });\n },\n unmount: function unmount() {\n if (this.container) {\n this.container.$destroy();\n delete this.container;\n }\n }\n }\n});\n\nfunction install(_Vue) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _Vue.component(options.name || 'portal', Portal);\n\n if (options.defaultSelector) {\n setSelector(options.defaultSelector);\n }\n}\n\nif (typeof window !== 'undefined' && window.Vue && window.Vue === Vue) {\n // plugin was inlcuded directly in a browser\n Vue.use(install);\n}\n\nexport default install;\nexport { Portal, config, setSelector };\n","<template>\n <div v-if=\"mount\">\n <portal :selector=\"appendTo\">\n <transition name=\"vm-backdrop-transition\" :enter-active-class=\"bgInClass\" :leave-active-class=\"bgOutClass\">\n <div\n v-show=\"show\"\n :data-vm-backdrop-id=\"id\"\n class=\"vm-backdrop\"\n :class=\"bgClass\"\n :style=\"{ 'z-index': zIndex - 1 }\"\n ></div>\n </transition>\n <transition\n name=\"vm-transition\"\n :enter-active-class=\"inClass\"\n :leave-active-class=\"outClass\"\n @before-enter=\"beforeOpen\"\n @enter=\"opening\"\n @after-enter=\"afterOpen\"\n @before-leave=\"beforeClose\"\n @leave=\"closing\"\n @after-leave=\"afterClose\"\n >\n <div\n v-show=\"show\"\n ref=\"vm-wrapper\"\n :data-vm-wrapper-id=\"id\"\n tabindex=\"-1\"\n class=\"vm-wrapper\"\n :class=\"wrapperClass\"\n :style=\"{ 'z-index': zIndex, cursor: enableClose ? 'pointer' : 'default' }\"\n role=\"dialog\"\n :aria-label=\"title\"\n aria-modal=\"true\"\n @click=\"clickOutside($event)\"\n @keydown=\"keydown($event)\"\n >\n <div ref=\"vm\" class=\"vm\" :data-vm-id=\"id\" :class=\"modalClass\" :style=\"modalStyle\">\n <slot name=\"titlebar\">\n <div class=\"vm-titlebar\">\n <h3 class=\"vm-title\">\n {{ title }}\n </h3>\n <button v-if=\"enableClose\" type=\"button\" class=\"vm-btn-close\" @click.prevent=\"close\"></button>\n </div>\n </slot>\n <slot name=\"content\">\n <div class=\"vm-content\">\n <slot></slot>\n </div>\n </slot>\n </div>\n </div>\n </transition>\n </portal>\n </div>\n</template>\n\n<script>\nimport { Portal } from '@linusborg/vue-simple-portal'\n\nconst TYPE_CSS = {\n type: [String, Object, Array],\n default: ''\n}\nconst FOCUSABLE_ELEMENTS =\n 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex=\"-1\"])'\nlet animatingZIndex = 0\n\nexport default {\n name: 'VueModal',\n components: {\n Portal\n },\n model: {\n prop: 'basedOn',\n event: 'close'\n },\n props: {\n title: {\n type: String,\n default: ''\n },\n baseZindex: {\n type: Number,\n default: 1051\n },\n bgClass: TYPE_CSS,\n wrapperClass: TYPE_CSS,\n modalClass: TYPE_CSS,\n modalStyle: TYPE_CSS,\n inClass: Object.assign({}, TYPE_CSS, { default: 'vm-fadeIn' }),\n outClass: Object.assign({}, TYPE_CSS, { default: 'vm-fadeOut' }),\n bgInClass: Object.assign({}, TYPE_CSS, { default: 'vm-fadeIn' }),\n bgOutClass: Object.assign({}, TYPE_CSS, { default: 'vm-fadeOut' }),\n appendTo: {\n type: String,\n default: 'body'\n },\n live: {\n type: Boolean,\n default: false\n },\n enableClose: {\n type: Boolean,\n default: true\n },\n basedOn: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n zIndex: 0,\n id: null,\n show: false,\n mount: false,\n elToFocus: null\n }\n },\n created() {\n if (this.live) {\n this.mount = true\n }\n },\n mounted() {\n this.id = 'vm-' + this._uid\n this.$watch(\n 'basedOn',\n function (newVal) {\n if (newVal) {\n this.mount = true\n this.$nextTick(() => {\n this.show = true\n })\n } else {\n this.show = false\n }\n },\n {\n immediate: true\n }\n )\n },\n beforeDestroy() {\n this.elToFocus = null\n },\n methods: {\n close() {\n if (this.enableClose === true) {\n this.$emit('close', false)\n }\n },\n clickOutside(e) {\n if (e.target === this.$refs['vm-wrapper']) {\n this.close()\n }\n },\n keydown(e) {\n if (e.which === 27) {\n this.close()\n }\n if (e.which === 9) {\n // Get only visible elements\n const all = [].slice.call(this.$refs['vm-wrapper'].querySelectorAll(FOCUSABLE_ELEMENTS)).filter(function (el) {\n return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length)\n })\n if (e.shiftKey) {\n if (e.target === all[0] || e.target === this.$refs['vm-wrapper']) {\n e.preventDefault()\n all[all.length - 1].focus()\n }\n } else {\n if (e.target === all[all.length - 1]) {\n e.preventDefault()\n all[0].focus()\n }\n }\n }\n },\n getAllVisibleWrappers() {\n return [].slice.call(document.querySelectorAll('[data-vm-wrapper-id]')).filter((w) => w.display !== 'none')\n },\n getTopZindex() {\n return this.getAllVisibleWrappers().reduce((acc, curr) => {\n return parseInt(curr.style.zIndex) > acc ? parseInt(curr.style.zIndex) : acc\n }, 0)\n },\n handleFocus(wrapper) {\n const autofocus = wrapper.querySelector('[autofocus]')\n if (autofocus) {\n autofocus.focus()\n } else {\n const focusable = wrapper.querySelectorAll(FOCUSABLE_ELEMENTS)\n focusable.length ? focusable[0].focus() : wrapper.focus()\n }\n },\n beforeOpen() {\n // console.log('beforeOpen');\n this.elToFocus = document.activeElement\n const lastZindex = this.getTopZindex()\n if (animatingZIndex) {\n this.zIndex = animatingZIndex + 2\n } else {\n this.zIndex = lastZindex === 0 ? this.baseZindex : lastZindex + 2\n }\n animatingZIndex = this.zIndex\n this.$emit('before-open')\n },\n opening() {\n // console.log('opening');\n this.$emit('opening')\n },\n afterOpen() {\n // console.log('afterOpen');\n this.handleFocus(this.$refs['vm-wrapper'])\n this.$emit('after-open')\n },\n beforeClose() {\n // console.log('beforeClose');\n this.$emit('before-close')\n },\n closing() {\n // console.log('closing');\n this.$emit('closing')\n },\n afterClose() {\n // console.log('afterClose');\n this.zIndex = 0\n if (!this.live) {\n this.mount = false\n }\n this.$nextTick(() => {\n window.requestAnimationFrame(() => {\n const lastZindex = this.getTopZindex()\n if (lastZindex > 0) {\n const all = this.getAllVisibleWrappers()\n for (let i = 0; i < all.length; i++) {\n const wrapper = all[i]\n if (parseInt(wrapper.style.zIndex) === lastZindex) {\n if (wrapper.contains(this.elToFocus)) {\n this.elToFocus.focus()\n } else {\n // console.log(wrapper);\n this.handleFocus(wrapper)\n }\n break\n }\n }\n } else {\n if (document.body.contains(this.elToFocus)) {\n this.elToFocus.focus()\n }\n }\n animatingZIndex = 0\n this.$emit('after-close')\n })\n })\n }\n }\n}\n</script>\n\n<style>\n.vm-backdrop {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.5);\n}\n.vm-wrapper {\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n overflow-x: hidden;\n overflow-y: auto;\n outline: 0;\n}\n.vm {\n position: relative;\n margin: 0px auto;\n width: calc(100% - 20px);\n min-width: 110px;\n max-width: 500px;\n background-color: #fff;\n top: 30px;\n cursor: default;\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n}\n.vm-titlebar {\n padding: 10px 15px 10px 15px;\n overflow: auto;\n border-bottom: 1px solid #e5e5e5;\n}\n.vm-title {\n margin-top: 2px;\n margin-bottom: 0px;\n display: inline-block;\n font-size: 18px;\n font-weight: normal;\n}\n.vm-btn-close {\n color: #ccc;\n padding: 0px;\n cursor: pointer;\n background: 0 0;\n border: 0;\n float: right;\n font-size: 24px;\n line-height: 1em;\n}\n.vm-btn-close:before {\n content: '×';\n font-family: Arial;\n}\n.vm-btn-close:hover,\n.vm-btn-close:focus,\n.vm-btn-close:focus:hover {\n color: #bbb;\n border-color: transparent;\n background-color: transparent;\n}\n.vm-content {\n padding: 10px 15px 15px 15px;\n}\n.vm-content .full-hr {\n width: auto;\n border: 0;\n border-top: 1px solid #e5e5e5;\n margin-top: 15px;\n margin-bottom: 15px;\n margin-left: -14px;\n margin-right: -14px;\n}\n.vm-fadeIn {\n animation-name: vm-fadeIn;\n}\n@keyframes vm-fadeIn {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}\n.vm-fadeOut {\n animation-name: vm-fadeOut;\n}\n@keyframes vm-fadeOut {\n 0% {\n opacity: 1;\n }\n 100% {\n opacity: 0;\n }\n}\n.vm-fadeIn,\n.vm-fadeOut {\n animation-duration: 0.25s;\n animation-fill-mode: both;\n}\n</style>\n","function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\nexport default normalizeComponent;\n//# sourceMappingURL=normalize-component.mjs.map\n"],"names":["url","i","toString","toUpperCase","_typeof","obj","Symbol","iterator","constructor","prototype","config","selector","concat","size","id","Math","random","setSelector","isBrowser","window","undefined","document","TargetContainer","Vue","extend","abstract","name","props","data","vm","updatedNodes","nodes","render","h","this","length","text","tag","destroyed","el","$el","parentNode","removeChild","Portal","disabled","type","Boolean","prepend","String","default","$scopedSlots","created","getTargetEl","insertTargetEl","updated","_this","$nextTick","slotFn","container","beforeDestroy","unmount","watch","immediate","handler","mount","methods","querySelector","parent","child","createElement","substring","appendChild","targetEl","firstChild","insertBefore","propsData","$destroy","use","_Vue","options","arguments","component","defaultSelector","const","normalizeComponent","template","style","script","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","existing","beforeCreate"],"mappings":"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"}