{ "version": 3, "sources": ["../../Private/Assets/Fetch.js"], "sourcesContent": ["import PhotoSwipeLightbox from \"photoswipe/lightbox\";\nimport {\n getPswpContainer,\n dispatchEvent,\n createElement,\n getDataOptions,\n setPswpContainerAttributes,\n addEventListener,\n} from \"./Helper\";\n\nconst optionsFromNeos = { ...getDataOptions(\"photoswipeI18n\"), ...getDataOptions(\"photoswipeFetchOptions\") };\n\nconst wrappingClass = optionsFromNeos.wrappingClass || \"jonnitto-photoswipe-content\";\nconst fetchLinkAppend = optionsFromNeos.fetchLinkAppend || \"\";\ndelete optionsFromNeos.wrappingClass;\ndelete optionsFromNeos.fetchLinkAppend;\n\nlet currentContent = null;\n\nfunction init(options = {}) {\n options = { ...optionsFromNeos, ...options };\n const lightbox = new PhotoSwipeLightbox({\n preloadFirstSlide: false,\n allowPanToNext: false,\n initialZoomLevel: 1,\n secondaryZoomLevel: 1,\n maxZoomLevel: 1,\n wheelToZoom: false,\n closeOnVerticalDrag: false,\n mainClass: \"pswp--fetch\",\n arrowKeys: false,\n preloaderDelay: 1000,\n\n pswpModule: () => import(\"photoswipe\"),\n ...options,\n });\n\n lightbox.addFilter(\"isContentZoomable\", () => false);\n lightbox.addFilter(\"preventPointerEvent\", () => true);\n\n lightbox.on(\"firstUpdate\", () => {\n setPswpContainerAttributes();\n\n const container = getPswpContainer();\n // This enables default scrolling\n container?.addEventListener(\n \"wheel\",\n (event) => {\n event.stopImmediatePropagation();\n event.stopPropagation();\n },\n { passive: true },\n );\n\n // Register click handler between slides\n container?.addEventListener(\"click\", pswpContentEventListener);\n });\n\n lightbox.on(\"destroy\", () => {\n dispatchEvent({ type: \"fetch\", action: \"close\" });\n });\n\n lightbox.on(\"contentLoad\", async (event) => {\n const { content } = event;\n const data = content?.data;\n const src = data?.element?.dataset?.pwspSrc || data?.src;\n if (content.type != \"fetch\" || !src) {\n return;\n }\n content.state = \"loading\";\n event.preventDefault();\n const element = await fetchElement(src);\n content.element = element;\n currentContent = content.element;\n content.onLoaded();\n });\n lightbox.init();\n return lightbox;\n}\n\nasync function pswpContentEventListener(event) {\n const target = event.target;\n if (!target.matches('[data-pswp-type=\"fetch\"]')) {\n return;\n }\n event.preventDefault();\n const href = target.dataset.pswpSrc || target.href;\n const newElement = await fetchElement(href);\n currentContent.replaceWith(newElement);\n currentContent = newElement;\n}\n\nasync function fetchUrl(url, fetchLinkAppend) {\n const response = await fetch(url + fetchLinkAppend);\n if (!response.ok) {\n throw new Error(optionsFromNeos.errorMsg);\n }\n const markup = await response.text();\n url = completeUrl(url);\n dispatchEvent({ url, lightbox: url + fetchLinkAppend, type: \"fetch\", action: \"open\" });\n return markup;\n}\n\nfunction completeUrl(url) {\n const reg = new RegExp(\"^(http|https)://\", \"i\");\n if (reg.test(url)) {\n return url;\n }\n return window.location.origin + (url.startsWith(\"/\") ? \"\" : \"/\") + url;\n}\n\nasync function fetchElement(url) {\n toggleLoadingClass(true);\n const markup = await fetchUrl(url, fetchLinkAppend).catch((error) => {\n const message = error.message.replace('\"%s\"', url);\n return `

${message}

`;\n });\n\n const element = createElement(markup, wrappingClass);\n toggleLoadingClass(false);\n return element;\n}\n\nfunction toggleLoadingClass(show = true) {\n getPswpContainer()?.classList.toggle(\"pswp--fetch-loading\", show);\n}\n\nconst lightbox = init();\n\naddEventListener(\"fetch\", () => {\n lightbox.init();\n});\n\nwindow.neosPhotoSwipe = window.neosPhotoSwipe || {};\nwindow.neosPhotoSwipe.fetch = {\n init,\n lightbox,\n};\n"], "mappings": "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", "names": ["optionsFromNeos", "getDataOptions", "wrappingClass", "fetchLinkAppend", "currentContent", "init", "options", "lightbox", "PhotoSwipeLightbox", "setPswpContainerAttributes", "container", "getPswpContainer", "event", "pswpContentEventListener", "dispatchEvent", "content", "data", "src", "element", "fetchElement", "target", "href", "newElement", "fetchUrl", "url", "response", "markup", "completeUrl", "toggleLoadingClass", "error", "createElement", "show", "addEventListener"] }