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

1 line
108 KiB
Plaintext
Executable File
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?24c6","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?5d40","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","$slots","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","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","progress","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","deleteClient","sendEmailClient","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.64ae6101.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';\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 }, this.$slots.default);\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';\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 }, this.$slots.default);\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 { 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 : this.$slots.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(\"Created: \"+_vm._s(_vm._f(\"formatDate\")(client.created)))]),_c(VListItemSubtitle,[_vm._v(\"Updated: \"+_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.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(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(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>Created: {{ client.created | formatDate }}</v-list-item-subtitle>\n <v-list-item-subtitle>Updated: {{ 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=\"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-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 <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=e7778e14\"\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":""}