{ "version": 3, "sources": ["../../../Vettvangur.Frontend/src/scripts/components/picture.ts"], "sourcesContent": ["const Picture = {\r\n el: {\r\n root: document.querySelectorAll('.picture'),\r\n },\r\n\r\n init() {\r\n if (this.el.root) {\r\n this.el.root.forEach((target) => {\r\n\r\n const picture = target\r\n const image: HTMLImageElement = target.querySelector('.picture__image')\r\n const imageSrc = image.getAttribute('src')\r\n let imageLoaded = false\r\n\r\n if (image) {\r\n if (image.complete) {\r\n picture.classList.add('picture--loaded')\r\n } else {\r\n Picture.observeImage(image, picture, imageSrc, imageLoaded)\r\n }\r\n }\r\n })\r\n }\r\n },\r\n\r\n observeImage: (image, picture, imageSrc, imageLoaded) => {\r\n const observer = new IntersectionObserver(\r\n (entries) => {\r\n entries.forEach((entry) => {\r\n if (entry.isIntersecting && !imageLoaded) {\r\n const loadingImage = new Image()\r\n loadingImage.onload = () => {\r\n image.src = loadingImage.src\r\n picture.classList.add('picture--loaded')\r\n imageLoaded = true\r\n }\r\n\r\n loadingImage.src = imageSrc\r\n }\r\n })\r\n },\r\n {\r\n root: null,\r\n rootMargin: '0px',\r\n threshold: 0,\r\n }\r\n )\r\n\r\n observer.observe(image)\r\n },\r\n}\r\n\r\nexport default Picture"], "mappings": "gCAAA,IAAMA,EAAU,CACd,GAAI,CACF,KAAM,SAAS,iBAAiB,UAAU,CAC5C,EAEA,MAAO,CACD,KAAK,GAAG,MACV,KAAK,GAAG,KAAK,QAASC,GAAW,CAE/B,IAAMC,EAAUD,EACVE,EAA0BF,EAAO,cAAc,iBAAiB,EAChEG,EAAWD,EAAM,aAAa,KAAK,EAGrCA,IACEA,EAAM,SACRD,EAAQ,UAAU,IAAI,iBAAiB,EAEvCF,EAAQ,aAAaG,EAAOD,EAASE,EANvB,EAM4C,EAGhE,CAAC,CAEL,EAEA,aAAc,CAACD,EAAOD,EAASE,EAAUC,IAAgB,CACtC,IAAI,qBAClBC,GAAY,CACXA,EAAQ,QAASC,GAAU,CACzB,GAAIA,EAAM,gBAAkB,CAACF,EAAa,CACxC,IAAMG,EAAe,IAAI,MACzBA,EAAa,OAAS,IAAM,CAC1BL,EAAM,IAAMK,EAAa,IACzBN,EAAQ,UAAU,IAAI,iBAAiB,EACvCG,EAAc,EAChB,EAEAG,EAAa,IAAMJ,CACrB,CACF,CAAC,CACH,EACA,CACE,KAAM,KACN,WAAY,MACZ,UAAW,CACb,CACF,EAES,QAAQD,CAAK,CACxB,CACF,EAEOM,EAAQT", "names": ["Picture", "target", "picture", "image", "imageSrc", "imageLoaded", "entries", "entry", "loadingImage", "picture_default"] }