{"version":3,"file":"main.min.js","sources":["../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../../../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../../../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../../../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../../../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../../../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../../../node_modules/@use-gesture/core/dist/maths-0ab39ae9.esm.js","../../../node_modules/@use-gesture/core/dist/actions-fe213e88.esm.js","../../../node_modules/@use-gesture/core/dist/use-gesture-core.esm.js","../../../node_modules/@use-gesture/vanilla/dist/use-gesture-vanilla.esm.js","../../../node_modules/animejs/lib/anime.es.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../Src/Js/pixelpanzoom.js","../../../node_modules/@babel/runtime/helpers/typeof.js","../../../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../../../node_modules/@babel/runtime/regenerator/index.js","../../Src/Js/Site.Main.js"],"sourcesContent":["export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose.js\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(r, l) {\n var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n if (null != t) {\n var e,\n n,\n i,\n u,\n a = [],\n f = !0,\n o = !1;\n try {\n if (i = (t = t.call(r)).next, 0 === l) {\n if (Object(t) !== t) return;\n f = !1;\n } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);\n } catch (r) {\n o = !0, n = r;\n } finally {\n try {\n if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return;\n } finally {\n if (o) throw n;\n }\n }\n return a;\n }\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","function clamp(v, min, max) {\n return Math.max(min, Math.min(v, max));\n}\nconst V = {\n toVector(v, fallback) {\n if (v === undefined) v = fallback;\n return Array.isArray(v) ? v : [v, v];\n },\n add(v1, v2) {\n return [v1[0] + v2[0], v1[1] + v2[1]];\n },\n sub(v1, v2) {\n return [v1[0] - v2[0], v1[1] - v2[1]];\n },\n addTo(v1, v2) {\n v1[0] += v2[0];\n v1[1] += v2[1];\n },\n subTo(v1, v2) {\n v1[0] -= v2[0];\n v1[1] -= v2[1];\n }\n};\nfunction rubberband(distance, dimension, constant) {\n if (dimension === 0 || Math.abs(dimension) === Infinity) return Math.pow(distance, constant * 5);\n return distance * dimension * constant / (dimension + constant * distance);\n}\nfunction rubberbandIfOutOfBounds(position, min, max, constant = 0.15) {\n if (constant === 0) return clamp(position, min, max);\n if (position < min) return -rubberband(min - position, max - min, constant) + min;\n if (position > max) return +rubberband(position - max, max - min, constant) + max;\n return position;\n}\nfunction computeRubberband(bounds, [Vx, Vy], [Rx, Ry]) {\n const [[X0, X1], [Y0, Y1]] = bounds;\n return [rubberbandIfOutOfBounds(Vx, X0, X1, Rx), rubberbandIfOutOfBounds(Vy, Y0, Y1, Ry)];\n}\n\nexport { V, computeRubberband as c, rubberbandIfOutOfBounds as r };\n","import { V, c as computeRubberband } from './maths-0ab39ae9.esm.js';\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\nconst EVENT_TYPE_MAP = {\n pointer: {\n start: 'down',\n change: 'move',\n end: 'up'\n },\n mouse: {\n start: 'down',\n change: 'move',\n end: 'up'\n },\n touch: {\n start: 'start',\n change: 'move',\n end: 'end'\n },\n gesture: {\n start: 'start',\n change: 'change',\n end: 'end'\n }\n};\nfunction capitalize(string) {\n if (!string) return '';\n return string[0].toUpperCase() + string.slice(1);\n}\nconst actionsWithoutCaptureSupported = ['enter', 'leave'];\nfunction hasCapture(capture = false, actionKey) {\n return capture && !actionsWithoutCaptureSupported.includes(actionKey);\n}\nfunction toHandlerProp(device, action = '', capture = false) {\n const deviceProps = EVENT_TYPE_MAP[device];\n const actionKey = deviceProps ? deviceProps[action] || action : action;\n return 'on' + capitalize(device) + capitalize(actionKey) + (hasCapture(capture, actionKey) ? 'Capture' : '');\n}\nconst pointerCaptureEvents = ['gotpointercapture', 'lostpointercapture'];\nfunction parseProp(prop) {\n let eventKey = prop.substring(2).toLowerCase();\n const passive = !!~eventKey.indexOf('passive');\n if (passive) eventKey = eventKey.replace('passive', '');\n const captureKey = pointerCaptureEvents.includes(eventKey) ? 'capturecapture' : 'capture';\n const capture = !!~eventKey.indexOf(captureKey);\n if (capture) eventKey = eventKey.replace('capture', '');\n return {\n device: eventKey,\n capture,\n passive\n };\n}\nfunction toDomEventType(device, action = '') {\n const deviceProps = EVENT_TYPE_MAP[device];\n const actionKey = deviceProps ? deviceProps[action] || action : action;\n return device + actionKey;\n}\nfunction isTouch(event) {\n return 'touches' in event;\n}\nfunction getPointerType(event) {\n if (isTouch(event)) return 'touch';\n if ('pointerType' in event) return event.pointerType;\n return 'mouse';\n}\nfunction getCurrentTargetTouchList(event) {\n return Array.from(event.touches).filter(e => {\n var _event$currentTarget, _event$currentTarget$;\n return e.target === event.currentTarget || ((_event$currentTarget = event.currentTarget) === null || _event$currentTarget === void 0 || (_event$currentTarget$ = _event$currentTarget.contains) === null || _event$currentTarget$ === void 0 ? void 0 : _event$currentTarget$.call(_event$currentTarget, e.target));\n });\n}\nfunction getTouchList(event) {\n return event.type === 'touchend' || event.type === 'touchcancel' ? event.changedTouches : event.targetTouches;\n}\nfunction getValueEvent(event) {\n return isTouch(event) ? getTouchList(event)[0] : event;\n}\nfunction distanceAngle(P1, P2) {\n try {\n const dx = P2.clientX - P1.clientX;\n const dy = P2.clientY - P1.clientY;\n const cx = (P2.clientX + P1.clientX) / 2;\n const cy = (P2.clientY + P1.clientY) / 2;\n const distance = Math.hypot(dx, dy);\n const angle = -(Math.atan2(dx, dy) * 180) / Math.PI;\n const origin = [cx, cy];\n return {\n angle,\n distance,\n origin\n };\n } catch (_unused) {}\n return null;\n}\nfunction touchIds(event) {\n return getCurrentTargetTouchList(event).map(touch => touch.identifier);\n}\nfunction touchDistanceAngle(event, ids) {\n const [P1, P2] = Array.from(event.touches).filter(touch => ids.includes(touch.identifier));\n return distanceAngle(P1, P2);\n}\nfunction pointerId(event) {\n const valueEvent = getValueEvent(event);\n return isTouch(event) ? valueEvent.identifier : valueEvent.pointerId;\n}\nfunction pointerValues(event) {\n const valueEvent = getValueEvent(event);\n return [valueEvent.clientX, valueEvent.clientY];\n}\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\nfunction wheelValues(event) {\n let {\n deltaX,\n deltaY,\n deltaMode\n } = event;\n if (deltaMode === 1) {\n deltaX *= LINE_HEIGHT;\n deltaY *= LINE_HEIGHT;\n } else if (deltaMode === 2) {\n deltaX *= PAGE_HEIGHT;\n deltaY *= PAGE_HEIGHT;\n }\n return [deltaX, deltaY];\n}\nfunction scrollValues(event) {\n var _ref, _ref2;\n const {\n scrollX,\n scrollY,\n scrollLeft,\n scrollTop\n } = event.currentTarget;\n return [(_ref = scrollX !== null && scrollX !== void 0 ? scrollX : scrollLeft) !== null && _ref !== void 0 ? _ref : 0, (_ref2 = scrollY !== null && scrollY !== void 0 ? scrollY : scrollTop) !== null && _ref2 !== void 0 ? _ref2 : 0];\n}\nfunction getEventDetails(event) {\n const payload = {};\n if ('buttons' in event) payload.buttons = event.buttons;\n if ('shiftKey' in event) {\n const {\n shiftKey,\n altKey,\n metaKey,\n ctrlKey\n } = event;\n Object.assign(payload, {\n shiftKey,\n altKey,\n metaKey,\n ctrlKey\n });\n }\n return payload;\n}\n\nfunction call(v, ...args) {\n if (typeof v === 'function') {\n return v(...args);\n } else {\n return v;\n }\n}\nfunction noop() {}\nfunction chain(...fns) {\n if (fns.length === 0) return noop;\n if (fns.length === 1) return fns[0];\n return function () {\n let result;\n for (const fn of fns) {\n result = fn.apply(this, arguments) || result;\n }\n return result;\n };\n}\nfunction assignDefault(value, fallback) {\n return Object.assign({}, fallback, value || {});\n}\n\nconst BEFORE_LAST_KINEMATICS_DELAY = 32;\nclass Engine {\n constructor(ctrl, args, key) {\n this.ctrl = ctrl;\n this.args = args;\n this.key = key;\n if (!this.state) {\n this.state = {};\n this.computeValues([0, 0]);\n this.computeInitial();\n if (this.init) this.init();\n this.reset();\n }\n }\n get state() {\n return this.ctrl.state[this.key];\n }\n set state(state) {\n this.ctrl.state[this.key] = state;\n }\n get shared() {\n return this.ctrl.state.shared;\n }\n get eventStore() {\n return this.ctrl.gestureEventStores[this.key];\n }\n get timeoutStore() {\n return this.ctrl.gestureTimeoutStores[this.key];\n }\n get config() {\n return this.ctrl.config[this.key];\n }\n get sharedConfig() {\n return this.ctrl.config.shared;\n }\n get handler() {\n return this.ctrl.handlers[this.key];\n }\n reset() {\n const {\n state,\n shared,\n ingKey,\n args\n } = this;\n shared[ingKey] = state._active = state.active = state._blocked = state._force = false;\n state._step = [false, false];\n state.intentional = false;\n state._movement = [0, 0];\n state._distance = [0, 0];\n state._direction = [0, 0];\n state._delta = [0, 0];\n state._bounds = [[-Infinity, Infinity], [-Infinity, Infinity]];\n state.args = args;\n state.axis = undefined;\n state.memo = undefined;\n state.elapsedTime = state.timeDelta = 0;\n state.direction = [0, 0];\n state.distance = [0, 0];\n state.overflow = [0, 0];\n state._movementBound = [false, false];\n state.velocity = [0, 0];\n state.movement = [0, 0];\n state.delta = [0, 0];\n state.timeStamp = 0;\n }\n start(event) {\n const state = this.state;\n const config = this.config;\n if (!state._active) {\n this.reset();\n this.computeInitial();\n state._active = true;\n state.target = event.target;\n state.currentTarget = event.currentTarget;\n state.lastOffset = config.from ? call(config.from, state) : state.offset;\n state.offset = state.lastOffset;\n state.startTime = state.timeStamp = event.timeStamp;\n }\n }\n computeValues(values) {\n const state = this.state;\n state._values = values;\n state.values = this.config.transform(values);\n }\n computeInitial() {\n const state = this.state;\n state._initial = state._values;\n state.initial = state.values;\n }\n compute(event) {\n const {\n state,\n config,\n shared\n } = this;\n state.args = this.args;\n let dt = 0;\n if (event) {\n state.event = event;\n if (config.preventDefault && event.cancelable) state.event.preventDefault();\n state.type = event.type;\n shared.touches = this.ctrl.pointerIds.size || this.ctrl.touchIds.size;\n shared.locked = !!document.pointerLockElement;\n Object.assign(shared, getEventDetails(event));\n shared.down = shared.pressed = shared.buttons % 2 === 1 || shared.touches > 0;\n dt = event.timeStamp - state.timeStamp;\n state.timeStamp = event.timeStamp;\n state.elapsedTime = state.timeStamp - state.startTime;\n }\n if (state._active) {\n const _absoluteDelta = state._delta.map(Math.abs);\n V.addTo(state._distance, _absoluteDelta);\n }\n if (this.axisIntent) this.axisIntent(event);\n const [_m0, _m1] = state._movement;\n const [t0, t1] = config.threshold;\n const {\n _step,\n values\n } = state;\n if (config.hasCustomTransform) {\n if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && values[0];\n if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && values[1];\n } else {\n if (_step[0] === false) _step[0] = Math.abs(_m0) >= t0 && Math.sign(_m0) * t0;\n if (_step[1] === false) _step[1] = Math.abs(_m1) >= t1 && Math.sign(_m1) * t1;\n }\n state.intentional = _step[0] !== false || _step[1] !== false;\n if (!state.intentional) return;\n const movement = [0, 0];\n if (config.hasCustomTransform) {\n const [v0, v1] = values;\n movement[0] = _step[0] !== false ? v0 - _step[0] : 0;\n movement[1] = _step[1] !== false ? v1 - _step[1] : 0;\n } else {\n movement[0] = _step[0] !== false ? _m0 - _step[0] : 0;\n movement[1] = _step[1] !== false ? _m1 - _step[1] : 0;\n }\n if (this.restrictToAxis && !state._blocked) this.restrictToAxis(movement);\n const previousOffset = state.offset;\n const gestureIsActive = state._active && !state._blocked || state.active;\n if (gestureIsActive) {\n state.first = state._active && !state.active;\n state.last = !state._active && state.active;\n state.active = shared[this.ingKey] = state._active;\n if (event) {\n if (state.first) {\n if ('bounds' in config) state._bounds = call(config.bounds, state);\n if (this.setup) this.setup();\n }\n state.movement = movement;\n this.computeOffset();\n }\n }\n const [ox, oy] = state.offset;\n const [[x0, x1], [y0, y1]] = state._bounds;\n state.overflow = [ox < x0 ? -1 : ox > x1 ? 1 : 0, oy < y0 ? -1 : oy > y1 ? 1 : 0];\n state._movementBound[0] = state.overflow[0] ? state._movementBound[0] === false ? state._movement[0] : state._movementBound[0] : false;\n state._movementBound[1] = state.overflow[1] ? state._movementBound[1] === false ? state._movement[1] : state._movementBound[1] : false;\n const rubberband = state._active ? config.rubberband || [0, 0] : [0, 0];\n state.offset = computeRubberband(state._bounds, state.offset, rubberband);\n state.delta = V.sub(state.offset, previousOffset);\n this.computeMovement();\n if (gestureIsActive && (!state.last || dt > BEFORE_LAST_KINEMATICS_DELAY)) {\n state.delta = V.sub(state.offset, previousOffset);\n const absoluteDelta = state.delta.map(Math.abs);\n V.addTo(state.distance, absoluteDelta);\n state.direction = state.delta.map(Math.sign);\n state._direction = state._delta.map(Math.sign);\n if (!state.first && dt > 0) {\n state.velocity = [absoluteDelta[0] / dt, absoluteDelta[1] / dt];\n state.timeDelta = dt;\n }\n }\n }\n emit() {\n const state = this.state;\n const shared = this.shared;\n const config = this.config;\n if (!state._active) this.clean();\n if ((state._blocked || !state.intentional) && !state._force && !config.triggerAllEvents) return;\n const memo = this.handler(_objectSpread2(_objectSpread2(_objectSpread2({}, shared), state), {}, {\n [this.aliasKey]: state.values\n }));\n if (memo !== undefined) state.memo = memo;\n }\n clean() {\n this.eventStore.clean();\n this.timeoutStore.clean();\n }\n}\n\nfunction selectAxis([dx, dy], threshold) {\n const absDx = Math.abs(dx);\n const absDy = Math.abs(dy);\n if (absDx > absDy && absDx > threshold) {\n return 'x';\n }\n if (absDy > absDx && absDy > threshold) {\n return 'y';\n }\n return undefined;\n}\nclass CoordinatesEngine extends Engine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"aliasKey\", 'xy');\n }\n reset() {\n super.reset();\n this.state.axis = undefined;\n }\n init() {\n this.state.offset = [0, 0];\n this.state.lastOffset = [0, 0];\n }\n computeOffset() {\n this.state.offset = V.add(this.state.lastOffset, this.state.movement);\n }\n computeMovement() {\n this.state.movement = V.sub(this.state.offset, this.state.lastOffset);\n }\n axisIntent(event) {\n const state = this.state;\n const config = this.config;\n if (!state.axis && event) {\n const threshold = typeof config.axisThreshold === 'object' ? config.axisThreshold[getPointerType(event)] : config.axisThreshold;\n state.axis = selectAxis(state._movement, threshold);\n }\n state._blocked = (config.lockDirection || !!config.axis) && !state.axis || !!config.axis && config.axis !== state.axis;\n }\n restrictToAxis(v) {\n if (this.config.axis || this.config.lockDirection) {\n switch (this.state.axis) {\n case 'x':\n v[1] = 0;\n break;\n case 'y':\n v[0] = 0;\n break;\n }\n }\n }\n}\n\nconst identity = v => v;\nconst DEFAULT_RUBBERBAND = 0.15;\nconst commonConfigResolver = {\n enabled(value = true) {\n return value;\n },\n eventOptions(value, _k, config) {\n return _objectSpread2(_objectSpread2({}, config.shared.eventOptions), value);\n },\n preventDefault(value = false) {\n return value;\n },\n triggerAllEvents(value = false) {\n return value;\n },\n rubberband(value = 0) {\n switch (value) {\n case true:\n return [DEFAULT_RUBBERBAND, DEFAULT_RUBBERBAND];\n case false:\n return [0, 0];\n default:\n return V.toVector(value);\n }\n },\n from(value) {\n if (typeof value === 'function') return value;\n if (value != null) return V.toVector(value);\n },\n transform(value, _k, config) {\n const transform = value || config.shared.transform;\n this.hasCustomTransform = !!transform;\n if (process.env.NODE_ENV === 'development') {\n const originalTransform = transform || identity;\n return v => {\n const r = originalTransform(v);\n if (!isFinite(r[0]) || !isFinite(r[1])) {\n console.warn(`[@use-gesture]: config.transform() must produce a valid result, but it was: [${r[0]},${[1]}]`);\n }\n return r;\n };\n }\n return transform || identity;\n },\n threshold(value) {\n return V.toVector(value, 0);\n }\n};\nif (process.env.NODE_ENV === 'development') {\n Object.assign(commonConfigResolver, {\n domTarget(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n }\n return NaN;\n },\n lockDirection(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`lockDirection\\` option has been merged with \\`axis\\`. Use it as in \\`{ axis: 'lock' }\\``);\n }\n return NaN;\n },\n initial(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`initial\\` option has been renamed to \\`from\\`.`);\n }\n return NaN;\n }\n });\n}\n\nconst DEFAULT_AXIS_THRESHOLD = 0;\nconst coordinatesConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n axis(_v, _k, {\n axis\n }) {\n this.lockDirection = axis === 'lock';\n if (!this.lockDirection) return axis;\n },\n axisThreshold(value = DEFAULT_AXIS_THRESHOLD) {\n return value;\n },\n bounds(value = {}) {\n if (typeof value === 'function') {\n return state => coordinatesConfigResolver.bounds(value(state));\n }\n if ('current' in value) {\n return () => value.current;\n }\n if (typeof HTMLElement === 'function' && value instanceof HTMLElement) {\n return value;\n }\n const {\n left = -Infinity,\n right = Infinity,\n top = -Infinity,\n bottom = Infinity\n } = value;\n return [[left, right], [top, bottom]];\n }\n});\n\nconst KEYS_DELTA_MAP = {\n ArrowRight: (displacement, factor = 1) => [displacement * factor, 0],\n ArrowLeft: (displacement, factor = 1) => [-1 * displacement * factor, 0],\n ArrowUp: (displacement, factor = 1) => [0, -1 * displacement * factor],\n ArrowDown: (displacement, factor = 1) => [0, displacement * factor]\n};\nclass DragEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'dragging');\n }\n reset() {\n super.reset();\n const state = this.state;\n state._pointerId = undefined;\n state._pointerActive = false;\n state._keyboardActive = false;\n state._preventScroll = false;\n state._delayed = false;\n state.swipe = [0, 0];\n state.tap = false;\n state.canceled = false;\n state.cancel = this.cancel.bind(this);\n }\n setup() {\n const state = this.state;\n if (state._bounds instanceof HTMLElement) {\n const boundRect = state._bounds.getBoundingClientRect();\n const targetRect = state.currentTarget.getBoundingClientRect();\n const _bounds = {\n left: boundRect.left - targetRect.left + state.offset[0],\n right: boundRect.right - targetRect.right + state.offset[0],\n top: boundRect.top - targetRect.top + state.offset[1],\n bottom: boundRect.bottom - targetRect.bottom + state.offset[1]\n };\n state._bounds = coordinatesConfigResolver.bounds(_bounds);\n }\n }\n cancel() {\n const state = this.state;\n if (state.canceled) return;\n state.canceled = true;\n state._active = false;\n setTimeout(() => {\n this.compute();\n this.emit();\n }, 0);\n }\n setActive() {\n this.state._active = this.state._pointerActive || this.state._keyboardActive;\n }\n clean() {\n this.pointerClean();\n this.state._pointerActive = false;\n this.state._keyboardActive = false;\n super.clean();\n }\n pointerDown(event) {\n const config = this.config;\n const state = this.state;\n if (event.buttons != null && (Array.isArray(config.pointerButtons) ? !config.pointerButtons.includes(event.buttons) : config.pointerButtons !== -1 && config.pointerButtons !== event.buttons)) return;\n const ctrlIds = this.ctrl.setEventIds(event);\n if (config.pointerCapture) {\n event.target.setPointerCapture(event.pointerId);\n }\n if (ctrlIds && ctrlIds.size > 1 && state._pointerActive) return;\n this.start(event);\n this.setupPointer(event);\n state._pointerId = pointerId(event);\n state._pointerActive = true;\n this.computeValues(pointerValues(event));\n this.computeInitial();\n if (config.preventScrollAxis && getPointerType(event) !== 'mouse') {\n state._active = false;\n this.setupScrollPrevention(event);\n } else if (config.delay > 0) {\n this.setupDelayTrigger(event);\n if (config.triggerAllEvents) {\n this.compute(event);\n this.emit();\n }\n } else {\n this.startPointerDrag(event);\n }\n }\n startPointerDrag(event) {\n const state = this.state;\n state._active = true;\n state._preventScroll = true;\n state._delayed = false;\n this.compute(event);\n this.emit();\n }\n pointerMove(event) {\n const state = this.state;\n const config = this.config;\n if (!state._pointerActive) return;\n const id = pointerId(event);\n if (state._pointerId !== undefined && id !== state._pointerId) return;\n const _values = pointerValues(event);\n if (document.pointerLockElement === event.target) {\n state._delta = [event.movementX, event.movementY];\n } else {\n state._delta = V.sub(_values, state._values);\n this.computeValues(_values);\n }\n V.addTo(state._movement, state._delta);\n this.compute(event);\n if (state._delayed && state.intentional) {\n this.timeoutStore.remove('dragDelay');\n state.active = false;\n this.startPointerDrag(event);\n return;\n }\n if (config.preventScrollAxis && !state._preventScroll) {\n if (state.axis) {\n if (state.axis === config.preventScrollAxis || config.preventScrollAxis === 'xy') {\n state._active = false;\n this.clean();\n return;\n } else {\n this.timeoutStore.remove('startPointerDrag');\n this.startPointerDrag(event);\n return;\n }\n } else {\n return;\n }\n }\n this.emit();\n }\n pointerUp(event) {\n this.ctrl.setEventIds(event);\n try {\n if (this.config.pointerCapture && event.target.hasPointerCapture(event.pointerId)) {\n ;\n event.target.releasePointerCapture(event.pointerId);\n }\n } catch (_unused) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[@use-gesture]: If you see this message, it's likely that you're using an outdated version of \\`@react-three/fiber\\`. \\n\\nPlease upgrade to the latest version.`);\n }\n }\n const state = this.state;\n const config = this.config;\n if (!state._active || !state._pointerActive) return;\n const id = pointerId(event);\n if (state._pointerId !== undefined && id !== state._pointerId) return;\n this.state._pointerActive = false;\n this.setActive();\n this.compute(event);\n const [dx, dy] = state._distance;\n state.tap = dx <= config.tapsThreshold && dy <= config.tapsThreshold;\n if (state.tap && config.filterTaps) {\n state._force = true;\n } else {\n const [_dx, _dy] = state._delta;\n const [_mx, _my] = state._movement;\n const [svx, svy] = config.swipe.velocity;\n const [sx, sy] = config.swipe.distance;\n const sdt = config.swipe.duration;\n if (state.elapsedTime < sdt) {\n const _vx = Math.abs(_dx / state.timeDelta);\n const _vy = Math.abs(_dy / state.timeDelta);\n if (_vx > svx && Math.abs(_mx) > sx) state.swipe[0] = Math.sign(_dx);\n if (_vy > svy && Math.abs(_my) > sy) state.swipe[1] = Math.sign(_dy);\n }\n }\n this.emit();\n }\n pointerClick(event) {\n if (!this.state.tap && event.detail > 0) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n setupPointer(event) {\n const config = this.config;\n const device = config.device;\n if (process.env.NODE_ENV === 'development') {\n try {\n if (device === 'pointer' && config.preventScrollDelay === undefined) {\n const currentTarget = 'uv' in event ? event.sourceEvent.currentTarget : event.currentTarget;\n const style = window.getComputedStyle(currentTarget);\n if (style.touchAction === 'auto') {\n console.warn(`[@use-gesture]: The drag target has its \\`touch-action\\` style property set to \\`auto\\`. It is recommended to add \\`touch-action: 'none'\\` so that the drag gesture behaves correctly on touch-enabled devices. For more information read this: https://use-gesture.netlify.app/docs/extras/#touch-action.\\n\\nThis message will only show in development mode. It won't appear in production. If this is intended, you can ignore it.`, currentTarget);\n }\n }\n } catch (_unused2) {}\n }\n if (config.pointerLock) {\n event.currentTarget.requestPointerLock();\n }\n if (!config.pointerCapture) {\n this.eventStore.add(this.sharedConfig.window, device, 'change', this.pointerMove.bind(this));\n this.eventStore.add(this.sharedConfig.window, device, 'end', this.pointerUp.bind(this));\n this.eventStore.add(this.sharedConfig.window, device, 'cancel', this.pointerUp.bind(this));\n }\n }\n pointerClean() {\n if (this.config.pointerLock && document.pointerLockElement === this.state.currentTarget) {\n document.exitPointerLock();\n }\n }\n preventScroll(event) {\n if (this.state._preventScroll && event.cancelable) {\n event.preventDefault();\n }\n }\n setupScrollPrevention(event) {\n this.state._preventScroll = false;\n persistEvent(event);\n const remove = this.eventStore.add(this.sharedConfig.window, 'touch', 'change', this.preventScroll.bind(this), {\n passive: false\n });\n this.eventStore.add(this.sharedConfig.window, 'touch', 'end', remove);\n this.eventStore.add(this.sharedConfig.window, 'touch', 'cancel', remove);\n this.timeoutStore.add('startPointerDrag', this.startPointerDrag.bind(this), this.config.preventScrollDelay, event);\n }\n setupDelayTrigger(event) {\n this.state._delayed = true;\n this.timeoutStore.add('dragDelay', () => {\n this.state._step = [0, 0];\n this.startPointerDrag(event);\n }, this.config.delay);\n }\n keyDown(event) {\n const deltaFn = KEYS_DELTA_MAP[event.key];\n if (deltaFn) {\n const state = this.state;\n const factor = event.shiftKey ? 10 : event.altKey ? 0.1 : 1;\n this.start(event);\n state._delta = deltaFn(this.config.keyboardDisplacement, factor);\n state._keyboardActive = true;\n V.addTo(state._movement, state._delta);\n this.compute(event);\n this.emit();\n }\n }\n keyUp(event) {\n if (!(event.key in KEYS_DELTA_MAP)) return;\n this.state._keyboardActive = false;\n this.setActive();\n this.compute(event);\n this.emit();\n }\n bind(bindFunction) {\n const device = this.config.device;\n bindFunction(device, 'start', this.pointerDown.bind(this));\n if (this.config.pointerCapture) {\n bindFunction(device, 'change', this.pointerMove.bind(this));\n bindFunction(device, 'end', this.pointerUp.bind(this));\n bindFunction(device, 'cancel', this.pointerUp.bind(this));\n bindFunction('lostPointerCapture', '', this.pointerUp.bind(this));\n }\n if (this.config.keys) {\n bindFunction('key', 'down', this.keyDown.bind(this));\n bindFunction('key', 'up', this.keyUp.bind(this));\n }\n if (this.config.filterTaps) {\n bindFunction('click', '', this.pointerClick.bind(this), {\n capture: true,\n passive: false\n });\n }\n }\n}\nfunction persistEvent(event) {\n 'persist' in event && typeof event.persist === 'function' && event.persist();\n}\n\nconst isBrowser = typeof window !== 'undefined' && window.document && window.document.createElement;\nfunction supportsTouchEvents() {\n return isBrowser && 'ontouchstart' in window;\n}\nfunction isTouchScreen() {\n return supportsTouchEvents() || isBrowser && window.navigator.maxTouchPoints > 1;\n}\nfunction supportsPointerEvents() {\n return isBrowser && 'onpointerdown' in window;\n}\nfunction supportsPointerLock() {\n return isBrowser && 'exitPointerLock' in window.document;\n}\nfunction supportsGestureEvents() {\n try {\n return 'constructor' in GestureEvent;\n } catch (e) {\n return false;\n }\n}\nconst SUPPORT = {\n isBrowser,\n gesture: supportsGestureEvents(),\n touch: supportsTouchEvents(),\n touchscreen: isTouchScreen(),\n pointer: supportsPointerEvents(),\n pointerLock: supportsPointerLock()\n};\n\nconst DEFAULT_PREVENT_SCROLL_DELAY = 250;\nconst DEFAULT_DRAG_DELAY = 180;\nconst DEFAULT_SWIPE_VELOCITY = 0.5;\nconst DEFAULT_SWIPE_DISTANCE = 50;\nconst DEFAULT_SWIPE_DURATION = 250;\nconst DEFAULT_KEYBOARD_DISPLACEMENT = 10;\nconst DEFAULT_DRAG_AXIS_THRESHOLD = {\n mouse: 0,\n touch: 0,\n pen: 8\n};\nconst dragConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n device(_v, _k, {\n pointer: {\n touch = false,\n lock = false,\n mouse = false\n } = {}\n }) {\n this.pointerLock = lock && SUPPORT.pointerLock;\n if (SUPPORT.touch && touch) return 'touch';\n if (this.pointerLock) return 'mouse';\n if (SUPPORT.pointer && !mouse) return 'pointer';\n if (SUPPORT.touch) return 'touch';\n return 'mouse';\n },\n preventScrollAxis(value, _k, {\n preventScroll\n }) {\n this.preventScrollDelay = typeof preventScroll === 'number' ? preventScroll : preventScroll || preventScroll === undefined && value ? DEFAULT_PREVENT_SCROLL_DELAY : undefined;\n if (!SUPPORT.touchscreen || preventScroll === false) return undefined;\n return value ? value : preventScroll !== undefined ? 'y' : undefined;\n },\n pointerCapture(_v, _k, {\n pointer: {\n capture = true,\n buttons = 1,\n keys = true\n } = {}\n }) {\n this.pointerButtons = buttons;\n this.keys = keys;\n return !this.pointerLock && this.device === 'pointer' && capture;\n },\n threshold(value, _k, {\n filterTaps = false,\n tapsThreshold = 3,\n axis = undefined\n }) {\n const threshold = V.toVector(value, filterTaps ? tapsThreshold : axis ? 1 : 0);\n this.filterTaps = filterTaps;\n this.tapsThreshold = tapsThreshold;\n return threshold;\n },\n swipe({\n velocity = DEFAULT_SWIPE_VELOCITY,\n distance = DEFAULT_SWIPE_DISTANCE,\n duration = DEFAULT_SWIPE_DURATION\n } = {}) {\n return {\n velocity: this.transform(V.toVector(velocity)),\n distance: this.transform(V.toVector(distance)),\n duration\n };\n },\n delay(value = 0) {\n switch (value) {\n case true:\n return DEFAULT_DRAG_DELAY;\n case false:\n return 0;\n default:\n return value;\n }\n },\n axisThreshold(value) {\n if (!value) return DEFAULT_DRAG_AXIS_THRESHOLD;\n return _objectSpread2(_objectSpread2({}, DEFAULT_DRAG_AXIS_THRESHOLD), value);\n },\n keyboardDisplacement(value = DEFAULT_KEYBOARD_DISPLACEMENT) {\n return value;\n }\n});\nif (process.env.NODE_ENV === 'development') {\n Object.assign(dragConfigResolver, {\n useTouch(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`useTouch\\` option has been renamed to \\`pointer.touch\\`. Use it as in \\`{ pointer: { touch: true } }\\`.`);\n }\n return NaN;\n },\n experimental_preventWindowScrollY(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`experimental_preventWindowScrollY\\` option has been renamed to \\`preventScroll\\`.`);\n }\n return NaN;\n },\n swipeVelocity(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeVelocity\\` option has been renamed to \\`swipe.velocity\\`. Use it as in \\`{ swipe: { velocity: 0.5 } }\\`.`);\n }\n return NaN;\n },\n swipeDistance(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeDistance\\` option has been renamed to \\`swipe.distance\\`. Use it as in \\`{ swipe: { distance: 50 } }\\`.`);\n }\n return NaN;\n },\n swipeDuration(value) {\n if (value !== undefined) {\n throw Error(`[@use-gesture]: \\`swipeDuration\\` option has been renamed to \\`swipe.duration\\`. Use it as in \\`{ swipe: { duration: 250 } }\\`.`);\n }\n return NaN;\n }\n });\n}\n\nfunction clampStateInternalMovementToBounds(state) {\n const [ox, oy] = state.overflow;\n const [dx, dy] = state._delta;\n const [dirx, diry] = state._direction;\n if (ox < 0 && dx > 0 && dirx < 0 || ox > 0 && dx < 0 && dirx > 0) {\n state._movement[0] = state._movementBound[0];\n }\n if (oy < 0 && dy > 0 && diry < 0 || oy > 0 && dy < 0 && diry > 0) {\n state._movement[1] = state._movementBound[1];\n }\n}\n\nconst SCALE_ANGLE_RATIO_INTENT_DEG = 30;\nconst PINCH_WHEEL_RATIO = 100;\nclass PinchEngine extends Engine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'pinching');\n _defineProperty(this, \"aliasKey\", 'da');\n }\n init() {\n this.state.offset = [1, 0];\n this.state.lastOffset = [1, 0];\n this.state._pointerEvents = new Map();\n }\n reset() {\n super.reset();\n const state = this.state;\n state._touchIds = [];\n state.canceled = false;\n state.cancel = this.cancel.bind(this);\n state.turns = 0;\n }\n computeOffset() {\n const {\n type,\n movement,\n lastOffset\n } = this.state;\n if (type === 'wheel') {\n this.state.offset = V.add(movement, lastOffset);\n } else {\n this.state.offset = [(1 + movement[0]) * lastOffset[0], movement[1] + lastOffset[1]];\n }\n }\n computeMovement() {\n const {\n offset,\n lastOffset\n } = this.state;\n this.state.movement = [offset[0] / lastOffset[0], offset[1] - lastOffset[1]];\n }\n axisIntent() {\n const state = this.state;\n const [_m0, _m1] = state._movement;\n if (!state.axis) {\n const axisMovementDifference = Math.abs(_m0) * SCALE_ANGLE_RATIO_INTENT_DEG - Math.abs(_m1);\n if (axisMovementDifference < 0) state.axis = 'angle';else if (axisMovementDifference > 0) state.axis = 'scale';\n }\n }\n restrictToAxis(v) {\n if (this.config.lockDirection) {\n if (this.state.axis === 'scale') v[1] = 0;else if (this.state.axis === 'angle') v[0] = 0;\n }\n }\n cancel() {\n const state = this.state;\n if (state.canceled) return;\n setTimeout(() => {\n state.canceled = true;\n state._active = false;\n this.compute();\n this.emit();\n }, 0);\n }\n touchStart(event) {\n this.ctrl.setEventIds(event);\n const state = this.state;\n const ctrlTouchIds = this.ctrl.touchIds;\n if (state._active) {\n if (state._touchIds.every(id => ctrlTouchIds.has(id))) return;\n }\n if (ctrlTouchIds.size < 2) return;\n this.start(event);\n state._touchIds = Array.from(ctrlTouchIds).slice(0, 2);\n const payload = touchDistanceAngle(event, state._touchIds);\n if (!payload) return;\n this.pinchStart(event, payload);\n }\n pointerStart(event) {\n if (event.buttons != null && event.buttons % 2 !== 1) return;\n this.ctrl.setEventIds(event);\n event.target.setPointerCapture(event.pointerId);\n const state = this.state;\n const _pointerEvents = state._pointerEvents;\n const ctrlPointerIds = this.ctrl.pointerIds;\n if (state._active) {\n if (Array.from(_pointerEvents.keys()).every(id => ctrlPointerIds.has(id))) return;\n }\n if (_pointerEvents.size < 2) {\n _pointerEvents.set(event.pointerId, event);\n }\n if (state._pointerEvents.size < 2) return;\n this.start(event);\n const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n if (!payload) return;\n this.pinchStart(event, payload);\n }\n pinchStart(event, payload) {\n const state = this.state;\n state.origin = payload.origin;\n this.computeValues([payload.distance, payload.angle]);\n this.computeInitial();\n this.compute(event);\n this.emit();\n }\n touchMove(event) {\n if (!this.state._active) return;\n const payload = touchDistanceAngle(event, this.state._touchIds);\n if (!payload) return;\n this.pinchMove(event, payload);\n }\n pointerMove(event) {\n const _pointerEvents = this.state._pointerEvents;\n if (_pointerEvents.has(event.pointerId)) {\n _pointerEvents.set(event.pointerId, event);\n }\n if (!this.state._active) return;\n const payload = distanceAngle(...Array.from(_pointerEvents.values()));\n if (!payload) return;\n this.pinchMove(event, payload);\n }\n pinchMove(event, payload) {\n const state = this.state;\n const prev_a = state._values[1];\n const delta_a = payload.angle - prev_a;\n let delta_turns = 0;\n if (Math.abs(delta_a) > 270) delta_turns += Math.sign(delta_a);\n this.computeValues([payload.distance, payload.angle - 360 * delta_turns]);\n state.origin = payload.origin;\n state.turns = delta_turns;\n state._movement = [state._values[0] / state._initial[0] - 1, state._values[1] - state._initial[1]];\n this.compute(event);\n this.emit();\n }\n touchEnd(event) {\n this.ctrl.setEventIds(event);\n if (!this.state._active) return;\n if (this.state._touchIds.some(id => !this.ctrl.touchIds.has(id))) {\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n }\n pointerEnd(event) {\n const state = this.state;\n this.ctrl.setEventIds(event);\n try {\n event.target.releasePointerCapture(event.pointerId);\n } catch (_unused) {}\n if (state._pointerEvents.has(event.pointerId)) {\n state._pointerEvents.delete(event.pointerId);\n }\n if (!state._active) return;\n if (state._pointerEvents.size < 2) {\n state._active = false;\n this.compute(event);\n this.emit();\n }\n }\n gestureStart(event) {\n if (event.cancelable) event.preventDefault();\n const state = this.state;\n if (state._active) return;\n this.start(event);\n this.computeValues([event.scale, event.rotation]);\n state.origin = [event.clientX, event.clientY];\n this.compute(event);\n this.emit();\n }\n gestureMove(event) {\n if (event.cancelable) event.preventDefault();\n if (!this.state._active) return;\n const state = this.state;\n this.computeValues([event.scale, event.rotation]);\n state.origin = [event.clientX, event.clientY];\n const _previousMovement = state._movement;\n state._movement = [event.scale - 1, event.rotation];\n state._delta = V.sub(state._movement, _previousMovement);\n this.compute(event);\n this.emit();\n }\n gestureEnd(event) {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n wheel(event) {\n const modifierKey = this.config.modifierKey;\n if (modifierKey && (Array.isArray(modifierKey) ? !modifierKey.find(k => event[k]) : !event[modifierKey])) return;\n if (!this.state._active) this.wheelStart(event);else this.wheelChange(event);\n this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n }\n wheelStart(event) {\n this.start(event);\n this.wheelChange(event);\n }\n wheelChange(event) {\n const isR3f = ('uv' in event);\n if (!isR3f) {\n if (event.cancelable) {\n event.preventDefault();\n }\n if (process.env.NODE_ENV === 'development' && !event.defaultPrevented) {\n console.warn(`[@use-gesture]: To properly support zoom on trackpads, try using the \\`target\\` option.\\n\\nThis message will only appear in development mode.`);\n }\n }\n const state = this.state;\n state._delta = [-wheelValues(event)[1] / PINCH_WHEEL_RATIO * state.offset[0], 0];\n V.addTo(state._movement, state._delta);\n clampStateInternalMovementToBounds(state);\n this.state.origin = [event.clientX, event.clientY];\n this.compute(event);\n this.emit();\n }\n wheelEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n bind(bindFunction) {\n const device = this.config.device;\n if (!!device) {\n bindFunction(device, 'start', this[device + 'Start'].bind(this));\n bindFunction(device, 'change', this[device + 'Move'].bind(this));\n bindFunction(device, 'end', this[device + 'End'].bind(this));\n bindFunction(device, 'cancel', this[device + 'End'].bind(this));\n bindFunction('lostPointerCapture', '', this[device + 'End'].bind(this));\n }\n if (this.config.pinchOnWheel) {\n bindFunction('wheel', '', this.wheel.bind(this), {\n passive: false\n });\n }\n }\n}\n\nconst pinchConfigResolver = _objectSpread2(_objectSpread2({}, commonConfigResolver), {}, {\n device(_v, _k, {\n shared,\n pointer: {\n touch = false\n } = {}\n }) {\n const sharedConfig = shared;\n if (sharedConfig.target && !SUPPORT.touch && SUPPORT.gesture) return 'gesture';\n if (SUPPORT.touch && touch) return 'touch';\n if (SUPPORT.touchscreen) {\n if (SUPPORT.pointer) return 'pointer';\n if (SUPPORT.touch) return 'touch';\n }\n },\n bounds(_v, _k, {\n scaleBounds = {},\n angleBounds = {}\n }) {\n const _scaleBounds = state => {\n const D = assignDefault(call(scaleBounds, state), {\n min: -Infinity,\n max: Infinity\n });\n return [D.min, D.max];\n };\n const _angleBounds = state => {\n const A = assignDefault(call(angleBounds, state), {\n min: -Infinity,\n max: Infinity\n });\n return [A.min, A.max];\n };\n if (typeof scaleBounds !== 'function' && typeof angleBounds !== 'function') return [_scaleBounds(), _angleBounds()];\n return state => [_scaleBounds(state), _angleBounds(state)];\n },\n threshold(value, _k, config) {\n this.lockDirection = config.axis === 'lock';\n const threshold = V.toVector(value, this.lockDirection ? [0.1, 3] : 0);\n return threshold;\n },\n modifierKey(value) {\n if (value === undefined) return 'ctrlKey';\n return value;\n },\n pinchOnWheel(value = true) {\n return value;\n }\n});\n\nclass MoveEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'moving');\n }\n move(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n if (!this.state._active) this.moveStart(event);else this.moveChange(event);\n this.timeoutStore.add('moveEnd', this.moveEnd.bind(this));\n }\n moveStart(event) {\n this.start(event);\n this.computeValues(pointerValues(event));\n this.compute(event);\n this.computeInitial();\n this.emit();\n }\n moveChange(event) {\n if (!this.state._active) return;\n const values = pointerValues(event);\n const state = this.state;\n state._delta = V.sub(values, state._values);\n V.addTo(state._movement, state._delta);\n this.computeValues(values);\n this.compute(event);\n this.emit();\n }\n moveEnd(event) {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute(event);\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('pointer', 'change', this.move.bind(this));\n bindFunction('pointer', 'leave', this.moveEnd.bind(this));\n }\n}\n\nconst moveConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n mouseOnly: (value = true) => value\n});\n\nclass ScrollEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'scrolling');\n }\n scroll(event) {\n if (!this.state._active) this.start(event);\n this.scrollChange(event);\n this.timeoutStore.add('scrollEnd', this.scrollEnd.bind(this));\n }\n scrollChange(event) {\n if (event.cancelable) event.preventDefault();\n const state = this.state;\n const values = scrollValues(event);\n state._delta = V.sub(values, state._values);\n V.addTo(state._movement, state._delta);\n this.computeValues(values);\n this.compute(event);\n this.emit();\n }\n scrollEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('scroll', '', this.scroll.bind(this));\n }\n}\n\nconst scrollConfigResolver = coordinatesConfigResolver;\n\nclass WheelEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'wheeling');\n }\n wheel(event) {\n if (!this.state._active) this.start(event);\n this.wheelChange(event);\n this.timeoutStore.add('wheelEnd', this.wheelEnd.bind(this));\n }\n wheelChange(event) {\n const state = this.state;\n state._delta = wheelValues(event);\n V.addTo(state._movement, state._delta);\n clampStateInternalMovementToBounds(state);\n this.compute(event);\n this.emit();\n }\n wheelEnd() {\n if (!this.state._active) return;\n this.state._active = false;\n this.compute();\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('wheel', '', this.wheel.bind(this));\n }\n}\n\nconst wheelConfigResolver = coordinatesConfigResolver;\n\nclass HoverEngine extends CoordinatesEngine {\n constructor(...args) {\n super(...args);\n _defineProperty(this, \"ingKey\", 'hovering');\n }\n enter(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n this.start(event);\n this.computeValues(pointerValues(event));\n this.compute(event);\n this.emit();\n }\n leave(event) {\n if (this.config.mouseOnly && event.pointerType !== 'mouse') return;\n const state = this.state;\n if (!state._active) return;\n state._active = false;\n const values = pointerValues(event);\n state._movement = state._delta = V.sub(values, state._values);\n this.computeValues(values);\n this.compute(event);\n state.delta = state.movement;\n this.emit();\n }\n bind(bindFunction) {\n bindFunction('pointer', 'enter', this.enter.bind(this));\n bindFunction('pointer', 'leave', this.leave.bind(this));\n }\n}\n\nconst hoverConfigResolver = _objectSpread2(_objectSpread2({}, coordinatesConfigResolver), {}, {\n mouseOnly: (value = true) => value\n});\n\nconst EngineMap = new Map();\nconst ConfigResolverMap = new Map();\nfunction registerAction(action) {\n EngineMap.set(action.key, action.engine);\n ConfigResolverMap.set(action.key, action.resolver);\n}\nconst dragAction = {\n key: 'drag',\n engine: DragEngine,\n resolver: dragConfigResolver\n};\nconst hoverAction = {\n key: 'hover',\n engine: HoverEngine,\n resolver: hoverConfigResolver\n};\nconst moveAction = {\n key: 'move',\n engine: MoveEngine,\n resolver: moveConfigResolver\n};\nconst pinchAction = {\n key: 'pinch',\n engine: PinchEngine,\n resolver: pinchConfigResolver\n};\nconst scrollAction = {\n key: 'scroll',\n engine: ScrollEngine,\n resolver: scrollConfigResolver\n};\nconst wheelAction = {\n key: 'wheel',\n engine: WheelEngine,\n resolver: wheelConfigResolver\n};\n\nexport { ConfigResolverMap as C, EngineMap as E, SUPPORT as S, _objectSpread2 as _, _defineProperty as a, touchIds as b, chain as c, toHandlerProp as d, dragAction as e, pinchAction as f, hoverAction as h, isTouch as i, moveAction as m, parseProp as p, registerAction as r, scrollAction as s, toDomEventType as t, wheelAction as w };\n","import { S as SUPPORT, C as ConfigResolverMap, _ as _objectSpread2, a as _defineProperty, t as toDomEventType, i as isTouch, b as touchIds, E as EngineMap, c as chain, p as parseProp, d as toHandlerProp } from './actions-fe213e88.esm.js';\nimport './maths-0ab39ae9.esm.js';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\n\nconst sharedConfigResolver = {\n target(value) {\n if (value) {\n return () => 'current' in value ? value.current : value;\n }\n return undefined;\n },\n enabled(value = true) {\n return value;\n },\n window(value = SUPPORT.isBrowser ? window : undefined) {\n return value;\n },\n eventOptions({\n passive = true,\n capture = false\n } = {}) {\n return {\n passive,\n capture\n };\n },\n transform(value) {\n return value;\n }\n};\n\nconst _excluded = [\"target\", \"eventOptions\", \"window\", \"enabled\", \"transform\"];\nfunction resolveWith(config = {}, resolvers) {\n const result = {};\n for (const [key, resolver] of Object.entries(resolvers)) {\n switch (typeof resolver) {\n case 'function':\n if (process.env.NODE_ENV === 'development') {\n const r = resolver.call(result, config[key], key, config);\n if (!Number.isNaN(r)) result[key] = r;\n } else {\n result[key] = resolver.call(result, config[key], key, config);\n }\n break;\n case 'object':\n result[key] = resolveWith(config[key], resolver);\n break;\n case 'boolean':\n if (resolver) result[key] = config[key];\n break;\n }\n }\n return result;\n}\nfunction parse(newConfig, gestureKey, _config = {}) {\n const _ref = newConfig,\n {\n target,\n eventOptions,\n window,\n enabled,\n transform\n } = _ref,\n rest = _objectWithoutProperties(_ref, _excluded);\n _config.shared = resolveWith({\n target,\n eventOptions,\n window,\n enabled,\n transform\n }, sharedConfigResolver);\n if (gestureKey) {\n const resolver = ConfigResolverMap.get(gestureKey);\n _config[gestureKey] = resolveWith(_objectSpread2({\n shared: _config.shared\n }, rest), resolver);\n } else {\n for (const key in rest) {\n const resolver = ConfigResolverMap.get(key);\n if (resolver) {\n _config[key] = resolveWith(_objectSpread2({\n shared: _config.shared\n }, rest[key]), resolver);\n } else if (process.env.NODE_ENV === 'development') {\n if (!['drag', 'pinch', 'scroll', 'wheel', 'move', 'hover'].includes(key)) {\n if (key === 'domTarget') {\n throw Error(`[@use-gesture]: \\`domTarget\\` option has been renamed to \\`target\\`.`);\n }\n console.warn(`[@use-gesture]: Unknown config key \\`${key}\\` was used. Please read the documentation for further information.`);\n }\n }\n }\n }\n return _config;\n}\n\nclass EventStore {\n constructor(ctrl, gestureKey) {\n _defineProperty(this, \"_listeners\", new Set());\n this._ctrl = ctrl;\n this._gestureKey = gestureKey;\n }\n add(element, device, action, handler, options) {\n const listeners = this._listeners;\n const type = toDomEventType(device, action);\n const _options = this._gestureKey ? this._ctrl.config[this._gestureKey].eventOptions : {};\n const eventOptions = _objectSpread2(_objectSpread2({}, _options), options);\n element.addEventListener(type, handler, eventOptions);\n const remove = () => {\n element.removeEventListener(type, handler, eventOptions);\n listeners.delete(remove);\n };\n listeners.add(remove);\n return remove;\n }\n clean() {\n this._listeners.forEach(remove => remove());\n this._listeners.clear();\n }\n}\n\nclass TimeoutStore {\n constructor() {\n _defineProperty(this, \"_timeouts\", new Map());\n }\n add(key, callback, ms = 140, ...args) {\n this.remove(key);\n this._timeouts.set(key, window.setTimeout(callback, ms, ...args));\n }\n remove(key) {\n const timeout = this._timeouts.get(key);\n if (timeout) window.clearTimeout(timeout);\n }\n clean() {\n this._timeouts.forEach(timeout => void window.clearTimeout(timeout));\n this._timeouts.clear();\n }\n}\n\nclass Controller {\n constructor(handlers) {\n _defineProperty(this, \"gestures\", new Set());\n _defineProperty(this, \"_targetEventStore\", new EventStore(this));\n _defineProperty(this, \"gestureEventStores\", {});\n _defineProperty(this, \"gestureTimeoutStores\", {});\n _defineProperty(this, \"handlers\", {});\n _defineProperty(this, \"config\", {});\n _defineProperty(this, \"pointerIds\", new Set());\n _defineProperty(this, \"touchIds\", new Set());\n _defineProperty(this, \"state\", {\n shared: {\n shiftKey: false,\n metaKey: false,\n ctrlKey: false,\n altKey: false\n }\n });\n resolveGestures(this, handlers);\n }\n setEventIds(event) {\n if (isTouch(event)) {\n this.touchIds = new Set(touchIds(event));\n return this.touchIds;\n } else if ('pointerId' in event) {\n if (event.type === 'pointerup' || event.type === 'pointercancel') this.pointerIds.delete(event.pointerId);else if (event.type === 'pointerdown') this.pointerIds.add(event.pointerId);\n return this.pointerIds;\n }\n }\n applyHandlers(handlers, nativeHandlers) {\n this.handlers = handlers;\n this.nativeHandlers = nativeHandlers;\n }\n applyConfig(config, gestureKey) {\n this.config = parse(config, gestureKey, this.config);\n }\n clean() {\n this._targetEventStore.clean();\n for (const key of this.gestures) {\n this.gestureEventStores[key].clean();\n this.gestureTimeoutStores[key].clean();\n }\n }\n effect() {\n if (this.config.shared.target) this.bind();\n return () => this._targetEventStore.clean();\n }\n bind(...args) {\n const sharedConfig = this.config.shared;\n const props = {};\n let target;\n if (sharedConfig.target) {\n target = sharedConfig.target();\n if (!target) return;\n }\n if (sharedConfig.enabled) {\n for (const gestureKey of this.gestures) {\n const gestureConfig = this.config[gestureKey];\n const bindFunction = bindToProps(props, gestureConfig.eventOptions, !!target);\n if (gestureConfig.enabled) {\n const Engine = EngineMap.get(gestureKey);\n new Engine(this, args, gestureKey).bind(bindFunction);\n }\n }\n const nativeBindFunction = bindToProps(props, sharedConfig.eventOptions, !!target);\n for (const eventKey in this.nativeHandlers) {\n nativeBindFunction(eventKey, '', event => this.nativeHandlers[eventKey](_objectSpread2(_objectSpread2({}, this.state.shared), {}, {\n event,\n args\n })), undefined, true);\n }\n }\n for (const handlerProp in props) {\n props[handlerProp] = chain(...props[handlerProp]);\n }\n if (!target) return props;\n for (const handlerProp in props) {\n const {\n device,\n capture,\n passive\n } = parseProp(handlerProp);\n this._targetEventStore.add(target, device, '', props[handlerProp], {\n capture,\n passive\n });\n }\n }\n}\nfunction setupGesture(ctrl, gestureKey) {\n ctrl.gestures.add(gestureKey);\n ctrl.gestureEventStores[gestureKey] = new EventStore(ctrl, gestureKey);\n ctrl.gestureTimeoutStores[gestureKey] = new TimeoutStore();\n}\nfunction resolveGestures(ctrl, internalHandlers) {\n if (internalHandlers.drag) setupGesture(ctrl, 'drag');\n if (internalHandlers.wheel) setupGesture(ctrl, 'wheel');\n if (internalHandlers.scroll) setupGesture(ctrl, 'scroll');\n if (internalHandlers.move) setupGesture(ctrl, 'move');\n if (internalHandlers.pinch) setupGesture(ctrl, 'pinch');\n if (internalHandlers.hover) setupGesture(ctrl, 'hover');\n}\nconst bindToProps = (props, eventOptions, withPassiveOption) => (device, action, handler, options = {}, isNative = false) => {\n var _options$capture, _options$passive;\n const capture = (_options$capture = options.capture) !== null && _options$capture !== void 0 ? _options$capture : eventOptions.capture;\n const passive = (_options$passive = options.passive) !== null && _options$passive !== void 0 ? _options$passive : eventOptions.passive;\n let handlerProp = isNative ? device : toHandlerProp(device, action, capture);\n if (withPassiveOption && passive) handlerProp += 'Passive';\n props[handlerProp] = props[handlerProp] || [];\n props[handlerProp].push(handler);\n};\n\nconst RE_NOT_NATIVE = /^on(Drag|Wheel|Scroll|Move|Pinch|Hover)/;\nfunction sortHandlers(_handlers) {\n const native = {};\n const handlers = {};\n const actions = new Set();\n for (let key in _handlers) {\n if (RE_NOT_NATIVE.test(key)) {\n actions.add(RegExp.lastMatch);\n handlers[key] = _handlers[key];\n } else {\n native[key] = _handlers[key];\n }\n }\n return [handlers, native, actions];\n}\nfunction registerGesture(actions, handlers, handlerKey, key, internalHandlers, config) {\n if (!actions.has(handlerKey)) return;\n if (!EngineMap.has(key)) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(`[@use-gesture]: You've created a custom handler that that uses the \\`${key}\\` gesture but isn't properly configured.\\n\\nPlease add \\`${key}Action\\` when creating your handler.`);\n }\n return;\n }\n const startKey = handlerKey + 'Start';\n const endKey = handlerKey + 'End';\n const fn = state => {\n let memo = undefined;\n if (state.first && startKey in handlers) handlers[startKey](state);\n if (handlerKey in handlers) memo = handlers[handlerKey](state);\n if (state.last && endKey in handlers) handlers[endKey](state);\n return memo;\n };\n internalHandlers[key] = fn;\n config[key] = config[key] || {};\n}\nfunction parseMergedHandlers(mergedHandlers, mergedConfig) {\n const [handlers, nativeHandlers, actions] = sortHandlers(mergedHandlers);\n const internalHandlers = {};\n registerGesture(actions, handlers, 'onDrag', 'drag', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onWheel', 'wheel', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onScroll', 'scroll', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onPinch', 'pinch', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onMove', 'move', internalHandlers, mergedConfig);\n registerGesture(actions, handlers, 'onHover', 'hover', internalHandlers, mergedConfig);\n return {\n handlers: internalHandlers,\n config: mergedConfig,\n nativeHandlers\n };\n}\n\nexport { Controller, parseMergedHandlers };\n","import { registerAction, dragAction, pinchAction, wheelAction, scrollAction, moveAction, hoverAction } from '@use-gesture/core/actions';\nexport * from '@use-gesture/core/actions';\nimport { Controller, parseMergedHandlers } from '@use-gesture/core';\nexport * from '@use-gesture/core/utils';\nexport * from '@use-gesture/core/types';\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _defineProperty(obj, key, value) {\n key = _toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n _defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\n\nclass Recognizer {\n constructor(target, handlers, config, gestureKey, nativeHandlers) {\n this._target = target;\n this._gestureKey = gestureKey;\n this._ctrl = new Controller(handlers);\n this._ctrl.applyHandlers(handlers, nativeHandlers);\n this._ctrl.applyConfig(_objectSpread2(_objectSpread2({}, config), {}, {\n target\n }), gestureKey);\n this._ctrl.effect();\n }\n destroy() {\n this._ctrl.clean();\n }\n setConfig(config) {\n this._ctrl.clean();\n this._ctrl.applyConfig(_objectSpread2(_objectSpread2({}, config), {}, {\n target: this._target\n }), this._gestureKey);\n this._ctrl.effect();\n }\n}\n\nconst DragGesture = function DragGesture(target, handler, config) {\n registerAction(dragAction);\n return new Recognizer(target, {\n drag: handler\n }, config || {}, 'drag');\n};\n\nconst PinchGesture = function PinchGesture(target, handler, config) {\n registerAction(pinchAction);\n return new Recognizer(target, {\n pinch: handler\n }, config || {}, 'pinch');\n};\n\nconst WheelGesture = function WheelGesture(target, handler, config) {\n registerAction(wheelAction);\n return new Recognizer(target, {\n wheel: handler\n }, config || {}, 'wheel');\n};\n\nconst ScrollGesture = function ScrollGesture(target, handler, config) {\n registerAction(scrollAction);\n return new Recognizer(target, {\n scroll: handler\n }, config || {}, 'scroll');\n};\n\nconst MoveGesture = function MoveGesture(target, handler, config) {\n registerAction(moveAction);\n return new Recognizer(target, {\n move: handler\n }, config || {}, 'move');\n};\n\nconst HoverGesture = function HoverGesture(target, handler, config) {\n registerAction(hoverAction);\n return new Recognizer(target, {\n hover: handler\n }, config || {}, 'hover');\n};\n\nfunction createGesture(actions) {\n actions.forEach(registerAction);\n return function (target, _handlers, _config) {\n const {\n handlers,\n nativeHandlers,\n config\n } = parseMergedHandlers(_handlers, _config || {});\n return new Recognizer(target, handlers, config, undefined, nativeHandlers);\n };\n}\n\nconst Gesture = function Gesture(target, handlers, config) {\n const gestureFunction = createGesture([dragAction, pinchAction, scrollAction, wheelAction, moveAction, hoverAction]);\n return gestureFunction(target, handlers, config || {});\n};\n\nexport { DragGesture, Gesture, HoverGesture, MoveGesture, PinchGesture, ScrollGesture, WheelGesture, createGesture };\n","/*\n * anime.js v3.2.1\n * (c) 2020 Julian Garnier\n * Released under the MIT license\n * animejs.com\n */\n\n// Defaults\n\nvar defaultInstanceSettings = {\n update: null,\n begin: null,\n loopBegin: null,\n changeBegin: null,\n change: null,\n changeComplete: null,\n loopComplete: null,\n complete: null,\n loop: 1,\n direction: 'normal',\n autoplay: true,\n timelineOffset: 0\n};\n\nvar defaultTweenSettings = {\n duration: 1000,\n delay: 0,\n endDelay: 0,\n easing: 'easeOutElastic(1, .5)',\n round: 0\n};\n\nvar validTransforms = ['translateX', 'translateY', 'translateZ', 'rotate', 'rotateX', 'rotateY', 'rotateZ', 'scale', 'scaleX', 'scaleY', 'scaleZ', 'skew', 'skewX', 'skewY', 'perspective', 'matrix', 'matrix3d'];\n\n// Caching\n\nvar cache = {\n CSS: {},\n springs: {}\n};\n\n// Utils\n\nfunction minMax(val, min, max) {\n return Math.min(Math.max(val, min), max);\n}\n\nfunction stringContains(str, text) {\n return str.indexOf(text) > -1;\n}\n\nfunction applyArguments(func, args) {\n return func.apply(null, args);\n}\n\nvar is = {\n arr: function (a) { return Array.isArray(a); },\n obj: function (a) { return stringContains(Object.prototype.toString.call(a), 'Object'); },\n pth: function (a) { return is.obj(a) && a.hasOwnProperty('totalLength'); },\n svg: function (a) { return a instanceof SVGElement; },\n inp: function (a) { return a instanceof HTMLInputElement; },\n dom: function (a) { return a.nodeType || is.svg(a); },\n str: function (a) { return typeof a === 'string'; },\n fnc: function (a) { return typeof a === 'function'; },\n und: function (a) { return typeof a === 'undefined'; },\n nil: function (a) { return is.und(a) || a === null; },\n hex: function (a) { return /(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(a); },\n rgb: function (a) { return /^rgb/.test(a); },\n hsl: function (a) { return /^hsl/.test(a); },\n col: function (a) { return (is.hex(a) || is.rgb(a) || is.hsl(a)); },\n key: function (a) { return !defaultInstanceSettings.hasOwnProperty(a) && !defaultTweenSettings.hasOwnProperty(a) && a !== 'targets' && a !== 'keyframes'; },\n};\n\n// Easings\n\nfunction parseEasingParameters(string) {\n var match = /\\(([^)]+)\\)/.exec(string);\n return match ? match[1].split(',').map(function (p) { return parseFloat(p); }) : [];\n}\n\n// Spring solver inspired by Webkit Copyright © 2016 Apple Inc. All rights reserved. https://webkit.org/demos/spring/spring.js\n\nfunction spring(string, duration) {\n\n var params = parseEasingParameters(string);\n var mass = minMax(is.und(params[0]) ? 1 : params[0], .1, 100);\n var stiffness = minMax(is.und(params[1]) ? 100 : params[1], .1, 100);\n var damping = minMax(is.und(params[2]) ? 10 : params[2], .1, 100);\n var velocity = minMax(is.und(params[3]) ? 0 : params[3], .1, 100);\n var w0 = Math.sqrt(stiffness / mass);\n var zeta = damping / (2 * Math.sqrt(stiffness * mass));\n var wd = zeta < 1 ? w0 * Math.sqrt(1 - zeta * zeta) : 0;\n var a = 1;\n var b = zeta < 1 ? (zeta * w0 + -velocity) / wd : -velocity + w0;\n\n function solver(t) {\n var progress = duration ? (duration * t) / 1000 : t;\n if (zeta < 1) {\n progress = Math.exp(-progress * zeta * w0) * (a * Math.cos(wd * progress) + b * Math.sin(wd * progress));\n } else {\n progress = (a + b * progress) * Math.exp(-progress * w0);\n }\n if (t === 0 || t === 1) { return t; }\n return 1 - progress;\n }\n\n function getDuration() {\n var cached = cache.springs[string];\n if (cached) { return cached; }\n var frame = 1/6;\n var elapsed = 0;\n var rest = 0;\n while(true) {\n elapsed += frame;\n if (solver(elapsed) === 1) {\n rest++;\n if (rest >= 16) { break; }\n } else {\n rest = 0;\n }\n }\n var duration = elapsed * frame * 1000;\n cache.springs[string] = duration;\n return duration;\n }\n\n return duration ? solver : getDuration;\n\n}\n\n// Basic steps easing implementation https://developer.mozilla.org/fr/docs/Web/CSS/transition-timing-function\n\nfunction steps(steps) {\n if ( steps === void 0 ) steps = 10;\n\n return function (t) { return Math.ceil((minMax(t, 0.000001, 1)) * steps) * (1 / steps); };\n}\n\n// BezierEasing https://github.com/gre/bezier-easing\n\nvar bezier = (function () {\n\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n\n function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1 }\n function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1 }\n function C(aA1) { return 3.0 * aA1 }\n\n function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT }\n function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1) }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX, currentT, i = 0;\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n if (currentX > 0.0) { aB = currentT; } else { aA = currentT; }\n } while (Math.abs(currentX) > 0.0000001 && ++i < 10);\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < 4; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) { return aGuessT; }\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n function bezier(mX1, mY1, mX2, mY2) {\n\n if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { return; }\n var sampleValues = new Float32Array(kSplineTableSize);\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n for (var i = 0; i < kSplineTableSize; ++i) {\n sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n }\n\n function getTForX(aX) {\n\n var intervalStart = 0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample;\n\n var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= 0.001) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n } else if (initialSlope === 0.0) {\n return guessForT;\n } else {\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n\n }\n\n return function (x) {\n if (mX1 === mY1 && mX2 === mY2) { return x; }\n if (x === 0 || x === 1) { return x; }\n return calcBezier(getTForX(x), mY1, mY2);\n }\n\n }\n\n return bezier;\n\n})();\n\nvar penner = (function () {\n\n // Based on jQuery UI's implemenation of easing equations from Robert Penner (http://www.robertpenner.com/easing)\n\n var eases = { linear: function () { return function (t) { return t; }; } };\n\n var functionEasings = {\n Sine: function () { return function (t) { return 1 - Math.cos(t * Math.PI / 2); }; },\n Circ: function () { return function (t) { return 1 - Math.sqrt(1 - t * t); }; },\n Back: function () { return function (t) { return t * t * (3 * t - 2); }; },\n Bounce: function () { return function (t) {\n var pow2, b = 4;\n while (t < (( pow2 = Math.pow(2, --b)) - 1) / 11) {}\n return 1 / Math.pow(4, 3 - b) - 7.5625 * Math.pow(( pow2 * 3 - 2 ) / 22 - t, 2)\n }; },\n Elastic: function (amplitude, period) {\n if ( amplitude === void 0 ) amplitude = 1;\n if ( period === void 0 ) period = .5;\n\n var a = minMax(amplitude, 1, 10);\n var p = minMax(period, .1, 2);\n return function (t) {\n return (t === 0 || t === 1) ? t : \n -a * Math.pow(2, 10 * (t - 1)) * Math.sin((((t - 1) - (p / (Math.PI * 2) * Math.asin(1 / a))) * (Math.PI * 2)) / p);\n }\n }\n };\n\n var baseEasings = ['Quad', 'Cubic', 'Quart', 'Quint', 'Expo'];\n\n baseEasings.forEach(function (name, i) {\n functionEasings[name] = function () { return function (t) { return Math.pow(t, i + 2); }; };\n });\n\n Object.keys(functionEasings).forEach(function (name) {\n var easeIn = functionEasings[name];\n eases['easeIn' + name] = easeIn;\n eases['easeOut' + name] = function (a, b) { return function (t) { return 1 - easeIn(a, b)(1 - t); }; };\n eases['easeInOut' + name] = function (a, b) { return function (t) { return t < 0.5 ? easeIn(a, b)(t * 2) / 2 : \n 1 - easeIn(a, b)(t * -2 + 2) / 2; }; };\n eases['easeOutIn' + name] = function (a, b) { return function (t) { return t < 0.5 ? (1 - easeIn(a, b)(1 - t * 2)) / 2 : \n (easeIn(a, b)(t * 2 - 1) + 1) / 2; }; };\n });\n\n return eases;\n\n})();\n\nfunction parseEasings(easing, duration) {\n if (is.fnc(easing)) { return easing; }\n var name = easing.split('(')[0];\n var ease = penner[name];\n var args = parseEasingParameters(easing);\n switch (name) {\n case 'spring' : return spring(easing, duration);\n case 'cubicBezier' : return applyArguments(bezier, args);\n case 'steps' : return applyArguments(steps, args);\n default : return applyArguments(ease, args);\n }\n}\n\n// Strings\n\nfunction selectString(str) {\n try {\n var nodes = document.querySelectorAll(str);\n return nodes;\n } catch(e) {\n return;\n }\n}\n\n// Arrays\n\nfunction filterArray(arr, callback) {\n var len = arr.length;\n var thisArg = arguments.length >= 2 ? arguments[1] : void 0;\n var result = [];\n for (var i = 0; i < len; i++) {\n if (i in arr) {\n var val = arr[i];\n if (callback.call(thisArg, val, i, arr)) {\n result.push(val);\n }\n }\n }\n return result;\n}\n\nfunction flattenArray(arr) {\n return arr.reduce(function (a, b) { return a.concat(is.arr(b) ? flattenArray(b) : b); }, []);\n}\n\nfunction toArray(o) {\n if (is.arr(o)) { return o; }\n if (is.str(o)) { o = selectString(o) || o; }\n if (o instanceof NodeList || o instanceof HTMLCollection) { return [].slice.call(o); }\n return [o];\n}\n\nfunction arrayContains(arr, val) {\n return arr.some(function (a) { return a === val; });\n}\n\n// Objects\n\nfunction cloneObject(o) {\n var clone = {};\n for (var p in o) { clone[p] = o[p]; }\n return clone;\n}\n\nfunction replaceObjectProps(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o1) { o[p] = o2.hasOwnProperty(p) ? o2[p] : o1[p]; }\n return o;\n}\n\nfunction mergeObjects(o1, o2) {\n var o = cloneObject(o1);\n for (var p in o2) { o[p] = is.und(o1[p]) ? o2[p] : o1[p]; }\n return o;\n}\n\n// Colors\n\nfunction rgbToRgba(rgbValue) {\n var rgb = /rgb\\((\\d+,\\s*[\\d]+,\\s*[\\d]+)\\)/g.exec(rgbValue);\n return rgb ? (\"rgba(\" + (rgb[1]) + \",1)\") : rgbValue;\n}\n\nfunction hexToRgba(hexValue) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) { return r + r + g + g + b + b; } );\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return (\"rgba(\" + r + \",\" + g + \",\" + b + \",1)\");\n}\n\nfunction hslToRgba(hslValue) {\n var hsl = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(hslValue) || /hsla\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%,\\s*([\\d.]+)\\)/g.exec(hslValue);\n var h = parseInt(hsl[1], 10) / 360;\n var s = parseInt(hsl[2], 10) / 100;\n var l = parseInt(hsl[3], 10) / 100;\n var a = hsl[4] || 1;\n function hue2rgb(p, q, t) {\n if (t < 0) { t += 1; }\n if (t > 1) { t -= 1; }\n if (t < 1/6) { return p + (q - p) * 6 * t; }\n if (t < 1/2) { return q; }\n if (t < 2/3) { return p + (q - p) * (2/3 - t) * 6; }\n return p;\n }\n var r, g, b;\n if (s == 0) {\n r = g = b = l;\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1/3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1/3);\n }\n return (\"rgba(\" + (r * 255) + \",\" + (g * 255) + \",\" + (b * 255) + \",\" + a + \")\");\n}\n\nfunction colorToRgb(val) {\n if (is.rgb(val)) { return rgbToRgba(val); }\n if (is.hex(val)) { return hexToRgba(val); }\n if (is.hsl(val)) { return hslToRgba(val); }\n}\n\n// Units\n\nfunction getUnit(val) {\n var split = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(%|px|pt|em|rem|in|cm|mm|ex|ch|pc|vw|vh|vmin|vmax|deg|rad|turn)?$/.exec(val);\n if (split) { return split[1]; }\n}\n\nfunction getTransformUnit(propName) {\n if (stringContains(propName, 'translate') || propName === 'perspective') { return 'px'; }\n if (stringContains(propName, 'rotate') || stringContains(propName, 'skew')) { return 'deg'; }\n}\n\n// Values\n\nfunction getFunctionValue(val, animatable) {\n if (!is.fnc(val)) { return val; }\n return val(animatable.target, animatable.id, animatable.total);\n}\n\nfunction getAttribute(el, prop) {\n return el.getAttribute(prop);\n}\n\nfunction convertPxToUnit(el, value, unit) {\n var valueUnit = getUnit(value);\n if (arrayContains([unit, 'deg', 'rad', 'turn'], valueUnit)) { return value; }\n var cached = cache.CSS[value + unit];\n if (!is.und(cached)) { return cached; }\n var baseline = 100;\n var tempEl = document.createElement(el.tagName);\n var parentEl = (el.parentNode && (el.parentNode !== document)) ? el.parentNode : document.body;\n parentEl.appendChild(tempEl);\n tempEl.style.position = 'absolute';\n tempEl.style.width = baseline + unit;\n var factor = baseline / tempEl.offsetWidth;\n parentEl.removeChild(tempEl);\n var convertedUnit = factor * parseFloat(value);\n cache.CSS[value + unit] = convertedUnit;\n return convertedUnit;\n}\n\nfunction getCSSValue(el, prop, unit) {\n if (prop in el.style) {\n var uppercasePropName = prop.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n var value = el.style[prop] || getComputedStyle(el).getPropertyValue(uppercasePropName) || '0';\n return unit ? convertPxToUnit(el, value, unit) : value;\n }\n}\n\nfunction getAnimationType(el, prop) {\n if (is.dom(el) && !is.inp(el) && (!is.nil(getAttribute(el, prop)) || (is.svg(el) && el[prop]))) { return 'attribute'; }\n if (is.dom(el) && arrayContains(validTransforms, prop)) { return 'transform'; }\n if (is.dom(el) && (prop !== 'transform' && getCSSValue(el, prop))) { return 'css'; }\n if (el[prop] != null) { return 'object'; }\n}\n\nfunction getElementTransforms(el) {\n if (!is.dom(el)) { return; }\n var str = el.style.transform || '';\n var reg = /(\\w+)\\(([^)]*)\\)/g;\n var transforms = new Map();\n var m; while (m = reg.exec(str)) { transforms.set(m[1], m[2]); }\n return transforms;\n}\n\nfunction getTransformValue(el, propName, animatable, unit) {\n var defaultVal = stringContains(propName, 'scale') ? 1 : 0 + getTransformUnit(propName);\n var value = getElementTransforms(el).get(propName) || defaultVal;\n if (animatable) {\n animatable.transforms.list.set(propName, value);\n animatable.transforms['last'] = propName;\n }\n return unit ? convertPxToUnit(el, value, unit) : value;\n}\n\nfunction getOriginalTargetValue(target, propName, unit, animatable) {\n switch (getAnimationType(target, propName)) {\n case 'transform': return getTransformValue(target, propName, animatable, unit);\n case 'css': return getCSSValue(target, propName, unit);\n case 'attribute': return getAttribute(target, propName);\n default: return target[propName] || 0;\n }\n}\n\nfunction getRelativeValue(to, from) {\n var operator = /^(\\*=|\\+=|-=)/.exec(to);\n if (!operator) { return to; }\n var u = getUnit(to) || 0;\n var x = parseFloat(from);\n var y = parseFloat(to.replace(operator[0], ''));\n switch (operator[0][0]) {\n case '+': return x + y + u;\n case '-': return x - y + u;\n case '*': return x * y + u;\n }\n}\n\nfunction validateValue(val, unit) {\n if (is.col(val)) { return colorToRgb(val); }\n if (/\\s/g.test(val)) { return val; }\n var originalUnit = getUnit(val);\n var unitLess = originalUnit ? val.substr(0, val.length - originalUnit.length) : val;\n if (unit) { return unitLess + unit; }\n return unitLess;\n}\n\n// getTotalLength() equivalent for circle, rect, polyline, polygon and line shapes\n// adapted from https://gist.github.com/SebLambla/3e0550c496c236709744\n\nfunction getDistance(p1, p2) {\n return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));\n}\n\nfunction getCircleLength(el) {\n return Math.PI * 2 * getAttribute(el, 'r');\n}\n\nfunction getRectLength(el) {\n return (getAttribute(el, 'width') * 2) + (getAttribute(el, 'height') * 2);\n}\n\nfunction getLineLength(el) {\n return getDistance(\n {x: getAttribute(el, 'x1'), y: getAttribute(el, 'y1')}, \n {x: getAttribute(el, 'x2'), y: getAttribute(el, 'y2')}\n );\n}\n\nfunction getPolylineLength(el) {\n var points = el.points;\n var totalLength = 0;\n var previousPos;\n for (var i = 0 ; i < points.numberOfItems; i++) {\n var currentPos = points.getItem(i);\n if (i > 0) { totalLength += getDistance(previousPos, currentPos); }\n previousPos = currentPos;\n }\n return totalLength;\n}\n\nfunction getPolygonLength(el) {\n var points = el.points;\n return getPolylineLength(el) + getDistance(points.getItem(points.numberOfItems - 1), points.getItem(0));\n}\n\n// Path animation\n\nfunction getTotalLength(el) {\n if (el.getTotalLength) { return el.getTotalLength(); }\n switch(el.tagName.toLowerCase()) {\n case 'circle': return getCircleLength(el);\n case 'rect': return getRectLength(el);\n case 'line': return getLineLength(el);\n case 'polyline': return getPolylineLength(el);\n case 'polygon': return getPolygonLength(el);\n }\n}\n\nfunction setDashoffset(el) {\n var pathLength = getTotalLength(el);\n el.setAttribute('stroke-dasharray', pathLength);\n return pathLength;\n}\n\n// Motion path\n\nfunction getParentSvgEl(el) {\n var parentEl = el.parentNode;\n while (is.svg(parentEl)) {\n if (!is.svg(parentEl.parentNode)) { break; }\n parentEl = parentEl.parentNode;\n }\n return parentEl;\n}\n\nfunction getParentSvg(pathEl, svgData) {\n var svg = svgData || {};\n var parentSvgEl = svg.el || getParentSvgEl(pathEl);\n var rect = parentSvgEl.getBoundingClientRect();\n var viewBoxAttr = getAttribute(parentSvgEl, 'viewBox');\n var width = rect.width;\n var height = rect.height;\n var viewBox = svg.viewBox || (viewBoxAttr ? viewBoxAttr.split(' ') : [0, 0, width, height]);\n return {\n el: parentSvgEl,\n viewBox: viewBox,\n x: viewBox[0] / 1,\n y: viewBox[1] / 1,\n w: width,\n h: height,\n vW: viewBox[2],\n vH: viewBox[3]\n }\n}\n\nfunction getPath(path, percent) {\n var pathEl = is.str(path) ? selectString(path)[0] : path;\n var p = percent || 100;\n return function(property) {\n return {\n property: property,\n el: pathEl,\n svg: getParentSvg(pathEl),\n totalLength: getTotalLength(pathEl) * (p / 100)\n }\n }\n}\n\nfunction getPathProgress(path, progress, isPathTargetInsideSVG) {\n function point(offset) {\n if ( offset === void 0 ) offset = 0;\n\n var l = progress + offset >= 1 ? progress + offset : 0;\n return path.el.getPointAtLength(l);\n }\n var svg = getParentSvg(path.el, path.svg);\n var p = point();\n var p0 = point(-1);\n var p1 = point(+1);\n var scaleX = isPathTargetInsideSVG ? 1 : svg.w / svg.vW;\n var scaleY = isPathTargetInsideSVG ? 1 : svg.h / svg.vH;\n switch (path.property) {\n case 'x': return (p.x - svg.x) * scaleX;\n case 'y': return (p.y - svg.y) * scaleY;\n case 'angle': return Math.atan2(p1.y - p0.y, p1.x - p0.x) * 180 / Math.PI;\n }\n}\n\n// Decompose value\n\nfunction decomposeValue(val, unit) {\n // const rgx = /-?\\d*\\.?\\d+/g; // handles basic numbers\n // const rgx = /[+-]?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var rgx = /[+-]?\\d*\\.?\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/g; // handles exponents notation\n var value = validateValue((is.pth(val) ? val.totalLength : val), unit) + '';\n return {\n original: value,\n numbers: value.match(rgx) ? value.match(rgx).map(Number) : [0],\n strings: (is.str(val) || unit) ? value.split(rgx) : []\n }\n}\n\n// Animatables\n\nfunction parseTargets(targets) {\n var targetsArray = targets ? (flattenArray(is.arr(targets) ? targets.map(toArray) : toArray(targets))) : [];\n return filterArray(targetsArray, function (item, pos, self) { return self.indexOf(item) === pos; });\n}\n\nfunction getAnimatables(targets) {\n var parsed = parseTargets(targets);\n return parsed.map(function (t, i) {\n return {target: t, id: i, total: parsed.length, transforms: { list: getElementTransforms(t) } };\n });\n}\n\n// Properties\n\nfunction normalizePropertyTweens(prop, tweenSettings) {\n var settings = cloneObject(tweenSettings);\n // Override duration if easing is a spring\n if (/^spring/.test(settings.easing)) { settings.duration = spring(settings.easing); }\n if (is.arr(prop)) {\n var l = prop.length;\n var isFromTo = (l === 2 && !is.obj(prop[0]));\n if (!isFromTo) {\n // Duration divided by the number of tweens\n if (!is.fnc(tweenSettings.duration)) { settings.duration = tweenSettings.duration / l; }\n } else {\n // Transform [from, to] values shorthand to a valid tween value\n prop = {value: prop};\n }\n }\n var propArray = is.arr(prop) ? prop : [prop];\n return propArray.map(function (v, i) {\n var obj = (is.obj(v) && !is.pth(v)) ? v : {value: v};\n // Default delay value should only be applied to the first tween\n if (is.und(obj.delay)) { obj.delay = !i ? tweenSettings.delay : 0; }\n // Default endDelay value should only be applied to the last tween\n if (is.und(obj.endDelay)) { obj.endDelay = i === propArray.length - 1 ? tweenSettings.endDelay : 0; }\n return obj;\n }).map(function (k) { return mergeObjects(k, settings); });\n}\n\n\nfunction flattenKeyframes(keyframes) {\n var propertyNames = filterArray(flattenArray(keyframes.map(function (key) { return Object.keys(key); })), function (p) { return is.key(p); })\n .reduce(function (a,b) { if (a.indexOf(b) < 0) { a.push(b); } return a; }, []);\n var properties = {};\n var loop = function ( i ) {\n var propName = propertyNames[i];\n properties[propName] = keyframes.map(function (key) {\n var newKey = {};\n for (var p in key) {\n if (is.key(p)) {\n if (p == propName) { newKey.value = key[p]; }\n } else {\n newKey[p] = key[p];\n }\n }\n return newKey;\n });\n };\n\n for (var i = 0; i < propertyNames.length; i++) loop( i );\n return properties;\n}\n\nfunction getProperties(tweenSettings, params) {\n var properties = [];\n var keyframes = params.keyframes;\n if (keyframes) { params = mergeObjects(flattenKeyframes(keyframes), params); }\n for (var p in params) {\n if (is.key(p)) {\n properties.push({\n name: p,\n tweens: normalizePropertyTweens(params[p], tweenSettings)\n });\n }\n }\n return properties;\n}\n\n// Tweens\n\nfunction normalizeTweenValues(tween, animatable) {\n var t = {};\n for (var p in tween) {\n var value = getFunctionValue(tween[p], animatable);\n if (is.arr(value)) {\n value = value.map(function (v) { return getFunctionValue(v, animatable); });\n if (value.length === 1) { value = value[0]; }\n }\n t[p] = value;\n }\n t.duration = parseFloat(t.duration);\n t.delay = parseFloat(t.delay);\n return t;\n}\n\nfunction normalizeTweens(prop, animatable) {\n var previousTween;\n return prop.tweens.map(function (t) {\n var tween = normalizeTweenValues(t, animatable);\n var tweenValue = tween.value;\n var to = is.arr(tweenValue) ? tweenValue[1] : tweenValue;\n var toUnit = getUnit(to);\n var originalValue = getOriginalTargetValue(animatable.target, prop.name, toUnit, animatable);\n var previousValue = previousTween ? previousTween.to.original : originalValue;\n var from = is.arr(tweenValue) ? tweenValue[0] : previousValue;\n var fromUnit = getUnit(from) || getUnit(originalValue);\n var unit = toUnit || fromUnit;\n if (is.und(to)) { to = previousValue; }\n tween.from = decomposeValue(from, unit);\n tween.to = decomposeValue(getRelativeValue(to, from), unit);\n tween.start = previousTween ? previousTween.end : 0;\n tween.end = tween.start + tween.delay + tween.duration + tween.endDelay;\n tween.easing = parseEasings(tween.easing, tween.duration);\n tween.isPath = is.pth(tweenValue);\n tween.isPathTargetInsideSVG = tween.isPath && is.svg(animatable.target);\n tween.isColor = is.col(tween.from.original);\n if (tween.isColor) { tween.round = 1; }\n previousTween = tween;\n return tween;\n });\n}\n\n// Tween progress\n\nvar setProgressValue = {\n css: function (t, p, v) { return t.style[p] = v; },\n attribute: function (t, p, v) { return t.setAttribute(p, v); },\n object: function (t, p, v) { return t[p] = v; },\n transform: function (t, p, v, transforms, manual) {\n transforms.list.set(p, v);\n if (p === transforms.last || manual) {\n var str = '';\n transforms.list.forEach(function (value, prop) { str += prop + \"(\" + value + \") \"; });\n t.style.transform = str;\n }\n }\n};\n\n// Set Value helper\n\nfunction setTargetsValue(targets, properties) {\n var animatables = getAnimatables(targets);\n animatables.forEach(function (animatable) {\n for (var property in properties) {\n var value = getFunctionValue(properties[property], animatable);\n var target = animatable.target;\n var valueUnit = getUnit(value);\n var originalValue = getOriginalTargetValue(target, property, valueUnit, animatable);\n var unit = valueUnit || getUnit(originalValue);\n var to = getRelativeValue(validateValue(value, unit), originalValue);\n var animType = getAnimationType(target, property);\n setProgressValue[animType](target, property, to, animatable.transforms, true);\n }\n });\n}\n\n// Animations\n\nfunction createAnimation(animatable, prop) {\n var animType = getAnimationType(animatable.target, prop.name);\n if (animType) {\n var tweens = normalizeTweens(prop, animatable);\n var lastTween = tweens[tweens.length - 1];\n return {\n type: animType,\n property: prop.name,\n animatable: animatable,\n tweens: tweens,\n duration: lastTween.end,\n delay: tweens[0].delay,\n endDelay: lastTween.endDelay\n }\n }\n}\n\nfunction getAnimations(animatables, properties) {\n return filterArray(flattenArray(animatables.map(function (animatable) {\n return properties.map(function (prop) {\n return createAnimation(animatable, prop);\n });\n })), function (a) { return !is.und(a); });\n}\n\n// Create Instance\n\nfunction getInstanceTimings(animations, tweenSettings) {\n var animLength = animations.length;\n var getTlOffset = function (anim) { return anim.timelineOffset ? anim.timelineOffset : 0; };\n var timings = {};\n timings.duration = animLength ? Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration; })) : tweenSettings.duration;\n timings.delay = animLength ? Math.min.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.delay; })) : tweenSettings.delay;\n timings.endDelay = animLength ? timings.duration - Math.max.apply(Math, animations.map(function (anim) { return getTlOffset(anim) + anim.duration - anim.endDelay; })) : tweenSettings.endDelay;\n return timings;\n}\n\nvar instanceID = 0;\n\nfunction createNewInstance(params) {\n var instanceSettings = replaceObjectProps(defaultInstanceSettings, params);\n var tweenSettings = replaceObjectProps(defaultTweenSettings, params);\n var properties = getProperties(tweenSettings, params);\n var animatables = getAnimatables(params.targets);\n var animations = getAnimations(animatables, properties);\n var timings = getInstanceTimings(animations, tweenSettings);\n var id = instanceID;\n instanceID++;\n return mergeObjects(instanceSettings, {\n id: id,\n children: [],\n animatables: animatables,\n animations: animations,\n duration: timings.duration,\n delay: timings.delay,\n endDelay: timings.endDelay\n });\n}\n\n// Core\n\nvar activeInstances = [];\n\nvar engine = (function () {\n var raf;\n\n function play() {\n if (!raf && (!isDocumentHidden() || !anime.suspendWhenDocumentHidden) && activeInstances.length > 0) {\n raf = requestAnimationFrame(step);\n }\n }\n function step(t) {\n // memo on algorithm issue:\n // dangerous iteration over mutable `activeInstances`\n // (that collection may be updated from within callbacks of `tick`-ed animation instances)\n var activeInstancesLength = activeInstances.length;\n var i = 0;\n while (i < activeInstancesLength) {\n var activeInstance = activeInstances[i];\n if (!activeInstance.paused) {\n activeInstance.tick(t);\n i++;\n } else {\n activeInstances.splice(i, 1);\n activeInstancesLength--;\n }\n }\n raf = i > 0 ? requestAnimationFrame(step) : undefined;\n }\n\n function handleVisibilityChange() {\n if (!anime.suspendWhenDocumentHidden) { return; }\n\n if (isDocumentHidden()) {\n // suspend ticks\n raf = cancelAnimationFrame(raf);\n } else { // is back to active tab\n // first adjust animations to consider the time that ticks were suspended\n activeInstances.forEach(\n function (instance) { return instance ._onDocumentVisibility(); }\n );\n engine();\n }\n }\n if (typeof document !== 'undefined') {\n document.addEventListener('visibilitychange', handleVisibilityChange);\n }\n\n return play;\n})();\n\nfunction isDocumentHidden() {\n return !!document && document.hidden;\n}\n\n// Public Instance\n\nfunction anime(params) {\n if ( params === void 0 ) params = {};\n\n\n var startTime = 0, lastTime = 0, now = 0;\n var children, childrenLength = 0;\n var resolve = null;\n\n function makePromise(instance) {\n var promise = window.Promise && new Promise(function (_resolve) { return resolve = _resolve; });\n instance.finished = promise;\n return promise;\n }\n\n var instance = createNewInstance(params);\n var promise = makePromise(instance);\n\n function toggleInstanceDirection() {\n var direction = instance.direction;\n if (direction !== 'alternate') {\n instance.direction = direction !== 'normal' ? 'normal' : 'reverse';\n }\n instance.reversed = !instance.reversed;\n children.forEach(function (child) { return child.reversed = instance.reversed; });\n }\n\n function adjustTime(time) {\n return instance.reversed ? instance.duration - time : time;\n }\n\n function resetTime() {\n startTime = 0;\n lastTime = adjustTime(instance.currentTime) * (1 / anime.speed);\n }\n\n function seekChild(time, child) {\n if (child) { child.seek(time - child.timelineOffset); }\n }\n\n function syncInstanceChildren(time) {\n if (!instance.reversePlayback) {\n for (var i = 0; i < childrenLength; i++) { seekChild(time, children[i]); }\n } else {\n for (var i$1 = childrenLength; i$1--;) { seekChild(time, children[i$1]); }\n }\n }\n\n function setAnimationsProgress(insTime) {\n var i = 0;\n var animations = instance.animations;\n var animationsLength = animations.length;\n while (i < animationsLength) {\n var anim = animations[i];\n var animatable = anim.animatable;\n var tweens = anim.tweens;\n var tweenLength = tweens.length - 1;\n var tween = tweens[tweenLength];\n // Only check for keyframes if there is more than one tween\n if (tweenLength) { tween = filterArray(tweens, function (t) { return (insTime < t.end); })[0] || tween; }\n var elapsed = minMax(insTime - tween.start - tween.delay, 0, tween.duration) / tween.duration;\n var eased = isNaN(elapsed) ? 1 : tween.easing(elapsed);\n var strings = tween.to.strings;\n var round = tween.round;\n var numbers = [];\n var toNumbersLength = tween.to.numbers.length;\n var progress = (void 0);\n for (var n = 0; n < toNumbersLength; n++) {\n var value = (void 0);\n var toNumber = tween.to.numbers[n];\n var fromNumber = tween.from.numbers[n] || 0;\n if (!tween.isPath) {\n value = fromNumber + (eased * (toNumber - fromNumber));\n } else {\n value = getPathProgress(tween.value, eased * toNumber, tween.isPathTargetInsideSVG);\n }\n if (round) {\n if (!(tween.isColor && n > 2)) {\n value = Math.round(value * round) / round;\n }\n }\n numbers.push(value);\n }\n // Manual Array.reduce for better performances\n var stringsLength = strings.length;\n if (!stringsLength) {\n progress = numbers[0];\n } else {\n progress = strings[0];\n for (var s = 0; s < stringsLength; s++) {\n var a = strings[s];\n var b = strings[s + 1];\n var n$1 = numbers[s];\n if (!isNaN(n$1)) {\n if (!b) {\n progress += n$1 + ' ';\n } else {\n progress += n$1 + b;\n }\n }\n }\n }\n setProgressValue[anim.type](animatable.target, anim.property, progress, animatable.transforms);\n anim.currentValue = progress;\n i++;\n }\n }\n\n function setCallback(cb) {\n if (instance[cb] && !instance.passThrough) { instance[cb](instance); }\n }\n\n function countIteration() {\n if (instance.remaining && instance.remaining !== true) {\n instance.remaining--;\n }\n }\n\n function setInstanceProgress(engineTime) {\n var insDuration = instance.duration;\n var insDelay = instance.delay;\n var insEndDelay = insDuration - instance.endDelay;\n var insTime = adjustTime(engineTime);\n instance.progress = minMax((insTime / insDuration) * 100, 0, 100);\n instance.reversePlayback = insTime < instance.currentTime;\n if (children) { syncInstanceChildren(insTime); }\n if (!instance.began && instance.currentTime > 0) {\n instance.began = true;\n setCallback('begin');\n }\n if (!instance.loopBegan && instance.currentTime > 0) {\n instance.loopBegan = true;\n setCallback('loopBegin');\n }\n if (insTime <= insDelay && instance.currentTime !== 0) {\n setAnimationsProgress(0);\n }\n if ((insTime >= insEndDelay && instance.currentTime !== insDuration) || !insDuration) {\n setAnimationsProgress(insDuration);\n }\n if (insTime > insDelay && insTime < insEndDelay) {\n if (!instance.changeBegan) {\n instance.changeBegan = true;\n instance.changeCompleted = false;\n setCallback('changeBegin');\n }\n setCallback('change');\n setAnimationsProgress(insTime);\n } else {\n if (instance.changeBegan) {\n instance.changeCompleted = true;\n instance.changeBegan = false;\n setCallback('changeComplete');\n }\n }\n instance.currentTime = minMax(insTime, 0, insDuration);\n if (instance.began) { setCallback('update'); }\n if (engineTime >= insDuration) {\n lastTime = 0;\n countIteration();\n if (!instance.remaining) {\n instance.paused = true;\n if (!instance.completed) {\n instance.completed = true;\n setCallback('loopComplete');\n setCallback('complete');\n if (!instance.passThrough && 'Promise' in window) {\n resolve();\n promise = makePromise(instance);\n }\n }\n } else {\n startTime = now;\n setCallback('loopComplete');\n instance.loopBegan = false;\n if (instance.direction === 'alternate') {\n toggleInstanceDirection();\n }\n }\n }\n }\n\n instance.reset = function() {\n var direction = instance.direction;\n instance.passThrough = false;\n instance.currentTime = 0;\n instance.progress = 0;\n instance.paused = true;\n instance.began = false;\n instance.loopBegan = false;\n instance.changeBegan = false;\n instance.completed = false;\n instance.changeCompleted = false;\n instance.reversePlayback = false;\n instance.reversed = direction === 'reverse';\n instance.remaining = instance.loop;\n children = instance.children;\n childrenLength = children.length;\n for (var i = childrenLength; i--;) { instance.children[i].reset(); }\n if (instance.reversed && instance.loop !== true || (direction === 'alternate' && instance.loop === 1)) { instance.remaining++; }\n setAnimationsProgress(instance.reversed ? instance.duration : 0);\n };\n\n // internal method (for engine) to adjust animation timings before restoring engine ticks (rAF)\n instance._onDocumentVisibility = resetTime;\n\n // Set Value helper\n\n instance.set = function(targets, properties) {\n setTargetsValue(targets, properties);\n return instance;\n };\n\n instance.tick = function(t) {\n now = t;\n if (!startTime) { startTime = now; }\n setInstanceProgress((now + (lastTime - startTime)) * anime.speed);\n };\n\n instance.seek = function(time) {\n setInstanceProgress(adjustTime(time));\n };\n\n instance.pause = function() {\n instance.paused = true;\n resetTime();\n };\n\n instance.play = function() {\n if (!instance.paused) { return; }\n if (instance.completed) { instance.reset(); }\n instance.paused = false;\n activeInstances.push(instance);\n resetTime();\n engine();\n };\n\n instance.reverse = function() {\n toggleInstanceDirection();\n instance.completed = instance.reversed ? false : true;\n resetTime();\n };\n\n instance.restart = function() {\n instance.reset();\n instance.play();\n };\n\n instance.remove = function(targets) {\n var targetsArray = parseTargets(targets);\n removeTargetsFromInstance(targetsArray, instance);\n };\n\n instance.reset();\n\n if (instance.autoplay) { instance.play(); }\n\n return instance;\n\n}\n\n// Remove targets from animation\n\nfunction removeTargetsFromAnimations(targetsArray, animations) {\n for (var a = animations.length; a--;) {\n if (arrayContains(targetsArray, animations[a].animatable.target)) {\n animations.splice(a, 1);\n }\n }\n}\n\nfunction removeTargetsFromInstance(targetsArray, instance) {\n var animations = instance.animations;\n var children = instance.children;\n removeTargetsFromAnimations(targetsArray, animations);\n for (var c = children.length; c--;) {\n var child = children[c];\n var childAnimations = child.animations;\n removeTargetsFromAnimations(targetsArray, childAnimations);\n if (!childAnimations.length && !child.children.length) { children.splice(c, 1); }\n }\n if (!animations.length && !children.length) { instance.pause(); }\n}\n\nfunction removeTargetsFromActiveInstances(targets) {\n var targetsArray = parseTargets(targets);\n for (var i = activeInstances.length; i--;) {\n var instance = activeInstances[i];\n removeTargetsFromInstance(targetsArray, instance);\n }\n}\n\n// Stagger helpers\n\nfunction stagger(val, params) {\n if ( params === void 0 ) params = {};\n\n var direction = params.direction || 'normal';\n var easing = params.easing ? parseEasings(params.easing) : null;\n var grid = params.grid;\n var axis = params.axis;\n var fromIndex = params.from || 0;\n var fromFirst = fromIndex === 'first';\n var fromCenter = fromIndex === 'center';\n var fromLast = fromIndex === 'last';\n var isRange = is.arr(val);\n var val1 = isRange ? parseFloat(val[0]) : parseFloat(val);\n var val2 = isRange ? parseFloat(val[1]) : 0;\n var unit = getUnit(isRange ? val[1] : val) || 0;\n var start = params.start || 0 + (isRange ? val1 : 0);\n var values = [];\n var maxValue = 0;\n return function (el, i, t) {\n if (fromFirst) { fromIndex = 0; }\n if (fromCenter) { fromIndex = (t - 1) / 2; }\n if (fromLast) { fromIndex = t - 1; }\n if (!values.length) {\n for (var index = 0; index < t; index++) {\n if (!grid) {\n values.push(Math.abs(fromIndex - index));\n } else {\n var fromX = !fromCenter ? fromIndex%grid[0] : (grid[0]-1)/2;\n var fromY = !fromCenter ? Math.floor(fromIndex/grid[0]) : (grid[1]-1)/2;\n var toX = index%grid[0];\n var toY = Math.floor(index/grid[0]);\n var distanceX = fromX - toX;\n var distanceY = fromY - toY;\n var value = Math.sqrt(distanceX * distanceX + distanceY * distanceY);\n if (axis === 'x') { value = -distanceX; }\n if (axis === 'y') { value = -distanceY; }\n values.push(value);\n }\n maxValue = Math.max.apply(Math, values);\n }\n if (easing) { values = values.map(function (val) { return easing(val / maxValue) * maxValue; }); }\n if (direction === 'reverse') { values = values.map(function (val) { return axis ? (val < 0) ? val * -1 : -val : Math.abs(maxValue - val); }); }\n }\n var spacing = isRange ? (val2 - val1) / maxValue : val1;\n return start + (spacing * (Math.round(values[i] * 100) / 100)) + unit;\n }\n}\n\n// Timeline\n\nfunction timeline(params) {\n if ( params === void 0 ) params = {};\n\n var tl = anime(params);\n tl.duration = 0;\n tl.add = function(instanceParams, timelineOffset) {\n var tlIndex = activeInstances.indexOf(tl);\n var children = tl.children;\n if (tlIndex > -1) { activeInstances.splice(tlIndex, 1); }\n function passThrough(ins) { ins.passThrough = true; }\n for (var i = 0; i < children.length; i++) { passThrough(children[i]); }\n var insParams = mergeObjects(instanceParams, replaceObjectProps(defaultTweenSettings, params));\n insParams.targets = insParams.targets || params.targets;\n var tlDuration = tl.duration;\n insParams.autoplay = false;\n insParams.direction = tl.direction;\n insParams.timelineOffset = is.und(timelineOffset) ? tlDuration : getRelativeValue(timelineOffset, tlDuration);\n passThrough(tl);\n tl.seek(insParams.timelineOffset);\n var ins = anime(insParams);\n passThrough(ins);\n children.push(ins);\n var timings = getInstanceTimings(children, params);\n tl.delay = timings.delay;\n tl.endDelay = timings.endDelay;\n tl.duration = timings.duration;\n tl.seek(0);\n tl.reset();\n if (tl.autoplay) { tl.play(); }\n return tl;\n };\n return tl;\n}\n\nanime.version = '3.2.1';\nanime.speed = 1;\n// TODO:#review: naming, documentation\nanime.suspendWhenDocumentHidden = true;\nanime.running = activeInstances;\nanime.remove = removeTargetsFromActiveInstances;\nanime.get = getOriginalTargetValue;\nanime.set = setTargetsValue;\nanime.convertPx = convertPxToUnit;\nanime.path = getPath;\nanime.setDashoffset = setDashoffset;\nanime.stagger = stagger;\nanime.timeline = timeline;\nanime.easing = parseEasings;\nanime.penner = penner;\nanime.random = function (min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; };\n\nexport default anime;\n","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import { Gesture } from \"@use-gesture/vanilla\";\r\n\r\nimport anime from \"animejs\";\r\n\r\nfunction handleWheel(els, state, options) {\r\n return ({ event, active, movement: [scrollX, scrollY], ...rest }) => {\r\n event.preventDefault();\r\n if (active) {\r\n const newScale = state.scale - scrollY / 2000;\r\n // Bound scale\r\n state.scale = Math.max(Math.min(newScale, options.maxScale), options.minScale);\r\n }\r\n\r\n anime({\r\n targets: els.element,\r\n scale: state.scale,\r\n duration: options.defaultDuration,\r\n easing: options.defaultEasing,\r\n });\r\n };\r\n}\r\n\r\nfunction handlePinch(els, state, options) {\r\n return ({ active, distance: [dist], delta: [d], ...rest }) => {\r\n if (active) {\r\n // Stabilises with panning, helps to prevent jitteryness\r\n const stableFactor = 500;\r\n const rounded = Math.round(d * stableFactor) / stableFactor;\r\n const newScale = state.scale + rounded / 5;\r\n // Bound scale\r\n state.scale = Math.max(Math.min(newScale, options.maxScale), options.minScale);\r\n }\r\n\r\n anime({\r\n targets: els.element,\r\n scale: state.scale,\r\n duration: options.defaultDuration,\r\n easing: options.defaultEasing,\r\n });\r\n };\r\n}\r\n\r\nfunction handleDrag(els, state, options, setInfoMessageVisibility = () => { }) {\r\n return ({ active, movement: [mx, my], delta: [deltaX, deltaY], touches, pinching, cancel, ...rest }) => {\r\n const scaledImageWidth = els.initialElementWidth * state.scale;\r\n const scaledImageHeight = els.initialElementHeight * state.scale;\r\n\r\n state.correcting = false;\r\n state.duration = options.defaultDuration;\r\n state.easing = options.defaultEasing;\r\n\r\n if (active) {\r\n if (state.isMobile && touches < 2) {\r\n setInfoMessageVisibility(true);\r\n return;\r\n } else if (state.isMobile && touches >= 2) {\r\n setInfoMessageVisibility(false);\r\n }\r\n\r\n // state.dx += deltaX / (state.isMobile ? 1.25 : 1);\r\n // state.dy += deltaY / (state.isMobile ? 1.25 : 1);\r\n state.dx += deltaX;\r\n state.dy += deltaY;\r\n }\r\n\r\n if (!active) {\r\n // To calculate new edges\r\n const horizontalDiff = scaledImageWidth - els.initialElementWidth;\r\n const verticalDiff = scaledImageHeight - els.initialElementHeight;\r\n\r\n // Find edges\r\n const leftEdge = state.dx - horizontalDiff / 2;\r\n const rightEdge = leftEdge + scaledImageWidth;\r\n const topEdge = state.dy - verticalDiff / 2;\r\n const bottomEdge = topEdge + scaledImageHeight;\r\n\r\n // Check edges opposite to boundaries to ensure is inside bounds\r\n // X checks\r\n if (leftEdge > state.boundaries.x.max - options.safeAreaDistance) {\r\n state.correcting = true;\r\n state.dx = state.boundaries.x.max + horizontalDiff / 2 - options.safeAreaDistance;\r\n } else if (rightEdge < state.boundaries.x.min + options.safeAreaDistance) {\r\n state.correcting = true;\r\n state.dx = state.boundaries.x.min - (scaledImageWidth - horizontalDiff / 2) + options.safeAreaDistance;\r\n }\r\n\r\n // Y checks\r\n if (topEdge > state.boundaries.y.max - options.safeAreaDistance) {\r\n state.correcting = true;\r\n state.dy = state.boundaries.y.max + verticalDiff / 2 - options.safeAreaDistance;\r\n } else if (bottomEdge < state.boundaries.y.min + options.safeAreaDistance) {\r\n state.correcting = true;\r\n state.dy = state.boundaries.y.min - (scaledImageHeight - verticalDiff / 2) + options.safeAreaDistance;\r\n }\r\n\r\n // Animate props\r\n if (state.correcting) {\r\n state.duration = options.correctingDuration;\r\n state.easing = options.correctingEasing;\r\n }\r\n }\r\n\r\n // Move element\r\n anime({\r\n targets: els.element,\r\n translateX: state.dx,\r\n translateY: state.dy,\r\n duration: state.duration,\r\n easing: state.easing,\r\n });\r\n };\r\n}\r\n\r\nconst calculateBoundaries = (container) => {\r\n const containerDims = window.getComputedStyle(container);\r\n\r\n const containerWidth = container.offsetWidth;\r\n const containerHeight = container.offsetHeight;\r\n\r\n const containerPadLeft = parseFloat(containerDims.paddingLeft);\r\n const containerPadTop = parseFloat(containerDims.paddingTop);\r\n\r\n const minX = -containerPadLeft;\r\n const maxX = containerWidth - containerPadLeft;\r\n\r\n const maxY = containerHeight - containerPadTop;\r\n const minY = -containerPadTop;\r\n\r\n return {\r\n x: {\r\n min: minX,\r\n max: maxX,\r\n },\r\n y: {\r\n min: minY,\r\n max: maxY,\r\n },\r\n };\r\n};\r\n\r\nexport default function (element, opts = {}) {\r\n const defaultOptions = {\r\n minScale: 0.25,\r\n maxScale: 2,\r\n safeAreaDistance: 100,\r\n defaultEasing: \"linear\",\r\n correctingEasing: \"easeInOutQuad\",\r\n defaultDuration: 0,\r\n correctingDuration: 350,\r\n mobileBreakpoint: 1024,\r\n panEnabled: true,\r\n wheelEnabled: null,\r\n pinchEnabled: null,\r\n zoomInButton: null,\r\n zoomOutButton: null,\r\n infoMessage: null,\r\n };\r\n\r\n const els = {\r\n element,\r\n container: element.parentElement,\r\n initialElementWidth: element.offsetWidth,\r\n initialElementHeight: element.offsetHeight,\r\n };\r\n\r\n const options = {\r\n ...defaultOptions,\r\n ...opts,\r\n };\r\n\r\n options.wheelEnabled = window.innerWidth >= options.mobileBreakpoint;\r\n options.pinchEnabled = window.innerWidth < options.mobileBreakpoint;\r\n\r\n const state = {\r\n dx: 0,\r\n dy: 0,\r\n scale: 1,\r\n easing: options.defaultEasing,\r\n correcting: false,\r\n duration: options.defaultDuration,\r\n boundaries: calculateBoundaries(els.container),\r\n isMobile: window.innerWidth < options.mobileBreakpoint,\r\n };\r\n\r\n const setInfoMessageVisibility = (visible) => {\r\n if (state.isMobile && options.infoMessage) {\r\n if (visible) {\r\n options.infoMessage.style.opacity = 1;\r\n options.infoMessage.style.visibility = \"visible\";\r\n } else {\r\n options.infoMessage.style.opacity = 0;\r\n options.infoMessage.style.visibility = \"hidden\";\r\n }\r\n }\r\n };\r\n\r\n const allGestures = new Gesture(\r\n els.element,\r\n {\r\n onDrag: options.panEnabled ? handleDrag(els, state, options, setInfoMessageVisibility) : function () { },\r\n onPinch: options.pinchEnabled ? handlePinch(els, state, options) : function () { },\r\n onWheel: options.wheelEnabled ? handleWheel(els, state, options) : function () { },\r\n },\r\n { eventOptions: { passive: false } }\r\n );\r\n\r\n const setStyles = () => {\r\n if (els.element.tagName.toLowerCase() === 'img') {\r\n els.element.setAttribute('draggable', false);\r\n } else {\r\n // Find any child images\r\n const imgs = els.element.querySelectorAll('img');\r\n imgs.forEach(function (img) {\r\n img.setAttribute('draggable', false);\r\n });\r\n \r\n }\r\n\r\n if (state.isMobile) {\r\n // Allow scroll on mobile\r\n els.element.style.touchAction = \"pan-y\";\r\n els.container.style.touchAction = \"pan-y\";\r\n } else {\r\n els.element.style.touchAction = \"none\";\r\n els.container.style.touchAction = \"auto\";\r\n\r\n if (options.infoMessage) {\r\n options.infoMessage.style.opacity = 0;\r\n options.infoMessage.style.visibility = \"hidden\";\r\n }\r\n }\r\n };\r\n\r\n const init = () => {\r\n window.addEventListener(\"resize\", function () {\r\n state.isMobile = window.innerWidth < options.mobileBreakpoint;\r\n state.boundaries = calculateBoundaries(els.container);\r\n\r\n setStyles();\r\n });\r\n\r\n // Optional controls\r\n if (options.zoomInButton) {\r\n options.zoomInButton.addEventListener(\"click\", function () {\r\n state.scale = Math.min(state.scale + 0.25, options.maxScale);\r\n\r\n anime({\r\n targets: els.element,\r\n scale: state.scale,\r\n duration: options.correctingDuration,\r\n easing: options.correctingEasing,\r\n });\r\n });\r\n }\r\n if (options.zoomOutButton) {\r\n options.zoomOutButton.addEventListener(\"click\", function () {\r\n state.scale = Math.max(state.scale - 0.25, options.minScale);\r\n\r\n anime({\r\n targets: els.element,\r\n scale: state.scale,\r\n duration: options.correctingDuration,\r\n easing: options.correctingEasing,\r\n });\r\n });\r\n }\r\n setStyles();\r\n };\r\n\r\n init();\r\n}\r\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","import pixelPanZoom from './pixelpanzoom';\r\nimport VideoControls from './video-controls';\r\n\r\nvar colourSwatches = [];\r\n\r\nvar isTouch = false; //initiate as false\r\nvar iOS = false; //initiate as false\r\nvar iPhone = false; //initiate as false\r\nvar iPad = false; //initiate as false\r\nvar iPhoneHomeApp = false; //initiate as false\r\nvar touchStartPos = 0;\r\nvar clickEventStart = 'click';\r\nvar clickEventEnd = 'click';\r\nvar $vSM = 991; //Small Device Max Width (tablet)\r\nvar $vXS = 767; //Extra Small Max Width (mobile)\r\nvar DoSvgConvert;\r\n\r\n\r\n$(document).ready(function () {\r\n\r\n // device detection\r\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent.toLowerCase()) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(navigator.userAgent.substr(0, 4))) isTouch = true;\r\n if (/ipad|iphone|ipod/g.test(navigator.userAgent.toLowerCase())) iOS = true;\r\n if (/iphone|ipod/g.test(navigator.userAgent.toLowerCase())) iPhone = true;\r\n if (/ipad/g.test(navigator.userAgent.toLowerCase())) iPad = true;\r\n if (!/safari/g.test(navigator.userAgent.toLowerCase()) && iPhone == true) iPhoneHomeApp = true;\r\n if (isTouch == true) {\r\n clickEventStart = 'touchstart';\r\n clickEventEnd = 'touchend';\r\n $(\"body\").addClass(\"isTouch\");\r\n $(window).resize(function () {\r\n $(\"body\").removeClass(\"orientationPortrait\").removeClass(\"orientationLandscape\").addClass(($(window).width() > $(window).height()) ? \"orientationLandscape\" : \"orientationPortrait\");\r\n }).trigger('resize');\r\n if (iOS == true) { $(\"body\").addClass(\"iOS\"); }\r\n if (iOS == true && iPhone == true) { $(\"body\").addClass(\"iPhone\"); }\r\n if (iOS == true && iPad == true) { $(\"body\").addClass(\"iPad\"); }\r\n if (iPhoneHomeApp == true) { $(\"body\").addClass(\"iPhoneHomeApp\"); }\r\n }\r\n\r\n // Used for SEO to ensure all links with 'gatrack' onclick method fire GA Tracking\r\n $(\"a[onclick=gatrack]\").on(\"click\", function () {\r\n gtag('event', 'Hyperlink', {\r\n 'event_category': $(this).text(),\r\n 'event_label': $(this).attr(\"href\")\r\n });\r\n });\r\n\r\n //Replace all SVG images with inline SVG\r\n DoSvgConvert = function () {\r\n var r = $.Deferred();\r\n\r\n $('img.svgConvert').each(function () {\r\n var $img = $(this);\r\n var imgID = $img.attr('id');\r\n var imgClass = $img.attr('class');\r\n var imgURL = $img.attr('src');\r\n\r\n $.get(imgURL, function (data) {\r\n // Get the SVG tag, ignore the rest\r\n var $svg = $(data).find('svg');\r\n\r\n // Add replaced image's ID to the new SVG\r\n if (typeof imgID !== 'undefined') {\r\n $svg = $svg.attr('id', imgID);\r\n }\r\n // Add replaced image's classes to the new SVG\r\n if (typeof imgClass !== 'undefined') {\r\n $svg = $svg.attr('class', imgClass + ' replaced-svg');\r\n }\r\n\r\n // Remove any invalid XML tags as per http://validator.w3.org\r\n $svg = $svg.removeAttr('xmlns:a');\r\n\r\n //Append the SVG filename to any SVG CSS classes that begin with \"st\" followed by a number. \r\n //AB 21-05-18: IE doesn't like innerHTML with SVG's for whatever good reason, commenting out the following lines until a solution can be found\r\n //imgURLFileName = imgURL.split('\\\\').pop().split('/').pop();\r\n //imgURLFileName = imgURLFileName.substring(0, imgURLFileName.indexOf('.'));\r\n //$svg[0].innerHTML = $svg[0].innerHTML.replace(/([.\"])([sS][tT][\\d]+?)([{\"])/g, '$1$2_' + imgURLFileName + '$3');\r\n\r\n // Replace image with new SVG\r\n $img.replaceWith($svg);\r\n\r\n }, 'xml');\r\n\r\n return r;\r\n });\r\n };\r\n DoSvgConvert();\r\n});\r\n\r\n$(document).ready(function ($) {\r\n\r\n $(\".header__nav__item-level-0\").each(function () {\r\n if ($(this).find(\".header__nav__item-level-1\").length > 0) {\r\n $(this).addClass(\"hasChildren\");\r\n }\r\n });\r\n\r\n $(\".header__nav__item-level-1\").each(function () {\r\n if ($(this).find(\".header__nav__item-level-2__item\").length > 0) {\r\n $(this).addClass(\"hasChildren\");\r\n }\r\n });\r\n\r\n if ($(window).width() > 1024) {\r\n $(\".header__nav__item-level-0\").hover(function () {\r\n $(\".header__nav__item-level-0\").removeClass(\"hover\");\r\n $(this).addClass(\"hover\");\r\n $(\".header__nav__item-level-1\").removeClass(\"hover\");\r\n\r\n var firstItem = $(this).find(\".header__nav__item-level-1\").first();\r\n firstItem.addClass(\"hover\");\r\n if (firstItem.attr(\"data-img\") != \"\") {\r\n SetNavPromo($(this), $(this).find(\".header__nav__promo-area\"));\r\n SetNavPromo(firstItem, firstItem.find(\".header__nav__promo-area\"));\r\n }\r\n else {\r\n SetNavPromo($(this), $(this).find(\".header__nav__promo-area\"));\r\n }\r\n },\r\n function () {\r\n $(\".header__nav__item-level-0\").removeClass(\"hover\");\r\n });\r\n\r\n $(\".header__nav__item-level-1\").hover(function () {\r\n $(\".header__nav__item-level-1\").removeClass(\"hover\");\r\n $(this).addClass(\"hover\");\r\n\r\n if ($(this).attr(\"data-img\") != \"\") {\r\n SetNavPromo($(this), $(this).find(\".header__nav__promo-area\"));\r\n }\r\n });\r\n\r\n $(\".header__nav__item-level-2__item\").hover(function () {\r\n $(\".header__nav__item-level-2__item\").removeClass(\"hover\");\r\n $(this).addClass(\"hover\");\r\n });\r\n }\r\n\r\n else {\r\n $(\".navBtn\").on(\"click\", function () {\r\n $(\".header__nav\").addClass(\"open\");\r\n $(\"body\").addClass(\"nav-open\")\r\n \r\n });\r\n\r\n $(\".header__nav__close-btn\").on(\"click\", function () {\r\n\r\n if ($(\".header__nav\").hasClass(\"level-2-open\")) {\r\n $(\".header__nav\").removeClass(\"level-2-open\");\r\n $(\".header__nav__item-level-1.hasChildren\").removeClass(\"clicked\");\r\n $(this).html(\"Main menu\");\r\n }\r\n\r\n else if ($(\".header__nav\").hasClass(\"level-1-open\")) {\r\n $(\".header__nav\").removeClass(\"level-1-open\");\r\n $(\".header__nav__item-level-0.hasChildren\").removeClass(\"clicked\");\r\n $(this).html(\"Close\");\r\n }\r\n else {\r\n $(\".header__nav\").removeClass(\"open\");\r\n $(\"body\").removeClass(\"nav-open\")\r\n }\r\n });\r\n\r\n $(\".header__nav__item-level-0.hasChildren\").on(\"click\", function (e) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n $(this).addClass(\"clicked\");\r\n $(\".header__nav\").addClass(\"level-1-open\");\r\n var currentNode = $(this).find(\".header__nav__item-level-0--link\");\r\n var currentLink = currentNode.attr(\"href\");\r\n var currentText = currentNode.html();\r\n $(\".header__nav__clicked-link\").attr(\"href\", currentLink);\r\n $(\".header__nav__clicked-link\").html(currentText);\r\n $(\".header__nav__close-btn\").html(\"Main menu\");\r\n });\r\n\r\n $(\".header__nav__item-level-1\").on(\"click\", function (e) {\r\n if ($(this).hasClass(\"hasChildren\")) {\r\n e.stopPropagation();\r\n e.preventDefault();\r\n $(this).addClass(\"clicked\");\r\n $(\".header__nav\").addClass(\"level-2-open\");\r\n var currentNode = $(this).find(\".header__nav__item-level-1--link\");\r\n var currentLink = currentNode.attr(\"href\");\r\n var currentText = currentNode.html();\r\n $(\".header__nav__close-btn\").html($(\".header__nav__clicked-link\").html());\r\n $(\".header__nav__clicked-link\").attr(\"href\", currentLink);\r\n $(\".header__nav__clicked-link\").html(currentText);\r\n }\r\n else {\r\n window.location.href = $(this).find(\".header__nav__item-level-1--link\").attr(\"href\");\r\n }\r\n });\r\n\r\n $(\".header__nav__item-level-2--link\").on(\"click\", function (e) {\r\n window.location.href = $(this).attr(\"href\");\r\n });\r\n }\r\n\r\n $(\".footer-links__title\").on(\"click\", function () {\r\n\r\n var footerTitle = $(this);\r\n var footerColParent = $(this).parent();\r\n var footerLinks = footerColParent.find(\".footer-links__links\");\r\n\r\n if (footerColParent.hasClass(\"on\")) {\r\n footerColParent.removeClass(\"on\");\r\n }\r\n else {\r\n $(\".footer__top-flex__content-column\").removeClass(\"on\");\r\n footerColParent.addClass(\"on\");\r\n }\r\n });\r\n\r\n function SetNavPromo(currentitem, currentpromo) {\r\n\r\n var image = currentitem.attr(\"data-img\");\r\n var title = currentitem.attr(\"data-title\");\r\n var buttonlink = currentitem.attr(\"data-link\");\r\n var buttontext = currentitem.attr(\"data-link-text\");\r\n\r\n currentpromo.each(function () {\r\n\r\n $(this).find(\".header__nav__promo-area__promo\").css(\"background-image\", \"url('\" + image + \"')\");\r\n $(this).find(\".header__nav__promo-area__promo-text\").html(title);\r\n $(this).attr(\"href\", buttonlink);\r\n $(this).find(\".header__nav__promo-area__promo-link\").html(buttontext);\r\n });\r\n\r\n\r\n }\r\n\r\n if ($(\".banner-search__search-input\").length > 0) {\r\n $(\".banner-search__search-input\")\r\n .autocomplete({\r\n source: function (request, response) {\r\n $.ajax({\r\n url: \"/SiteFiles/WebServices/WebService.asmx/GetDevelopments\",\r\n data: \"{ 'term': '\" + request.term + \"'}\",\r\n dataType: \"json\",\r\n type: \"POST\",\r\n contentType: \"application/json; charset=utf-8\",\r\n success: function (data) {\r\n response($.map(data.d, function (item) {\r\n return {\r\n dev: item.split('|')[0],\r\n url: item.split('|')[1]\r\n };\r\n }));\r\n },\r\n error: function (jqXHR, textStatus, errorThrown) {\r\n console.log(errorThrown);\r\n }\r\n });\r\n },\r\n minLength: 1,\r\n focus: function (event, ui) {\r\n event.preventDefault();\r\n $(\".banner-search__search-input\").val(ui.item.dev);\r\n },\r\n select: function (event, ui) {\r\n event.preventDefault();\r\n $(this).val(ui.item.dev);\r\n window.location.replace(ui.item.url);\r\n }\r\n })\r\n .data(\"ui-autocomplete\")\r\n ._renderItem = function (ul, item) {\r\n return $(\"
  • \")\r\n .data(\"ui-autocomplete-item\", item)\r\n .append(\"\" + item.dev + \"\")\r\n .appendTo(ul);\r\n };\r\n\r\n if ($(window).width() < 1024) {\r\n $(\".banner-search__search-input\").attr(\"placeholder\", \"Please enter a location\");\r\n }\r\n }\r\n\r\n AddBannerSearchFunctionality();\r\n AddInnerBannerSearchFunctionality();\r\n\r\n if ($(\".slider-items\").length > 0) {\r\n $(\".slider-items\").each(function () {\r\n var currentWidget = $(this).parent();\r\n var currentSlider = $(this);\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: true,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n prevArrow: currentWidget.find(\".slick-nav__arrow--left\"),\r\n nextArrow: currentWidget.find(\".slick-nav__arrow--right\")\r\n });\r\n });\r\n }\r\n\r\n if ($(\".gallery-widget\").length > 0) {\r\n $(\".gallery-widget\").each(function () {\r\n var currentWidget = $(this);\r\n var currentSlider = $(this).find(\".gallery-widget__images\");\r\n var currentSliderNumber = currentWidget.find(\".gallery-widget__slide-current\");\r\n var currentSliderThumb = currentWidget.find(\".gallery-widget__slide-thumb\");\r\n var currentMaxSlides = currentWidget.find(\".gallery-widget__slide-max\").html();\r\n var currentPercentage = 100 / currentMaxSlides;\r\n var leftToUse = 0;\r\n currentSliderThumb.css(\"width\", currentPercentage + \"%\");\r\n currentSliderThumb.css(\"left\", leftToUse + \"%\");\r\n\r\n currentSlider.on(\"beforeChange\", function (event, slick, currentSlide, nextSlide) {\r\n currentSliderNumber.html(nextSlide + 1);\r\n if ((nextSlide + 1) > 9) {\r\n currentWidget.find(\".gallery-widget__slide-zero\").html();\r\n }\r\n else {\r\n currentWidget.find(\".gallery-widget__slide-zero\").html(\"0\");\r\n }\r\n leftToUse = currentPercentage * nextSlide;\r\n currentSliderThumb.css(\"left\", leftToUse + \"%\");\r\n\r\n });\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: true,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n prevArrow: currentWidget.find(\".slick-nav__arrow--left\"),\r\n nextArrow: currentWidget.find(\".slick-nav__arrow--right\")\r\n });\r\n });\r\n }\r\n\r\n\r\n if ($(\".related-content\").length > 0) {\r\n $(\".related-content\").each(function () {\r\n var currentWidget = $(this);\r\n var currentSlider = $(this).find(\".related-content__items\");\r\n var currentSliderNumber = currentWidget.find(\".related-content__slide-current\");\r\n var currentSliderThumb = currentWidget.find(\".related-content__slide-thumb\");\r\n var currentMaxSlides = currentWidget.find(\".related-content__slide-max\").html();\r\n var currentPercentage = 100 / currentMaxSlides;\r\n var leftToUse = 0;\r\n currentSliderThumb.css(\"width\", currentPercentage + \"%\");\r\n currentSliderThumb.css(\"left\", leftToUse + \"%\");\r\n\r\n currentSlider.on(\"beforeChange\", function (event, slick, currentSlide, nextSlide) {\r\n currentSliderNumber.html(nextSlide + 1);\r\n if ((nextSlide + 1) > 9) {\r\n currentWidget.find(\".related-content__slide-zero\").html();\r\n }\r\n else {\r\n currentWidget.find(\".related-content__slide-zero\").html(\"0\");\r\n }\r\n leftToUse = currentPercentage * nextSlide;\r\n currentSliderThumb.css(\"left\", leftToUse + \"%\");\r\n\r\n });\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: true,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n prevArrow: currentWidget.find(\".slick-nav__arrow--left\"),\r\n nextArrow: currentWidget.find(\".slick-nav__arrow--right\")\r\n });\r\n });\r\n }\r\n\r\n if ($(\".inner-banner__flex-side__images\").length > 0) {\r\n $(\".inner-banner__flex-side__images\").each(function () {\r\n var currentWidget = $(this).parent();\r\n var currentSlider = $(this);\r\n\r\n currentSlider.on('afterChange', function (event, slick, currentSlide) {\r\n currentWidget.find(\".inner-banner__nav-bar--current-slide\").html(\"0\" + (currentSlide + 1));\r\n });\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: true,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: false,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n prevArrow: currentWidget.find(\".slick-nav__arrow--left\"),\r\n nextArrow: currentWidget.find(\".slick-nav__arrow--right\"),\r\n responsive: [\r\n {\r\n breakpoint: 1024,\r\n settings: {\r\n arrows: false\r\n }\r\n }]\r\n });\r\n });\r\n }\r\n\r\n if ($(window).width() < 768) {\r\n if ($(\".latest-news__items\").length > 0) {\r\n $(\".latest-news__items\").each(function () {\r\n var currentWidget = $(this).parent();\r\n var currentSlider = $(this);\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: true,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n });\r\n });\r\n }\r\n if ($(\".dashboard__split-content\").length > 0) {\r\n $(\".dashboard__split-content\").each(function () {\r\n var currentWidget = $(this).parent();\r\n var currentSlider = $(this);\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: true,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n });\r\n });\r\n }\r\n }\r\n\r\n\r\n if ($(\".banner-search\").length > 0) {\r\n $(\".banner-search\").each(function () {\r\n if ($(this).find(\".vimeo\").length > 0) {\r\n $(this).addClass(\"bannerLoaded\");\r\n DoLoadTopBannerVimeo($(this));\r\n }\r\n });\r\n }\r\n\r\n if ($(\".intro-text__faded-text\").length > 0) {\r\n $(\".intro-text__faded-text\").each(function () {\r\n var thisIsThis = $(this);\r\n $(document).on(\"scroll\", function () {\r\n if (isInViewport(thisIsThis[0], 100, 0)) {\r\n thisIsThis.css(\"right\", getLeftPosition(thisIsThis[0]) + \"%\");\r\n }\r\n });\r\n });\r\n }\r\n\r\n $(\".widget.imageZoom\").each(function () {\r\n var currentItem = $(this);\r\n var currentButton = currentItem.find(\".imageZoom__key-button\");\r\n currentButton.on(\"click\", function () {\r\n if (currentButton.parent().hasClass(\"closed\")) {\r\n currentButton.parent().removeClass(\"closed\");\r\n currentButton.find(\".imageZoom__key-button__text-change\").html(\"Collapse\");\r\n\r\n }\r\n else {\r\n currentButton.parent().addClass(\"closed\");\r\n currentButton.find(\".imageZoom__key-button__text-change\").html(\"Show\");\r\n }\r\n });\r\n\r\n if ($(window).width() < 1024) {\r\n currentButton.parent().addClass(\"closed\");\r\n }\r\n });\r\n\r\n $(\".widget.floorplan.imageZoom\").each(function () {\r\n var currentItem = $(this);\r\n var currentImage = $(this).find(\".image img\")[0];\r\n var currentButton = currentItem.find(\".imageZoom__key-button\");\r\n\r\n const pz = pixelPanZoom(currentImage, { zoomInButton: currentItem.find(\".controls .zoomIn\")[0], zoomOutButton: currentItem.find(\".controls .zoomOut\")[0], infoMessage: currentItem.find(\".imageZoom__gestures-message\")[0], maxScale: 5 });\r\n currentButton.on(\"click\", function () {\r\n if (currentButton.parent().hasClass(\"closed\")) {\r\n currentButton.parent().removeClass(\"closed\");\r\n currentButton.find(\".imageZoom__key-button__text-change\").html(\"Collapse\");\r\n\r\n }\r\n else {\r\n currentButton.parent().addClass(\"closed\");\r\n currentButton.find(\".imageZoom__key-button__text-change\").html(\"Show\");\r\n }\r\n });\r\n\r\n if ($(window).width() < 1024) {\r\n currentButton.parent().addClass(\"closed\");\r\n }\r\n\r\n });\r\n\r\n if ($(\".home-specification\").length > 0) {\r\n $(\".home-specification\").each(function () {\r\n var currentWidget = $(this);\r\n var tabs = $(this).find(\".home-specification__tab\");\r\n var tabbedItems = $(this).find(\".home-specification__tabbed-item\");\r\n\r\n tabs.first().addClass(\"selected\");\r\n tabbedItems.first().removeClass(\"home-specification__tabbed-item--hidden\");\r\n $(\".home-specification__tabs-mobile-value\").html(tabs.first().html());\r\n\r\n currentWidget.find(\".home-specification__tab\").on(\"click\", function () {\r\n tabs.removeClass(\"selected\");\r\n $(this).addClass(\"selected\");\r\n tabbedItems.addClass(\"home-specification__tabbed-item--hidden\");\r\n currentWidget.find(\".home-specification__tabs-mobile-value\").html($(this).html());\r\n var currentIndex = $(this).parent().children().index(this);\r\n tabbedItems.get(currentIndex).classList.remove(\"home-specification__tabbed-item--hidden\");\r\n });\r\n\r\n currentWidget.find(\".home-specification__tabs-holder\").on(\"click\", function () {\r\n if ($(this).find(\".home-specification__tabs\").hasClass(\"open\")) {\r\n $(this).find(\".home-specification__tabs\").removeClass(\"open\");\r\n }\r\n else {\r\n $(this).find(\".home-specification__tabs\").addClass(\"open\");\r\n }\r\n });\r\n });\r\n }\r\n\r\n if ($(\".location-tabs\").length > 0) {\r\n $(\".location-tabs\").each(function () {\r\n var currentWidget = $(this);\r\n var tabs = $(this).find(\".location-tabs__tabs-heading\");\r\n var tabbedItems = $(this).find(\".location-tabs__tab\");\r\n\r\n tabs.first().addClass(\"selected\");\r\n tabbedItems.first().removeClass(\"location-tabs__tab--hidden\");\r\n $(\".location-tabs__tabs-mobile-value\").html(tabs.first().html());\r\n\r\n currentWidget.find(\".location-tabs__tabs-heading\").on(\"click\", function () {\r\n tabs.removeClass(\"selected\");\r\n $(this).addClass(\"selected\");\r\n tabbedItems.addClass(\"location-tabs__tab--hidden\");\r\n currentWidget.find(\".location-tabs__tabs-mobile-value\").html($(this).html());\r\n var currentIndex = $(this).parent().children().index(this);\r\n tabbedItems.get(currentIndex).classList.remove(\"location-tabs__tab--hidden\");\r\n });\r\n\r\n currentWidget.find(\".location-tabs__tabs-holder\").on(\"click\", function () {\r\n if ($(this).find(\".location-tabs__tabs-headings\").hasClass(\"open\")) {\r\n $(this).find(\".location-tabs__tabs-headings\").removeClass(\"open\");\r\n }\r\n else {\r\n $(this).find(\".location-tabs__tabs-headings\").addClass(\"open\");\r\n }\r\n });\r\n });\r\n }\r\n\r\n\r\n if ($(\".plot-listing__plot\").length > 0) {\r\n if ($(window).width() < 1024) {\r\n $(\".plot-listing__plot\").first().addClass(\"selected\");\r\n $(\".plot-listing__plot\").first().find(\".plot-listing__plot__tab\").addClass(\"selected\");\r\n $(\".plot-listing__plot\").first().find(\".plot-listing__plot__info-holder\").addClass(\"selected\");\r\n $(\".plot-listing__plot\").on(\"click\", function () {\r\n if (!$(this).hasClass(\"selected\")) {\r\n $(this).addClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__tab\").addClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__info-holder\").addClass(\"selected\");\r\n }\r\n else {\r\n $(this).removeClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__tab\").removeClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__info-holder\").removeClass(\"selected\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n if ($(\".house-accordion\").length > 0) {\r\n $(\".house-accordion__tab--floor-plan\").on(\"click\", function () {\r\n $(\".house-accordion .floor-plans\").addClass(\"selected\");\r\n $(\".house-accordion__tab--floor-plan\").addClass(\"selected\");\r\n $(\".house-accordion__tab--site-map\").removeClass(\"selected\");\r\n $(\".house-accordion .imageZoom\").removeClass(\"selected\");\r\n });\r\n\r\n $(\".house-accordion__tab--site-map\").on(\"click\", function () {\r\n $(\".house-accordion .floor-plans\").removeClass(\"selected\");\r\n $(\".house-accordion__tab--floor-plan\").removeClass(\"selected\");\r\n $(\".house-accordion__tab--site-map\").addClass(\"selected\");\r\n $(\".house-accordion .imageZoom\").addClass(\"selected\");\r\n });\r\n }\r\n\r\n if ($(\".floor-plans\").length > 0) {\r\n var tabs = $(this).find(\".floor-plans__tab\");\r\n var tabbedItems = $(this).find(\".floor-plans__floor-plan\");\r\n\r\n tabs.first().addClass(\"selected\");\r\n $(\".floor-plans__tabs-mobile-value\").html(tabs.first().html());\r\n tabbedItems.first().addClass(\"selected\");\r\n $(this).find(\".floor-plans__tab\").on(\"click\", function (e) {\r\n e.stopPropagation();\r\n tabs.removeClass(\"selected\");\r\n $(this).addClass(\"selected\");\r\n tabbedItems.removeClass(\"selected\");\r\n $(\".floor-plans__tabs\").removeClass(\"open\");\r\n $(\".floor-plans__tabs-mobile-value\").html($(this).html());\r\n var currentIndex = $(this).parent().children().index(this);\r\n tabbedItems.get(currentIndex).classList.add(\"selected\");\r\n });\r\n\r\n if ($(window).width() < 1024) {\r\n\r\n $(this).find(\".floor-plans__tabs-holder\").on(\"click\", function () {\r\n if ($(this).find(\".floor-plans__tabs\").hasClass(\"open\")) {\r\n $(this).find(\".floor-plans__tabs\").removeClass(\"open\");\r\n }\r\n else {\r\n $(this).find(\".floor-plans__tabs\").addClass(\"open\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n if ($(document).find(\".development-filter__filter-area\").length > 0) {\r\n if ($(window).width() < 1024) {\r\n $(document).find(\".development-filter__filter-title\").on(\"click\", function () {\r\n // console.log(\"eh\");\r\n var clickedFilter = $(this).parent().parent();\r\n if (clickedFilter.hasClass(\"on\")) {\r\n clickedFilter.removeClass(\"on\");\r\n }\r\n else {\r\n clickedFilter.addClass(\"on\");\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n if ($(\".faq-lister\").length > 0) {\r\n $(\".faq-lister__faq\").on(\"click\", function () {\r\n if ($(this).hasClass(\"open\")) {\r\n $(this).removeClass(\"open\");\r\n }\r\n else {\r\n $(this).addClass(\"open\");\r\n }\r\n });\r\n }\r\n\r\n if ($(\".news-listing__filter\").length > 0) {\r\n SetupSwatches();\r\n\r\n $(document).find(\".news-listing__filter\").on(\"click\", function () {\r\n var cats = $(document).find(\".news-listing__filter__categories\");\r\n if (cats.hasClass(\"hidden\")) {\r\n cats.removeClass(\"hidden\");\r\n }\r\n else {\r\n cats.addClass(\"hidden\")\r\n }\r\n });\r\n }\r\n\r\n if ($(window).width() < 991) {\r\n if ($(\".dashboard__docs\").length > 0) {\r\n $(\".dashboard__docs\").each(function () {\r\n var currentWidget = $(this).parent();\r\n var currentSlider = $(this);\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: true,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n });\r\n });\r\n }\r\n\r\n }\r\n\r\n $(\".signUp .next\").on(\"click\", function () {\r\n $(this).parent().find(\"input[type=submit]\").first().click();\r\n });\r\n\r\n $(\".form-style__field input[type=text], .form-style__field textarea, .email-sign-up input[type=text]\").on(\"focusout\", function () {\r\n if ($(this).val().length > 0) {\r\n $(this).addClass(\"focused\");\r\n }\r\n });\r\n\r\n $(document).find(\".form-style__field select, .email-sign-up select\").on(\"focusout\", function () {\r\n // console.log($(this).prop('selectedIndex'));\r\n if ($(this).prop('selectedIndex') != 0) {\r\n $(this).addClass(\"has-value\");\r\n\r\n }\r\n });\r\n\r\n $(\".make-enquiry__button\").on(\"click\", function () {\r\n $(document).scrollTop($(\".form-flex\").first().position().top);\r\n });\r\n\r\n $(\".control-group-inline select\").each(function () {\r\n if ($(this).find(\"option\").first().attr(\"selected\") != \"selected\") {\r\n $(this).addClass(\"has-value\");\r\n }\r\n });\r\n\r\n if ($(\".get-in-touch-banner\").length > 0) {\r\n var interestedin = GetParameterValues('interestedin');\r\n function GetParameterValues(param) {\r\n var url = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');\r\n for (var i = 0; i < url.length; i++) {\r\n var urlparam = url[i].split('=');\r\n if (urlparam[0] == param) {\r\n return urlparam[1];\r\n }\r\n }\r\n }\r\n\r\n if (interestedin) {\r\n $(document).scrollTop($(\".form-flex\").first().position().top);\r\n }\r\n }\r\n\r\n if ($(\".account-docs\").length > 0) {\r\n $(\".dashboard__doc__accept-button__holder\").on(\"click\", function (e) {\r\n if ($(this).find(\".button--greyed-out\").length > 0) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $(this).find(\".dashboard__doc__accept-button__info\").removeClass(\"dashboard__doc__accept-button__info--hidden\");\r\n }\r\n });\r\n\r\n $(\".dashboard__doc__accept-button__info\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $(this).addClass(\"dashboard__doc__accept-button__info--hidden\");\r\n });\r\n }\r\n\r\n /* START: Lazy load Google Maps if we're using it on the current page */\r\n // This essentially replaces an old implementation where we're just loading the following within the master footer.\r\n // \r\n // \r\n // \r\n var googleMaps = document.querySelectorAll('#map');\r\n\r\n googleMaps.forEach(googleMap => {\r\n\r\n var fnCallGoogleMaps = function () {\r\n const mapsApi = \"https://maps.googleapis.com/maps/api/js?key=AIzaSyArLoacxMnLTWH8kI1fKdsuiN3cvkBY-YI&callback=initMap\"\r\n const mapApiScript = document.querySelector(`script[src='${mapsApi}'`)\r\n\r\n if (!mapApiScript) {\r\n var scriptMapsCode = document.createElement(\"script\");\r\n scriptMapsCode.setAttribute(\"type\", \"text/javascript\");\r\n scriptMapsCode.setAttribute(\"src\", \"/SiteFiles/Js/map.js\");\r\n scriptMapsCode.addEventListener('load', function () {\r\n var scriptMapsAPI = document.createElement(\"script\");\r\n scriptMapsAPI.setAttribute(\"type\", \"text/javascript\");\r\n scriptMapsAPI.setAttribute(\"src\", mapsApi);\r\n document.body.appendChild(scriptMapsAPI);\r\n });\r\n document.body.appendChild(scriptMapsCode);\r\n }\r\n }\r\n\r\n if ('IntersectionObserver' in window) {\r\n var options = {\r\n root: null,\r\n rootMargin: \"0px\",\r\n threshold: 0.5\r\n };\r\n\r\n var observer = new IntersectionObserver(onIntersection, options);\r\n\r\n function onIntersection(entries) {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting) {\r\n fnCallGoogleMaps();\r\n observer.unobserve(entry.target);\r\n }\r\n });\r\n }\r\n\r\n observer.observe(googleMap);\r\n } else {\r\n fnCallGoogleMaps();\r\n }\r\n \r\n\r\n })\r\n\r\n \r\n /* FINISH: Lazy load Google Maps if we're using it on the current page */\r\n\r\n if (document.querySelectorAll(\".js-video-content\").length > 0) {\r\n var vContent = document.querySelectorAll(\".js-video-content\");\r\n vContent.forEach(HandleVideoContent);\r\n }\r\n\r\n $(\".js-development-location-btn\").on(\"click\", function () {\r\n var banner = $(this).closest(\".js-development-banner\");\r\n var map = banner.find(\".js-development-map\");\r\n var slider = banner.find(\".js-development-banner-slider\");\r\n if (map && map.hasClass(\"hidden\")) {\r\n map.removeClass(\"hidden\");\r\n slider.addClass(\"hidden\");\r\n }\r\n });\r\n\r\n $(\".js-development-banner-map-close\").on(\"click\", function () {\r\n var banner = $(this).closest(\".js-development-banner\");\r\n var map = banner.find(\".js-development-map\");\r\n var slider = banner.find(\".js-development-banner-slider\");\r\n if (map && !map.hasClass(\"hidden\")) {\r\n slider.removeClass(\"hidden\");\r\n map.addClass(\"hidden\");\r\n }\r\n });\r\n\r\n var caseStudyReadMoreButtons = document.querySelectorAll(\".js-case-study-read-more\");\r\n\r\n caseStudyReadMoreButtons.forEach(function (btn) {\r\n btn.addEventListener(\"click\", function (event) {\r\n var item = btn.closest(\".js-case-study-item\");\r\n if (item) {\r\n var image = item.querySelector(\".js-case-study-image\");\r\n var title = item.querySelector(\".js-case-study-title\");\r\n var quote = item.querySelector(\".js-case-study-short-quote\");\r\n if (image) {\r\n image.classList.add(\"hide\");\r\n }\r\n if (title) {\r\n title.classList.add(\"hide\");\r\n }\r\n if (quote) {\r\n quote.classList.add(\"hide\");\r\n }\r\n item.querySelector(\".js-case-study-hover\").classList.add(\"show\");\r\n btn.classList.add(\"hide\");\r\n }\r\n });\r\n });\r\n\r\n var caseStudyAlternativeItems = document.querySelectorAll(\".js-case-study-item\");\r\n\r\n caseStudyAlternativeItems.forEach(function (item) {\r\n item.addEventListener(\"mouseover\", function (event) {\r\n if (window.innerWidth > 1023) {\r\n var image = item.querySelector(\".js-case-study-image\");\r\n var title = item.querySelector(\".js-case-study-title\");\r\n var quote = item.querySelector(\".js-case-study-short-quote\");\r\n const hoverContent = item.querySelector(\".js-case-study-hover\")\r\n let imgHeight = 0\r\n \r\n if (image) {\r\n imgHeight = image.offsetHeight;\r\n \r\n }\r\n if (title) {\r\n title.classList.add(\"hide\");\r\n }\r\n if (quote) {\r\n quote.classList.add(\"hide\");\r\n }\r\n if (hoverContent) {\r\n hoverContent.style.maxHeight = `${imgHeight}px`;\r\n }\r\n item.querySelector(\".js-case-study-read-more\").classList.add(\"hide\");\r\n }\r\n });\r\n\r\n item.addEventListener(\"mouseout\", function (event) {\r\n if (window.innerWidth > 1023) {\r\n var image = item.querySelector(\".js-case-study-image\");\r\n var title = item.querySelector(\".js-case-study-title\");\r\n var quote = item.querySelector(\".js-case-study-short-quote\");\r\n if (image) {\r\n image.classList.remove(\"hide\");\r\n }\r\n if (title) {\r\n title.classList.remove(\"hide\");\r\n }\r\n if (quote) {\r\n quote.classList.remove(\"hide\");\r\n }\r\n item.querySelector(\".js-case-study-read-more\").classList.remove(\"hide\");\r\n }\r\n });\r\n });\r\n\r\n window.addEventListener(\"resize\", function (ev) {\r\n caseStudyAlternativeItems.forEach(function (item) {\r\n var title = item.querySelector(\".js-case-study-title\");\r\n var quote = item.querySelector(\".js-case-study-short-quote\");\r\n if (title) {\r\n title.classList.remove(\"hide\");\r\n }\r\n if (quote) {\r\n quote.classList.remove(\"hide\");\r\n }\r\n item.querySelector(\".js-case-study-read-more\").classList.remove(\"hide\");\r\n item.querySelector(\".js-case-study-hover\").classList.remove(\"show\");\r\n });\r\n });\r\n\r\n let $reviewSliders = $(\".js-review-slider\");\r\n $reviewSliders.each(function (item) {\r\n var $slider = $(this);\r\n var $parent = $slider.parent();\r\n $slider.slick({\r\n infinite: false,\r\n arrows: true,\r\n slidesToShow: 3,\r\n slidesToScroll: 1,\r\n variableWidth: false,\r\n dots: true,\r\n appendDots: $parent.find(\".slick-nav__bar\"),\r\n prevArrow: $parent.find(\".slick-nav__arrow--left\"),\r\n nextArrow: $parent.find(\".slick-nav__arrow--right\"),\r\n responsive: [\r\n {\r\n breakpoint: 1023,\r\n settings: {\r\n slidesToShow: 1.2\r\n }\r\n }]\r\n });\r\n });\r\n});\r\n\r\nfunction SetupSwatches() {\r\n $(document).find(\".news-listing__filter ul li\").each(function () {\r\n var currentCat = $(this);\r\n var currentCatColour = $(this).find(\"span\").attr(\"data-cat-colour\");\r\n var currentHTML = $(this).html();\r\n var spanToCreate = \"\";\r\n $(this).html(spanToCreate + currentHTML);\r\n colourSwatches.push(currentCatColour);\r\n });\r\n // console.log(colourSwatches);\r\n}\r\n\r\nfunction RefreshSwatches() {\r\n // console.log(colourSwatches);\r\n var count = 0;\r\n $(document).find(\".news-listing__filter ul li\").each(function () {\r\n var currentHTML = $(this).html();\r\n var spanToCreate = \"\";\r\n $(this).html(spanToCreate + currentHTML);\r\n count++;\r\n })\r\n}\r\nfunction getLeftPosition(node) {\r\n var rect = node.getBoundingClientRect();\r\n var rectTop = rect.top - 400;\r\n if (rectTop < 0) {\r\n return 0;\r\n }\r\n else {\r\n var rectTopAsPercentage = rectTop / 10;\r\n return rectTopAsPercentage;\r\n }\r\n\r\n}\r\n\r\nfunction isInViewport(node, overflowTop, overflowBottom) { //node must be a javascript elem, not a jQuery one. Use $(\".element\")[0] to pull vanilla elem from jQuery object\r\n var rect = node.getBoundingClientRect();\r\n return (\r\n (rect.height > 0 || rect.width > 0) &&\r\n rect.bottom >= -Math.abs(overflowBottom) &&\r\n rect.right >= 0 &&\r\n (rect.top - overflowTop) <= (window.innerHeight || document.documentElement.clientHeight) &&\r\n rect.left <= (window.innerWidth || document.documentElement.clientWidth)\r\n );\r\n}\r\n\r\nfunction setVideoFrameSize($banner, $iframe) {\r\n var extraPixels = 4; // This adds just a few extra pixels to avoid getting horrible white space around the edges of the iframe.\r\n var parentHeight = $banner.find(\".banner-search__banner\").height() + extraPixels;\r\n if (parentHeight > 0) {\r\n\r\n var width = $(window).width() + extraPixels;\r\n var height = (width * 9) / 16;\r\n\r\n if (height > parentHeight) {\r\n $iframe.width(width);\r\n $iframe.height((width * 9) / 16);\r\n\r\n }\r\n else {\r\n $iframe.width(parentHeight * 1.78);\r\n $iframe.height(parentHeight);\r\n }\r\n }\r\n else {\r\n var t = setTimeout(function () { setVideoFrameSize($banner, $iframe) }, 100);\r\n }\r\n}\r\n\r\nfunction DoLoadTopBannerVimeo() {\r\n var showVideo = true;\r\n var $banner = $(\".banner-search\");\r\n var $iframe = $banner.find(\"iframe\").first();\r\n var started = false;\r\n\r\n if ($iframe.length > 0 && showVideo && $(window).width() > 991) {\r\n var player = new Vimeo.Player($iframe, { loop: true, background: true, autoplay: true, controls: false });\r\n player.setVolume(0);\r\n var slowTimeout = setTimeout(function () { if (!started) { started = true; player.unload(); $iframe.parent().remove(); console.log(\"Slow connection, aborting banner video\"); } }, 7000);\r\n player.on('progress', function (data) {\r\n if (!started) {\r\n $banner.addClass(\"videoLoaded\");\r\n $iframe.css(\"opacity\", \"\");\r\n }\r\n started = true;\r\n });\r\n\r\n $(window).resize(function () {\r\n if (showVideo) {\r\n $banner.find(\".banner-search__banner\").css(\"height\");\r\n setVideoFrameSize($banner, $iframe);\r\n\r\n setTimeout(function () { setVideoFrameSize($banner, $iframe); }, 500);\r\n }\r\n }).trigger('resize');\r\n }\r\n else {\r\n $iframe.parent().remove();\r\n }\r\n}\r\n\r\nfunction zoom(scale, isSmooth, currentController) {\r\n if (scale) {\r\n var transform = currentController.getTransform();\r\n var deltaX = transform.x;\r\n var deltaY = transform.y;\r\n var offsetX = scale + deltaX;\r\n var offsetY = scale + deltaY;\r\n\r\n if (isSmooth) {\r\n currentController.smoothZoom(offsetX, offsetY, scale);\r\n } else {\r\n currentController.zoomTo(offsetX, offsetY, scale);\r\n }\r\n }\r\n}\r\n\r\n//$(window).on(\"load\", function () {\r\n// if ($(\"#pnlReportAProblemThankYou\").length > 0) {\r\n// setTimeout(function () {\r\n// $(\"html, body\").scrollTop($(\"#pnlReportAProblemThankYou\").offset().top);\r\n// }, 500);\r\n// }\r\n//});\r\n\r\nfunction AddBannerSearchFunctionality() {\r\n if ($(document).find(\".banner-search__search-btn\").length > 0) {\r\n $(document).find(\".banner-search__search-btn\").on(\"click\", function () {\r\n var searchVal = $(document).find(\".banner-search__search-input\").val();\r\n window.location.replace(\"/search/\" + searchVal);\r\n });\r\n\r\n $(document).find(\".banner-search__search-input\").on('keyup', function (e) {\r\n if (e.key === 'Enter' || e.keyCode === 13) {\r\n var searchVal = $(document).find(\".banner-search__search-input\").val();\r\n window.location.replace(\"/search/\" + searchVal);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction AddInnerBannerSearchFunctionality() {\r\n const btn = document.querySelector(\".location-banner__search-btn\");\r\n const inputs = document.querySelectorAll(\".location-banner__search-input\");\r\n\r\n inputs.forEach(input => {\r\n\r\n if (btn) {\r\n btn.addEventListener(\"click\", function () {\r\n var searchVal = input.value;\r\n var typeVal = btn.dataset.type;\r\n window.location.replace(\"/search/\" + searchVal + `?type=${typeVal}`);\r\n });\r\n }\r\n\r\n input.addEventListener('keyup', function (e) {\r\n if (e.key === 'Enter' || e.keyCode === 13) {\r\n var searchVal = input.value;\r\n var typeVal = btn.dataset.type;\r\n window.location.replace(\"/search/\" + searchVal + `?type=${typeVal}`);\r\n }\r\n });\r\n });\r\n}\r\n\r\nvar prm = Sys.WebForms.PageRequestManager.getInstance();\r\n\r\nprm.add_endRequest(function () {\r\n NewsletterSignup();\r\n //DoSvgConvert();\r\n AddInputWrappers();\r\n //RefreshSwatches();\r\n SetupSwatches();\r\n AddBannerSearchFunctionality();\r\n\r\n if ($(window).width() < 991) {\r\n if ($(\".dashboard__docs\").length > 0) {\r\n $(\".dashboard__docs\").each(function () {\r\n var currentWidget = $(this).parent();\r\n var currentSlider = $(this);\r\n\r\n currentSlider.slick({\r\n autoplay: false,\r\n infinite: false,\r\n arrows: false,\r\n slidesToShow: 1,\r\n slidesToScroll: 1,\r\n variableWidth: true,\r\n dots: true,\r\n appendDots: currentWidget.find(\".slick-nav__bar\"),\r\n });\r\n });\r\n }\r\n\r\n }\r\n if ($(document).find(\".development-filter__filter-area\").length > 0) {\r\n if ($(window).width() < 1024) {\r\n $(document).find(\".development-filter__filter-title\").on(\"click\", function () {\r\n // console.log(\"eh\");\r\n var clickedFilter = $(this).parent().parent();\r\n if (clickedFilter.hasClass(\"on\")) {\r\n clickedFilter.removeClass(\"on\");\r\n }\r\n else {\r\n clickedFilter.addClass(\"on\");\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n $(document).find(\".news-listing__filter\").on(\"click\", function () {\r\n var cats = $(document).find(\".news-listing__filter__categories\");\r\n if (cats.hasClass(\"hidden\")) {\r\n cats.removeClass(\"hidden\");\r\n }\r\n else {\r\n cats.addClass(\"hidden\")\r\n }\r\n });\r\n //if ($(\".charCount\").length) {\r\n // updateCountdown();\r\n // $('.charCount').change(updateCountdown);\r\n // $('.charCount').keyup(updateCountdown);\r\n //}\r\n\r\n $(\"textarea.expanding.empty\").on(\"load change\", function () {\r\n $(this).toggleClass(\"empty\", ($(this).val() === ''));\r\n });\r\n\r\n $(document).find(\".form-style__field select\").each(function () {\r\n if ($(this).prop('selectedIndex') != 0) {\r\n $(this).addClass(\"has-value\");\r\n }\r\n });\r\n\r\n if ($(\".plot-listing__plot\").length > 0) {\r\n if ($(window).width() < 1024) {\r\n $(\".plot-listing__plot\").first().addClass(\"selected\");\r\n $(\".plot-listing__plot\").first().find(\".plot-listing__plot__tab\").addClass(\"selected\");\r\n $(\".plot-listing__plot\").first().find(\".plot-listing__plot__info-holder\").addClass(\"selected\");\r\n $(\".plot-listing__plot\").on(\"click\", function () {\r\n if (!$(this).hasClass(\"selected\")) {\r\n $(this).addClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__tab\").addClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__info-holder\").addClass(\"selected\");\r\n }\r\n else {\r\n $(this).removeClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__tab\").removeClass(\"selected\");\r\n $(this).find(\".plot-listing__plot__info-holder\").removeClass(\"selected\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n if ($(\".account-docs\").length > 0) {\r\n $(\".dashboard__doc__accept-button__holder\").on(\"click\", function (e) {\r\n if ($(this).find(\".button--greyed-out\").length > 0) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $(this).find(\".dashboard__doc__accept-button__info\").removeClass(\"dashboard__doc__accept-button__info--hidden\");\r\n }\r\n });\r\n\r\n $(\".dashboard__doc__accept-button__info\").on(\"click\", function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n $(this).addClass(\"dashboard__doc__accept-button__info--hidden\");\r\n });\r\n }\r\n \r\n});\r\n\r\nfunction AddInputWrappers() {\r\n $(\".form input[type=text], .form select, .form textarea\").not(\"#AffordCalc.form .homeSearch input[type=text]\").each(function () {\r\n if (!$(this).parent().is(\".inputWrap\")) {\r\n $(this).wrap(\"
    \");\r\n }\r\n });\r\n}\r\n\r\nfunction NewsletterSignup() {\r\n $(\".signUp .next\").click(function () {\r\n $(this).parent().find(\".hiddenBtn\").trigger(\"click\");\r\n });\r\n}\r\n\r\nfunction NewsletterSignupNextStep(prevStep, nextStep) {\r\n if (prevStep === \"two\") {\r\n $(\".step.one\").addClass(\"hide\");\r\n $(\".steps .item.one\").removeClass(\"active\");\r\n }\r\n\r\n $(\".step.\" + prevStep).addClass(\"hide\");\r\n $(\".step.\" + nextStep).removeClass(\"hide\");\r\n\r\n $(\".steps .item.\" + prevStep).removeClass(\"active\");\r\n $(\".steps .item.\" + nextStep).addClass(\"active\");\r\n}\r\n\r\nfunction HandleVideoContent(vc) {\r\n //vc.addEventListener(\"click\", function () {\r\n // const bgVideo = vc.querySelector(\".js-bg-video\");\r\n // const { videoId } = bgVideo.dataset;\r\n\r\n // if (!videoId) return;\r\n\r\n // const options = {\r\n // id: videoId,\r\n // loop: true,\r\n // muted: true,\r\n // controls: false\r\n // };\r\n\r\n // const player = new Player(bgVideo, options);\r\n // const videoControls = new VideoControls(player, bgVideo.parentElement);\r\n // videoControls.updateProgressBar();\r\n\r\n // player\r\n // .play()\r\n // .then(() => {\r\n // bgVideo.classList.add(\"is-active\");\r\n // $(this).find(\".house-type-film__overlay\").addClass(\"is-hidden\");\r\n // $(this).find(\".video-controls\").addClass(\"is-visible\");\r\n\r\n // videoLoaded = true;\r\n // })\r\n // .catch((error) => console.error(error));\r\n\r\n // $(\".house-type-film\").on(\"click\", \".js-video-controls-play-pause\", function () {\r\n // videoControls.handlePlayPause(this);\r\n // });\r\n\r\n // $(\".house-type-film\").on(\"click\", \".js-video-controls-fullscreen\", function () {\r\n // videoControls.toggleFullScreen();\r\n // });\r\n\r\n // $(\".house-type-film\").on(\"click\", \".js-video-controls-mute\", function () {\r\n // videoControls.toggleSound();\r\n // });\r\n\r\n //});\r\n}\r\n"],"names":["_typeof","o","Symbol","iterator","constructor","prototype","_toPropertyKey","arg","key","input","hint","prim","toPrimitive","undefined","res","call","TypeError","String","Number","_objectWithoutProperties","source","excluded","i","target","sourceKeys","Object","keys","length","indexOf","objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_arrayLikeToArray","arr","len","arr2","Array","_slicedToArray","isArray","arrayWithHoles","r","l","t","e","n","u","a","f","next","done","push","value","iterableToArrayLimit","minLen","arrayLikeToArray","toString","slice","name","from","test","unsupportedIterableToArray","nonIterableRest","V","toVector","v","fallback","add","v1","v2","sub","addTo","subTo","rubberband","distance","dimension","constant","Math","abs","Infinity","pow","rubberbandIfOutOfBounds","position","min","max","clamp","_toPrimitive","_defineProperty","obj","defineProperty","enumerable","configurable","writable","ownKeys","filter","getOwnPropertyDescriptor","apply","_objectSpread2","arguments","forEach","getOwnPropertyDescriptors","defineProperties","EVENT_TYPE_MAP","pointer","start","change","end","mouse","touch","gesture","capitalize","string","toUpperCase","actionsWithoutCaptureSupported","toHandlerProp","device","action","capture","deviceProps","actionKey","includes","hasCapture","pointerCaptureEvents","parseProp","prop","eventKey","substring","toLowerCase","passive","replace","captureKey","isTouch","event","getPointerType","pointerType","getValueEvent","type","changedTouches","targetTouches","getTouchList","distanceAngle","P1","P2","dx","clientX","dy","clientY","cx","cy","hypot","angle","atan2","PI","origin","_unused","touchIds","touches","_event$currentTarget","_event$currentTarget$","currentTarget","contains","getCurrentTargetTouchList","map","identifier","touchDistanceAngle","ids","pointerId","valueEvent","pointerValues","wheelValues","deltaX","deltaY","deltaMode","args","noop","chain","fns","result","fn","this","assignDefault","assign","Engine","ctrl","state","computeValues","computeInitial","init","reset","shared","eventStore","gestureEventStores","timeoutStore","gestureTimeoutStores","config","sharedConfig","handler","handlers","ingKey","_active","active","_blocked","_force","_step","intentional","_movement","_distance","_direction","_delta","_bounds","axis","memo","elapsedTime","timeDelta","direction","overflow","_movementBound","velocity","movement","delta","timeStamp","lastOffset","offset","startTime","values","_values","transform","_initial","initial","compute","dt","preventDefault","cancelable","pointerIds","size","locked","document","pointerLockElement","payload","buttons","shiftKey","altKey","metaKey","ctrlKey","getEventDetails","down","pressed","_absoluteDelta","axisIntent","_m0","_m1","t0","t1","threshold","hasCustomTransform","sign","v0","restrictToAxis","previousOffset","gestureIsActive","first","last","bounds","setup","computeOffset","ox","oy","x0","x1","y0","y1","Vx","Vy","Rx","Ry","X0","X1","Y0","Y1","computeRubberband","computeMovement","absoluteDelta","emit","clean","triggerAllEvents","aliasKey","CoordinatesEngine","super","axisThreshold","absDx","absDy","selectAxis","lockDirection","identity","commonConfigResolver","enabled","eventOptions","_k","coordinatesConfigResolver","_v","current","HTMLElement","left","right","top","bottom","KEYS_DELTA_MAP","ArrowRight","displacement","factor","ArrowLeft","ArrowUp","ArrowDown","isBrowser","window","createElement","supportsTouchEvents","SUPPORT","GestureEvent","supportsGestureEvents","touchscreen","navigator","maxTouchPoints","pointerLock","DEFAULT_DRAG_AXIS_THRESHOLD","pen","dragConfigResolver","lock","preventScrollAxis","preventScroll","preventScrollDelay","pointerCapture","pointerButtons","filterTaps","tapsThreshold","swipe","duration","delay","keyboardDisplacement","clampStateInternalMovementToBounds","dirx","diry","pinchConfigResolver","scaleBounds","angleBounds","_scaleBounds","D","_angleBounds","A","modifierKey","pinchOnWheel","moveConfigResolver","mouseOnly","scrollConfigResolver","wheelConfigResolver","hoverConfigResolver","EngineMap","Map","ConfigResolverMap","registerAction","set","engine","resolver","dragAction","_pointerId","_pointerActive","_keyboardActive","_preventScroll","_delayed","tap","canceled","cancel","bind","boundRect","getBoundingClientRect","targetRect","setTimeout","setActive","pointerClean","pointerDown","ctrlIds","setEventIds","setPointerCapture","setupPointer","setupScrollPrevention","setupDelayTrigger","startPointerDrag","pointerMove","id","movementX","movementY","remove","pointerUp","hasPointerCapture","releasePointerCapture","_dx","_dy","_mx","_my","svx","svy","sx","sy","sdt","_vx","_vy","pointerClick","detail","stopPropagation","requestPointerLock","exitPointerLock","persist","persistEvent","keyDown","deltaFn","keyUp","bindFunction","hoverAction","enter","leave","moveAction","move","moveChange","moveStart","moveEnd","pinchAction","_pointerEvents","_touchIds","turns","axisMovementDifference","touchStart","ctrlTouchIds","every","has","pinchStart","pointerStart","ctrlPointerIds","touchMove","pinchMove","prev_a","delta_a","delta_turns","touchEnd","some","pointerEnd","delete","gestureStart","scale","rotation","gestureMove","_previousMovement","gestureEnd","wheel","find","k","wheelChange","wheelStart","wheelEnd","scrollAction","scroll","scrollChange","scrollEnd","_ref","_ref2","scrollX","scrollY","scrollLeft","scrollTop","scrollValues","wheelAction","_objectWithoutPropertiesLoose","sharedConfigResolver","_excluded","resolveWith","resolvers","entries","EventStore","gestureKey","Set","_ctrl","_gestureKey","element","options","listeners","_listeners","toDomEventType","addEventListener","removeEventListener","clear","TimeoutStore","callback","ms","_timeouts","timeout","get","clearTimeout","Controller","internalHandlers","drag","setupGesture","pinch","hover","resolveGestures","applyHandlers","nativeHandlers","applyConfig","newConfig","_config","rest","parse","_targetEventStore","gestures","effect","props","gestureConfig","bindToProps","nativeBindFunction","handlerProp","withPassiveOption","isNative","_options$capture","_options$passive","RE_NOT_NATIVE","registerGesture","actions","handlerKey","startKey","endKey","parseMergedHandlers","mergedHandlers","mergedConfig","_handlers","native","RegExp","lastMatch","sortHandlers","Recognizer","_target","destroy","setConfig","Gesture","gestureFunction","defaultInstanceSettings","update","begin","loopBegin","changeBegin","changeComplete","loopComplete","complete","loop","autoplay","timelineOffset","defaultTweenSettings","endDelay","easing","round","validTransforms","cache","CSS","springs","minMax","val","stringContains","str","text","applyArguments","func","is","pth","hasOwnProperty","svg","SVGElement","inp","HTMLInputElement","dom","nodeType","fnc","und","nil","hex","rgb","hsl","col","parseEasingParameters","match","exec","split","p","parseFloat","spring","params","mass","stiffness","damping","w0","sqrt","zeta","wd","b","solver","progress","exp","cos","sin","cached","frame","elapsed","steps","ceil","eases","functionEasings","bezier","kSampleStepSize","aA1","aA2","B","C","calcBezier","aT","getSlope","mX1","mY1","mX2","mY2","sampleValues","Float32Array","x","getTForX","aX","intervalStart","currentSample","kSplineTableSize","guessForT","initialSlope","aGuessT","currentSlope","newtonRaphsonIterate","aA","aB","currentX","currentT","binarySubdivide","penner","linear","Sine","Circ","Back","Bounce","pow2","Elastic","amplitude","period","asin","easeIn","parseEasings","ease","selectString","querySelectorAll","filterArray","thisArg","flattenArray","reduce","concat","toArray","NodeList","HTMLCollection","arrayContains","cloneObject","clone","replaceObjectProps","o1","o2","mergeObjects","colorToRgb","rgbValue","hexValue","m","g","parseInt","hexToRgba","hslValue","h","s","hue2rgb","q","hslToRgba","getUnit","getFunctionValue","animatable","total","getAttribute","el","convertPxToUnit","unit","tempEl","tagName","parentEl","parentNode","body","appendChild","style","width","offsetWidth","removeChild","convertedUnit","getCSSValue","uppercasePropName","getComputedStyle","getPropertyValue","getAnimationType","getElementTransforms","reg","transforms","getTransformValue","propName","defaultVal","getTransformUnit","list","getOriginalTargetValue","getRelativeValue","to","operator","y","validateValue","originalUnit","unitLess","substr","getDistance","p1","p2","getPolylineLength","previousPos","points","totalLength","numberOfItems","currentPos","getItem","getTotalLength","getCircleLength","getRectLength","getLineLength","getPolygonLength","getParentSvg","pathEl","svgData","parentSvgEl","getParentSvgEl","rect","viewBoxAttr","height","viewBox","w","vW","vH","getPathProgress","path","isPathTargetInsideSVG","point","getPointAtLength","p0","scaleX","scaleY","property","decomposeValue","rgx","original","numbers","strings","parseTargets","targets","item","pos","self","getAnimatables","parsed","normalizePropertyTweens","tweenSettings","settings","propArray","getProperties","properties","keyframes","propertyNames","newKey","flattenKeyframes","tweens","normalizeTweens","previousTween","tween","normalizeTweenValues","tweenValue","toUnit","originalValue","previousValue","fromUnit","isPath","isColor","setProgressValue","css","attribute","setAttribute","object","manual","setTargetsValue","valueUnit","animType","getAnimations","animatables","lastTween","createAnimation","getInstanceTimings","animations","animLength","getTlOffset","anim","timings","instanceID","activeInstances","raf","step","activeInstancesLength","activeInstance","paused","splice","tick","requestAnimationFrame","anime","suspendWhenDocumentHidden","isDocumentHidden","cancelAnimationFrame","instance","_onDocumentVisibility","hidden","children","lastTime","now","childrenLength","resolve","makePromise","promise","Promise","_resolve","finished","instanceSettings","createNewInstance","toggleInstanceDirection","reversed","child","adjustTime","time","resetTime","currentTime","speed","seekChild","seek","setAnimationsProgress","insTime","animationsLength","tweenLength","eased","isNaN","toNumbersLength","toNumber","fromNumber","stringsLength","n$1","currentValue","setCallback","cb","passThrough","setInstanceProgress","engineTime","insDuration","insDelay","insEndDelay","reversePlayback","i$1","syncInstanceChildren","began","loopBegan","changeBegan","changeCompleted","remaining","completed","pause","play","reverse","restart","removeTargetsFromInstance","removeTargetsFromAnimations","targetsArray","c","childAnimations","version","running","convertPx","percent","setDashoffset","pathLength","stagger","grid","fromIndex","fromFirst","fromCenter","fromLast","isRange","val1","val2","maxValue","index","fromX","fromY","floor","distanceX","distanceY","timeline","tl","instanceParams","tlIndex","ins","insParams","tlDuration","random","toPropertyKey","handleWheel","els","_ref$movement","newScale","maxScale","minScale","defaultDuration","defaultEasing","handlePinch","_ref2$delta","d","_excluded2","rounded","handleDrag","setInfoMessageVisibility","_ref3","_ref3$movement","_ref3$delta","pinching","_excluded3","scaledImageWidth","initialElementWidth","scaledImageHeight","initialElementHeight","correcting","isMobile","horizontalDiff","verticalDiff","leftEdge","rightEdge","topEdge","bottomEdge","boundaries","safeAreaDistance","correctingDuration","correctingEasing","translateX","translateY","calculateBoundaries","container","containerDims","containerWidth","containerHeight","offsetHeight","containerPadLeft","paddingLeft","containerPadTop","paddingTop","module","exports","__esModule","require$$0","_regeneratorRuntime","asyncIterator","toStringTag","define","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","then","callInvokeWithMethodAndArg","Error","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","displayName","isGeneratorFunction","mark","setPrototypeOf","__proto__","awrap","async","pop","prev","charAt","stop","rval","handle","finish","catch","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","iOS","iPhone","iPad","iPhoneHomeApp","SetupSwatches","$","each","currentCatColour","attr","currentHTML","html","spanToCreate","setVideoFrameSize","$banner","$iframe","parentHeight","DoLoadTopBannerVimeo","started","player","Vimeo","Player","background","controls","setVolume","unload","parent","console","log","on","data","addClass","resize","trigger","AddBannerSearchFunctionality","searchVal","location","keyCode","HandleVideoContent","vc","ready","userAgent","removeClass","gtag","event_category","event_label","Deferred","$img","imgID","imgClass","imgURL","$svg","removeAttr","replaceWith","DoSvgConvert","SetNavPromo","currentitem","currentpromo","image","title","buttonlink","buttontext","btn","firstItem","hasClass","currentNode","currentLink","currentText","href","footerColParent","autocomplete","request","response","ajax","url","term","dataType","contentType","success","dev","error","jqXHR","textStatus","errorThrown","minLength","focus","ui","select","_renderItem","ul","append","appendTo","querySelector","typeVal","dataset","currentWidget","slick","infinite","arrows","slidesToShow","slidesToScroll","variableWidth","dots","appendDots","prevArrow","nextArrow","currentSlider","currentSliderNumber","currentSliderThumb","currentPercentage","leftToUse","currentSlide","nextSlide","responsive","breakpoint","thisIsThis","node","overflowTop","overflowBottom","innerHeight","documentElement","clientHeight","innerWidth","clientWidth","rectTop","getLeftPosition","currentButton","currentItem","currentImage","opts","parentElement","_objectSpread","defaultOptions","mobileBreakpoint","panEnabled","wheelEnabled","pinchEnabled","zoomInButton","zoomOutButton","infoMessage","onDrag","visible","opacity","visibility","onPinch","onWheel","setStyles","img","touchAction","pixelPanZoom","tabs","tabbedItems","currentIndex","classList","clickedFilter","cats","click","param","urlparam","GetParameterValues","googleMap","fnCallGoogleMaps","mapsApi","scriptMapsCode","scriptMapsAPI","observer","IntersectionObserver","entry","isIntersecting","unobserve","root","rootMargin","observe","banner","closest","slider","quote","caseStudyAlternativeItems","hoverContent","imgHeight","maxHeight","ev","$slider","$parent","Sys","WebForms","PageRequestManager","getInstance","add_endRequest","not","toggleClass"],"mappings":"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"}