-
Notifications
You must be signed in to change notification settings - Fork 0
/
component---src-pages-templates-services-tsx-0e6c6c54310d9f7b32b3.js.map
1 lines (1 loc) · 49.2 KB
/
component---src-pages-templates-services-tsx-0e6c6c54310d9f7b32b3.js.map
1
{"version":3,"file":"component---src-pages-templates-services-tsx-0e6c6c54310d9f7b32b3.js","mappings":"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","sources":["webpack://code-cave/./src/components/services/servicePreview.tsx","webpack://code-cave/./src/components/services/servicesCarouselButtons.tsx","webpack://code-cave/./node_modules/wheel-gestures/dist/wheel-gestures.esm.js","webpack://code-cave/./node_modules/embla-carousel-wheel-gestures/dist/embla-carousel-wheel-gestures.esm.js","webpack://code-cave/./src/components/services/servicesCarousel.tsx","webpack://code-cave/./src/pagesTemplates/services.tsx"],"sourcesContent":["import React from \"react\";\n\nimport { IServicePreview } from \"../../types/services.type\";\n\nconst ServicePreview = ({\n service,\n className,\n}: {\n service: IServicePreview;\n className?: string;\n}) => {\n const {\n html,\n frontmatter: {\n title,\n keywords,\n image: { publicURL: imageURL },\n },\n } = service;\n\n return (\n <div\n className={`service-preview origin-[5%_50%] break-inside-avoid flex flex-col gap-5 sm:px-8 py-8 text-secondary-100 cursor-pointer ${className}`}\n itemScope\n itemType=\"https://schema.org/Service\"\n >\n <div className=\"flex items-center gap-5\">\n <img\n src={imageURL}\n alt={`${title} logo`}\n className=\"invert h-10 w-10\"\n />\n <h2 className=\"font-bold text-2xl\" itemProp=\"serviceType\">\n {title}\n </h2>\n </div>\n <div\n className={`text-base text-secondary-70`}\n dangerouslySetInnerHTML={{ __html: html }}\n itemProp=\"description\"\n />\n {keywords ? (\n <div className=\"flex gap-2 flex-wrap w-full\">\n {keywords.map((hashtag) => (\n <p\n key={hashtag}\n className=\"h-8 flex items-center whitespace-nowrap px-4 bg-main-70 text-secondary-70 rounded-lg\"\n >\n {hashtag}\n </p>\n ))}\n </div>\n ) : null}\n </div>\n );\n};\n\nexport default ServicePreview;\n","import React, {\n ComponentPropsWithRef,\n useCallback,\n useEffect,\n useState,\n} from \"react\";\nimport { EmblaCarouselType } from \"embla-carousel\";\nimport { IServicePreview } from \"../../types/services.type\";\n\ntype UseDotButtonType = {\n selectedIndex: number;\n onServiceButtonClick: (index: number) => void;\n};\n\nexport const useServicesButtons = (\n emblaApi: EmblaCarouselType | undefined,\n onButtonClick?: (emblaApi: EmblaCarouselType) => void\n): UseDotButtonType => {\n const [selectedIndex, setSelectedIndex] = useState(0);\n\n const onServiceButtonClick = useCallback(\n (index: number) => {\n if (!emblaApi) return;\n emblaApi.scrollTo(index);\n if (onButtonClick) onButtonClick(emblaApi);\n },\n [emblaApi, onButtonClick]\n );\n\n const onSelect = useCallback((emblaApi: EmblaCarouselType) => {\n setSelectedIndex(emblaApi.selectedScrollSnap());\n }, []);\n\n useEffect(() => {\n if (!emblaApi) return;\n\n onSelect(emblaApi);\n\n emblaApi.on(\"reInit\", onSelect).on(\"select\", onSelect);\n }, [emblaApi, onSelect]);\n\n return {\n selectedIndex,\n onServiceButtonClick,\n };\n};\n\ninterface IServiceCarouselButtonProps extends ComponentPropsWithRef<\"button\"> {\n service: IServicePreview;\n}\n\nexport const ServiceCarouselButton = ({\n service,\n className,\n ...attr\n}: IServiceCarouselButtonProps) => {\n const {\n frontmatter: {\n title,\n image: { publicURL: imageURL },\n },\n } = service;\n\n return (\n <button\n aria-label=\"view service\"\n className={`flex gap-5 min-h-10 items-center ${className}`}\n type=\"button\"\n {...attr}\n >\n <div className=\"py-1.5\">\n <img src={imageURL} alt={`${title} logo`} className=\"invert h-7 w-7\" />\n </div>\n <h2 className=\"hidden lg:block font-semibold text-lg text-secondary-100 text-start\">\n {title}\n </h2>\n </button>\n );\n};\n","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar DECAY = 0.996;\n/**\r\n * movement projection based on velocity\r\n * @param velocityPxMs\r\n * @param decay\r\n */\n\nvar projection = function projection(velocityPxMs, decay) {\n if (decay === void 0) {\n decay = DECAY;\n }\n\n return velocityPxMs * decay / (1 - decay);\n};\n\nfunction lastOf(array) {\n return array[array.length - 1];\n}\nfunction average(numbers) {\n return numbers.reduce(function (a, b) {\n return a + b;\n }) / numbers.length;\n}\nvar clamp = function clamp(value, min, max) {\n return Math.min(Math.max(min, value), max);\n};\nfunction addVectors(v1, v2) {\n if (v1.length !== v2.length) {\n throw new Error('vectors must be same length');\n }\n\n return v1.map(function (val, i) {\n return val + v2[i];\n });\n}\nfunction absMax(numbers) {\n return Math.max.apply(Math, numbers.map(Math.abs));\n} // eslint-disable-next-line @typescript-eslint/ban-types\n\nfunction deepFreeze(o) {\n Object.freeze(o);\n Object.values(o).forEach(function (value) {\n if (value !== null && typeof value === 'object' && !Object.isFrozen(value)) {\n deepFreeze(value);\n }\n });\n return o;\n}\n\nfunction EventBus() {\n var listeners = {};\n\n function on(type, listener) {\n listeners[type] = (listeners[type] || []).concat(listener);\n return function () {\n return off(type, listener);\n };\n }\n\n function off(type, listener) {\n listeners[type] = (listeners[type] || []).filter(function (l) {\n return l !== listener;\n });\n }\n\n function dispatch(type, data) {\n if (!(type in listeners)) return;\n listeners[type].forEach(function (l) {\n return l(data);\n });\n }\n\n return deepFreeze({\n on: on,\n off: off,\n dispatch: dispatch\n });\n}\n\nfunction WheelTargetObserver(eventListener) {\n var targets = []; // add event listener to target element\n\n var observe = function observe(target) {\n target.addEventListener('wheel', eventListener, {\n passive: false\n });\n targets.push(target);\n return function () {\n return unobserve(target);\n };\n }; /// remove event listener from target element\n\n\n var unobserve = function unobserve(target) {\n target.removeEventListener('wheel', eventListener);\n targets = targets.filter(function (t) {\n return t !== target;\n });\n }; // stops watching all of its target elements for visibility changes.\n\n\n var disconnect = function disconnect() {\n targets.forEach(unobserve);\n };\n\n return deepFreeze({\n observe: observe,\n unobserve: unobserve,\n disconnect: disconnect\n });\n}\n\nvar LINE_HEIGHT = 16 * 1.125;\nvar PAGE_HEIGHT = typeof window !== 'undefined' && window.innerHeight || 800;\nvar DELTA_MODE_UNIT = [1, LINE_HEIGHT, PAGE_HEIGHT];\nfunction normalizeWheel(e) {\n var deltaX = e.deltaX * DELTA_MODE_UNIT[e.deltaMode];\n var deltaY = e.deltaY * DELTA_MODE_UNIT[e.deltaMode];\n var deltaZ = (e.deltaZ || 0) * DELTA_MODE_UNIT[e.deltaMode];\n return {\n timeStamp: e.timeStamp,\n axisDelta: [deltaX, deltaY, deltaZ]\n };\n}\nvar reverseAll = [-1, -1, -1];\nfunction reverseAxisDeltaSign(wheel, reverseSign) {\n if (!reverseSign) {\n return wheel;\n }\n\n var multipliers = reverseSign === true ? reverseAll : reverseSign.map(function (shouldReverse) {\n return shouldReverse ? -1 : 1;\n });\n return _extends({}, wheel, {\n axisDelta: wheel.axisDelta.map(function (delta, i) {\n return delta * multipliers[i];\n })\n });\n}\nvar DELTA_MAX_ABS = 700;\nvar clampAxisDelta = function clampAxisDelta(wheel) {\n return _extends({}, wheel, {\n axisDelta: wheel.axisDelta.map(function (delta) {\n return clamp(delta, -DELTA_MAX_ABS, DELTA_MAX_ABS);\n })\n });\n};\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\nvar ACC_FACTOR_MIN = 0.6;\nvar ACC_FACTOR_MAX = 0.96;\nvar WHEELEVENTS_TO_MERGE = 2;\nvar WHEELEVENTS_TO_ANALAZE = 5;\n\nvar configDefaults = /*#__PURE__*/deepFreeze({\n preventWheelAction: true,\n reverseSign: [true, true, false]\n});\n\nvar WILL_END_TIMEOUT_DEFAULT = 400;\nfunction createWheelGesturesState() {\n return {\n isStarted: false,\n isStartPublished: false,\n isMomentum: false,\n startTime: 0,\n lastAbsDelta: Infinity,\n axisMovement: [0, 0, 0],\n axisVelocity: [0, 0, 0],\n accelerationFactors: [],\n scrollPoints: [],\n scrollPointsToMerge: [],\n willEndTimeout: WILL_END_TIMEOUT_DEFAULT\n };\n}\n\nfunction WheelGestures(optionsParam) {\n if (optionsParam === void 0) {\n optionsParam = {};\n }\n\n var _EventBus = EventBus(),\n on = _EventBus.on,\n off = _EventBus.off,\n dispatch = _EventBus.dispatch;\n\n var config = configDefaults;\n var state = createWheelGesturesState();\n var currentEvent;\n var negativeZeroFingerUpSpecialEvent = false;\n var prevWheelEventState;\n\n var feedWheel = function feedWheel(wheelEvents) {\n if (Array.isArray(wheelEvents)) {\n wheelEvents.forEach(function (wheelEvent) {\n return processWheelEventData(wheelEvent);\n });\n } else {\n processWheelEventData(wheelEvents);\n }\n };\n\n var updateOptions = function updateOptions(newOptions) {\n if (newOptions === void 0) {\n newOptions = {};\n }\n\n if (Object.values(newOptions).some(function (option) {\n return option === undefined || option === null;\n })) {\n __DEV__ && console.error('updateOptions ignored! undefined & null options not allowed');\n return config;\n }\n\n return config = deepFreeze(_extends({}, configDefaults, config, newOptions));\n };\n\n var publishWheel = function publishWheel(additionalData) {\n var wheelEventState = _extends({\n event: currentEvent,\n isStart: false,\n isEnding: false,\n isMomentumCancel: false,\n isMomentum: state.isMomentum,\n axisDelta: [0, 0, 0],\n axisVelocity: state.axisVelocity,\n axisMovement: state.axisMovement,\n\n get axisMovementProjection() {\n return addVectors(wheelEventState.axisMovement, wheelEventState.axisVelocity.map(function (velocity) {\n return projection(velocity);\n }));\n }\n\n }, additionalData);\n\n dispatch('wheel', _extends({}, wheelEventState, {\n previous: prevWheelEventState\n })); // keep reference without previous, otherwise we would create a long chain\n\n prevWheelEventState = wheelEventState;\n }; // should prevent when there is mainly movement on the desired axis\n\n\n var shouldPreventDefault = function shouldPreventDefault(deltaMaxAbs, axisDelta) {\n var _config = config,\n preventWheelAction = _config.preventWheelAction;\n var deltaX = axisDelta[0],\n deltaY = axisDelta[1],\n deltaZ = axisDelta[2];\n if (typeof preventWheelAction === 'boolean') return preventWheelAction;\n\n switch (preventWheelAction) {\n case 'x':\n return Math.abs(deltaX) >= deltaMaxAbs;\n\n case 'y':\n return Math.abs(deltaY) >= deltaMaxAbs;\n\n case 'z':\n return Math.abs(deltaZ) >= deltaMaxAbs;\n\n default:\n __DEV__ && console.warn('unsupported preventWheelAction value: ' + preventWheelAction, 'warn');\n return false;\n }\n };\n\n var processWheelEventData = function processWheelEventData(wheelEvent) {\n var _clampAxisDelta = clampAxisDelta(reverseAxisDeltaSign(normalizeWheel(wheelEvent), config.reverseSign)),\n axisDelta = _clampAxisDelta.axisDelta,\n timeStamp = _clampAxisDelta.timeStamp;\n\n var deltaMaxAbs = absMax(axisDelta);\n\n if (wheelEvent.preventDefault && shouldPreventDefault(deltaMaxAbs, axisDelta)) {\n wheelEvent.preventDefault();\n }\n\n if (!state.isStarted) {\n start();\n } // check if user started scrolling again -> cancel\n else if (state.isMomentum && deltaMaxAbs > Math.max(2, state.lastAbsDelta * 2)) {\n end(true);\n start();\n } // special finger up event on windows + blink\n\n\n if (deltaMaxAbs === 0 && Object.is && Object.is(wheelEvent.deltaX, -0)) {\n negativeZeroFingerUpSpecialEvent = true; // return -> zero delta event should not influence velocity\n\n return;\n }\n\n currentEvent = wheelEvent;\n state.axisMovement = addVectors(state.axisMovement, axisDelta);\n state.lastAbsDelta = deltaMaxAbs;\n state.scrollPointsToMerge.push({\n axisDelta: axisDelta,\n timeStamp: timeStamp\n });\n mergeScrollPointsCalcVelocity(); // only wheel event (move) and not start/end get the delta values\n\n publishWheel({\n axisDelta: axisDelta,\n isStart: !state.isStartPublished\n }); // state.isMomentum ? MOMENTUM_WHEEL : WHEEL, { axisDelta })\n // publish start after velocity etc. have been updated\n\n state.isStartPublished = true; // calc debounced end function, to recognize end of wheel event stream\n\n willEnd();\n };\n\n var mergeScrollPointsCalcVelocity = function mergeScrollPointsCalcVelocity() {\n if (state.scrollPointsToMerge.length === WHEELEVENTS_TO_MERGE) {\n state.scrollPoints.unshift({\n axisDeltaSum: state.scrollPointsToMerge.map(function (b) {\n return b.axisDelta;\n }).reduce(addVectors),\n timeStamp: average(state.scrollPointsToMerge.map(function (b) {\n return b.timeStamp;\n }))\n }); // only update velocity after a merged scrollpoint was generated\n\n updateVelocity(); // reset toMerge array\n\n state.scrollPointsToMerge.length = 0; // after calculation of velocity only keep the most recent merged scrollPoint\n\n state.scrollPoints.length = 1;\n\n if (!state.isMomentum) {\n detectMomentum();\n }\n } else if (!state.isStartPublished) {\n updateStartVelocity();\n }\n };\n\n var updateStartVelocity = function updateStartVelocity() {\n state.axisVelocity = lastOf(state.scrollPointsToMerge).axisDelta.map(function (d) {\n return d / state.willEndTimeout;\n });\n };\n\n var updateVelocity = function updateVelocity() {\n // need to have two recent points to calc velocity\n var _state$scrollPoints = state.scrollPoints,\n latestScrollPoint = _state$scrollPoints[0],\n prevScrollPoint = _state$scrollPoints[1];\n\n if (!prevScrollPoint || !latestScrollPoint) {\n return;\n } // time delta\n\n\n var deltaTime = latestScrollPoint.timeStamp - prevScrollPoint.timeStamp;\n\n if (deltaTime <= 0) {\n __DEV__ && console.warn('invalid deltaTime');\n return;\n } // calc the velocity per axes\n\n\n var velocity = latestScrollPoint.axisDeltaSum.map(function (d) {\n return d / deltaTime;\n }); // calc the acceleration factor per axis\n\n var accelerationFactor = velocity.map(function (v, i) {\n return v / (state.axisVelocity[i] || 1);\n });\n state.axisVelocity = velocity;\n state.accelerationFactors.push(accelerationFactor);\n updateWillEndTimeout(deltaTime);\n };\n\n var updateWillEndTimeout = function updateWillEndTimeout(deltaTime) {\n // use current time between events rounded up and increased by a bit as timeout\n var newTimeout = Math.ceil(deltaTime / 10) * 10 * 1.2; // double the timeout, when momentum was not detected yet\n\n if (!state.isMomentum) {\n newTimeout = Math.max(100, newTimeout * 2);\n }\n\n state.willEndTimeout = Math.min(1000, Math.round(newTimeout));\n };\n\n var accelerationFactorInMomentumRange = function accelerationFactorInMomentumRange(accFactor) {\n // when main axis is the the other one and there is no movement/change on the current one\n if (accFactor === 0) return true;\n return accFactor <= ACC_FACTOR_MAX && accFactor >= ACC_FACTOR_MIN;\n };\n\n var detectMomentum = function detectMomentum() {\n if (state.accelerationFactors.length >= WHEELEVENTS_TO_ANALAZE) {\n if (negativeZeroFingerUpSpecialEvent) {\n negativeZeroFingerUpSpecialEvent = false;\n\n if (absMax(state.axisVelocity) >= 0.2) {\n recognizedMomentum();\n return;\n }\n }\n\n var recentAccelerationFactors = state.accelerationFactors.slice(WHEELEVENTS_TO_ANALAZE * -1); // check recent acceleration / deceleration factors\n // all recent need to match, if any did not match\n\n var detectedMomentum = recentAccelerationFactors.every(function (accFac) {\n // when both axis decelerate exactly in the same rate it is very likely caused by momentum\n var sameAccFac = !!accFac.reduce(function (f1, f2) {\n return f1 && f1 < 1 && f1 === f2 ? 1 : 0;\n }); // check if acceleration factor is within momentum range\n\n var bothAreInRangeOrZero = accFac.filter(accelerationFactorInMomentumRange).length === accFac.length; // one the requirements must be fulfilled\n\n return sameAccFac || bothAreInRangeOrZero;\n });\n\n if (detectedMomentum) {\n recognizedMomentum();\n } // only keep the most recent events\n\n\n state.accelerationFactors = recentAccelerationFactors;\n }\n };\n\n var recognizedMomentum = function recognizedMomentum() {\n state.isMomentum = true;\n };\n\n var start = function start() {\n state = createWheelGesturesState();\n state.isStarted = true;\n state.startTime = Date.now();\n prevWheelEventState = undefined;\n negativeZeroFingerUpSpecialEvent = false;\n };\n\n var willEnd = function () {\n var willEndId;\n return function () {\n clearTimeout(willEndId);\n willEndId = setTimeout(end, state.willEndTimeout);\n };\n }();\n\n var end = function end(isMomentumCancel) {\n if (isMomentumCancel === void 0) {\n isMomentumCancel = false;\n }\n\n if (!state.isStarted) return;\n\n if (state.isMomentum && isMomentumCancel) {\n publishWheel({\n isEnding: true,\n isMomentumCancel: true\n });\n } else {\n publishWheel({\n isEnding: true\n });\n }\n\n state.isMomentum = false;\n state.isStarted = false;\n };\n\n var _WheelTargetObserver = WheelTargetObserver(feedWheel),\n observe = _WheelTargetObserver.observe,\n unobserve = _WheelTargetObserver.unobserve,\n disconnect = _WheelTargetObserver.disconnect;\n\n updateOptions(optionsParam);\n return deepFreeze({\n on: on,\n off: off,\n observe: observe,\n unobserve: unobserve,\n disconnect: disconnect,\n feedWheel: feedWheel,\n updateOptions: updateOptions\n });\n}\n\nexport default WheelGestures;\nexport { WheelGestures, absMax, addVectors, average, clamp, configDefaults, deepFreeze, lastOf, projection };\n//# sourceMappingURL=wheel-gestures.esm.js.map\n","import WheelGestures from 'wheel-gestures';\n\nvar defaultOptions = {\n active: true,\n breakpoints: {},\n wheelDraggingClass: 'is-wheel-dragging',\n forceWheelAxis: undefined,\n target: undefined\n};\nWheelGesturesPlugin.globalOptions = undefined;\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nfunction WheelGesturesPlugin(userOptions) {\n if (userOptions === void 0) {\n userOptions = {};\n }\n\n var options;\n\n var cleanup = function cleanup() {};\n\n function init(embla, optionsHandler) {\n var _options$target, _options$forceWheelAx;\n\n var mergeOptions = optionsHandler.mergeOptions,\n optionsAtMedia = optionsHandler.optionsAtMedia;\n var optionsBase = mergeOptions(defaultOptions, WheelGesturesPlugin.globalOptions);\n var allOptions = mergeOptions(optionsBase, userOptions);\n options = optionsAtMedia(allOptions);\n var engine = embla.internalEngine();\n var targetNode = (_options$target = options.target) != null ? _options$target : embla.containerNode().parentNode;\n var wheelAxis = (_options$forceWheelAx = options.forceWheelAxis) != null ? _options$forceWheelAx : engine.options.axis;\n var wheelGestures = WheelGestures({\n preventWheelAction: wheelAxis,\n reverseSign: [true, true, false]\n });\n var unobserveTargetNode = wheelGestures.observe(targetNode);\n var offWheel = wheelGestures.on('wheel', handleWheel);\n var isStarted = false;\n var startEvent;\n\n function wheelGestureStarted(state) {\n try {\n startEvent = new MouseEvent('mousedown', state.event);\n dispatchEvent(startEvent);\n } catch (e) {\n // Legacy Browsers like IE 10 & 11 will throw when attempting to create the Event\n if (__DEV__) {\n console.warn('Legacy browser requires events-polyfill (https://github.com/xiel/embla-carousel-wheel-gestures#legacy-browsers)');\n }\n\n return cleanup();\n }\n\n isStarted = true;\n addNativeMouseEventListeners();\n\n if (options.wheelDraggingClass) {\n targetNode.classList.add(options.wheelDraggingClass);\n }\n }\n\n function wheelGestureEnded(state) {\n isStarted = false;\n dispatchEvent(createRelativeMouseEvent('mouseup', state));\n removeNativeMouseEventListeners();\n\n if (options.wheelDraggingClass) {\n targetNode.classList.remove(options.wheelDraggingClass);\n }\n }\n\n function addNativeMouseEventListeners() {\n document.documentElement.addEventListener('mousemove', preventNativeMouseHandler, true);\n document.documentElement.addEventListener('mouseup', preventNativeMouseHandler, true);\n document.documentElement.addEventListener('mousedown', preventNativeMouseHandler, true);\n }\n\n function removeNativeMouseEventListeners() {\n document.documentElement.removeEventListener('mousemove', preventNativeMouseHandler, true);\n document.documentElement.removeEventListener('mouseup', preventNativeMouseHandler, true);\n document.documentElement.removeEventListener('mousedown', preventNativeMouseHandler, true);\n }\n\n function preventNativeMouseHandler(e) {\n if (isStarted && e.isTrusted) {\n e.stopImmediatePropagation();\n }\n }\n\n function createRelativeMouseEvent(type, state) {\n var moveX, moveY;\n\n if (wheelAxis === engine.options.axis) {\n var _state$axisMovement = state.axisMovement;\n moveX = _state$axisMovement[0];\n moveY = _state$axisMovement[1];\n } else {\n var _state$axisMovement2 = state.axisMovement;\n moveY = _state$axisMovement2[0];\n moveX = _state$axisMovement2[1];\n } // prevent skipping slides\n\n\n if (!engine.options.skipSnaps && !engine.options.dragFree) {\n var maxX = engine.containerRect.width;\n var maxY = engine.containerRect.height;\n moveX = moveX < 0 ? Math.max(moveX, -maxX) : Math.min(moveX, maxX);\n moveY = moveY < 0 ? Math.max(moveY, -maxY) : Math.min(moveY, maxY);\n }\n\n return new MouseEvent(type, {\n clientX: startEvent.clientX + moveX,\n clientY: startEvent.clientY + moveY,\n screenX: startEvent.screenX + moveX,\n screenY: startEvent.screenY + moveY,\n movementX: moveX,\n movementY: moveY,\n button: 0,\n bubbles: true,\n cancelable: true,\n composed: true\n });\n }\n\n function dispatchEvent(event) {\n embla.containerNode().dispatchEvent(event);\n }\n\n function handleWheel(state) {\n var _state$axisDelta = state.axisDelta,\n deltaX = _state$axisDelta[0],\n deltaY = _state$axisDelta[1];\n var primaryAxisDelta = wheelAxis === 'x' ? deltaX : deltaY;\n var crossAxisDelta = wheelAxis === 'x' ? deltaY : deltaX;\n var isRelease = state.isMomentum && state.previous && !state.previous.isMomentum;\n var isEndingOrRelease = state.isEnding && !state.isMomentum || isRelease;\n var primaryAxisDeltaIsDominant = Math.abs(primaryAxisDelta) > Math.abs(crossAxisDelta);\n\n if (primaryAxisDeltaIsDominant && !isStarted && !state.isMomentum) {\n wheelGestureStarted(state);\n }\n\n if (!isStarted) return;\n\n if (isEndingOrRelease) {\n wheelGestureEnded(state);\n } else {\n dispatchEvent(createRelativeMouseEvent('mousemove', state));\n }\n }\n\n cleanup = function cleanup() {\n unobserveTargetNode();\n offWheel();\n removeNativeMouseEventListeners();\n };\n }\n\n var self = {\n name: 'wheelGestures',\n options: userOptions,\n init: init,\n destroy: function destroy() {\n return cleanup();\n }\n };\n return self;\n}\n\nexport { WheelGesturesPlugin };\n//# sourceMappingURL=embla-carousel-wheel-gestures.esm.js.map\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { EmblaCarouselType, EmblaEventType } from \"embla-carousel\";\nimport useEmblaCarousel from \"embla-carousel-react\";\n\nimport { IServicePreview } from \"../../types/services.type\";\n\nimport ServicePreview from \"./servicePreview\";\nimport {\n ServiceCarouselButton,\n useServicesButtons,\n} from \"./servicesCarouselButtons\";\nimport { WheelGesturesPlugin } from \"embla-carousel-wheel-gestures\";\n\nconst TWEEN_FACTOR_BASE = 0.2;\nconst numberWithinRange = (number: number, min: number, max: number): number =>\n Math.min(Math.max(number, min), max);\n\nconst ServicesCarousel = ({ services }: { services: IServicePreview[] }) => {\n const [emblaRef, emblaApi] = useEmblaCarousel(\n {\n axis: \"y\",\n loop: true,\n align: \"center\",\n },\n [WheelGesturesPlugin()]\n );\n\n const tweenFactor = useRef(0);\n const tweenNodes = useRef<HTMLElement[]>([]);\n\n const { selectedIndex, onServiceButtonClick } = useServicesButtons(emblaApi);\n\n const setTweenNodes = useCallback((emblaApi: EmblaCarouselType): void => {\n tweenNodes.current = emblaApi.slideNodes().map((slideNode) => {\n return slideNode.querySelector(\".service-preview\") as HTMLElement;\n });\n }, []);\n\n const setTweenFactor = useCallback((emblaApi: EmblaCarouselType) => {\n tweenFactor.current = TWEEN_FACTOR_BASE * emblaApi.scrollSnapList().length;\n }, []);\n\n const tweenScale = useCallback(\n (emblaApi: EmblaCarouselType, eventName?: EmblaEventType) => {\n const engine = emblaApi.internalEngine();\n const scrollProgress = emblaApi.scrollProgress();\n const slidesInView = emblaApi.slidesInView();\n const isScrollEvent = eventName === \"scroll\";\n\n emblaApi.scrollSnapList().forEach((scrollSnap, snapIndex) => {\n let diffToTarget = scrollSnap - scrollProgress;\n const slidesInSnap = engine.slideRegistry[snapIndex];\n\n slidesInSnap.forEach((slideIndex) => {\n if (isScrollEvent && !slidesInView.includes(slideIndex)) return;\n\n if (engine.options.loop) {\n engine.slideLooper.loopPoints.forEach((loopItem) => {\n const target = loopItem.target();\n\n if (slideIndex === loopItem.index && target !== 0) {\n const sign = Math.sign(target);\n\n if (sign === -1) {\n diffToTarget = scrollSnap - (1 + scrollProgress);\n }\n if (sign === 1) {\n diffToTarget = scrollSnap + (1 - scrollProgress);\n }\n }\n });\n }\n\n const tweenValue = 1 - Math.abs(diffToTarget * tweenFactor.current);\n const scale = numberWithinRange(tweenValue, 0, 1);\n const tweenNode = tweenNodes.current[slideIndex];\n tweenNode.style.transform = `scale(${scale})`;\n });\n });\n },\n []\n );\n\n useEffect(() => {\n if (!emblaApi) return;\n\n setTweenNodes(emblaApi);\n setTweenFactor(emblaApi);\n tweenScale(emblaApi);\n\n emblaApi\n .on(\"reInit\", setTweenNodes)\n .on(\"reInit\", setTweenFactor)\n .on(\"reInit\", tweenScale)\n .on(\"scroll\", tweenScale)\n .on(\"slideFocus\", tweenScale);\n }, [emblaApi, tweenScale]);\n\n return (\n <>\n <div className=\"hidden sm:flex flex-col gap-5 p-8 lg:basis-[410px] shrink-0\">\n {services\n ? services.map((service, i) => (\n <ServiceCarouselButton\n key={`dot-${service.id}`}\n service={service}\n onClick={() => onServiceButtonClick(i)}\n className={`${\n i === selectedIndex\n ? \"\"\n : \"brightness-[0.4] hover:brightness-100\"\n }`}\n />\n ))\n : null}\n </div>\n <div\n ref={emblaRef}\n className=\"hidden sm:block overflow-hidden basis-full\"\n >\n <div\n style={{ backfaceVisibility: \"hidden\" }}\n className=\"flex flex-col touch-pan-x h-[1000px] sm:h-[900px] md:h-[750px]\"\n >\n {services\n ? services.map((service, i) => (\n <div\n key={service.id}\n onClick={() => onServiceButtonClick(i)}\n className=\"grow-0 shrink-0 basis-1/3 min-h-0 select-none flex items-center\"\n >\n <ServicePreview\n service={service}\n className={`select-none ${\n i === selectedIndex ? \"\" : \"brightness-[0.4]\"\n }`}\n />\n </div>\n ))\n : null}\n </div>\n </div>\n </>\n );\n};\n\nexport default ServicesCarousel;\n","import React from \"react\";\nimport { HeadFC, HeadProps, PageProps } from \"gatsby\";\nimport { graphql } from \"gatsby\";\nimport { getImage } from \"gatsby-plugin-image\";\n\nimport {\n IServicesPageContext,\n IServicesPreviewQueryResult,\n} from \"../types/services.type\";\n\nimport Border from \"../assets/common/border.svg\";\n\nimport Banner from \"../components/common/banner\";\nimport ContentContainer from \"../components/common/contentContainer\";\nimport { HeadSeo } from \"../components/common/metadata\";\nimport ContactFormSection from \"../components/forms/contactFormSection\";\nimport ServicesCarousel from \"../components/services/servicesCarousel\";\nimport ServicePreview from \"../components/services/servicePreview\";\n\nconst Services = ({\n data,\n pageContext: { markupData, lang },\n}: PageProps<IServicesPreviewQueryResult, IServicesPageContext>) => {\n const services = data.allMarkdownRemark?.nodes;\n const bannerImage = getImage(markupData.image);\n\n return (\n <>\n <Banner\n heightClass=\"lg:h-99\"\n title={markupData.bannerTitle}\n image={bannerImage}\n />\n <div className=\"bg-main-100\">\n <ContentContainer\n maxWidthClass=\"max-w-[1280px]\"\n className=\"flex flex-col sm:flex-row items-start sm:justify-end py-6 sm:py-10 lg:!px-20 gap-0 sm:gap-5 lg:gap-[48px]\"\n >\n {services ? <ServicesCarousel services={services} /> : null}\n {services\n ? services.map((service, i) => (\n <ServicePreview\n key={service.id}\n service={service}\n className={`sm:hidden select-none`}\n />\n ))\n : null}\n </ContentContainer>\n </div>\n <Border className=\"w-full\" />\n <ContactFormSection lang={lang} />\n </>\n );\n};\n\nexport default Services;\n\nexport const Head: HeadFC<\n IServicesPreviewQueryResult,\n IServicesPageContext\n> = ({\n pageContext: { markupData, site, lang },\n location,\n}: HeadProps<IServicesPreviewQueryResult, IServicesPageContext>) => (\n <>\n <HeadSeo\n title={`${markupData.head} | ${markupData.bannerTitle.toUpperCase()}`}\n description={site.description}\n siteUrl={site.siteUrl}\n path={location.pathname}\n lang={lang}\n />\n </>\n);\n\nexport const query = graphql`\n query ($lang: String) {\n allMarkdownRemark(\n filter: {\n fields: { sourceName: { eq: \"services\" }, language: { eq: $lang } }\n }\n ) {\n nodes {\n id\n html\n frontmatter {\n title\n keywords\n image {\n publicURL\n }\n }\n }\n }\n }\n`;\n"],"names":["_ref","service","className","html","frontmatter","title","keywords","image","publicURL","imageURL","___EmotionJSX","itemScope","itemType","src","alt","itemProp","dangerouslySetInnerHTML","__html","map","hashtag","key","ServiceCarouselButton","attr","_extends","type","Object","assign","target","i","arguments","length","source","prototype","hasOwnProperty","call","apply","this","addVectors","v1","v2","Error","val","absMax","numbers","Math","max","abs","deepFreeze","o","freeze","values","forEach","value","isFrozen","DELTA_MODE_UNIT","window","innerHeight","reverseAll","clampAxisDelta","wheel","axisDelta","delta","min","configDefaults","preventWheelAction","reverseSign","WILL_END_TIMEOUT_DEFAULT","createWheelGesturesState","isStarted","isStartPublished","isMomentum","startTime","lastAbsDelta","Infinity","axisMovement","axisVelocity","accelerationFactors","scrollPoints","scrollPointsToMerge","willEndTimeout","optionsParam","currentEvent","prevWheelEventState","willEndId","_EventBus","listeners","off","listener","filter","l","on","concat","dispatch","data","EventBus","config","state","negativeZeroFingerUpSpecialEvent","feedWheel","wheelEvents","Array","isArray","wheelEvent","processWheelEventData","updateOptions","newOptions","some","option","publishWheel","additionalData","wheelEventState","event","isStart","isEnding","isMomentumCancel","axisMovementProjection","velocity","decay","previous","e","deltaX","deltaY","deltaZ","_clampAxisDelta","multipliers","shouldReverse","reverseAxisDeltaSign","deltaMode","timeStamp","deltaMaxAbs","preventDefault","shouldPreventDefault","end","start","is","push","mergeScrollPointsCalcVelocity","willEnd","unshift","axisDeltaSum","b","reduce","a","updateVelocity","detectMomentum","updateStartVelocity","array","d","_state$scrollPoints","latestScrollPoint","prevScrollPoint","deltaTime","accelerationFactor","v","updateWillEndTimeout","newTimeout","ceil","round","accelerationFactorInMomentumRange","accFactor","recognizedMomentum","recentAccelerationFactors","slice","WHEELEVENTS_TO_ANALAZE","every","accFac","sameAccFac","f1","f2","bothAreInRangeOrZero","Date","now","undefined","clearTimeout","setTimeout","_WheelTargetObserver","eventListener","targets","unobserve","removeEventListener","t","observe","addEventListener","passive","disconnect","WheelTargetObserver","defaultOptions","active","breakpoints","wheelDraggingClass","forceWheelAxis","WheelGesturesPlugin","globalOptions","userOptions","options","cleanup","name","init","embla","optionsHandler","_options$target","_options$forceWheelAx","mergeOptions","optionsAtMedia","optionsBase","allOptions","startEvent","engine","internalEngine","targetNode","containerNode","parentNode","wheelAxis","axis","wheelGestures","unobserveTargetNode","offWheel","_state$axisDelta","primaryAxisDelta","crossAxisDelta","isRelease","isEndingOrRelease","dispatchEvent","MouseEvent","console","warn","document","documentElement","preventNativeMouseHandler","classList","add","wheelGestureStarted","createRelativeMouseEvent","removeNativeMouseEventListeners","remove","wheelGestureEnded","isTrusted","stopImmediatePropagation","moveX","moveY","_state$axisMovement","_state$axisMovement2","skipSnaps","dragFree","maxX","containerRect","width","maxY","height","clientX","clientY","screenX","screenY","movementX","movementY","button","bubbles","cancelable","composed","destroy","services","emblaRef","emblaApi","useEmblaCarousel","loop","align","tweenFactor","useRef","tweenNodes","selectedIndex","onServiceButtonClick","useServicesButtons","onButtonClick","setSelectedIndex","useState","useCallback","index","scrollTo","onSelect","selectedScrollSnap","useEffect","setTweenNodes","current","slideNodes","slideNode","querySelector","setTweenFactor","scrollSnapList","tweenScale","eventName","scrollProgress","slidesInView","isScrollEvent","scrollSnap","snapIndex","diffToTarget","slideRegistry","slideIndex","includes","slideLooper","loopPoints","loopItem","sign","tweenValue","scale","number","numberWithinRange","style","transform","React","id","onClick","ref","backfaceVisibility","ServicePreview","_data$allMarkdownRema","pageContext","markupData","lang","allMarkdownRemark","nodes","bannerImage","getImage","Banner","heightClass","bannerTitle","ContentContainer","maxWidthClass","ServicesCarousel","Border","ContactFormSection","Head","_ref2","site","location","HeadSeo","head","toUpperCase","description","siteUrl","path","pathname"],"sourceRoot":""}