{"version":3,"file":"BAQ7oDnL.js","sources":["../../../../store/blog.ts","../../../../components/instruments/PreviewSlider.vue","../../../../components/homepage/MarketDevelopment.vue","../../../../components/homepage/StepByStepTimeline.vue","../../../../components/homepage/Media.vue","../../../../node_modules/vue3-carousel/dist/carousel.es.js","../../../../components/blog/ArticleCard.vue","../../../../components/homepage/BlogSlider.vue","../../../../components/homepage/Element.vue","../../../../pages/index.vue"],"sourcesContent":["import { defineStore } from 'pinia';\r\nimport { useApiFetch } from '~/composables/useApiFetch';\r\nimport type { Post } from '~/models/blog';\r\n\r\ntype PostsCache = {\r\n [key in 'cs' | 'en']: { loaded: boolean; data: Post[] };\r\n};\r\n\r\nexport const useBlogStore = defineStore('blog', {\r\n state: () => ({\r\n loadingHomepagePosts: true,\r\n homepagePostsCache: {\r\n cs: { loaded: false, data: [] },\r\n en: { loaded: false, data: [] },\r\n } as PostsCache,\r\n }),\r\n getters: {\r\n homepagePosts: (state) => {\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n\r\n if (state.homepagePostsCache[language].loaded) {\r\n return state.homepagePostsCache[language].data;\r\n }\r\n\r\n return [];\r\n },\r\n },\r\n actions: {\r\n async getHomepagePosts({ force = false }: { force?: boolean }) {\r\n const {\r\n $i18n: { locale },\r\n } = useNuxtApp();\r\n const language = locale.value as 'cs' | 'en';\r\n const fetch = useApiFetch();\r\n\r\n if (this.homepagePostsCache[language].loaded && !force) {\r\n return this.homepagePostsCache[language].data;\r\n }\r\n\r\n this.loadingHomepagePosts = true;\r\n\r\n const posts = await fetch(\r\n 'https://magazin.portu.cz/wp-json/wp/v2/posts?_embed&tags=442&tags_exclude=152&per_page=6&page=1',\r\n );\r\n\r\n this.homepagePostsCache[language] = {\r\n loaded: true,\r\n data: posts,\r\n };\r\n this.loadingHomepagePosts = false;\r\n\r\n return posts;\r\n },\r\n },\r\n});\r\n\r\nif (import.meta.hot) {\r\n import.meta.hot.accept(acceptHMRUpdate(useBlogStore, import.meta.hot));\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","/**\n * Vue 3 Carousel 0.3.3\n * (c) 2024\n * @license MIT\n */\nimport { Fragment, defineComponent, inject, reactive, ref, h, provide, onMounted, nextTick, onUnmounted, computed, watch, cloneVNode } from 'vue';\n\nconst defaultConfigs = {\n itemsToShow: 1,\n itemsToScroll: 1,\n modelValue: 0,\n transition: 300,\n autoplay: 0,\n snapAlign: 'center',\n wrapAround: false,\n throttle: 16,\n pauseAutoplayOnHover: false,\n mouseDrag: true,\n touchDrag: true,\n dir: 'ltr',\n breakpoints: undefined,\n i18n: {\n ariaNextSlide: 'Navigate to next slide',\n ariaPreviousSlide: 'Navigate to previous slide',\n ariaNavigateToSlide: 'Navigate to slide {slideNumber}',\n ariaGallery: 'Gallery',\n itemXofY: 'Item {currentSlide} of {slidesCount}',\n iconArrowUp: 'Arrow pointing upwards',\n iconArrowDown: 'Arrow pointing downwards',\n iconArrowRight: 'Arrow pointing to the right',\n iconArrowLeft: 'Arrow pointing to the left',\n },\n};\n\nconst carouselProps = {\n // count of items to showed per view\n itemsToShow: {\n default: defaultConfigs.itemsToShow,\n type: Number,\n },\n // count of items to be scrolled\n itemsToScroll: {\n default: defaultConfigs.itemsToScroll,\n type: Number,\n },\n // control infinite scrolling mode\n wrapAround: {\n default: defaultConfigs.wrapAround,\n type: Boolean,\n },\n // control max drag\n throttle: {\n default: defaultConfigs.throttle,\n type: Number,\n },\n // control snap position alignment\n snapAlign: {\n default: defaultConfigs.snapAlign,\n validator(value) {\n // The value must match one of these strings\n return ['start', 'end', 'center', 'center-even', 'center-odd'].includes(value);\n },\n },\n // sliding transition time in ms\n transition: {\n default: defaultConfigs.transition,\n type: Number,\n },\n // an object to store breakpoints\n breakpoints: {\n default: defaultConfigs.breakpoints,\n type: Object,\n },\n // time to auto advance slides in ms\n autoplay: {\n default: defaultConfigs.autoplay,\n type: Number,\n },\n // pause autoplay when mouse hover over the carousel\n pauseAutoplayOnHover: {\n default: defaultConfigs.pauseAutoplayOnHover,\n type: Boolean,\n },\n // slide number number of initial slide\n modelValue: {\n default: undefined,\n type: Number,\n },\n // toggle mouse dragging.\n mouseDrag: {\n default: defaultConfigs.mouseDrag,\n type: Boolean,\n },\n // toggle mouse dragging.\n touchDrag: {\n default: defaultConfigs.touchDrag,\n type: Boolean,\n },\n // control snap position alignment\n dir: {\n default: defaultConfigs.dir,\n validator(value) {\n // The value must match one of these strings\n return ['rtl', 'ltr'].includes(value);\n },\n },\n // aria-labels and additional text labels\n i18n: {\n default: defaultConfigs.i18n,\n type: Object,\n },\n // an object to pass all settings\n settings: {\n default() {\n return {};\n },\n type: Object,\n },\n};\n\nfunction getMaxSlideIndex({ config, slidesCount }) {\n const { snapAlign, wrapAround, itemsToShow = 1 } = config;\n if (wrapAround) {\n return Math.max(slidesCount - 1, 0);\n }\n let output;\n switch (snapAlign) {\n case 'start':\n output = slidesCount - itemsToShow;\n break;\n case 'end':\n output = slidesCount - 1;\n break;\n case 'center':\n case 'center-odd':\n output = slidesCount - Math.ceil((itemsToShow - 0.5) / 2);\n break;\n case 'center-even':\n output = slidesCount - Math.ceil(itemsToShow / 2);\n break;\n default:\n output = 0;\n break;\n }\n return Math.max(output, 0);\n}\n\nfunction getMinSlideIndex({ config, slidesCount }) {\n const { wrapAround, snapAlign, itemsToShow = 1 } = config;\n let output = 0;\n if (wrapAround || itemsToShow > slidesCount) {\n return output;\n }\n switch (snapAlign) {\n case 'start':\n output = 0;\n break;\n case 'end':\n output = itemsToShow - 1;\n break;\n case 'center':\n case 'center-odd':\n output = Math.floor((itemsToShow - 1) / 2);\n break;\n case 'center-even':\n output = Math.floor((itemsToShow - 2) / 2);\n break;\n default:\n output = 0;\n break;\n }\n return output;\n}\n\nfunction getNumberInRange({ val, max, min }) {\n if (max < min) {\n return val;\n }\n return Math.min(Math.max(val, min), max);\n}\n\nfunction getSlidesToScroll({ config, currentSlide, slidesCount }) {\n const { snapAlign, wrapAround, itemsToShow = 1 } = config;\n let output = currentSlide;\n switch (snapAlign) {\n case 'center':\n case 'center-odd':\n output -= (itemsToShow - 1) / 2;\n break;\n case 'center-even':\n output -= (itemsToShow - 2) / 2;\n break;\n case 'end':\n output -= itemsToShow - 1;\n break;\n }\n if (wrapAround) {\n return output;\n }\n return getNumberInRange({\n val: output,\n max: slidesCount - itemsToShow,\n min: 0,\n });\n}\n\nfunction getSlidesVNodes(vNode) {\n if (!vNode)\n return [];\n return vNode.reduce((acc, node) => {\n var _a;\n if (node.type === Fragment) {\n return [...acc, ...getSlidesVNodes(node.children)];\n }\n if (((_a = node.type) === null || _a === void 0 ? void 0 : _a.name) === 'CarouselSlide') {\n return [...acc, node];\n }\n return acc;\n }, []);\n}\n\nfunction mapNumberToRange({ val, max, min = 0 }) {\n if (val > max) {\n return mapNumberToRange({ val: val - (max + 1), max, min });\n }\n if (val < min) {\n return mapNumberToRange({ val: val + (max + 1), max, min });\n }\n return val;\n}\n\n/**\n * return a throttle version of the function\n * Throttling\n *\n */\n// eslint-disable-next-line no-unused-vars\nfunction throttle(fn, limit) {\n let inThrottle;\n if (!limit) {\n return fn;\n }\n return function (...args) {\n const self = this;\n if (!inThrottle) {\n fn.apply(self, args);\n inThrottle = true;\n setTimeout(() => (inThrottle = false), limit);\n }\n };\n}\n\n/**\n * return a debounced version of the function\n * @param fn\n * @param delay\n */\n// eslint-disable-next-line no-unused-vars\nfunction debounce(fn, delay) {\n let timerId;\n return function (...args) {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(() => {\n fn(...args);\n timerId = null;\n }, delay);\n };\n}\n\nfunction i18nFormatter(string = '', values = {}) {\n return Object.entries(values).reduce((acc, [key, value]) => acc.replace(`{${key}}`, String(value)), string);\n}\n\nvar ARIAComponent = defineComponent({\n name: 'ARIA',\n setup() {\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\n const currentSlide = inject('currentSlide', ref(0));\n const slidesCount = inject('slidesCount', ref(0));\n return () => h('div', {\n class: ['carousel__liveregion', 'carousel__sr-only'],\n 'aria-live': 'polite',\n 'aria-atomic': 'true',\n }, i18nFormatter(config.i18n['itemXofY'], {\n currentSlide: currentSlide.value + 1,\n slidesCount: slidesCount.value,\n }));\n },\n});\n\nvar Carousel = defineComponent({\n name: 'Carousel',\n props: carouselProps,\n setup(props, { slots, emit, expose }) {\n var _a;\n const root = ref(null);\n const slides = ref([]);\n const slideWidth = ref(0);\n const slidesCount = ref(0);\n // current config\n const config = reactive(Object.assign({}, defaultConfigs));\n // default carousel configs\n let __defaultConfig = Object.assign({}, defaultConfigs);\n // breakpoints configs\n let breakpoints;\n // slides\n const currentSlideIndex = ref((_a = props.modelValue) !== null && _a !== void 0 ? _a : 0);\n const prevSlideIndex = ref(0);\n const middleSlideIndex = ref(0);\n const maxSlideIndex = ref(0);\n const minSlideIndex = ref(0);\n let autoplayTimer;\n let transitionTimer;\n provide('config', config);\n provide('slidesCount', slidesCount);\n provide('currentSlide', currentSlideIndex);\n provide('maxSlide', maxSlideIndex);\n provide('minSlide', minSlideIndex);\n provide('slideWidth', slideWidth);\n /**\n * Configs\n */\n function initDefaultConfigs() {\n breakpoints = Object.assign({}, props.breakpoints);\n __defaultConfig = Object.assign(Object.assign(Object.assign({}, __defaultConfig), props), { i18n: Object.assign(Object.assign({}, __defaultConfig.i18n), props.i18n), breakpoints: undefined });\n bindConfigs(__defaultConfig);\n }\n function updateBreakpointsConfigs() {\n if (!breakpoints || !Object.keys(breakpoints).length)\n return;\n const breakpointsArray = Object.keys(breakpoints)\n .map((key) => Number(key))\n .sort((a, b) => +b - +a);\n let newConfig = Object.assign({}, __defaultConfig);\n breakpointsArray.some((breakpoint) => {\n const isMatched = window.matchMedia(`(min-width: ${breakpoint}px)`).matches;\n if (isMatched) {\n newConfig = Object.assign(Object.assign({}, newConfig), breakpoints[breakpoint]);\n }\n return isMatched;\n });\n bindConfigs(newConfig);\n }\n function bindConfigs(newConfig) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n Object.entries(newConfig).forEach(([key, val]) => (config[key] = val));\n }\n const handleWindowResize = debounce(() => {\n updateBreakpointsConfigs();\n updateSlidesData();\n updateSlideWidth();\n }, 16);\n /**\n * Setup functions\n */\n function updateSlideWidth() {\n if (!root.value)\n return;\n const rect = root.value.getBoundingClientRect();\n slideWidth.value = rect.width / config.itemsToShow;\n }\n function updateSlidesData() {\n if (slidesCount.value <= 0)\n return;\n middleSlideIndex.value = Math.ceil((slidesCount.value - 1) / 2);\n maxSlideIndex.value = getMaxSlideIndex({ config, slidesCount: slidesCount.value });\n minSlideIndex.value = getMinSlideIndex({ config, slidesCount: slidesCount.value });\n if (!config.wrapAround) {\n currentSlideIndex.value = getNumberInRange({\n val: currentSlideIndex.value,\n max: maxSlideIndex.value,\n min: minSlideIndex.value,\n });\n }\n }\n onMounted(() => {\n nextTick(() => updateSlideWidth());\n // Overcome some edge cases\n setTimeout(() => updateSlideWidth(), 1000);\n updateBreakpointsConfigs();\n initAutoplay();\n window.addEventListener('resize', handleWindowResize, { passive: true });\n emit('init');\n });\n onUnmounted(() => {\n if (transitionTimer) {\n clearTimeout(transitionTimer);\n }\n if (autoplayTimer) {\n clearInterval(autoplayTimer);\n }\n window.removeEventListener('resize', handleWindowResize, {\n passive: true,\n });\n });\n /**\n * Carousel Event listeners\n */\n let isTouch = false;\n const startPosition = { x: 0, y: 0 };\n const endPosition = { x: 0, y: 0 };\n const dragged = reactive({ x: 0, y: 0 });\n const isHover = ref(false);\n const isDragging = ref(false);\n const handleMouseEnter = () => {\n isHover.value = true;\n };\n const handleMouseLeave = () => {\n isHover.value = false;\n };\n function handleDragStart(event) {\n if (['INPUT', 'TEXTAREA', 'SELECT'].includes(event.target.tagName)) {\n return;\n }\n isTouch = event.type === 'touchstart';\n if (!isTouch) {\n event.preventDefault();\n }\n if ((!isTouch && event.button !== 0) || isSliding.value) {\n return;\n }\n startPosition.x = isTouch ? event.touches[0].clientX : event.clientX;\n startPosition.y = isTouch ? event.touches[0].clientY : event.clientY;\n document.addEventListener(isTouch ? 'touchmove' : 'mousemove', handleDragging, true);\n document.addEventListener(isTouch ? 'touchend' : 'mouseup', handleDragEnd, true);\n }\n const handleDragging = throttle((event) => {\n isDragging.value = true;\n endPosition.x = isTouch ? event.touches[0].clientX : event.clientX;\n endPosition.y = isTouch ? event.touches[0].clientY : event.clientY;\n const deltaX = endPosition.x - startPosition.x;\n const deltaY = endPosition.y - startPosition.y;\n dragged.y = deltaY;\n dragged.x = deltaX;\n }, config.throttle);\n function handleDragEnd() {\n const direction = config.dir === 'rtl' ? -1 : 1;\n const tolerance = Math.sign(dragged.x) * 0.4;\n const draggedSlides = Math.round(dragged.x / slideWidth.value + tolerance) * direction;\n // Prevent clicking if there is clicked slides\n if (draggedSlides && !isTouch) {\n const captureClick = (e) => {\n window.removeEventListener('click', captureClick, true);\n };\n window.addEventListener('click', captureClick, true);\n }\n slideTo(currentSlideIndex.value - draggedSlides);\n dragged.x = 0;\n dragged.y = 0;\n isDragging.value = false;\n document.removeEventListener(isTouch ? 'touchmove' : 'mousemove', handleDragging, true);\n document.removeEventListener(isTouch ? 'touchend' : 'mouseup', handleDragEnd, true);\n }\n /**\n * Autoplay\n */\n function initAutoplay() {\n if (!config.autoplay || config.autoplay <= 0) {\n return;\n }\n autoplayTimer = setInterval(() => {\n if (config.pauseAutoplayOnHover && isHover.value) {\n return;\n }\n next();\n }, config.autoplay);\n }\n function resetAutoplay() {\n if (autoplayTimer) {\n clearInterval(autoplayTimer);\n autoplayTimer = null;\n }\n initAutoplay();\n }\n /**\n * Navigation function\n */\n const isSliding = ref(false);\n function slideTo(slideIndex) {\n const currentVal = config.wrapAround\n ? slideIndex\n : getNumberInRange({\n val: slideIndex,\n max: maxSlideIndex.value,\n min: minSlideIndex.value,\n });\n if (currentSlideIndex.value === currentVal || isSliding.value) {\n return;\n }\n emit('slide-start', {\n slidingToIndex: slideIndex,\n currentSlideIndex: currentSlideIndex.value,\n prevSlideIndex: prevSlideIndex.value,\n slidesCount: slidesCount.value,\n });\n isSliding.value = true;\n prevSlideIndex.value = currentSlideIndex.value;\n currentSlideIndex.value = currentVal;\n transitionTimer = setTimeout(() => {\n if (config.wrapAround) {\n const mappedNumber = mapNumberToRange({\n val: currentVal,\n max: maxSlideIndex.value,\n min: 0,\n });\n if (mappedNumber !== currentSlideIndex.value) {\n currentSlideIndex.value = mappedNumber;\n emit('loop', {\n currentSlideIndex: currentSlideIndex.value,\n slidingToIndex: slideIndex,\n });\n }\n }\n emit('update:modelValue', currentSlideIndex.value);\n emit('slide-end', {\n currentSlideIndex: currentSlideIndex.value,\n prevSlideIndex: prevSlideIndex.value,\n slidesCount: slidesCount.value,\n });\n isSliding.value = false;\n resetAutoplay();\n }, config.transition);\n }\n function next() {\n slideTo(currentSlideIndex.value + config.itemsToScroll);\n }\n function prev() {\n slideTo(currentSlideIndex.value - config.itemsToScroll);\n }\n const nav = { slideTo, next, prev };\n provide('nav', nav);\n provide('isSliding', isSliding);\n /**\n * Track style\n */\n const slidesToScroll = computed(() => getSlidesToScroll({\n config,\n currentSlide: currentSlideIndex.value,\n slidesCount: slidesCount.value,\n }));\n provide('slidesToScroll', slidesToScroll);\n const trackStyle = computed(() => {\n const direction = config.dir === 'rtl' ? -1 : 1;\n const xScroll = slidesToScroll.value * slideWidth.value * direction;\n return {\n transform: `translateX(${dragged.x - xScroll}px)`,\n transition: `${isSliding.value ? config.transition : 0}ms`,\n margin: config.wrapAround ? `0 -${slidesCount.value * slideWidth.value}px` : '',\n width: `100%`,\n };\n });\n function restartCarousel() {\n initDefaultConfigs();\n updateBreakpointsConfigs();\n updateSlidesData();\n updateSlideWidth();\n resetAutoplay();\n }\n // Update the carousel on props change\n Object.keys(carouselProps).forEach((prop) => {\n if (['modelValue'].includes(prop))\n return;\n watch(() => props[prop], restartCarousel);\n });\n // Handle changing v-model value\n watch(() => props['modelValue'], (val) => {\n if (val === currentSlideIndex.value) {\n return;\n }\n slideTo(Number(val));\n });\n // Handel when slides added/removed\n watch(slidesCount, updateSlidesData);\n // Init carousel\n emit('before-init');\n initDefaultConfigs();\n const data = {\n config,\n slidesCount,\n slideWidth,\n next,\n prev,\n slideTo,\n currentSlide: currentSlideIndex,\n maxSlide: maxSlideIndex,\n minSlide: minSlideIndex,\n middleSlide: middleSlideIndex,\n };\n expose({\n updateBreakpointsConfigs,\n updateSlidesData,\n updateSlideWidth,\n initDefaultConfigs,\n restartCarousel,\n slideTo,\n next,\n prev,\n nav,\n data,\n });\n const slotSlides = slots.default || slots.slides;\n const slotAddons = slots.addons;\n const slotsProps = reactive(data);\n return () => {\n const slidesElements = getSlidesVNodes(slotSlides === null || slotSlides === void 0 ? void 0 : slotSlides(slotsProps));\n const addonsElements = (slotAddons === null || slotAddons === void 0 ? void 0 : slotAddons(slotsProps)) || [];\n slidesElements.forEach((el, index) => (el.props.index = index));\n let output = slidesElements;\n if (config.wrapAround) {\n const slidesBefore = slidesElements.map((el, index) => cloneVNode(el, {\n index: -slidesElements.length + index,\n isClone: true,\n key: `clone-before-${index}`,\n }));\n const slidesAfter = slidesElements.map((el, index) => cloneVNode(el, {\n index: slidesElements.length + index,\n isClone: true,\n key: `clone-after-${index}`,\n }));\n output = [...slidesBefore, ...slidesElements, ...slidesAfter];\n }\n slides.value = slidesElements;\n slidesCount.value = Math.max(slidesElements.length, 1);\n const trackEl = h('ol', {\n class: 'carousel__track',\n style: trackStyle.value,\n onMousedownCapture: config.mouseDrag ? handleDragStart : null,\n onTouchstartPassiveCapture: config.touchDrag ? handleDragStart : null,\n }, output);\n const viewPortEl = h('div', { class: 'carousel__viewport' }, trackEl);\n return h('section', {\n ref: root,\n class: {\n carousel: true,\n 'is-sliding': isSliding.value,\n 'is-dragging': isDragging.value,\n 'is-hover': isHover.value,\n 'carousel--rtl': config.dir === 'rtl',\n },\n dir: config.dir,\n 'aria-label': config.i18n['ariaGallery'],\n tabindex: '0',\n onMouseenter: handleMouseEnter,\n onMouseleave: handleMouseLeave,\n }, [viewPortEl, addonsElements, h(ARIAComponent)]);\n };\n },\n});\n\nvar IconName;\n(function (IconName) {\n IconName[\"arrowUp\"] = \"arrowUp\";\n IconName[\"arrowDown\"] = \"arrowDown\";\n IconName[\"arrowRight\"] = \"arrowRight\";\n IconName[\"arrowLeft\"] = \"arrowLeft\";\n})(IconName || (IconName = {}));\nconst icons = {\n arrowUp: 'M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z',\n arrowDown: 'M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z',\n arrowRight: 'M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z',\n arrowLeft: 'M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z',\n};\n\nfunction isIconName(candidate) {\n return candidate in IconName;\n}\nconst Icon = (props) => {\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\n const iconName = String(props.name);\n const iconI18n = `icon${iconName.charAt(0).toUpperCase() + iconName.slice(1)}`;\n if (!iconName || typeof iconName !== 'string' || !isIconName(iconName)) {\n return;\n }\n const path = icons[iconName];\n const pathEl = h('path', { d: path });\n const iconTitle = config.i18n[iconI18n] || props.title || iconName;\n const titleEl = h('title', iconTitle);\n return h('svg', {\n class: 'carousel__icon',\n viewBox: '0 0 24 24',\n role: 'img',\n 'aria-label': iconTitle,\n }, [titleEl, pathEl]);\n};\nIcon.props = { name: String, title: String };\n\nconst Navigation = (props, { slots, attrs }) => {\n const { next: slotNext, prev: slotPrev } = slots || {};\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\n const maxSlide = inject('maxSlide', ref(1));\n const minSlide = inject('minSlide', ref(1));\n const currentSlide = inject('currentSlide', ref(1));\n const nav = inject('nav', {});\n const { dir, wrapAround, i18n } = config;\n const isRTL = dir === 'rtl';\n const prevButton = h('button', {\n type: 'button',\n class: [\n 'carousel__prev',\n !wrapAround && currentSlide.value <= minSlide.value && 'carousel__prev--disabled',\n attrs === null || attrs === void 0 ? void 0 : attrs.class,\n ],\n 'aria-label': i18n['ariaPreviousSlide'],\n onClick: nav.prev,\n }, (slotPrev === null || slotPrev === void 0 ? void 0 : slotPrev()) || h(Icon, { name: isRTL ? 'arrowRight' : 'arrowLeft' }));\n const nextButton = h('button', {\n type: 'button',\n class: [\n 'carousel__next',\n !wrapAround && currentSlide.value >= maxSlide.value && 'carousel__next--disabled',\n attrs === null || attrs === void 0 ? void 0 : attrs.class,\n ],\n 'aria-label': i18n['ariaNextSlide'],\n onClick: nav.next,\n }, (slotNext === null || slotNext === void 0 ? void 0 : slotNext()) || h(Icon, { name: isRTL ? 'arrowLeft' : 'arrowRight' }));\n return [prevButton, nextButton];\n};\n\nconst Pagination = () => {\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\n const maxSlide = inject('maxSlide', ref(1));\n const minSlide = inject('minSlide', ref(1));\n const currentSlide = inject('currentSlide', ref(1));\n const nav = inject('nav', {});\n const isActive = (slide) => mapNumberToRange({\n val: currentSlide.value,\n max: maxSlide.value,\n min: 0,\n }) === slide;\n const children = [];\n for (let slide = minSlide.value; slide < maxSlide.value + 1; slide++) {\n const button = h('button', {\n type: 'button',\n class: {\n 'carousel__pagination-button': true,\n 'carousel__pagination-button--active': isActive(slide),\n },\n 'aria-label': i18nFormatter(config.i18n['ariaNavigateToSlide'], {\n slideNumber: slide + 1,\n }),\n onClick: () => nav.slideTo(slide),\n });\n const item = h('li', { class: 'carousel__pagination-item', key: slide }, button);\n children.push(item);\n }\n return h('ol', { class: 'carousel__pagination' }, children);\n};\n\nvar Slide = defineComponent({\n name: 'CarouselSlide',\n props: {\n index: {\n type: Number,\n default: 1,\n },\n isClone: {\n type: Boolean,\n default: false,\n },\n },\n setup(props, { slots }) {\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\n const currentSlide = inject('currentSlide', ref(0));\n const slidesToScroll = inject('slidesToScroll', ref(0));\n const isSliding = inject('isSliding', ref(false));\n const isActive = computed(() => props.index === currentSlide.value);\n const isPrev = computed(() => props.index === currentSlide.value - 1);\n const isNext = computed(() => props.index === currentSlide.value + 1);\n const isVisible = computed(() => {\n const min = Math.floor(slidesToScroll.value);\n const max = Math.ceil(slidesToScroll.value + config.itemsToShow - 1);\n return props.index >= min && props.index <= max;\n });\n return () => {\n var _a;\n return h('li', {\n style: { width: `${100 / config.itemsToShow}%` },\n class: {\n carousel__slide: true,\n 'carousel__slide--clone': props.isClone,\n 'carousel__slide--visible': isVisible.value,\n 'carousel__slide--active': isActive.value,\n 'carousel__slide--prev': isPrev.value,\n 'carousel__slide--next': isNext.value,\n 'carousel__slide--sliding': isSliding.value,\n },\n 'aria-hidden': !isVisible.value,\n }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots, {\n isActive: isActive.value,\n isClone: props.isClone,\n isPrev: isPrev.value,\n isNext: isNext.value,\n isSliding: isSliding.value,\n isVisible: isVisible.value\n }));\n };\n },\n});\n\nexport { Carousel, Icon, Navigation, Pagination, Slide };\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\r\n\r\n"],"names":["useBlogStore","defineStore","state","locale","useNuxtApp","language","force","fetch","useApiFetch","posts","useI18n","localePath","useLocalePath","instrumentsStore","useInstrumentsStore","loadingInstruments","instruments","storeToRefs","isShowingMore","ref","isMedium","useMedia","numberOfInstrumentsToShow","computed","skeletonInstrumentsToShow","_","i","previewInstruments","watch","instrument","InstrumentState","minHeightPx","items","b","baseFraction","fraction","percentage","height","newHeight","cdnUrl","useRuntimeConfig","t","media","defaultConfigs","carouselProps","value","getMaxSlideIndex","config","slidesCount","snapAlign","wrapAround","itemsToShow","output","getMinSlideIndex","getNumberInRange","val","max","min","getSlidesToScroll","currentSlide","getSlidesVNodes","vNode","acc","node","_a","Fragment","mapNumberToRange","throttle","fn","limit","inThrottle","args","self","debounce","delay","timerId","i18nFormatter","string","values","key","ARIAComponent","defineComponent","inject","reactive","h","Carousel","props","slots","emit","expose","root","slides","slideWidth","__defaultConfig","breakpoints","currentSlideIndex","prevSlideIndex","middleSlideIndex","maxSlideIndex","minSlideIndex","autoplayTimer","transitionTimer","provide","initDefaultConfigs","bindConfigs","updateBreakpointsConfigs","breakpointsArray","a","newConfig","breakpoint","isMatched","handleWindowResize","updateSlidesData","updateSlideWidth","rect","onMounted","nextTick","initAutoplay","onUnmounted","isTouch","startPosition","endPosition","dragged","isHover","isDragging","handleMouseEnter","handleMouseLeave","handleDragStart","event","isSliding","handleDragging","handleDragEnd","deltaX","deltaY","direction","tolerance","draggedSlides","captureClick","e","slideTo","next","resetAutoplay","slideIndex","currentVal","mappedNumber","prev","nav","slidesToScroll","trackStyle","xScroll","restartCarousel","prop","data","slotSlides","slotAddons","slotsProps","slidesElements","addonsElements","el","index","slidesBefore","cloneVNode","slidesAfter","trackEl","viewPortEl","IconName","Pagination","maxSlide","minSlide","isActive","slide","children","button","item","Slide","isPrev","isNext","isVisible","__props","link","anchorTitle","image","excerpt","blogStore","route","useRoute","addDays","isAfter","useDateFns","useCustomSeoMeta","canShowMedia","storeOrRemoveKeys","storeKey","storeValueRaw","storeValue","AFFILIATE_KEY","codes","accumulated","CODES_KEY","newValue"],"mappings":"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","x_google_ignoreList":[5]}