{"version":3,"sources":["webpack:///./src/assets/project-10.jpg","webpack:///./node_modules/vuetify-loader/lib/runtime/installDirectives.js","webpack:///./src/assets/project-3.jpg","webpack:///./src/assets/project-1.jpg","webpack:///./node_modules/vuetify/lib/components/VItemGroup/VItemGroup.js","webpack:///./src/views/sections/Projects.vue?69e3","webpack:///src/views/sections/Projects.vue","webpack:///./src/views/sections/Projects.vue?d781","webpack:///./src/views/sections/Projects.vue","webpack:///./src/assets/project-5.jpg","webpack:///./node_modules/vuetify/lib/components/VSlideGroup/VSlideGroup.js","webpack:///./src/assets/project-4.jpg","webpack:///./node_modules/vuetify/lib/components/VSlideGroup/VSlideItem.js","webpack:///./src/assets/project-9.jpg","webpack:///./node_modules/vuetify/lib/directives/touch/index.js","webpack:///./src/assets/project-7.jpg","webpack:///./node_modules/vuetify/lib/components/VItemGroup/VItem.js","webpack:///./node_modules/vuetify/lib/directives/resize/index.js","webpack:///./src/assets/project-6.jpg","webpack:///./src/assets/project-2.jpg","webpack:///./src/assets sync ^\\.\\/project\\-.*\\.jpg$","webpack:///./src/assets/project-8.jpg"],"names":["module","exports","component","directives","options","extendOptions","i","BaseItemGroup","extend","name","props","activeClass","type","String","default","mandatory","Boolean","max","Number","multiple","internalLazyValue","undefined","this","value","items","computed","themeClasses","selectedItem","indexOf","selectedItems","filter","item","index","toggleMethod","getValue","internalValue","Array","isArray","v","includes","watch","methods","class","classes","updateInternalValue","push","$on","onClick","selectedValues","length","updateMandatory","updateItem","_isDestroyed","splice","valueIndex","isActive","$nextTick","forEach","updateMultiple","updateSingle","last","slice","reverse","find","disabled","defaultValue","findIndex","val","isSame","h","genData","$slots","itemGroup","render","_vm","_h","$createElement","_c","_self","_g","_b","rawName","expression","modifiers","key","reset","$attrs","$listeners","_l","card","scopedSlots","_u","fn","ref","active","toggle","staticClass","attrs","height","width","on","staticRenderFns","components","ProjectCard","Function","data","filtered","cards","onObserve","setTimeout","VSlideGroup","VSlideItem","Intersect","BaseSlideGroup","Resize","Touch","centerActive","nextIcon","mobileBreakPoint","validator","isNaN","parseInt","prevIcon","showArrows","internalItemsLength","isOverflowing","resizeTimeout","startX","scrollOffset","widths","content","wrapper","genTransition","call","hasAffixes","isMobile","Math","abs","$vuetify","breakpoint","$refs","style","transform","$children","setWidths","slot","$scopedSlots","next","__cachedNext","hasNext","click","onAffixClick","onResize","location","icon","rtl","upperLocation","toUpperCase","hasAffix","prev","__cachedPrev","hasPrev","genIcon","start","e","overflowCheck","onTouchStart","move","onTouchMove","end","onTouchEnd","genContent","direction","currentScrollOffset","sign","newAbosluteOffset","min","$emit","scrollTo","touchstartX","setProperty","touchmoveX","maxScrollOffset","clientWidth","stopPropagation","selectedIndex","calculateCenteredOffset","$el","calculateUpdatedOffset","selectedElement","offsetLeft","totalWidth","itemOffset","additionalOffset","offsetCentered","calculateNewOffset","window","requestAnimationFrame","scrollIntoView","genPrev","genWrapper","genNext","slideGroup","handleGesture","touchendX","touchstartY","touchendY","dirRatio","minDistance","offsetX","offsetY","left","right","up","down","touchstart","event","touch","changedTouches","clientX","clientY","Object","assign","touchend","touchmove","touchmoveY","createHandlers","inserted","el","binding","vnode","target","parent","parentElement","passive","handlers","_touchHandlers","context","_uid","eventName","addEventListener","unbind","removeEventListener","BaseItem","required","element","tag","callback","_onResize","quiet","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","Error","code","keys","resolve"],"mappings":"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","file":"js/chunk-f5277204.2ef6acf2.js","sourcesContent":["module.exports = __webpack_public_path__ + \"img/project-10.d732c8fd.jpg\";","// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nmodule.exports = function installDirectives (component, directives) {\n var options = typeof component.exports === 'function'\n ? component.exports.extendOptions\n : component.options\n\n if (typeof component.exports === 'function') {\n options.directives = component.exports.options.directives\n }\n\n options.directives = options.directives || {}\n\n for (var i in directives) {\n options.directives[i] = options.directives[i] || directives[i]\n }\n}\n","module.exports = __webpack_public_path__ + \"img/project-3.125e7ae9.jpg\";","module.exports = __webpack_public_path__ + \"img/project-1.e80db17d.jpg\";","// Styles\nimport \"../../../src/components/VItemGroup/VItemGroup.sass\";\nimport Proxyable from '../../mixins/proxyable';\nimport Themeable from '../../mixins/themeable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { consoleWarn } from '../../util/console';\nexport const BaseItemGroup = mixins(Proxyable, Themeable).extend({\n name: 'base-item-group',\n props: {\n activeClass: {\n type: String,\n default: 'v-item--active'\n },\n mandatory: Boolean,\n max: {\n type: [Number, String],\n default: null\n },\n multiple: Boolean\n },\n\n data() {\n return {\n // As long as a value is defined, show it\n // Otherwise, check if multiple\n // to determine which default to provide\n internalLazyValue: this.value !== undefined ? this.value : this.multiple ? [] : undefined,\n items: []\n };\n },\n\n computed: {\n classes() {\n return {\n 'v-item-group': true,\n ...this.themeClasses\n };\n },\n\n selectedIndex() {\n return this.selectedItem && this.items.indexOf(this.selectedItem) || -1;\n },\n\n selectedItem() {\n if (this.multiple) return undefined;\n return this.selectedItems[0];\n },\n\n selectedItems() {\n return this.items.filter((item, index) => {\n return this.toggleMethod(this.getValue(item, index));\n });\n },\n\n selectedValues() {\n if (this.internalValue == null) return [];\n return Array.isArray(this.internalValue) ? this.internalValue : [this.internalValue];\n },\n\n toggleMethod() {\n if (!this.multiple) {\n return v => this.internalValue === v;\n }\n\n const internalValue = this.internalValue;\n\n if (Array.isArray(internalValue)) {\n return v => internalValue.includes(v);\n }\n\n return () => false;\n }\n\n },\n watch: {\n internalValue: 'updateItemsState',\n items: 'updateItemsState'\n },\n\n created() {\n if (this.multiple && !Array.isArray(this.internalValue)) {\n consoleWarn('Model must be bound to an array if the multiple property is true.', this);\n }\n },\n\n methods: {\n genData() {\n return {\n class: this.classes\n };\n },\n\n getValue(item, i) {\n return item.value == null || item.value === '' ? i : item.value;\n },\n\n onClick(item) {\n this.updateInternalValue(this.getValue(item, this.items.indexOf(item)));\n },\n\n register(item) {\n const index = this.items.push(item) - 1;\n item.$on('change', () => this.onClick(item)); // If no value provided and mandatory,\n // assign first registered item\n\n if (this.mandatory && !this.selectedValues.length) {\n this.updateMandatory();\n }\n\n this.updateItem(item, index);\n },\n\n unregister(item) {\n if (this._isDestroyed) return;\n const index = this.items.indexOf(item);\n const value = this.getValue(item, index);\n this.items.splice(index, 1);\n const valueIndex = this.selectedValues.indexOf(value); // Items is not selected, do nothing\n\n if (valueIndex < 0) return; // If not mandatory, use regular update process\n\n if (!this.mandatory) {\n return this.updateInternalValue(value);\n } // Remove the value\n\n\n if (this.multiple && Array.isArray(this.internalValue)) {\n this.internalValue = this.internalValue.filter(v => v !== value);\n } else {\n this.internalValue = undefined;\n } // If mandatory and we have no selection\n // add the last item as value\n\n /* istanbul ignore else */\n\n\n if (!this.selectedItems.length) {\n this.updateMandatory(true);\n }\n },\n\n updateItem(item, index) {\n const value = this.getValue(item, index);\n item.isActive = this.toggleMethod(value);\n },\n\n // https://github.com/vuetifyjs/vuetify/issues/5352\n updateItemsState() {\n this.$nextTick(() => {\n if (this.mandatory && !this.selectedItems.length) {\n return this.updateMandatory();\n } // TODO: Make this smarter so it\n // doesn't have to iterate every\n // child in an update\n\n\n this.items.forEach(this.updateItem);\n });\n },\n\n updateInternalValue(value) {\n this.multiple ? this.updateMultiple(value) : this.updateSingle(value);\n },\n\n updateMandatory(last) {\n if (!this.items.length) return;\n const items = this.items.slice();\n if (last) items.reverse();\n const item = items.find(item => !item.disabled); // If no tabs are available\n // aborts mandatory value\n\n if (!item) return;\n const index = this.items.indexOf(item);\n this.updateInternalValue(this.getValue(item, index));\n },\n\n updateMultiple(value) {\n const defaultValue = Array.isArray(this.internalValue) ? this.internalValue : [];\n const internalValue = defaultValue.slice();\n const index = internalValue.findIndex(val => val === value);\n if (this.mandatory && // Item already exists\n index > -1 && // value would be reduced below min\n internalValue.length - 1 < 1) return;\n if ( // Max is set\n this.max != null && // Item doesn't exist\n index < 0 && // value would be increased above max\n internalValue.length + 1 > this.max) return;\n index > -1 ? internalValue.splice(index, 1) : internalValue.push(value);\n this.internalValue = internalValue;\n },\n\n updateSingle(value) {\n const isSame = value === this.internalValue;\n if (this.mandatory && isSame) return;\n this.internalValue = isSame ? undefined : value;\n }\n\n },\n\n render(h) {\n return h('div', this.genData(), this.$slots.default);\n }\n\n});\nexport default BaseItemGroup.extend({\n name: 'v-item-group',\n\n provide() {\n return {\n itemGroup: this\n };\n }\n\n});\n//# sourceMappingURL=VItemGroup.js.map","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('v-slide-group',_vm._g(_vm._b({directives:[{name:\"intersect\",rawName:\"v-intersect.once\",value:(_vm.onObserve),expression:\"onObserve\",modifiers:{\"once\":true}}],key:String(_vm.reset)},'v-slide-group',_vm.$attrs,false),_vm.$listeners),_vm._l((_vm.filtered),function(card,i){return _c('v-slide-item',{key:i,scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar active = ref.active;\nvar toggle = ref.toggle;\nreturn [_c('div',[_c('project-card',_vm._b({staticClass:\"mx-3\",attrs:{\"active\":active,\"height\":_vm.height,\"src\":require((\"@/assets/project-\" + (i + 1) + \".jpg\")),\"width\":_vm.width},on:{\"click\":toggle}},'project-card',card,false))],1)]}}],null,true)})}),1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Projects.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vuetify-loader/lib/loader.js??ref--18-0!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Projects.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Projects.vue?vue&type=template&id=4fa8a09a&\"\nimport script from \"./Projects.vue?vue&type=script&lang=js&\"\nexport * from \"./Projects.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\n\n/* vuetify-loader */\nimport installComponents from \"!../../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VSlideGroup } from 'vuetify/lib/components/VSlideGroup';\nimport { VSlideItem } from 'vuetify/lib/components/VSlideGroup';\ninstallComponents(component, {VSlideGroup,VSlideItem})\n\n\n/* vuetify-loader */\nimport installDirectives from \"!../../../node_modules/vuetify-loader/lib/runtime/installDirectives.js\"\nimport Intersect from 'vuetify/lib/directives/intersect'\ninstallDirectives(component, {Intersect})\n","module.exports = __webpack_public_path__ + \"img/project-5.ecffa191.jpg\";","// Styles\nimport \"../../../src/components/VSlideGroup/VSlideGroup.sass\"; // Components\n\nimport VIcon from '../VIcon';\nimport { VFadeTransition } from '../transitions'; // Extensions\n\nimport { BaseItemGroup } from '../VItemGroup/VItemGroup'; // Directives\n\nimport Resize from '../../directives/resize';\nimport Touch from '../../directives/touch'; // Utilities\n\nimport mixins from '../../util/mixins';\nexport const BaseSlideGroup = mixins(BaseItemGroup\n/* @vue/component */\n).extend({\n name: 'base-slide-group',\n directives: {\n Resize,\n Touch\n },\n props: {\n activeClass: {\n type: String,\n default: 'v-slide-item--active'\n },\n centerActive: Boolean,\n nextIcon: {\n type: String,\n default: '$next'\n },\n mobileBreakPoint: {\n type: [Number, String],\n default: 1264,\n validator: v => !isNaN(parseInt(v))\n },\n prevIcon: {\n type: String,\n default: '$prev'\n },\n showArrows: Boolean\n },\n data: () => ({\n internalItemsLength: 0,\n isOverflowing: false,\n resizeTimeout: 0,\n startX: 0,\n scrollOffset: 0,\n widths: {\n content: 0,\n wrapper: 0\n }\n }),\n computed: {\n __cachedNext() {\n return this.genTransition('next');\n },\n\n __cachedPrev() {\n return this.genTransition('prev');\n },\n\n classes() {\n return { ...BaseItemGroup.options.computed.classes.call(this),\n 'v-slide-group': true,\n 'v-slide-group--has-affixes': this.hasAffixes,\n 'v-slide-group--is-overflowing': this.isOverflowing\n };\n },\n\n hasAffixes() {\n return (this.showArrows || !this.isMobile) && this.isOverflowing;\n },\n\n hasNext() {\n if (!this.hasAffixes) return false;\n const {\n content,\n wrapper\n } = this.widths; // Check one scroll ahead to know the width of right-most item\n\n return content > Math.abs(this.scrollOffset) + wrapper;\n },\n\n hasPrev() {\n return this.hasAffixes && this.scrollOffset !== 0;\n },\n\n isMobile() {\n return this.$vuetify.breakpoint.width < this.mobileBreakPoint;\n }\n\n },\n watch: {\n internalValue: 'setWidths',\n // When overflow changes, the arrows alter\n // the widths of the content and wrapper\n // and need to be recalculated\n isOverflowing: 'setWidths',\n\n scrollOffset(val) {\n this.$refs.content.style.transform = `translateX(${-val}px)`;\n }\n\n },\n\n beforeUpdate() {\n this.internalItemsLength = (this.$children || []).length;\n },\n\n updated() {\n if (this.internalItemsLength === (this.$children || []).length) return;\n this.setWidths();\n },\n\n methods: {\n // Always generate next for scrollable hint\n genNext() {\n const slot = this.$scopedSlots.next ? this.$scopedSlots.next({}) : this.$slots.next || this.__cachedNext;\n return this.$createElement('div', {\n staticClass: 'v-slide-group__next',\n class: {\n 'v-slide-group__next--disabled': !this.hasNext\n },\n on: {\n click: () => this.onAffixClick('next')\n },\n key: 'next'\n }, [slot]);\n },\n\n genContent() {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__content',\n ref: 'content'\n }, this.$slots.default);\n },\n\n genData() {\n return {\n class: this.classes,\n directives: [{\n name: 'resize',\n value: this.onResize\n }]\n };\n },\n\n genIcon(location) {\n let icon = location;\n\n if (this.$vuetify.rtl && location === 'prev') {\n icon = 'next';\n } else if (this.$vuetify.rtl && location === 'next') {\n icon = 'prev';\n }\n\n const upperLocation = `${location[0].toUpperCase()}${location.slice(1)}`;\n const hasAffix = this[`has${upperLocation}`];\n if (!this.showArrows && !hasAffix) return null;\n return this.$createElement(VIcon, {\n props: {\n disabled: !hasAffix\n }\n }, this[`${icon}Icon`]);\n },\n\n // Always generate prev for scrollable hint\n genPrev() {\n const slot = this.$scopedSlots.prev ? this.$scopedSlots.prev({}) : this.$slots.prev || this.__cachedPrev;\n return this.$createElement('div', {\n staticClass: 'v-slide-group__prev',\n class: {\n 'v-slide-group__prev--disabled': !this.hasPrev\n },\n on: {\n click: () => this.onAffixClick('prev')\n },\n key: 'prev'\n }, [slot]);\n },\n\n genTransition(location) {\n return this.$createElement(VFadeTransition, [this.genIcon(location)]);\n },\n\n genWrapper() {\n return this.$createElement('div', {\n staticClass: 'v-slide-group__wrapper',\n directives: [{\n name: 'touch',\n value: {\n start: e => this.overflowCheck(e, this.onTouchStart),\n move: e => this.overflowCheck(e, this.onTouchMove),\n end: e => this.overflowCheck(e, this.onTouchEnd)\n }\n }],\n ref: 'wrapper'\n }, [this.genContent()]);\n },\n\n calculateNewOffset(direction, widths, rtl, currentScrollOffset) {\n const sign = rtl ? -1 : 1;\n const newAbosluteOffset = sign * currentScrollOffset + (direction === 'prev' ? -1 : 1) * widths.wrapper;\n return sign * Math.max(Math.min(newAbosluteOffset, widths.content - widths.wrapper), 0);\n },\n\n onAffixClick(location) {\n this.$emit(`click:${location}`);\n this.scrollTo(location);\n },\n\n onResize() {\n /* istanbul ignore next */\n if (this._isDestroyed) return;\n this.setWidths();\n },\n\n onTouchStart(e) {\n const {\n content\n } = this.$refs;\n this.startX = this.scrollOffset + e.touchstartX;\n content.style.setProperty('transition', 'none');\n content.style.setProperty('willChange', 'transform');\n },\n\n onTouchMove(e) {\n this.scrollOffset = this.startX - e.touchmoveX;\n },\n\n onTouchEnd() {\n const {\n content,\n wrapper\n } = this.$refs;\n const maxScrollOffset = content.clientWidth - wrapper.clientWidth;\n content.style.setProperty('transition', null);\n content.style.setProperty('willChange', null);\n\n if (this.$vuetify.rtl) {\n /* istanbul ignore else */\n if (this.scrollOffset > 0 || !this.isOverflowing) {\n this.scrollOffset = 0;\n } else if (this.scrollOffset <= -maxScrollOffset) {\n this.scrollOffset = -maxScrollOffset;\n }\n } else {\n /* istanbul ignore else */\n if (this.scrollOffset < 0 || !this.isOverflowing) {\n this.scrollOffset = 0;\n } else if (this.scrollOffset >= maxScrollOffset) {\n this.scrollOffset = maxScrollOffset;\n }\n }\n },\n\n overflowCheck(e, fn) {\n e.stopPropagation();\n this.isOverflowing && fn(e);\n },\n\n scrollIntoView\n /* istanbul ignore next */\n () {\n if (!this.selectedItem) {\n return;\n }\n\n if (this.selectedIndex === 0 || !this.centerActive && !this.isOverflowing) {\n this.scrollOffset = 0;\n } else if (this.centerActive) {\n this.scrollOffset = this.calculateCenteredOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl);\n } else if (this.isOverflowing) {\n this.scrollOffset = this.calculateUpdatedOffset(this.selectedItem.$el, this.widths, this.$vuetify.rtl, this.scrollOffset);\n }\n },\n\n calculateUpdatedOffset(selectedElement, widths, rtl, currentScrollOffset) {\n const clientWidth = selectedElement.clientWidth;\n const offsetLeft = rtl ? widths.content - selectedElement.offsetLeft - clientWidth : selectedElement.offsetLeft;\n\n if (rtl) {\n currentScrollOffset = -currentScrollOffset;\n }\n\n const totalWidth = widths.wrapper + currentScrollOffset;\n const itemOffset = clientWidth + offsetLeft;\n const additionalOffset = clientWidth * 0.4;\n\n if (offsetLeft < currentScrollOffset) {\n currentScrollOffset = Math.max(offsetLeft - additionalOffset, 0);\n } else if (totalWidth < itemOffset) {\n currentScrollOffset = Math.min(currentScrollOffset - (totalWidth - itemOffset - additionalOffset), widths.content - widths.wrapper);\n }\n\n return rtl ? -currentScrollOffset : currentScrollOffset;\n },\n\n calculateCenteredOffset(selectedElement, widths, rtl) {\n const {\n offsetLeft,\n clientWidth\n } = selectedElement;\n\n if (rtl) {\n const offsetCentered = widths.content - offsetLeft - clientWidth / 2 - widths.wrapper / 2;\n return -Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));\n } else {\n const offsetCentered = offsetLeft + clientWidth / 2 - widths.wrapper / 2;\n return Math.min(widths.content - widths.wrapper, Math.max(0, offsetCentered));\n }\n },\n\n scrollTo\n /* istanbul ignore next */\n (location) {\n this.scrollOffset = this.calculateNewOffset(location, {\n // Force reflow\n content: this.$refs.content ? this.$refs.content.clientWidth : 0,\n wrapper: this.$refs.wrapper ? this.$refs.wrapper.clientWidth : 0\n }, this.$vuetify.rtl, this.scrollOffset);\n },\n\n setWidths\n /* istanbul ignore next */\n () {\n window.requestAnimationFrame(() => {\n const {\n content,\n wrapper\n } = this.$refs;\n this.widths = {\n content: content ? content.clientWidth : 0,\n wrapper: wrapper ? wrapper.clientWidth : 0\n };\n this.isOverflowing = this.widths.wrapper < this.widths.content;\n this.scrollIntoView();\n });\n }\n\n },\n\n render(h) {\n return h('div', this.genData(), [this.genPrev(), this.genWrapper(), this.genNext()]);\n }\n\n});\nexport default BaseSlideGroup.extend({\n name: 'v-slide-group',\n\n provide() {\n return {\n slideGroup: this\n };\n }\n\n});\n//# sourceMappingURL=VSlideGroup.js.map","module.exports = __webpack_public_path__ + \"img/project-4.0498fa54.jpg\";","// Extensions\nimport { BaseItem } from '../VItemGroup/VItem'; // Mixins\n\nimport { factory as GroupableFactory } from '../../mixins/groupable';\nimport mixins from '../../util/mixins';\nexport default mixins(BaseItem, GroupableFactory('slideGroup')\n/* @vue/component */\n).extend({\n name: 'v-slide-item'\n});\n//# sourceMappingURL=VSlideItem.js.map","module.exports = __webpack_public_path__ + \"img/project-9.d54e75bc.jpg\";","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","module.exports = __webpack_public_path__ + \"img/project-7.ca89a56b.jpg\";","// Mixins\nimport { factory as GroupableFactory } from '../../mixins/groupable'; // Utilities\n\nimport mixins from '../../util/mixins';\nimport { consoleWarn } from '../../util/console'; // Types\n\nimport Vue from 'vue';\n/* @vue/component */\n\nexport const BaseItem = Vue.extend({\n props: {\n activeClass: String,\n value: {\n required: false\n }\n },\n data: () => ({\n isActive: false\n }),\n methods: {\n toggle() {\n this.isActive = !this.isActive;\n }\n\n },\n\n render() {\n if (!this.$scopedSlots.default) {\n consoleWarn('v-item is missing a default scopedSlot', this);\n return null;\n }\n\n let element;\n /* istanbul ignore else */\n\n if (this.$scopedSlots.default) {\n element = this.$scopedSlots.default({\n active: this.isActive,\n toggle: this.toggle\n });\n }\n\n if (Array.isArray(element) && element.length === 1) {\n element = element[0];\n }\n\n if (!element || Array.isArray(element) || !element.tag) {\n consoleWarn('v-item should only contain a single element', this);\n return element;\n }\n\n element.data = this._b(element.data || {}, element.tag, {\n class: {\n [this.activeClass]: this.isActive\n }\n });\n return element;\n }\n\n});\nexport default mixins(BaseItem, GroupableFactory('itemGroup', 'v-item', 'v-item-group')).extend({\n name: 'v-item'\n});\n//# sourceMappingURL=VItem.js.map","function inserted(el, binding) {\n const callback = binding.value;\n const options = binding.options || {\n passive: true\n };\n window.addEventListener('resize', callback, options);\n el._onResize = {\n callback,\n options\n };\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback();\n }\n}\n\nfunction unbind(el) {\n if (!el._onResize) return;\n const {\n callback,\n options\n } = el._onResize;\n window.removeEventListener('resize', callback, options);\n delete el._onResize;\n}\n\nexport const Resize = {\n inserted,\n unbind\n};\nexport default Resize;\n//# sourceMappingURL=index.js.map","module.exports = __webpack_public_path__ + \"img/project-6.6e74dcb9.jpg\";","module.exports = __webpack_public_path__ + \"img/project-2.89c70ce1.jpg\";","var map = {\n\t\"./project-1.jpg\": \"4a3d\",\n\t\"./project-10.jpg\": \"0f68\",\n\t\"./project-2.jpg\": \"e279\",\n\t\"./project-3.jpg\": \"2aec\",\n\t\"./project-4.jpg\": \"93d2\",\n\t\"./project-5.jpg\": \"7cfb\",\n\t\"./project-6.jpg\": \"df55\",\n\t\"./project-7.jpg\": \"d5f2\",\n\t\"./project-8.jpg\": \"f6ee\",\n\t\"./project-9.jpg\": \"bcbe\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"ef29\";","module.exports = __webpack_public_path__ + \"img/project-8.00f612fb.jpg\";"],"sourceRoot":""}