{"version":3,"file":"appSinglePropertyPage-D9A4WQI5.js","sources":["../../../../SPAs/POCViteVue/node_modules/vue3-touch-events/index.js","../../../../SPAs/POCViteVue/src/pages/AppSinglePropertyPage/mainSinglePropertyPage.ts"],"sourcesContent":["/**\r\n * @project vue3-touch-events\r\n * @author Robin Rodricks, Xavier Julien, Jerry Bendy\r\n * @since 30/4/2021\r\n * @url https://github.com/robinrodricks/vue3-touch-events\r\n */\r\n\r\nfunction touchX(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientX;\r\n }\r\n return event.touches[0].clientX;\r\n}\r\n\r\nfunction touchY(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientY;\r\n }\r\n return event.touches[0].clientY;\r\n}\r\n\r\nvar isPassiveSupported = (function() {\r\n var supportsPassive = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n } catch (e) {}\r\n return supportsPassive;\r\n})();\r\n\r\nvar vueTouchEvents = {\r\n install: function (app, constructorOptions) {\r\n\t\t\r\n var globalOptions = Object.assign({}, {\r\n disableClick: false,\r\n tapTolerance: 10, // px\r\n swipeTolerance: 30, // px\r\n touchHoldTolerance: 400, // ms\r\n longTapTimeInterval: 400, // ms\r\n touchClass: '',\r\n\t\t\tdragFrequency: 100, // ms\r\n\t\t\trollOverFrequency: 100, // ms\r\n }, constructorOptions);\r\n\r\n function touchStartEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0,\r\n $el = this;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchStartTime = event.timeStamp;\r\n }\r\n\r\n if (isMouseEvent && $this.lastTouchStartTime && event.timeStamp - $this.lastTouchStartTime < 350) {\r\n return;\r\n }\r\n\r\n if ($this.touchStarted) {\r\n return;\r\n }\r\n\r\n addTouchClass(this);\r\n\r\n $this.touchStarted = true; // always true while the element is being PRESSED\r\n\r\n $this.touchMoved = false; // true only when the element is PRESSED and DRAGGED a bit\r\n $this.swipeOutBounded = false;\r\n\r\n $this.startX = touchX(event);\r\n $this.startY = touchY(event);\r\n\r\n $this.currentX = 0; // always updated with the last mouse X/Y while over the element\r\n $this.currentY = 0;\r\n\r\n $this.touchStartTime = event.timeStamp;\r\n\t\t\t\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n\t\t\t$this.hasSwipe = hasEvent(this, 'swipe')\r\n\t\t\t\t|| hasEvent(this, 'swipe.left') || hasEvent(this, 'swipe.right')\r\n\t\t\t\t|| hasEvent(this, 'swipe.top') || hasEvent(this, 'swipe.bottom');\r\n\r\n\t\t\t// performance: only start hold timer if the `hold` event is registered on this element\r\n\t\t\tif (hasEvent(this, 'hold')){\r\n\t\t\t\t\r\n\t\t\t\t// Trigger touchhold event after `touchHoldTolerance` MS\r\n\t\t\t\t$this.touchHoldTimer = setTimeout(function() {\r\n\t\t\t\t\t$this.touchHoldTimer = null;\r\n\t\t\t\t\ttriggerEvent(event, $el, 'hold');\r\n\t\t\t\t}, $this.options.touchHoldTolerance);\r\n\t\t\t}\r\n\t\t\t\r\n triggerEvent(event, this, 'press');\r\n }\r\n\r\n function touchMoveEvent(event) {\r\n var $this = this.$$touchObj;\r\n\t\t\t\r\n\t\t\tvar curX = touchX(event);\r\n\t\t\tvar curY = touchY(event);\r\n\r\n\t\t\tvar movedAgain = ($this.currentX != curX) || ($this.currentY != curY);\r\n\t\t\t\r\n $this.currentX = curX;\r\n $this.currentY = curY;\r\n\r\n if (!$this.touchMoved) {\r\n var tapTolerance = $this.options.tapTolerance;\r\n\r\n $this.touchMoved = Math.abs($this.startX - $this.currentX) > tapTolerance ||\r\n\t\t\t\t\t\t\t\t Math.abs($this.startY - $this.currentY) > tapTolerance;\r\n\r\n\t\t\t\t// trigger `drag.once` only once after mouse FIRST moved while dragging the element\r\n\t\t\t\t// (`touchMoved` is the flag that indicates we no longer need to trigger this)\r\n if($this.touchMoved){\r\n cancelTouchHoldTimer($this);\r\n triggerEvent(event, this, 'drag.once');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n\t\t\t\tvar swipeOutBounded = $this.options.swipeTolerance;\r\n\r\n\t\t\t\t$this.swipeOutBounded = Math.abs($this.startX - $this.currentX) > swipeOutBounded &&\r\n\t\t\t\t\tMath.abs($this.startY - $this.currentY) > swipeOutBounded;\r\n }\r\n\r\n\t\t\t// only trigger `rollover` event if cursor actually moved over this element\r\n if(hasEvent(this, 'rollover') && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `rollover` event based on `rollOverFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.rollOverFrequency;\r\n\t\t\t\tif ($this.touchRollTime == null || now > ($this.touchRollTime + throttle)){\r\n\t\t\t\t\t$this.touchRollTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'rollover');\r\n\t\t\t\t}\r\n }\r\n\r\n\t\t\t// only trigger `drag` event if cursor actually moved and if we are still dragging this element\r\n if(hasEvent(this, 'drag') && $this.touchStarted && $this.touchMoved && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `drag` event based on `dragFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.dragFrequency;\r\n\t\t\t\tif ($this.touchDragTime == null || now > ($this.touchDragTime + throttle)){\r\n\t\t\t\t\t$this.touchDragTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'drag');\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n function touchCancelEvent() {\r\n var $this = this.$$touchObj;\r\n\r\n cancelTouchHoldTimer($this);\r\n removeTouchClass(this);\r\n\r\n $this.touchStarted = $this.touchMoved = false;\r\n $this.startX = $this.startY = 0;\r\n }\r\n\r\n function touchEndEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchEndTime = event.timeStamp;\r\n }\r\n\r\n var touchholdEnd = isTouchEvent && !$this.touchHoldTimer;\r\n cancelTouchHoldTimer($this);\r\n\r\n $this.touchStarted = false;\r\n\r\n removeTouchClass(this);\r\n\r\n if (isMouseEvent && $this.lastTouchEndTime && event.timeStamp - $this.lastTouchEndTime < 350) {\r\n return;\r\n }\r\n\r\n // trigger `end` event when touch stopped\r\n triggerEvent(event, this, 'release');\r\n\r\n if (!$this.touchMoved) {\r\n // detect if this is a longTap event or not\r\n if (hasEvent(this, 'longtap') && event.timeStamp - $this.touchStartTime > $this.options.longTapTimeInterval) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n triggerEvent(event, this, 'longtap');\r\n\r\n } else if (hasEvent(this, 'hold') && touchholdEnd) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n return;\r\n } else {\r\n // emit tap event\r\n triggerEvent(event, this, 'tap');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n var swipeOutBounded = $this.options.swipeTolerance,\r\n direction,\r\n distanceY = Math.abs($this.startY - $this.currentY),\r\n distanceX = Math.abs($this.startX - $this.currentX);\r\n\r\n if (distanceY > swipeOutBounded || distanceX > swipeOutBounded) {\r\n if (distanceY > distanceX) {\r\n direction = $this.startY > $this.currentY ? 'top' : 'bottom';\r\n } else {\r\n direction = $this.startX > $this.currentX ? 'left' : 'right';\r\n }\r\n\r\n // Only emit the specified event when it has modifiers\r\n if (hasEvent(this, 'swipe.' + direction)) {\r\n triggerEvent(event, this, 'swipe.' + direction, direction);\r\n } else {\r\n // Emit a common event when it has no any modifier\r\n triggerEvent(event, this, 'swipe', direction);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function mouseEnterEvent() {\r\n addTouchClass(this);\r\n }\r\n\r\n function mouseLeaveEvent() {\r\n removeTouchClass(this);\r\n }\r\n\r\n function hasEvent($el, eventType) {\r\n var callbacks = $el.$$touchObj.callbacks[eventType];\r\n\t\t\treturn (callbacks != null && callbacks.length > 0);\r\n\t\t}\r\n\t\t\r\n function triggerEvent(e, $el, eventType, param) {\r\n var $this = $el.$$touchObj;\r\n\r\n // get the subscribers for this event\r\n var callbacks = $this.callbacks[eventType];\r\n\t\t\t\r\n\t\t\t// exit if no subscribers to this particular event\r\n if (callbacks == null || callbacks.length === 0) {\r\n return null;\r\n }\r\n\r\n\t\t\t// per callback\r\n for (var i = 0; i < callbacks.length; i++) {\r\n var binding = callbacks[i];\r\n\r\n if (binding.modifiers.stop) {\r\n e.stopPropagation();\r\n }\r\n\r\n if (binding.modifiers.prevent) {\r\n e.preventDefault();\r\n }\r\n\r\n // handle `self` modifier`\r\n if (binding.modifiers.self && e.target !== e.currentTarget) {\r\n continue;\r\n }\r\n\r\n if (typeof binding.value === 'function') {\r\n if (param) {\r\n binding.value(param, e);\r\n } else {\r\n binding.value(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.add(className);\r\n }\r\n\r\n function removeTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.remove(className);\r\n }\r\n\r\n function cancelTouchHoldTimer($this) {\r\n if ($this && $this.touchHoldTimer) {\r\n clearTimeout($this.touchHoldTimer);\r\n $this.touchHoldTimer = null;\r\n }\r\n }\r\n\r\n function buildTouchObj($el, extraOptions) {\r\n var touchObj = $el.$$touchObj || {\r\n // an object contains all callbacks registered,\r\n // key is event name, value is an array\r\n callbacks: {},\r\n // prevent bind twice, set to true when event bound\r\n hasBindTouchEvents: false,\r\n // default options, would be override by v-touch-options\r\n options: globalOptions\r\n };\r\n if (extraOptions) {\r\n touchObj.options = Object.assign({}, touchObj.options, extraOptions);\r\n }\r\n $el.$$touchObj = touchObj;\r\n return $el.$$touchObj;\r\n }\r\n\r\n app.directive('touch', {\r\n beforeMount: function ($el, binding) {\r\n // build a touch configuration object\r\n var $this = buildTouchObj($el);\r\n // declare passive option for the event listener. Defaults to { passive: true } if supported\r\n var passiveOpt = isPassiveSupported ? { passive: true } : false;\r\n // register callback\r\n var eventType = binding.arg || 'tap';\r\n switch (eventType) {\r\n case 'swipe':\r\n var _m = binding.modifiers;\r\n if (_m.left || _m.right || _m.top || _m.bottom) {\r\n for (var i in binding.modifiers) {\r\n if (['left', 'right', 'top', 'bottom'].indexOf(i) >= 0) {\r\n var _e = 'swipe.' + i;\r\n $this.callbacks[_e] = $this.callbacks[_e] || [];\r\n $this.callbacks[_e].push(binding);\r\n }\r\n }\r\n } else {\r\n $this.callbacks.swipe = $this.callbacks.swipe || [];\r\n $this.callbacks.swipe.push(binding);\r\n }\r\n break;\r\n\r\n case 'press':\r\n case 'drag':\r\n if (binding.modifiers.disablePassive) {\r\n // change the passive option for the `drag` event if disablePassive modifier exists\r\n passiveOpt = false;\r\n }\r\n default:\r\n $this.callbacks[eventType] = $this.callbacks[eventType] || [];\r\n $this.callbacks[eventType].push(binding);\r\n }\r\n\r\n // prevent bind twice\r\n if ($this.hasBindTouchEvents) {\r\n return;\r\n }\r\n\r\n $el.addEventListener('touchstart', touchStartEvent, passiveOpt);\r\n $el.addEventListener('touchmove', touchMoveEvent, passiveOpt);\r\n $el.addEventListener('touchcancel', touchCancelEvent);\r\n $el.addEventListener('touchend', touchEndEvent);\r\n\r\n if (!$this.options.disableClick) {\r\n $el.addEventListener('mousedown', touchStartEvent);\r\n $el.addEventListener('mousemove', touchMoveEvent);\r\n $el.addEventListener('mouseup', touchEndEvent);\r\n $el.addEventListener('mouseenter', mouseEnterEvent);\r\n $el.addEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // set bind mark to true\r\n $this.hasBindTouchEvents = true;\r\n },\r\n\r\n unmounted: function ($el) {\r\n cancelTouchHoldTimer($el.$$touchObj)\r\n\r\n $el.removeEventListener('touchstart', touchStartEvent);\r\n $el.removeEventListener('touchmove', touchMoveEvent);\r\n $el.removeEventListener('touchcancel', touchCancelEvent);\r\n $el.removeEventListener('touchend', touchEndEvent);\r\n\r\n if ($el.$$touchObj && !$el.$$touchObj.options.disableClick) {\r\n $el.removeEventListener('mousedown', touchStartEvent);\r\n $el.removeEventListener('mousemove', touchMoveEvent);\r\n $el.removeEventListener('mouseup', touchEndEvent);\r\n $el.removeEventListener('mouseenter', mouseEnterEvent);\r\n $el.removeEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // remove vars\r\n delete $el.$$touchObj;\r\n }\r\n });\r\n\r\n app.directive('touch-class', {\r\n beforeMount: function ($el, binding) {\r\n buildTouchObj($el, {\r\n touchClass: binding.value\r\n });\r\n }\r\n });\r\n\r\n app.directive('touch-options', {\r\n beforeMount: function($el, binding) {\r\n buildTouchObj($el, binding.value);\r\n }\r\n });\r\n }\r\n};\r\n\r\n/*\r\n * Exports\r\n */\r\nexport default vueTouchEvents\r\n","import { createApp } from 'vue'\r\nimport { createPinia } from 'pinia'\r\nimport dayjs from 'dayjs';\r\nimport dayjsLocales from '../../services/dayjs-locales.service';\r\nimport localeData from 'dayjs/plugin/localeData';\r\nimport isoWeek from 'dayjs/plugin/isoWeek';\r\nimport isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\r\nimport isBetween from 'dayjs/plugin/isBetween';\r\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport piniaPluginPersistedState from 'pinia-plugin-persistedstate'\r\nimport weekOfYear from 'dayjs/plugin/weekOfYear';\r\nimport Vue3TouchEvents, {\r\n type Vue3TouchEventsOptions,\r\n} from \"vue3-touch-events\";\r\n\r\n// Select the App you want to run on main, each individual are on /appName/App.vue\r\nimport App from './App.vue'\r\n\r\n// import library styles\r\nimport '../../styles/tailwind.css'\r\nimport '@vueform/slider/themes/default.css'\r\n\r\n// import custom styles\r\nimport './style.css'\r\nimport '../../styles/property_page.scss'\r\n\r\nlet locale = document.documentElement.lang;\r\n\r\nasync function loadLocale() {\r\n if (!dayjsLocales[locale]) {\r\n locale = 'default';\r\n }\r\n\r\n const localeData = await dayjsLocales[locale]().then(() => dayjs.locale(locale));\r\n dayjs.locale(localeData);\r\n}\r\n\r\nconst pinia = createPinia();\r\npinia.use(piniaPluginPersistedState);\r\nconst app = createApp(App);\r\napp.use(Vue3TouchEvents, {})\r\n\r\nasync function initApp() {\r\n await loadLocale();\r\n dayjs.extend(localeData);\r\n dayjs.extend(isoWeek);\r\n dayjs.extend(isSameOrBefore);\r\n dayjs.extend(customParseFormat);\r\n dayjs.extend(isBetween);\r\n dayjs.extend(weekOfYear);\r\n dayjs.localeData();\r\n\r\n app.config.globalProperties.$dayjs = dayjs;\r\n\r\n app.use(pinia)\r\n app.mount(\"#app\")\r\n}\r\n\r\ninitApp();\r\n"],"names":["touchX","event","touchY","isPassiveSupported","supportsPassive","opts","vueTouchEvents","app","constructorOptions","globalOptions","touchStartEvent","$this","isTouchEvent","isMouseEvent","$el","addTouchClass","hasEvent","triggerEvent","touchMoveEvent","curX","curY","movedAgain","swipeOutBounded","tapTolerance","cancelTouchHoldTimer","now","throttle","touchCancelEvent","removeTouchClass","touchEndEvent","touchholdEnd","direction","distanceY","distanceX","mouseEnterEvent","mouseLeaveEvent","eventType","callbacks","param","i","binding","className","buildTouchObj","extraOptions","touchObj","passiveOpt","_m","_e","locale","loadLocale","dayjsLocales","localeData","dayjs","pinia","createPinia","piniaPluginPersistedState","createApp","App","Vue3TouchEvents","initApp","isoWeek","isSameOrBefore","customParseFormat","isBetween","weekOfYear"],"mappings":"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","x_google_ignoreList":[0]}