{"version":3,"file":"BQ2q4LkK.js","sources":["../../../../../../../app/components/CiCampsiteMedia/CiCampsiteMediaImage.vue","../../../../../../../app/composables/useCampsiteMedia.ts"],"sourcesContent":["\n\n\n\n\n","export default function useCampsiteMedia() {\n /********************\n * REFS & VARS *\n ********************/\n const campsite = ref>({ media: [] });\n const mediaItemRefs = ref>({});\n const selectedItemIdx = ref(null);\n\n /********************\n * FUNCTIONS *\n ********************/\n function onKeyUp(event: KeyboardEvent) {\n // ArrowLeft, ArrowRight, Escape\n if (event.key === 'ArrowLeft') {\n selectNextMediaItem(-1);\n } else if (event.key === 'ArrowRight') {\n selectNextMediaItem(1);\n } else if (event.key === 'Escape') {\n deselectCurrentMediaItem();\n }\n }\n\n function getMediaItemByMediaIdx(idx) {\n const items = campsite.value.media.filter(item => item.idx === idx);\n if (!items.length) {\n return null;\n }\n return items[0];\n }\n\n function getNextMediaItemIndex(idx: number | null, direction = 1): number | null {\n if (idx === null && direction === 1) {\n idx = -1;\n }\n\n let items = [];\n if (direction > 0) {\n items = campsite.value.media.filter(item => item.idx > idx);\n } else {\n items = campsite.value.media.filter(item => item.idx < idx);\n }\n if (!items.length) {\n return null;\n }\n if (direction > 0) {\n return items[0].idx;\n } else {\n return items[items.length - 1].idx;\n }\n }\n\n function selectNextMediaItem(direction) {\n const newIdx = getNextMediaItemIndex(selectedItemIdx.value, direction);\n if (newIdx === null) {\n return;\n }\n selectedItemIdx.value = newIdx;\n toggleSelectedMedia(\n getMediaItemByMediaIdx(selectedItemIdx.value),\n mediaItemRefs.value[selectedItemIdx.value]?.firstElementChild,\n true,\n );\n }\n\n function deselectCurrentMediaItem() {\n if (selectedItemIdx.value === null) {\n return;\n }\n toggleSelectedMedia(\n getMediaItemByMediaIdx(selectedItemIdx.value),\n mediaItemRefs.value[selectedItemIdx.value]?.firstElementChild,\n false,\n );\n }\n\n function isSelected(item) {\n return !!item.selected;\n }\n\n function onMediaItemClicked(event, item, offset = 0) {\n selectedItemIdx.value = item.idx;\n toggleSelectedMedia(item, event.currentTarget, null, offset);\n }\n\n function toggleSelectedMedia(\n media,\n htmlElement: HTMLElement | Element | null = null,\n val: null | boolean = null,\n offset = 0,\n ) {\n media.selected = val !== null ? val : !media.selected;\n\n if (htmlElement !== null) {\n if (offset > 0) {\n nextTick(() => {\n window.scroll({ top: getOffsetTop(htmlElement) - offset, behavior: 'smooth' });\n });\n } else {\n nextTick(() => {\n htmlElement.scrollIntoView({ behavior: 'smooth' });\n });\n }\n }\n }\n\n return {\n campsite,\n isSelected,\n mediaItemRefs,\n onKeyUp,\n onMediaItemClicked,\n selectedItemIdx,\n };\n}\n"],"names":["props","__props","fixImageUrlAndCheckWebp","useWebp","sizes","description","computed","getPicture","selected","smallImg","bigImg","smallWidth","smallHeight","bigWidth","bigHeight","smallJpg","smallWebp","bigJpg","bigWebp","selectedPictures","useCampsiteMedia","campsite","ref","mediaItemRefs","selectedItemIdx","onKeyUp","event","selectNextMediaItem","deselectCurrentMediaItem","getMediaItemByMediaIdx","idx","items","item","getNextMediaItemIndex","direction","newIdx","toggleSelectedMedia","_a","isSelected","onMediaItemClicked","offset","media","htmlElement","val","nextTick","getOffsetTop"],"mappings":"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"}