wg-webui-fr/appwg/ui/dist/js/Clients.adbe44c3.js.map
2024-09-20 10:55:18 +02:00

1 line
108 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"version":3,"sources":["webpack:///./src/views/Clients.vue?89bf","webpack:///./node_modules/vuetify/lib/components/VOverlay/VOverlay.js","webpack:///./node_modules/vuetify/lib/components/VOverlay/index.js","webpack:///./node_modules/vuetify/lib/mixins/overlayable/index.js","webpack:///./node_modules/vuetify/lib/components/VDialog/VDialog.js","webpack:///./node_modules/vuetify/lib/components/VForm/VForm.js","webpack:///./node_modules/vuetify/lib/mixins/rippleable/index.js","webpack:///./node_modules/vuetify/lib/mixins/selectable/index.js","webpack:///./node_modules/vuetify/lib/directives/touch/index.js","webpack:///./node_modules/vuetify/lib/components/VSwitch/VSwitch.js","webpack:///./node_modules/vuetify/lib/components/VTooltip/VTooltip.js","webpack:///./src/components/Clients.vue?4bee","webpack:///src/components/Clients.vue","webpack:///./src/components/Clients.vue?04fd","webpack:///./src/components/Clients.vue","webpack:///src/views/Clients.vue","webpack:///./src/views/Clients.vue?bf3b","webpack:///./src/views/Clients.vue","webpack:///./node_modules/vuetify/lib/components/VCard/index.js"],"names":["_vm","this","_c","_self","VContent","staticRenderFns","mixins","extend","name","props","absolute","Boolean","color","type","String","default","dark","opacity","Number","value","zIndex","computed","data","setBackgroundColor","staticClass","style","computedOpacity","$createElement","isActive","themeClasses","methods","h","children","__scrim","push","genContent","on","$listeners","class","classes","styles","hideOverlay","overlayColor","overlayOpacity","animationFrame","overlay","watch","removeOverlay","genOverlay","propsData","$mount","parent","$el","parentNode","document","querySelector","insertBefore","firstChild","hideScroll","createOverlay","requestAnimationFrame","undefined","activeZIndex","showScroll","removeChild","$destroy","cancelAnimationFrame","e","includes","target","tagName","isContentEditable","up","pageup","down","pagedown","keyCode","deltaY","body","checkPath","preventDefault","el","nodeType","Node","ELEMENT_NODE","window","getComputedStyle","overflowY","scrollHeight","clientHeight","overflowX","scrollWidth","clientWidth","hasAttribute","dir","shiftKey","deltaX","delta","alreadyAtStart","alreadyAtEnd","scrollTop","scrollLeft","scrollingUp","scrollingDown","shouldScroll","isInside","path","dialog","$refs","selected","getSelection","anchorNode","hasScrollbar","index","length","documentElement","content","$vuetify","breakpoint","smAndDown","classList","add","scrollListener","passive","addEventListener","remove","removeEventListener","baseMixins","directives","ClickOutside","disabled","fullscreen","light","maxWidth","noClickAnimation","origin","persistent","retainFocus","scrollable","transition","width","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","contentClass","trim","$slots","activator","$scopedSlots","val","_a","show","unbind","focus","$attrs","hasOwnProperty","$nextTick","isBooted","clearTimeout","setTimeout","_isDestroyed","contains","getMaxZIndex","options","call","_b","activeElement","bind","onFocusin","$emit","animateClick","esc","getOpenDependents","getActivator","getOpenDependentElements","some","focusable","querySelectorAll","find","matches","showLazyContent","VThemeProvider","root","contentClasses","attrs","role","getScopeIdAttrs","keydown","onKeydown","ref","genTransition","genInnerContent","appear","tabindex","handler","onClickOutside","closeConditional","include","transformOrigin","getContentSlot","attach","genActivator","form","inheritAttrs","lazyValidation","readonly","inputs","watchers","errorBag","errors","Object","values","deep","immediate","input","watcher","$watch","$set","_uid","valid","shouldValidate","filter","validate","forEach","reset","resetErrorBag","resetValidation","watchInput","found","i","unwatch","$delete","novalidate","attrs$","submit","ripple","center","prevent","VInput","model","prop","event","id","inputValue","falseValue","trueValue","multiple","label","hasColor","lazyValue","isDark","appIsDark","Array","isArray","internalValue","isMultiple","item","valueComparator","isDisabled","validationState","genLabel","click","assign","toString","computedId","domProps","checked","blur","onBlur","change","onChange","onFocus","isInteractive","isFocused","handleGesture","wrapper","touchstartX","touchendX","touchstartY","touchendY","dirRatio","minDistance","offsetX","offsetY","Math","abs","left","right","touchstart","touch","changedTouches","clientX","clientY","start","touchend","end","touchmove","touchmoveX","touchmoveY","move","createHandlers","inserted","binding","vnode","parentElement","handlers","_touchHandlers","context","eventName","Touch","inset","loading","flat","hasError","hasSuccess","computedColor","setTextColor","genSwitch","title","switchAttrs","genInput","genRipple","onSwipeLeft","onSwipeRight","switchData","genProgress","VProgressCircular","size","indeterminate","closeDelay","openDelay","openOnHover","openOnFocus","tag","calculatedMinWidth","closeDependents","dimensions","unknown","bottom","top","activatorLeft","offsetLeft","nudgeLeft","parseInt","nudgeRight","calcXOverflow","activatorTop","offsetTop","height","nudgeTop","nudgeBottom","pageYOffset","calcYOverflow","calculatedLeft","minWidth","calculatedTop","callActivate","console","updateDimensions","startTransition","runDelay","listeners","genActivatorListeners","computedTransition","menuable__content__active","activatorFixed","isContentActive","VContainer","VRow","VCol","VCard","VListItem","VList","_v","VBtn","startAddClient","VIcon","_l","client","key","enable","_s","email","_f","created","updated","VListItemAvatar","VImg","apiBaseUrl","ip","VChip","scopedSlots","_u","fn","_g","$event","stopPropagation","startUpdateClient","sendEmailClient","deleteClient","VSpacer","updateClient","callback","$$v","expression","dialogAddClient","VForm","VTextField","v","test","VSelect","server","address","VCombobox","select","allowedIPs","splice","indexOf","ignorePersistentKeepalive","addClient","_e","dialogEditClient","notification","components","Notification","api","clients","text","ApiService","getClients","getServer","get","then","res","catch","notify","response","status","statusText","$isCidr","post","confirm","delete","patch","msg","component","Clients","VCardActions","VCardSubtitle","VCardText","VCardTitle"],"mappings":"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","file":"js/Clients.adbe44c3.js","sourcesContent":["import { VContent } from 'vuetify/lib/components/VContent';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c;return _c(VContent,[_c('Clients')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// Styles\nimport \"../../../src/components/VOverlay/VOverlay.sass\"; // Mixins\n\nimport Colorable from './../../mixins/colorable';\nimport Themeable from '../../mixins/themeable';\nimport Toggleable from './../../mixins/toggleable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { getSlot } from '../../util/helpers';\n/* @vue/component */\n\nexport default mixins(Colorable, Themeable, Toggleable).extend({\n name: 'v-overlay',\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121'\n },\n dark: {\n type: Boolean,\n default: true\n },\n opacity: {\n type: [Number, String],\n default: 0.46\n },\n value: {\n default: true\n },\n zIndex: {\n type: [Number, String],\n default: 5\n }\n },\n computed: {\n __scrim() {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity\n }\n });\n return this.$createElement('div', data);\n },\n\n classes() {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses\n };\n },\n\n computedOpacity() {\n return Number(this.isActive ? this.opacity : 0);\n },\n\n styles() {\n return {\n zIndex: this.zIndex\n };\n }\n\n },\n methods: {\n genContent() {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content'\n }, getSlot(this));\n }\n\n },\n\n render(h) {\n const children = [this.__scrim];\n if (this.isActive) children.push(this.genContent());\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles\n }, children);\n }\n\n});\n//# sourceMappingURL=VOverlay.js.map","import VOverlay from './VOverlay';\nexport { VOverlay };\nexport default VOverlay;\n//# sourceMappingURL=index.js.map","// Components\nimport VOverlay from '../../components/VOverlay'; // Utilities\n\nimport { keyCodes, addOnceEventListener, addPassiveEventListener, getZIndex, composedPath } from '../../util/helpers'; // Types\n\nimport Vue from 'vue';\n/* @vue/component */\n\nexport default Vue.extend().extend({\n name: 'overlayable',\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String]\n },\n\n data() {\n return {\n animationFrame: 0,\n overlay: null\n };\n },\n\n watch: {\n hideOverlay(value) {\n if (!this.isActive) return;\n if (value) this.removeOverlay();else this.genOverlay();\n }\n\n },\n\n beforeDestroy() {\n this.removeOverlay();\n },\n\n methods: {\n createOverlay() {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity\n }\n });\n overlay.$mount();\n const parent = this.absolute ? this.$el.parentNode : document.querySelector('[data-app]');\n parent && parent.insertBefore(overlay.$el, parent.firstChild);\n this.overlay = overlay;\n },\n\n genOverlay() {\n this.hideScroll();\n if (this.hideOverlay) return;\n if (!this.overlay) this.createOverlay();\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return;\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1);\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el);\n }\n\n this.overlay.value = true;\n });\n return true;\n },\n\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay(showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (!this.overlay || !this.overlay.$el || !this.overlay.$el.parentNode || this.overlay.value || this.isActive) return;\n this.overlay.$el.parentNode.removeChild(this.overlay.$el);\n this.overlay.$destroy();\n this.overlay = null;\n }); // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n\n cancelAnimationFrame(this.animationFrame);\n this.overlay.value = false;\n }\n\n showScroll && this.showScroll();\n },\n\n scrollListener(e) {\n if ('key' in e) {\n if (['INPUT', 'TEXTAREA', 'SELECT'].includes(e.target.tagName) || // https://github.com/vuetifyjs/vuetify/issues/4715\n e.target.isContentEditable) return;\n const up = [keyCodes.up, keyCodes.pageup];\n const down = [keyCodes.down, keyCodes.pagedown];\n\n if (up.includes(e.keyCode)) {\n e.deltaY = -1;\n } else if (down.includes(e.keyCode)) {\n e.deltaY = 1;\n } else {\n return;\n }\n }\n\n if (e.target === this.overlay || e.type !== 'keydown' && e.target === document.body || this.checkPath(e)) e.preventDefault();\n },\n\n hasScrollbar(el) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false;\n const style = window.getComputedStyle(el);\n return (['auto', 'scroll'].includes(style.overflowY) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight || ['auto', 'scroll'].includes(style.overflowX) && el.scrollWidth > el.clientWidth;\n },\n\n shouldScroll(el, e) {\n if (el.hasAttribute('data-app')) return false;\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y';\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY;\n let alreadyAtStart;\n let alreadyAtEnd;\n\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0;\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight;\n } else {\n alreadyAtStart = el.scrollLeft === 0;\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth;\n }\n\n const scrollingUp = delta < 0;\n const scrollingDown = delta > 0;\n if (!alreadyAtStart && scrollingUp) return true;\n if (!alreadyAtEnd && scrollingDown) return true;\n\n if ((alreadyAtStart || alreadyAtEnd) && el.parentNode) {\n return this.shouldScroll(el.parentNode, e);\n }\n\n return false;\n },\n\n isInside(el, parent) {\n if (el === parent) {\n return true;\n } else if (el === null || el === document.body) {\n return false;\n } else {\n return this.isInside(el.parentNode, parent);\n }\n },\n\n checkPath(e) {\n const path = composedPath(e);\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog; // getSelection returns null in firefox in some edge cases, can be ignored\n\n const selected = window.getSelection().anchorNode;\n\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e);\n }\n\n return true;\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index];\n if (el === document) return true;\n if (el === document.documentElement) return true;\n if (el === this.$refs.content) return true;\n if (this.hasScrollbar(el)) return !this.shouldScroll(el, e);\n }\n\n return true;\n },\n\n hideScroll() {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement.classList.add('overflow-y-hidden');\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, {\n passive: false\n });\n window.addEventListener('keydown', this.scrollListener);\n }\n },\n\n showScroll() {\n document.documentElement.classList.remove('overflow-y-hidden');\n window.removeEventListener('wheel', this.scrollListener);\n window.removeEventListener('keydown', this.scrollListener);\n }\n\n }\n});\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/components/VDialog/VDialog.sass\"; // Components\n\nimport { VThemeProvider } from '../VThemeProvider'; // Mixins\n\nimport Activatable from '../../mixins/activatable';\nimport Dependent from '../../mixins/dependent';\nimport Detachable from '../../mixins/detachable';\nimport Overlayable from '../../mixins/overlayable';\nimport Returnable from '../../mixins/returnable';\nimport Stackable from '../../mixins/stackable'; // Directives\n\nimport ClickOutside from '../../directives/click-outside'; // Helpers\n\nimport mixins from '../../util/mixins';\nimport { removed } from '../../util/console';\nimport { convertToUnit, keyCodes } from '../../util/helpers';\nconst baseMixins = mixins(Dependent, Detachable, Overlayable, Returnable, Stackable, Activatable);\n/* @vue/component */\n\nexport default baseMixins.extend({\n name: 'v-dialog',\n directives: {\n ClickOutside\n },\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center'\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition'\n },\n width: [String, Number]\n },\n\n data() {\n return {\n activatedBy: null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null\n };\n },\n\n computed: {\n classes() {\n return {\n [`v-dialog ${this.contentClass}`.trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate\n };\n },\n\n contentClasses() {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive\n };\n },\n\n hasActivator() {\n return Boolean(!!this.$slots.activator || !!this.$scopedSlots.activator);\n }\n\n },\n watch: {\n isActive(val) {\n var _a;\n\n if (val) {\n this.show();\n this.hideScroll();\n } else {\n this.removeOverlay();\n this.unbind();\n (_a = this.previousActiveElement) === null || _a === void 0 ? void 0 : _a.focus();\n }\n },\n\n fullscreen(val) {\n if (!this.isActive) return;\n\n if (val) {\n this.hideScroll();\n this.removeOverlay(false);\n } else {\n this.showScroll();\n this.genOverlay();\n }\n }\n\n },\n\n created() {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this);\n }\n },\n\n beforeMount() {\n this.$nextTick(() => {\n this.isBooted = this.isActive;\n this.isActive && this.show();\n });\n },\n\n beforeDestroy() {\n if (typeof window !== 'undefined') this.unbind();\n },\n\n methods: {\n animateClick() {\n this.animate = false; // Needed for when clicking very fast\n // outside of the dialog\n\n this.$nextTick(() => {\n this.animate = true;\n window.clearTimeout(this.animateTimeout);\n this.animateTimeout = window.setTimeout(() => this.animate = false, 150);\n });\n },\n\n closeConditional(e) {\n const target = e.target; // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n\n return !(this._isDestroyed || !this.isActive || this.$refs.content.contains(target) || this.overlay && target && !this.overlay.$el.contains(target)) && this.activeZIndex >= this.getMaxZIndex();\n },\n\n hideScroll() {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden');\n } else {\n Overlayable.options.methods.hideScroll.call(this);\n }\n },\n\n show() {\n !this.fullscreen && !this.hideOverlay && this.genOverlay(); // Double nextTick to wait for lazy content to be generated\n\n this.$nextTick(() => {\n this.$nextTick(() => {\n var _a, _b;\n\n if (!((_a = this.$refs.dialog) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {\n this.previousActiveElement = document.activeElement;\n (_b = this.$refs.dialog) === null || _b === void 0 ? void 0 : _b.focus();\n }\n\n this.bind();\n });\n });\n },\n\n bind() {\n window.addEventListener('focusin', this.onFocusin);\n },\n\n unbind() {\n window.removeEventListener('focusin', this.onFocusin);\n },\n\n onClickOutside(e) {\n this.$emit('click:outside', e);\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick();\n } else {\n this.isActive = false;\n }\n },\n\n onKeydown(e) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false;\n const activator = this.getActivator();\n this.$nextTick(() => activator && activator.focus());\n } else if (!this.noClickAnimation) {\n this.animateClick();\n }\n }\n\n this.$emit('keydown', e);\n },\n\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin(e) {\n if (!e || !this.retainFocus) return;\n const target = e.target;\n\n if (!!target && this.$refs.dialog && // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) && // It isn't inside the dialog body\n !this.$refs.dialog.contains(target) && // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() && // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target)) // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])');\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]'));\n el && el.focus();\n }\n },\n\n genContent() {\n return this.showLazyContent(() => [this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark\n }\n }, [this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs()\n },\n on: {\n keydown: this.onKeydown\n },\n style: {\n zIndex: this.activeZIndex\n },\n ref: 'content'\n }, [this.genTransition()])])]);\n },\n\n genTransition() {\n const content = this.genInnerContent();\n if (!this.transition) return content;\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true\n }\n }, [content]);\n },\n\n genInnerContent() {\n const data = {\n class: this.classes,\n attrs: {\n tabindex: this.isActive ? 0 : undefined\n },\n ref: 'dialog',\n directives: [{\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements\n }\n }, {\n name: 'show',\n value: this.isActive\n }],\n style: {\n transformOrigin: this.origin\n }\n };\n\n if (!this.fullscreen) {\n data.style = { ...data.style,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width)\n };\n }\n\n return this.$createElement('div', data, this.getContentSlot());\n }\n\n },\n\n render(h) {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n }\n }, [this.genActivator(), this.genContent()]);\n }\n\n});\n//# sourceMappingURL=VDialog.js.map","// Mixins\nimport mixins from '../../util/mixins';\nimport BindsAttrs from '../../mixins/binds-attrs';\nimport { provide as RegistrableProvide } from '../../mixins/registrable';\nimport { getSlot } from '../../util/helpers';\n/* @vue/component */\n\nexport default mixins(BindsAttrs, RegistrableProvide('form')\n/* @vue/component */\n).extend({\n name: 'v-form',\n\n provide() {\n return {\n form: this\n };\n },\n\n inheritAttrs: false,\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean\n },\n data: () => ({\n inputs: [],\n watchers: [],\n errorBag: {}\n }),\n watch: {\n errorBag: {\n handler(val) {\n const errors = Object.values(val).includes(true);\n this.$emit('input', !errors);\n },\n\n deep: true,\n immediate: true\n }\n },\n methods: {\n watchInput(input) {\n const watcher = input => {\n return input.$watch('hasError', val => {\n this.$set(this.errorBag, input._uid, val);\n }, {\n immediate: true\n });\n };\n\n const watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {}\n };\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', val => {\n if (!val) return; // Only watch if we're not already doing it\n\n if (this.errorBag.hasOwnProperty(input._uid)) return;\n watchers.valid = watcher(input);\n });\n } else {\n watchers.valid = watcher(input);\n }\n\n return watchers;\n },\n\n /** @public */\n validate() {\n return this.inputs.filter(input => !input.validate(true)).length === 0;\n },\n\n /** @public */\n reset() {\n this.inputs.forEach(input => input.reset());\n this.resetErrorBag();\n },\n\n resetErrorBag() {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {};\n }, 0);\n }\n },\n\n /** @public */\n resetValidation() {\n this.inputs.forEach(input => input.resetValidation());\n this.resetErrorBag();\n },\n\n register(input) {\n this.inputs.push(input);\n this.watchers.push(this.watchInput(input));\n },\n\n unregister(input) {\n const found = this.inputs.find(i => i._uid === input._uid);\n if (!found) return;\n const unwatch = this.watchers.find(i => i._uid === found._uid);\n\n if (unwatch) {\n unwatch.valid();\n unwatch.shouldValidate();\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid);\n this.inputs = this.inputs.filter(i => i._uid !== found._uid);\n this.$delete(this.errorBag, found._uid);\n }\n\n },\n\n render(h) {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$\n },\n on: {\n submit: e => this.$emit('submit', e)\n }\n }, getSlot(this));\n }\n\n});\n//# sourceMappingURL=VForm.js.map","// Directives\nimport ripple from '../../directives/ripple'; // Types\n\nimport Vue from 'vue';\nexport default Vue.extend({\n name: 'rippleable',\n directives: {\n ripple\n },\n props: {\n ripple: {\n type: [Boolean, Object],\n default: true\n }\n },\n methods: {\n genRipple(data = {}) {\n if (!this.ripple) return null;\n data.staticClass = 'v-input--selection-controls__ripple';\n data.directives = data.directives || [];\n data.directives.push({\n name: 'ripple',\n value: {\n center: true\n }\n });\n return this.$createElement('div', data);\n }\n\n }\n});\n//# sourceMappingURL=index.js.map","// Components\nimport VInput from '../../components/VInput'; // Mixins\n\nimport Rippleable from '../rippleable';\nimport Comparable from '../comparable'; // Utilities\n\nimport mixins from '../../util/mixins';\nexport function prevent(e) {\n e.preventDefault();\n}\n/* @vue/component */\n\nexport default mixins(VInput, Rippleable, Comparable).extend({\n name: 'selectable',\n model: {\n prop: 'inputValue',\n event: 'change'\n },\n props: {\n id: String,\n inputValue: null,\n falseValue: null,\n trueValue: null,\n multiple: {\n type: Boolean,\n default: null\n },\n label: String\n },\n\n data() {\n return {\n hasColor: this.inputValue,\n lazyValue: this.inputValue\n };\n },\n\n computed: {\n computedColor() {\n if (!this.isActive) return undefined;\n if (this.color) return this.color;\n if (this.isDark && !this.appIsDark) return 'white';\n return 'primary';\n },\n\n isMultiple() {\n return this.multiple === true || this.multiple === null && Array.isArray(this.internalValue);\n },\n\n isActive() {\n const value = this.value;\n const input = this.internalValue;\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) return false;\n return input.some(item => this.valueComparator(item, value));\n }\n\n if (this.trueValue === undefined || this.falseValue === undefined) {\n return value ? this.valueComparator(value, input) : Boolean(input);\n }\n\n return this.valueComparator(input, this.trueValue);\n },\n\n isDirty() {\n return this.isActive;\n },\n\n rippleState() {\n return !this.isDisabled && !this.validationState ? undefined : this.validationState;\n }\n\n },\n watch: {\n inputValue(val) {\n this.lazyValue = val;\n this.hasColor = val;\n }\n\n },\n methods: {\n genLabel() {\n const label = VInput.options.methods.genLabel.call(this);\n if (!label) return label;\n label.data.on = {\n // Label shouldn't cause the input to focus\n click: prevent\n };\n return label;\n },\n\n genInput(type, attrs) {\n return this.$createElement('input', {\n attrs: Object.assign({\n 'aria-checked': this.isActive.toString(),\n disabled: this.isDisabled,\n id: this.computedId,\n role: type,\n type\n }, attrs),\n domProps: {\n value: this.value,\n checked: this.isActive\n },\n on: {\n blur: this.onBlur,\n change: this.onChange,\n focus: this.onFocus,\n keydown: this.onKeydown,\n click: prevent\n },\n ref: 'input'\n });\n },\n\n onClick(e) {\n this.onChange();\n this.$emit('click', e);\n },\n\n onChange() {\n if (!this.isInteractive) return;\n const value = this.value;\n let input = this.internalValue;\n\n if (this.isMultiple) {\n if (!Array.isArray(input)) {\n input = [];\n }\n\n const length = input.length;\n input = input.filter(item => !this.valueComparator(item, value));\n\n if (input.length === length) {\n input.push(value);\n }\n } else if (this.trueValue !== undefined && this.falseValue !== undefined) {\n input = this.valueComparator(input, this.trueValue) ? this.falseValue : this.trueValue;\n } else if (value) {\n input = this.valueComparator(input, value) ? null : value;\n } else {\n input = !input;\n }\n\n this.validate(true, input);\n this.internalValue = input;\n this.hasColor = input;\n },\n\n onFocus(e) {\n this.isFocused = true;\n this.$emit('focus', e);\n },\n\n onBlur(e) {\n this.isFocused = false;\n this.$emit('blur', e);\n },\n\n /** @abstract */\n onKeydown(e) {}\n\n }\n});\n//# sourceMappingURL=index.js.map","import { keys } from '../../util/helpers';\n\nconst handleGesture = wrapper => {\n const {\n touchstartX,\n touchendX,\n touchstartY,\n touchendY\n } = wrapper;\n const dirRatio = 0.5;\n const minDistance = 16;\n wrapper.offsetX = touchendX - touchstartX;\n wrapper.offsetY = touchendY - touchstartY;\n\n if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n wrapper.left && touchendX < touchstartX - minDistance && wrapper.left(wrapper);\n wrapper.right && touchendX > touchstartX + minDistance && wrapper.right(wrapper);\n }\n\n if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n wrapper.up && touchendY < touchstartY - minDistance && wrapper.up(wrapper);\n wrapper.down && touchendY > touchstartY + minDistance && wrapper.down(wrapper);\n }\n};\n\nfunction touchstart(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchstartX = touch.clientX;\n wrapper.touchstartY = touch.clientY;\n wrapper.start && wrapper.start(Object.assign(event, wrapper));\n}\n\nfunction touchend(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchendX = touch.clientX;\n wrapper.touchendY = touch.clientY;\n wrapper.end && wrapper.end(Object.assign(event, wrapper));\n handleGesture(wrapper);\n}\n\nfunction touchmove(event, wrapper) {\n const touch = event.changedTouches[0];\n wrapper.touchmoveX = touch.clientX;\n wrapper.touchmoveY = touch.clientY;\n wrapper.move && wrapper.move(Object.assign(event, wrapper));\n}\n\nfunction createHandlers(value) {\n const wrapper = {\n touchstartX: 0,\n touchstartY: 0,\n touchendX: 0,\n touchendY: 0,\n touchmoveX: 0,\n touchmoveY: 0,\n offsetX: 0,\n offsetY: 0,\n left: value.left,\n right: value.right,\n up: value.up,\n down: value.down,\n start: value.start,\n move: value.move,\n end: value.end\n };\n return {\n touchstart: e => touchstart(e, wrapper),\n touchend: e => touchend(e, wrapper),\n touchmove: e => touchmove(e, wrapper)\n };\n}\n\nfunction inserted(el, binding, vnode) {\n const value = binding.value;\n const target = value.parent ? el.parentElement : el;\n const options = value.options || {\n passive: true\n }; // Needed to pass unit tests\n\n if (!target) return;\n const handlers = createHandlers(binding.value);\n target._touchHandlers = Object(target._touchHandlers);\n target._touchHandlers[vnode.context._uid] = handlers;\n keys(handlers).forEach(eventName => {\n target.addEventListener(eventName, handlers[eventName], options);\n });\n}\n\nfunction unbind(el, binding, vnode) {\n const target = binding.value.parent ? el.parentElement : el;\n if (!target || !target._touchHandlers) return;\n const handlers = target._touchHandlers[vnode.context._uid];\n keys(handlers).forEach(eventName => {\n target.removeEventListener(eventName, handlers[eventName]);\n });\n delete target._touchHandlers[vnode.context._uid];\n}\n\nexport const Touch = {\n inserted,\n unbind\n};\nexport default Touch;\n//# sourceMappingURL=index.js.map","// Styles\nimport \"../../../src/styles/components/_selection-controls.sass\";\nimport \"../../../src/components/VSwitch/VSwitch.sass\"; // Mixins\n\nimport Selectable from '../../mixins/selectable';\nimport VInput from '../VInput'; // Directives\n\nimport Touch from '../../directives/touch'; // Components\n\nimport { VFabTransition } from '../transitions';\nimport VProgressCircular from '../VProgressCircular/VProgressCircular'; // Helpers\n\nimport { getSlot, keyCodes } from '../../util/helpers';\n/* @vue/component */\n\nexport default Selectable.extend({\n name: 'v-switch',\n directives: {\n Touch\n },\n props: {\n inset: Boolean,\n loading: {\n type: [Boolean, String],\n default: false\n },\n flat: {\n type: Boolean,\n default: false\n }\n },\n computed: {\n classes() {\n return { ...VInput.options.computed.classes.call(this),\n 'v-input--selection-controls v-input--switch': true,\n 'v-input--switch--flat': this.flat,\n 'v-input--switch--inset': this.inset\n };\n },\n\n attrs() {\n return {\n 'aria-checked': String(this.isActive),\n 'aria-disabled': String(this.isDisabled),\n role: 'switch'\n };\n },\n\n // Do not return undefined if disabled,\n // according to spec, should still show\n // a color when disabled and active\n validationState() {\n if (this.hasError && this.shouldValidate) return 'error';\n if (this.hasSuccess) return 'success';\n if (this.hasColor !== null) return this.computedColor;\n return undefined;\n },\n\n switchData() {\n return this.setTextColor(this.loading ? undefined : this.validationState, {\n class: this.themeClasses\n });\n }\n\n },\n methods: {\n genDefaultSlot() {\n return [this.genSwitch(), this.genLabel()];\n },\n\n genSwitch() {\n const {\n title,\n ...switchAttrs\n } = this.attrs$;\n return this.$createElement('div', {\n staticClass: 'v-input--selection-controls__input'\n }, [this.genInput('checkbox', { ...this.attrs,\n ...switchAttrs\n }), this.genRipple(this.setTextColor(this.validationState, {\n directives: [{\n name: 'touch',\n value: {\n left: this.onSwipeLeft,\n right: this.onSwipeRight\n }\n }]\n })), this.$createElement('div', {\n staticClass: 'v-input--switch__track',\n ...this.switchData\n }), this.$createElement('div', {\n staticClass: 'v-input--switch__thumb',\n ...this.switchData\n }, [this.genProgress()])]);\n },\n\n genProgress() {\n return this.$createElement(VFabTransition, {}, [this.loading === false ? null : getSlot(this, 'progress') || this.$createElement(VProgressCircular, {\n props: {\n color: this.loading === true || this.loading === '' ? this.color || 'primary' : this.loading,\n size: 16,\n width: 2,\n indeterminate: true\n }\n })]);\n },\n\n onSwipeLeft() {\n if (this.isActive) this.onChange();\n },\n\n onSwipeRight() {\n if (!this.isActive) this.onChange();\n },\n\n onKeydown(e) {\n if (e.keyCode === keyCodes.left && this.isActive || e.keyCode === keyCodes.right && !this.isActive) this.onChange();\n }\n\n }\n});\n//# sourceMappingURL=VSwitch.js.map","import \"../../../src/components/VTooltip/VTooltip.sass\"; // Mixins\n\nimport Activatable from '../../mixins/activatable';\nimport Colorable from '../../mixins/colorable';\nimport Delayable from '../../mixins/delayable';\nimport Dependent from '../../mixins/dependent';\nimport Menuable from '../../mixins/menuable'; // Helpers\n\nimport { convertToUnit, keyCodes, getSlotType } from '../../util/helpers';\nimport { consoleError } from '../../util/console';\nimport mixins from '../../util/mixins';\n/* @vue/component */\n\nexport default mixins(Colorable, Delayable, Dependent, Menuable).extend({\n name: 'v-tooltip',\n props: {\n closeDelay: {\n type: [Number, String],\n default: 0\n },\n disabled: Boolean,\n openDelay: {\n type: [Number, String],\n default: 0\n },\n openOnHover: {\n type: Boolean,\n default: true\n },\n openOnFocus: {\n type: Boolean,\n default: true\n },\n tag: {\n type: String,\n default: 'span'\n },\n transition: String\n },\n data: () => ({\n calculatedMinWidth: 0,\n closeDependents: false\n }),\n computed: {\n calculatedLeft() {\n const {\n activator,\n content\n } = this.dimensions;\n const unknown = !this.bottom && !this.left && !this.top && !this.right;\n const activatorLeft = this.attach !== false ? activator.offsetLeft : activator.left;\n let left = 0;\n\n if (this.top || this.bottom || unknown) {\n left = activatorLeft + activator.width / 2 - content.width / 2;\n } else if (this.left || this.right) {\n left = activatorLeft + (this.right ? activator.width : -content.width) + (this.right ? 10 : -10);\n }\n\n if (this.nudgeLeft) left -= parseInt(this.nudgeLeft);\n if (this.nudgeRight) left += parseInt(this.nudgeRight);\n return `${this.calcXOverflow(left, this.dimensions.content.width)}px`;\n },\n\n calculatedTop() {\n const {\n activator,\n content\n } = this.dimensions;\n const activatorTop = this.attach !== false ? activator.offsetTop : activator.top;\n let top = 0;\n\n if (this.top || this.bottom) {\n top = activatorTop + (this.bottom ? activator.height : -content.height) + (this.bottom ? 10 : -10);\n } else if (this.left || this.right) {\n top = activatorTop + activator.height / 2 - content.height / 2;\n }\n\n if (this.nudgeTop) top -= parseInt(this.nudgeTop);\n if (this.nudgeBottom) top += parseInt(this.nudgeBottom);\n if (this.attach === false) top += this.pageYOffset;\n return `${this.calcYOverflow(top)}px`;\n },\n\n classes() {\n return {\n 'v-tooltip--top': this.top,\n 'v-tooltip--right': this.right,\n 'v-tooltip--bottom': this.bottom,\n 'v-tooltip--left': this.left,\n 'v-tooltip--attached': this.attach === '' || this.attach === true || this.attach === 'attach'\n };\n },\n\n computedTransition() {\n if (this.transition) return this.transition;\n return this.isActive ? 'scale-transition' : 'fade-transition';\n },\n\n offsetY() {\n return this.top || this.bottom;\n },\n\n offsetX() {\n return this.left || this.right;\n },\n\n styles() {\n return {\n left: this.calculatedLeft,\n maxWidth: convertToUnit(this.maxWidth),\n minWidth: convertToUnit(this.minWidth),\n top: this.calculatedTop,\n zIndex: this.zIndex || this.activeZIndex\n };\n }\n\n },\n\n beforeMount() {\n this.$nextTick(() => {\n this.value && this.callActivate();\n });\n },\n\n mounted() {\n if (getSlotType(this, 'activator', true) === 'v-slot') {\n consoleError(`v-tooltip's activator slot must be bound, try '<template #activator=\"data\"><v-btn v-on=\"data.on>'`, this);\n }\n },\n\n methods: {\n activate() {\n // Update coordinates and dimensions of menu\n // and its activator\n this.updateDimensions(); // Start the transition\n\n requestAnimationFrame(this.startTransition);\n },\n\n deactivate() {\n this.runDelay('close');\n },\n\n genActivatorListeners() {\n const listeners = Activatable.options.methods.genActivatorListeners.call(this);\n\n if (this.openOnFocus) {\n listeners.focus = e => {\n this.getActivator(e);\n this.runDelay('open');\n };\n\n listeners.blur = e => {\n this.getActivator(e);\n this.runDelay('close');\n };\n }\n\n listeners.keydown = e => {\n if (e.keyCode === keyCodes.esc) {\n this.getActivator(e);\n this.runDelay('close');\n }\n };\n\n return listeners;\n },\n\n genActivatorAttributes() {\n return {\n 'aria-haspopup': true,\n 'aria-expanded': String(this.isActive)\n };\n },\n\n genTransition() {\n const content = this.genContent();\n if (!this.computedTransition) return content;\n return this.$createElement('transition', {\n props: {\n name: this.computedTransition\n }\n }, [content]);\n },\n\n genContent() {\n return this.$createElement('div', this.setBackgroundColor(this.color, {\n staticClass: 'v-tooltip__content',\n class: {\n [this.contentClass]: true,\n menuable__content__active: this.isActive,\n 'v-tooltip__content--fixed': this.activatorFixed\n },\n style: this.styles,\n attrs: this.getScopeIdAttrs(),\n directives: [{\n name: 'show',\n value: this.isContentActive\n }],\n ref: 'content'\n }), this.getContentSlot());\n }\n\n },\n\n render(h) {\n return h(this.tag, {\n staticClass: 'v-tooltip',\n class: this.classes\n }, [this.showLazyContent(() => [this.genTransition()]), this.genActivator()]);\n }\n\n});\n//# sourceMappingURL=VTooltip.js.map","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VChip } from 'vuetify/lib/components/VChip';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAvatar } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c;return _c(VContainer,[_c(VRow,[_c(VCol,{attrs:{\"cols\":\"12\"}},[_c(VCard,{attrs:{\"dark\":\"\"}},[_c(VListItem,[_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"headline\"},[_vm._v(\"Clients\")])],1),_c(VBtn,{attrs:{\"color\":\"success\"},on:{\"click\":_vm.startAddClient}},[_vm._v(\" Ajout nouveau client \"),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-account-multiple-plus-outline\")])],1)],1),_c(VRow,_vm._l((_vm.clients),function(client,i){return _c(VCol,{key:i,attrs:{\"sm12\":\"\",\"lg6\":\"\"}},[_c(VCard,{staticClass:\"mx-auto\",attrs:{\"color\":client.enable ? '#1F7087' : 'warning',\"raised\":\"\",\"shaped\":\"\"}},[_c(VListItem,[_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"headline\"},[_vm._v(_vm._s(client.name))]),_c(VListItemSubtitle,[_vm._v(_vm._s(client.email))]),_c(VListItemSubtitle,[_vm._v(\"Créé: \"+_vm._s(_vm._f(\"formatDate\")(client.created)))]),_c(VListItemSubtitle,[_vm._v(\"Modifié: \"+_vm._s(_vm._f(\"formatDate\")(client.updated)))])],1),_c(VListItemAvatar,{attrs:{\"tile\":\"\",\"size\":\"150\"}},[_c(VImg,{attrs:{\"src\":`${_vm.apiBaseUrl}/client/${client.id}/config?qrcode=true`}})],1)],1),_c(VCardText,{staticClass:\"text--primary\"},_vm._l((client.address),function(ip,i){return _c(VChip,{key:i,attrs:{\"color\":\"indigo\",\"text-color\":\"white\"}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-ip-network\")]),_vm._v(\" \"+_vm._s(ip)+\" \")],1)}),1),_c(VCardActions,[_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"text\":\"\",\"href\":`${_vm.apiBaseUrl}/client/${client.id}/config?qrcode=false`}},on),[_c('span',{staticClass:\"d-none d-lg-flex\"},[_vm._v(\"Télécharger\")]),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-cloud-download-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Télécharger\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.startUpdateClient(client)}}},on),[_c('span',{staticClass:\"d-none d-lg-flex\"},[_vm._v(\"Editer\")]),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-square-edit-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Editer\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.sendEmailClient(client.id)}}},on),[_c('span',{staticClass:\"d-none d-lg-flex\"},[_vm._v(\"Envoyer message\")]),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-email-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Envoyer message\")])]),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.deleteClient(client)}}},on),[_c('span',{staticClass:\"d-none d-lg-flex\"},[_vm._v(\"Supprimer\")]),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-trash-can-outline\")])],1)]}}],null,true)},[_c('span',[_vm._v(\"Supprimer\")])]),_c(VSpacer),_c(VTooltip,{attrs:{\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VSwitch,_vm._g({attrs:{\"dark\":\"\",\"color\":\"success\"},on:{\"change\":function($event){return _vm.updateClient(client)}},model:{value:(client.enable),callback:function ($$v) {_vm.$set(client, \"enable\", $$v)},expression:\"client.enable\"}},on))]}}],null,true)},[_c('span',[_vm._v(\" \"+_vm._s(client.enable ? 'Désactiver' : 'Activer')+\" ce client\")])])],1)],1)],1)}),1)],1)],1)],1),(_vm.client)?_c(VDialog,{attrs:{\"max-width\":\"550\"},model:{value:(_vm.dialogAddClient),callback:function ($$v) {_vm.dialogAddClient=$$v},expression:\"dialogAddClient\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"headline\"},[_vm._v(\"Ajout nouveau client\")]),_c(VCardText,[_c(VRow,[_c(VCol,{attrs:{\"cols\":\"12\"}},[_c(VForm,{ref:\"form\",model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VTextField,{attrs:{\"label\":\"Nom convivial\",\"rules\":[ v => !!v || 'Nom client est requis', ],\"required\":\"\"},model:{value:(_vm.client.name),callback:function ($$v) {_vm.$set(_vm.client, \"name\", $$v)},expression:\"client.name\"}}),_c(VTextField,{attrs:{\"label\":\"Client messagerie\",\"rules\":[ v => (/.+@.+\\..+/.test(v) || v === '') || 'Adresse non valide',]},model:{value:(_vm.client.email),callback:function ($$v) {_vm.$set(_vm.client, \"email\", $$v)},expression:\"client.email\"}}),_c(VSelect,{attrs:{\"items\":_vm.server.address,\"label\":\"Adresse IP client choisie parmi les réseaux suivants\",\"rules\":[ v => !!v || 'Réseau requis', ],\"multiple\":\"\",\"chips\":\"\",\"persistent-hint\":\"\",\"required\":\"\"},model:{value:(_vm.client.address),callback:function ($$v) {_vm.$set(_vm.client, \"address\", $$v)},expression:\"client.address\"}}),_c(VCombobox,{attrs:{\"chips\":\"\",\"hint\":\"Saisir le CIDR IPv4 ou IPv6 et appuyez sur touche Entrée\",\"label\":\"IP autorisés\",\"multiple\":\"\",\"dark\":\"\"},scopedSlots:_vm._u([{key:\"selection\",fn:function({ attrs, item, select, selected }){return [_c(VChip,_vm._b({attrs:{\"input-value\":selected,\"close\":\"\"},on:{\"click\":select,\"click:close\":function($event){_vm.client.allowedIPs.splice(_vm.client.allowedIPs.indexOf(item), 1)}}},'v-chip',attrs,false),[_c('strong',[_vm._v(_vm._s(item))]),_vm._v(\"  \")])]}}],null,false,1095272819),model:{value:(_vm.client.allowedIPs),callback:function ($$v) {_vm.$set(_vm.client, \"allowedIPs\", $$v)},expression:\"client.allowedIPs\"}}),_c(VSwitch,{attrs:{\"color\":\"red\",\"inset\":\"\",\"label\":_vm.client.enable ? 'Activer client après création': 'Désactiver client après création'},model:{value:(_vm.client.enable),callback:function ($$v) {_vm.$set(_vm.client, \"enable\", $$v)},expression:\"client.enable\"}}),_c(VSwitch,{attrs:{\"color\":\"red\",\"inset\":\"\",\"label\":'Ignorer le keepalive persistant global: ' + (_vm.client.ignorePersistentKeepalive ? 'Oui': 'NON')},model:{value:(_vm.client.ignorePersistentKeepalive),callback:function ($$v) {_vm.$set(_vm.client, \"ignorePersistentKeepalive\", $$v)},expression:\"client.ignorePersistentKeepalive\"}})],1)],1)],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"disabled\":!_vm.valid,\"color\":\"success\"},on:{\"click\":function($event){return _vm.addClient(_vm.client)}}},[_vm._v(\" Valider \"),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-check-outline\")])],1),_c(VBtn,{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialogAddClient = false}}},[_vm._v(\" Abandon \"),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-close-circle-outline\")])],1)],1)],1)],1):_vm._e(),(_vm.client)?_c(VDialog,{attrs:{\"max-width\":\"550\"},model:{value:(_vm.dialogEditClient),callback:function ($$v) {_vm.dialogEditClient=$$v},expression:\"dialogEditClient\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"headline\"},[_vm._v(\"Edition client\")]),_c(VCardText,[_c(VRow,[_c(VCol,{attrs:{\"cols\":\"12\"}},[_c(VForm,{ref:\"form\",model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VTextField,{attrs:{\"label\":\"Nom convivial\",\"rules\":[ v => !!v || 'Nom client est requis',],\"required\":\"\"},model:{value:(_vm.client.name),callback:function ($$v) {_vm.$set(_vm.client, \"name\", $$v)},expression:\"client.name\"}}),_c(VTextField,{attrs:{\"label\":\"Messagerie\",\"rules\":[ v => (/.+@.+\\..+/.test(v) || v === '') || 'Adresse non valide',],\"required\":\"\"},model:{value:(_vm.client.email),callback:function ($$v) {_vm.$set(_vm.client, \"email\", $$v)},expression:\"client.email\"}}),_c(VCombobox,{attrs:{\"chips\":\"\",\"hint\":\"Saisir le CIDR IPv4 ou IPv6 et appuyez sur touche Entrée\",\"label\":\"Adresses\",\"multiple\":\"\",\"dark\":\"\"},scopedSlots:_vm._u([{key:\"selection\",fn:function({ attrs, item, select, selected }){return [_c(VChip,_vm._b({attrs:{\"input-value\":selected,\"close\":\"\"},on:{\"click\":select,\"click:close\":function($event){_vm.client.address.splice(_vm.client.address.indexOf(item), 1)}}},'v-chip',attrs,false),[_c('strong',[_vm._v(_vm._s(item))]),_vm._v(\"  \")])]}}],null,false,3626235027),model:{value:(_vm.client.address),callback:function ($$v) {_vm.$set(_vm.client, \"address\", $$v)},expression:\"client.address\"}}),_c(VCombobox,{attrs:{\"chips\":\"\",\"hint\":\"Saisir le CIDR IPv4 ou IPv6 et appuyez sur touche Entrée\",\"label\":\"IP autorisés\",\"multiple\":\"\",\"dark\":\"\"},scopedSlots:_vm._u([{key:\"selection\",fn:function({ attrs, item, select, selected }){return [_c(VChip,_vm._b({attrs:{\"input-value\":selected,\"close\":\"\"},on:{\"click\":select,\"click:close\":function($event){_vm.client.allowedIPs.splice(_vm.client.allowedIPs.indexOf(item), 1)}}},'v-chip',attrs,false),[_c('strong',[_vm._v(_vm._s(item))]),_vm._v(\"  \")])]}}],null,false,1095272819),model:{value:(_vm.client.allowedIPs),callback:function ($$v) {_vm.$set(_vm.client, \"allowedIPs\", $$v)},expression:\"client.allowedIPs\"}}),_c(VSwitch,{attrs:{\"color\":\"red\",\"inset\":\"\",\"label\":'Ignorer le keepalive persistant global: ' + (_vm.client.ignorePersistentKeepalive ? 'Oui': 'NON')},model:{value:(_vm.client.ignorePersistentKeepalive),callback:function ($$v) {_vm.$set(_vm.client, \"ignorePersistentKeepalive\", $$v)},expression:\"client.ignorePersistentKeepalive\"}})],1)],1)],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"disabled\":!_vm.valid,\"color\":\"success\"},on:{\"click\":function($event){return _vm.updateClient(_vm.client)}}},[_vm._v(\" Valider \"),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-check-outline\")])],1),_c(VBtn,{attrs:{\"color\":\"primary\"},on:{\"click\":function($event){_vm.dialogEditClient = false}}},[_vm._v(\" Abandon \"),_c(VIcon,{attrs:{\"right\":\"\",\"dark\":\"\"}},[_vm._v(\"mdi-close-circle-outline\")])],1)],1)],1)],1):_vm._e(),_c('Notification',{attrs:{\"notification\":_vm.notification}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <v-container>\n <v-row>\n <v-col cols=\"12\">\n <v-card dark>\n <v-list-item>\n <v-list-item-content>\n <v-list-item-title class=\"headline\">Clients</v-list-item-title>\n </v-list-item-content>\n <v-btn\n color=\"success\"\n @click=\"startAddClient\"\n >\n Ajout nouveau client\n <v-icon right dark>mdi-account-multiple-plus-outline</v-icon>\n </v-btn>\n </v-list-item>\n <v-row>\n <v-col\n v-for=\"(client, i) in clients\"\n :key=\"i\"\n sm12 lg6\n >\n <v-card\n :color=\"client.enable ? '#1F7087' : 'warning'\"\n class=\"mx-auto\"\n raised\n shaped\n >\n <v-list-item>\n <v-list-item-content>\n <v-list-item-title class=\"headline\">{{ client.name }}</v-list-item-title>\n <v-list-item-subtitle>{{ client.email }}</v-list-item-subtitle>\n <v-list-item-subtitle>Créé: {{ client.created | formatDate }}</v-list-item-subtitle>\n <v-list-item-subtitle>Modifié: {{ client.updated | formatDate }}</v-list-item-subtitle>\n </v-list-item-content>\n\n <v-list-item-avatar\n tile\n size=\"150\"\n >\n <v-img :src=\"`${apiBaseUrl}/client/${client.id}/config?qrcode=true`\"/>\n </v-list-item-avatar>\n </v-list-item>\n\n <v-card-text class=\"text--primary\">\n <v-chip\n v-for=\"(ip, i) in client.address\"\n :key=\"i\"\n color=\"indigo\"\n text-color=\"white\"\n >\n <v-icon left>mdi-ip-network</v-icon>\n {{ ip }}\n </v-chip>\n </v-card-text>\n <v-card-actions>\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on }\">\n <v-btn\n text\n :href=\"`${apiBaseUrl}/client/${client.id}/config?qrcode=false`\"\n v-on=\"on\"\n >\n <span class=\"d-none d-lg-flex\">Télécharger</span>\n <v-icon right dark>mdi-cloud-download-outline</v-icon>\n </v-btn>\n </template>\n <span>Télécharger</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on }\">\n <v-btn\n text\n @click.stop=\"startUpdateClient(client)\"\n v-on=\"on\"\n >\n <span class=\"d-none d-lg-flex\">Editer</span>\n <v-icon right dark>mdi-square-edit-outline</v-icon>\n </v-btn>\n </template>\n <span>Editer</span>\n </v-tooltip>\n\n <v-tooltip bottom>\n <template v-slot:activator=\"{ on }\">\n <v-btn\n text\n @click=\"sendEmailClient(client.id)\"\n v-on=\"on\"\n >\n <span class=\"d-none d-lg-flex\">Envoyer message</span>\n <v-icon right dark>mdi-email-outline</v-icon>\n </v-btn>\n </template>\n <span>Envoyer message</span>\n </v-tooltip>\n \n <v-tooltip bottom>\n <template v-slot:activator=\"{ on }\">\n <v-btn\n text\n @click=\"deleteClient(client)\"\n v-on=\"on\"\n >\n <span class=\"d-none d-lg-flex\">Supprimer</span>\n <v-icon right dark>mdi-trash-can-outline</v-icon>\n </v-btn>\n </template>\n <span>Supprimer</span>\n </v-tooltip>\n\n <v-spacer/>\n <v-tooltip right>\n <template v-slot:activator=\"{ on }\">\n <v-switch\n dark\n v-on=\"on\"\n color=\"success\"\n v-model=\"client.enable\"\n v-on:change=\"updateClient(client)\"\n />\n </template>\n <span> {{client.enable ? 'Désactiver' : 'Activer'}} ce client</span>\n </v-tooltip>\n\n </v-card-actions>\n </v-card>\n </v-col>\n </v-row>\n </v-card>\n </v-col>\n </v-row>\n <v-dialog\n v-if=\"client\"\n v-model=\"dialogAddClient\"\n max-width=\"550\"\n >\n <v-card>\n <v-card-title class=\"headline\">Ajout nouveau client</v-card-title>\n <v-card-text>\n <v-row>\n <v-col\n cols=\"12\"\n >\n <v-form\n ref=\"form\"\n v-model=\"valid\"\n >\n <v-text-field\n v-model=\"client.name\"\n label=\"Nom convivial\"\n :rules=\"[ v => !!v || 'Nom client est requis', ]\"\n required\n />\n <v-text-field\n v-model=\"client.email\"\n label=\"Client messagerie\"\n :rules=\"[ v => (/.+@.+\\..+/.test(v) || v === '') || 'Adresse non valide',]\"\n />\n <v-select\n v-model=\"client.address\"\n :items=\"server.address\"\n label=\"Adresse IP client choisie parmi les réseaux suivants\"\n :rules=\"[ v => !!v || 'Réseau requis', ]\"\n multiple\n chips\n persistent-hint\n required\n />\n <v-combobox\n v-model=\"client.allowedIPs\"\n chips\n hint=\"Saisir le CIDR IPv4 ou IPv6 et appuyez sur touche Entrée\"\n label=\"IP autorisés\"\n multiple\n dark\n >\n <template v-slot:selection=\"{ attrs, item, select, selected }\">\n <v-chip\n v-bind=\"attrs\"\n :input-value=\"selected\"\n close\n @click=\"select\"\n @click:close=\"client.allowedIPs.splice(client.allowedIPs.indexOf(item), 1)\"\n >\n <strong>{{ item }}</strong>&nbsp;\n </v-chip>\n </template>\n </v-combobox>\n\n <v-switch\n v-model=\"client.enable\"\n color=\"red\"\n inset\n :label=\"client.enable ? 'Activer client après création': 'Désactiver client après création'\"\n />\n <v-switch\n v-model=\"client.ignorePersistentKeepalive\"\n color=\"red\"\n inset\n :label=\"'Ignorer le keepalive persistant global: ' + (client.ignorePersistentKeepalive ? 'Oui': 'NON')\"\n />\n </v-form>\n </v-col>\n </v-row>\n </v-card-text>\n <v-card-actions>\n <v-spacer/>\n <v-btn\n :disabled=\"!valid\"\n color=\"success\"\n @click=\"addClient(client)\"\n >\n Valider\n <v-icon right dark>mdi-check-outline</v-icon>\n </v-btn>\n <v-btn\n color=\"primary\"\n @click=\"dialogAddClient = false\"\n >\n Abandon\n <v-icon right dark>mdi-close-circle-outline</v-icon>\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n <v-dialog\n v-if=\"client\"\n v-model=\"dialogEditClient\"\n max-width=\"550\"\n >\n <v-card>\n <v-card-title class=\"headline\">Edition client</v-card-title>\n <v-card-text>\n <v-row>\n <v-col\n cols=\"12\"\n >\n <v-form\n ref=\"form\"\n v-model=\"valid\"\n >\n <v-text-field\n v-model=\"client.name\"\n label=\"Nom convivial\"\n :rules=\"[ v => !!v || 'Nom client est requis',]\"\n required\n />\n <v-text-field\n v-model=\"client.email\"\n label=\"Messagerie\"\n :rules=\"[ v => (/.+@.+\\..+/.test(v) || v === '') || 'Adresse non valide',]\"\n required\n />\n <v-combobox\n v-model=\"client.address\"\n chips\n hint=\"Saisir le CIDR IPv4 ou IPv6 et appuyez sur touche Entrée\"\n label=\"Adresses\"\n multiple\n dark\n >\n <template v-slot:selection=\"{ attrs, item, select, selected }\">\n <v-chip\n v-bind=\"attrs\"\n :input-value=\"selected\"\n close\n @click=\"select\"\n @click:close=\"client.address.splice(client.address.indexOf(item), 1)\"\n >\n <strong>{{ item }}</strong>&nbsp;\n </v-chip>\n </template>\n </v-combobox>\n <v-combobox\n v-model=\"client.allowedIPs\"\n chips\n hint=\"Saisir le CIDR IPv4 ou IPv6 et appuyez sur touche Entrée\"\n label=\"IP autorisés\"\n multiple\n dark\n >\n <template v-slot:selection=\"{ attrs, item, select, selected }\">\n <v-chip\n v-bind=\"attrs\"\n :input-value=\"selected\"\n close\n @click=\"select\"\n @click:close=\"client.allowedIPs.splice(client.allowedIPs.indexOf(item), 1)\"\n >\n <strong>{{ item }}</strong>&nbsp;\n </v-chip>\n </template>\n </v-combobox>\n <v-switch\n v-model=\"client.ignorePersistentKeepalive\"\n color=\"red\"\n inset\n :label=\"'Ignorer le keepalive persistant global: ' + (client.ignorePersistentKeepalive ? 'Oui': 'NON')\"\n />\n </v-form>\n </v-col>\n </v-row>\n </v-card-text>\n <v-card-actions>\n <v-spacer/>\n <v-btn\n :disabled=\"!valid\"\n color=\"success\"\n @click=\"updateClient(client)\"\n >\n Valider\n <v-icon right dark>mdi-check-outline</v-icon>\n </v-btn>\n <v-btn\n color=\"primary\"\n @click=\"dialogEditClient = false\"\n >\n Abandon\n <v-icon right dark>mdi-close-circle-outline</v-icon>\n </v-btn>\n </v-card-actions>\n </v-card>\n </v-dialog>\n <Notification v-bind:notification=\"notification\"/>\n </v-container>\n</template>\n<script>\n import {ApiService, API_BASE_URL} from '../services/ApiService'\n import Notification from '../components/Notification'\n\n export default {\n name: 'Clients',\n\n components: {\n Notification\n },\n\n data: () => ({\n api: null,\n apiBaseUrl: API_BASE_URL,\n clients: [],\n notification: {\n show: false,\n color: '',\n text: '',\n },\n dialogAddClient: false,\n dialogEditClient: false,\n client: null,\n server: null,\n valid: false,\n }),\n\n mounted () {\n this.api = new ApiService();\n this.getClients();\n this.getServer()\n },\n\n methods: {\n getClients() {\n this.api.get('/client').then((res) => {\n this.clients = res\n }).catch((e) => {\n this.notify('error', e.response.status + ' ' + e.response.statusText);\n });\n },\n\n getServer() {\n this.api.get('/server').then((res) => {\n this.server = res;\n }).catch((e) => {\n this.notify('error', e.response.status + ' ' + e.response.statusText);\n });\n },\n\n startAddClient() {\n this.dialogAddClient = true;\n this.client = {\n name: \"\",\n email: \"\",\n enable: true,\n allowedIPs: [\"0.0.0.0/0\", \"::/0\"],\n address: this.server.address,\n }\n },\n addClient(client) {\n if (client.allowedIPs.length < 1) {\n this.notify('error', 'Veuillez fournir au moins une adresse CIDR valide pour les adresses IP autorisées du client.');\n return;\n }\n for (let i = 0; i < client.allowedIPs.length; i++){\n if (this.$isCidr(client.allowedIPs[i]) === 0) {\n this.notify('error', 'Un CIDR invalide a été détecté, veuillez corriger avant de soumettre');\n return\n }\n }\n this.dialogAddClient = false;\n\n this.api.post('/client', client).then((res) => {\n this.notify('success', `Client ${res.name} ajouté avec succès`);\n this.getClients()\n }).catch((e) => {\n this.notify('error', e.response.status + ' ' + e.response.statusText);\n });\n },\n\n deleteClient(client) {\n if(confirm(`Voulez-vous vraiment supprimer ${client.name} ?`)){\n this.api.delete(`/client/${client.id}`).then((res) => {\n this.notify('success', \"Client supprimé avec succès\");\n this.getClients()\n }).catch((e) => {\n this.notify('error', e.response.status + ' ' + e.response.statusText);\n });\n }\n },\n\n sendEmailClient(id) {\n this.api.get(`/client/${id}/email`).then((res) => {\n this.notify('success', \"Courriel envoyé avec succès\");\n this.getClients()\n }).catch((e) => {\n this.notify('error', e.response.status + ' ' + e.response.statusText);\n });\n },\n\n startUpdateClient(client) {\n this.client = client;\n this.dialogEditClient = true;\n },\n updateClient(client) {\n // check allowed IPs\n if (client.allowedIPs.length < 1) {\n this.notify('error', 'Veuillez fournir au moins une adresse CIDR valide pour les adresses IP autorisées du client');\n return;\n }\n for (let i = 0; i < client.allowedIPs.length; i++){\n if (this.$isCidr(client.allowedIPs[i]) === 0) {\n this.notify('error', 'Un CIDR invalide a été détecté, veuillez corriger avant de soumettre');\n return\n }\n }\n // check address\n if (client.address.length < 1) {\n this.notify('error', 'Veuillez fournir au moins une adresse CIDR valide pour le client');\n return;\n }\n for (let i = 0; i < client.address.length; i++){\n if (this.$isCidr(client.address[i]) === 0) {\n this.notify('error', 'Un CIDR invalide a été détecté, veuillez corriger avant de soumettre');\n return\n }\n }\n // all good, submit\n this.dialogEditClient = false;\n\n this.api.patch(`/client/${client.id}`, client).then((res) => {\n this.notify('success', `Client ${res.name} mise à jour réussie`);\n this.getClients()\n }).catch((e) => {\n this.notify('error', e.response.status + ' ' + e.response.statusText);\n });\n },\n\n notify(color, msg) {\n this.notification.show = true;\n this.notification.color = color;\n this.notification.text = msg;\n }\n }\n };\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Clients.vue?vue&type=template&id=61344a63\"\nimport script from \"./Clients.vue?vue&type=script&lang=js\"\nexport * from \"./Clients.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <v-content>\n <Clients/>\n </v-content>\n</template>\n\n<script>\n import Clients from '../components/Clients'\n\n export default {\n name: 'clients',\n components: {\n Clients\n }\n }\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Clients.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Clients.vue?vue&type=template&id=80968dbe\"\nimport script from \"./Clients.vue?vue&type=script&lang=js\"\nexport * from \"./Clients.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import VCard from './VCard';\nimport { createSimpleFunctional } from '../../util/helpers';\nconst VCardActions = createSimpleFunctional('v-card__actions');\nconst VCardSubtitle = createSimpleFunctional('v-card__subtitle');\nconst VCardText = createSimpleFunctional('v-card__text');\nconst VCardTitle = createSimpleFunctional('v-card__title');\nexport { VCard, VCardActions, VCardSubtitle, VCardText, VCardTitle };\nexport default {\n $_vuetify_subcomponents: {\n VCard,\n VCardActions,\n VCardSubtitle,\n VCardText,\n VCardTitle\n }\n};\n//# sourceMappingURL=index.js.map"],"sourceRoot":""}