{"version":3,"file":"main.min.js","mappings":"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","sources":["webpack://vp/./node_modules/@vpsoftware/vprealestate-www/modernizr.js","webpack://vp/webpack/bootstrap","webpack://vp/webpack/runtime/define property getters","webpack://vp/webpack/runtime/hasOwnProperty shorthand","webpack://vp/webpack/runtime/make namespace object","webpack://vp/external var \"bootstrap\"","webpack://vp/./node_modules/@vpsoftware/vprealestate-www/main.mjs","webpack://vp/./src/plan.custom.ts","webpack://vp/./src/cookie-consent.ts","webpack://vp/./src/main.ts"],"sourcesContent":["/*! modernizr 3.6.0 (Custom Build) | MIT *\n * https://modernizr.com/download/?-webp-setclasses !*/\n!function(e,n,A){function o(e){var n=r.className,A=Modernizr._config.classPrefix||\"\";if(l&&(n=n.baseVal),Modernizr._config.enableJSClass){var o=new RegExp(\"(^|\\\\s)\"+A+\"no-js(\\\\s|$)\");n=n.replace(o,\"$1\"+A+\"js$2\")}Modernizr._config.enableClasses&&(n+=\" \"+A+e.join(\" \"+A),l?r.className.baseVal=n:r.className=n)}function t(e,n){return typeof e===n}function a(){var e,n,A,o,a,i,r;for(var l in f)if(f.hasOwnProperty(l)){if(e=[],n=f[l],n.name&&(e.push(n.name.toLowerCase()),n.options&&n.options.aliases&&n.options.aliases.length))for(A=0;A {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = bootstrap;","/******/ // The require scope\n/******/ var __webpack_require__ = {};\n/******/ \n/************************************************************************/\n/******/ /* webpack/runtime/define property getters */\n/******/ (() => {\n/******/ \t// define getter functions for harmony exports\n/******/ \t__webpack_require__.d = (exports, definition) => {\n/******/ \t\tfor(var key in definition) {\n/******/ \t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t};\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/global */\n/******/ (() => {\n/******/ \t__webpack_require__.g = (function() {\n/******/ \t\tif (typeof globalThis === 'object') return globalThis;\n/******/ \t\ttry {\n/******/ \t\t\treturn this || new Function('return this')();\n/******/ \t\t} catch (e) {\n/******/ \t\t\tif (typeof window === 'object') return window;\n/******/ \t\t}\n/******/ \t})();\n/******/ })();\n/******/ \n/******/ /* webpack/runtime/hasOwnProperty shorthand */\n/******/ (() => {\n/******/ \t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ })();\n/******/ \n/************************************************************************/\nvar __webpack_exports__ = {};\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, {\n JJ: () => (/* reexport */ AreaFormat),\n Eg: () => (/* reexport */ DefaultPermissions),\n Ex: () => (/* reexport */ MoneyFormat),\n w0: () => (/* reexport */ PlanElementType),\n BH: () => (/* reexport */ PropertyPlan),\n Ut: () => (/* reexport */ PropertyType),\n ZD: () => (/* reexport */ escapeHtml),\n XK: () => (/* reexport */ generateLightbox),\n H1: () => (/* reexport */ initCookieConsent),\n Dm: () => (/* reexport */ initGalleries),\n qY: () => (/* reexport */ initializePlan),\n FW: () => (/* reexport */ initializePlans),\n XT: () => (/* reexport */ isBlockOfFlats),\n b5: () => (/* reexport */ isFloor),\n uM: () => (/* reexport */ isProperty),\n Ad: () => (/* reexport */ propertyTypeToString),\n zE: () => (/* reexport */ randomId)\n});\n\n;// CONCATENATED MODULE: ./src/cookie-consent.ts\nconst CookieName = \"cookie-permits\";\nconst DefaultPermissions = {\n 'ad_storage': 'denied',\n 'analytics_storage': 'denied',\n 'ad_user_data': 'denied',\n 'ad_personalization': 'denied',\n};\nfunction initCookieConsent(defaultPermissions) {\n const confirmButtons = document.querySelectorAll(\"#cookie-consent button[data-cookie-string]\");\n confirmButtons.forEach((confirmButton) => {\n confirmButton.addEventListener(\"click\", confirmButtonClicked, false);\n });\n const adjustButton = document.querySelector(\"#cookie-consent button.adjust-button\");\n if (adjustButton instanceof HTMLButtonElement) {\n adjustButton.addEventListener(\"click\", () => {\n const popup = document.querySelector(\".cookie-popup\");\n if (!popup)\n throw new Error('Could not find popup element');\n popup.classList.add('cookie-details');\n }, false);\n }\n const acc = document.getElementsByClassName(\"accordion-custom\");\n for (let i = 0; i < acc.length; i++) {\n acc[i].addEventListener(\"click\", function () {\n this.classList.toggle(\"active\");\n const panel = acc[i].querySelector('.accordion-panel');\n if (!panel)\n throw new Error('Panel not found');\n if (panel.style.maxHeight) {\n panel.style.maxHeight = '';\n }\n else {\n panel.style.maxHeight = panel.scrollHeight + \"px\";\n }\n });\n }\n gtag('consent', 'default', defaultPermissions);\n const cookiePermits = getCookie(CookieName);\n if (cookiePermits != null) {\n let perm = structuredClone(defaultPermissions);\n cookiePermits.split(',').forEach(item => {\n if (item === 'analytics') {\n perm['analytics_storage'] = 'granted';\n }\n else if (item === 'ads') {\n perm['ad_storage'] = 'granted';\n perm['ad_user_data'] = 'granted';\n perm['ad_personalization'] = 'granted';\n }\n });\n gtag('consent', 'update', perm);\n }\n initializePermitValues();\n}\nfunction initializePermitValues() {\n const confirmInputs = document.querySelectorAll(\"#cookie-consent input[data-cookie-permit]\");\n const cookiePermits = getCookie(CookieName)?.split(',') ?? [];\n confirmInputs.forEach((input) => {\n if (cookiePermits.some(x => x === input.dataset['cookiePermit']))\n input.checked = true;\n });\n}\nfunction confirmButtonClicked(event) {\n const button = event.currentTarget;\n if (!(button instanceof HTMLElement))\n return;\n const cookieAllPermit = button.dataset['cookieAll'] != null;\n const confirmInputs = document.querySelectorAll(\"#cookie-consent input[data-cookie-permit]\");\n const permits = [...confirmInputs].filter(x => x instanceof HTMLInputElement && (cookieAllPermit || !!x.checked));\n const permitValues = permits.map((x) => x.dataset['cookiePermit'])\n .filter(x => !!x?.length);\n const expires = getCookieExpireString(button.dataset['cookieString']);\n clearCookies();\n if (button.dataset['cookieString']) {\n document.cookie = button.dataset['cookieString'];\n }\n document.cookie = CookieName + \"=\" + encodeURIComponent(permitValues.join(',')) + \"; expires=\" + expires + \"; path=/; secure; samesite=none\";\n window.location.replace(window.location.href.split('#')[0]);\n}\nfunction getCookieExpireString(cookieString) {\n if (!cookieString)\n return '';\n const expiresRegex = /expires=([^;]+)/;\n const expiresMatch = expiresRegex.exec(cookieString);\n let expiresValue = '';\n if (expiresMatch && expiresMatch.length > 1)\n expiresValue = expiresMatch[1].trim();\n return expiresValue;\n}\nfunction getCookie(name) {\n const nameLenPlus = (name.length + 1);\n return document.cookie\n .split(';')\n .map(c => c.trim())\n .filter(cookie => {\n return cookie.substring(0, nameLenPlus) === `${name}=`;\n })\n .map(cookie => {\n return decodeURIComponent(cookie.substring(nameLenPlus));\n })[0] || null;\n}\nfunction clearCookies() {\n document.cookie.split(\";\").forEach(function (c) { document.cookie = c.replace(/^ +/, \"\").replace(/=.*/, \"=;expires=\" + new Date().toUTCString() + \";path=/\"); });\n}\n\n;// CONCATENATED MODULE: ./src/simple-lightbox.esm.js\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n/*!\n\tBy André Rinas, www.andrerinas.de\n\tDocumentation, www.simplelightbox.com\n\tAvailable for use under the MIT License\n\tVersion 2.14.2\n*/\nvar simple_lightbox_esm_SimpleLightbox = /*#__PURE__*/function () {\n function SimpleLightbox(elements, options) {\n var _this = this;\n _classCallCheck(this, SimpleLightbox);\n _defineProperty(this, \"defaultOptions\", {\n sourceAttr: 'href',\n overlay: true,\n overlayOpacity: 0.7,\n spinner: true,\n nav: true,\n navText: ['‹', '›'],\n captions: true,\n captionDelay: 0,\n captionSelector: 'img',\n captionType: 'attr',\n captionsData: 'title',\n captionPosition: 'bottom',\n captionClass: '',\n captionHTML: true,\n close: true,\n closeText: '×',\n swipeClose: true,\n showCounter: true,\n fileExt: 'png|jpg|jpeg|gif|webp',\n animationSlide: true,\n animationSpeed: 250,\n preloading: true,\n enableKeyboard: true,\n loop: true,\n rel: false,\n docClose: true,\n swipeTolerance: 50,\n className: 'simple-lightbox',\n widthRatio: 0.8,\n heightRatio: 0.9,\n scaleImageToRatio: false,\n disableRightClick: false,\n disableScroll: true,\n alertError: true,\n alertErrorMessage: 'Image not found, next image will be loaded',\n additionalHtml: false,\n history: true,\n throttleInterval: 0,\n doubleTapZoom: 2,\n maxZoom: 10,\n htmlClass: 'has-lightbox',\n rtl: false,\n fixedClass: 'sl-fixed',\n fadeSpeed: 300,\n uniqueImages: true,\n focus: true,\n scrollZoom: true,\n scrollZoomFactor: 0.5,\n download: false\n });\n _defineProperty(this, \"transitionPrefix\", void 0);\n _defineProperty(this, \"isPassiveEventsSupported\", void 0);\n _defineProperty(this, \"transitionCapable\", false);\n _defineProperty(this, \"isTouchDevice\", 'ontouchstart' in window);\n _defineProperty(this, \"isAppleDevice\", /(Mac|iPhone|iPod|iPad)/i.test(navigator.platform));\n _defineProperty(this, \"initialLocationHash\", void 0);\n _defineProperty(this, \"pushStateSupport\", 'pushState' in history);\n _defineProperty(this, \"isOpen\", false);\n _defineProperty(this, \"isAnimating\", false);\n _defineProperty(this, \"isClosing\", false);\n _defineProperty(this, \"isFadeIn\", false);\n _defineProperty(this, \"urlChangedOnce\", false);\n _defineProperty(this, \"hashReseted\", false);\n _defineProperty(this, \"historyHasChanges\", false);\n _defineProperty(this, \"historyUpdateTimeout\", null);\n _defineProperty(this, \"currentImage\", void 0);\n _defineProperty(this, \"eventNamespace\", 'simplelightbox');\n _defineProperty(this, \"domNodes\", {});\n _defineProperty(this, \"loadedImages\", []);\n _defineProperty(this, \"initialImageIndex\", 0);\n _defineProperty(this, \"currentImageIndex\", 0);\n _defineProperty(this, \"initialSelector\", null);\n _defineProperty(this, \"globalScrollbarWidth\", 0);\n _defineProperty(this, \"controlCoordinates\", {\n swipeDiff: 0,\n swipeYDiff: 0,\n swipeStart: 0,\n swipeEnd: 0,\n swipeYStart: 0,\n swipeYEnd: 0,\n mousedown: false,\n imageLeft: 0,\n zoomed: false,\n containerHeight: 0,\n containerWidth: 0,\n containerOffsetX: 0,\n containerOffsetY: 0,\n imgHeight: 0,\n imgWidth: 0,\n capture: false,\n initialOffsetX: 0,\n initialOffsetY: 0,\n initialPointerOffsetX: 0,\n initialPointerOffsetY: 0,\n initialPointerOffsetX2: 0,\n initialPointerOffsetY2: 0,\n initialScale: 1,\n initialPinchDistance: 0,\n pointerOffsetX: 0,\n pointerOffsetY: 0,\n pointerOffsetX2: 0,\n pointerOffsetY2: 0,\n targetOffsetX: 0,\n targetOffsetY: 0,\n targetScale: 0,\n pinchOffsetX: 0,\n pinchOffsetY: 0,\n limitOffsetX: 0,\n limitOffsetY: 0,\n scaleDifference: 0,\n targetPinchDistance: 0,\n touchCount: 0,\n doubleTapped: false,\n touchmoveCount: 0\n });\n this.options = Object.assign(this.defaultOptions, options);\n this.isPassiveEventsSupported = this.checkPassiveEventsSupport();\n if (typeof elements === 'string') {\n this.initialSelector = elements;\n this.elements = Array.from(document.querySelectorAll(elements));\n } else {\n this.elements = typeof elements.length !== 'undefined' && elements.length > 0 ? Array.from(elements) : [elements];\n }\n this.relatedElements = [];\n this.transitionPrefix = this.calculateTransitionPrefix();\n this.transitionCapable = this.transitionPrefix !== false;\n this.initialLocationHash = this.hash;\n\n // this should be handled by attribute selector IMHO! => 'a[rel=bla]'...\n if (this.options.rel) {\n this.elements = this.getRelated(this.options.rel);\n }\n if (this.options.uniqueImages) {\n var imgArr = [];\n this.elements = Array.from(this.elements).filter(function (element) {\n var src = element.getAttribute(_this.options.sourceAttr);\n if (imgArr.indexOf(src) === -1) {\n imgArr.push(src);\n return true;\n }\n return false;\n });\n }\n this.createDomNodes();\n if (this.options.close) {\n this.domNodes.wrapper.appendChild(this.domNodes.closeButton);\n }\n if (this.options.nav) {\n this.domNodes.wrapper.appendChild(this.domNodes.navigation);\n }\n if (this.options.spinner) {\n this.domNodes.wrapper.appendChild(this.domNodes.spinner);\n }\n this.addEventListener(this.elements, 'click.' + this.eventNamespace, function (event) {\n if (_this.isValidLink(event.currentTarget)) {\n event.preventDefault();\n if (_this.isAnimating) {\n return false;\n }\n _this.initialImageIndex = _this.elements.indexOf(event.currentTarget);\n _this.openImage(event.currentTarget);\n }\n });\n\n // close addEventListener click addEventListener doc\n if (this.options.docClose) {\n this.addEventListener(this.domNodes.wrapper, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], function (event) {\n if (_this.isOpen && event.target === event.currentTarget) {\n _this.close();\n }\n });\n }\n\n // disable rightclick\n if (this.options.disableRightClick) {\n this.addEventListener(document.body, 'contextmenu.' + this.eventNamespace, function (event) {\n if (event.target.parentElement.classList.contains(\"sl-image\")) {\n event.preventDefault();\n }\n });\n }\n\n // keyboard-control\n if (this.options.enableKeyboard) {\n this.addEventListener(document.body, 'keyup.' + this.eventNamespace, this.throttle(function (event) {\n _this.controlCoordinates.swipeDiff = 0;\n // keyboard control only if lightbox is open\n\n if (_this.isAnimating && event.key === 'Escape') {\n _this.currentImage.setAttribute('src', '');\n _this.isAnimating = false;\n _this.close();\n return;\n }\n if (_this.isOpen) {\n event.preventDefault();\n if (event.key === 'Escape') {\n _this.close();\n }\n if (!_this.isAnimating && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) > -1) {\n _this.loadImage(event.key === 'ArrowRight' ? 1 : -1);\n }\n }\n }, this.options.throttleInterval));\n }\n this.addEvents();\n }\n return _createClass(SimpleLightbox, [{\n key: \"checkPassiveEventsSupport\",\n value: function checkPassiveEventsSupport() {\n // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n // Test via a getter in the options object to see if the passive property is accessed\n var supportsPassive = false;\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener(\"testPassive\", null, opts);\n window.removeEventListener(\"testPassive\", null, opts);\n } catch (e) {}\n return supportsPassive;\n }\n }, {\n key: \"getCaptionElement\",\n value: function getCaptionElement(elem) {\n // look at sibling selector\n if (this.options.captionSelector.startsWith('+')) {\n var selector = this.options.captionSelector.replace(/^\\+/, '').trimStart();\n var sibling = elem.nextElementSibling;\n if (sibling && sibling.matches(selector)) {\n return sibling;\n }\n return false;\n } else if (this.options.captionSelector.startsWith('>')) {\n var _selector = this.options.captionSelector.replace(/^>/, '').trimStart();\n return elem.querySelector(_selector);\n } else {\n return elem.querySelector(this.options.captionSelector);\n }\n }\n }, {\n key: \"generateQuerySelector\",\n value: function generateQuerySelector(elem) {\n var tagName = elem.tagName,\n id = elem.id,\n className = elem.className,\n parentNode = elem.parentNode;\n if (tagName === 'HTML') return 'HTML';\n var str = tagName;\n str += id !== '' ? \"#\".concat(id) : '';\n if (className) {\n var classes = className.trim().split(/\\s/);\n for (var i = 0; i < classes.length; i++) {\n str += \".\".concat(classes[i]);\n }\n }\n var childIndex = 1;\n for (var e = elem; e.previousElementSibling; e = e.previousElementSibling) {\n childIndex += 1;\n }\n str += \":nth-child(\".concat(childIndex, \")\");\n return \"\".concat(this.generateQuerySelector(parentNode), \" > \").concat(str);\n }\n }, {\n key: \"createDomNodes\",\n value: function createDomNodes() {\n this.domNodes.overlay = document.createElement('div');\n this.domNodes.overlay.classList.add('sl-overlay');\n this.domNodes.overlay.dataset.opacityTarget = this.options.overlayOpacity;\n this.domNodes.closeButton = document.createElement('button');\n this.domNodes.closeButton.classList.add('sl-close');\n this.domNodes.closeButton.innerHTML = this.options.closeText;\n this.domNodes.spinner = document.createElement('div');\n this.domNodes.spinner.classList.add('sl-spinner');\n this.domNodes.spinner.innerHTML = '
';\n this.domNodes.navigation = document.createElement('div');\n this.domNodes.navigation.classList.add('sl-navigation');\n this.domNodes.navigation.innerHTML = \"\");\n this.domNodes.counter = document.createElement('div');\n this.domNodes.counter.classList.add('sl-counter');\n this.domNodes.counter.innerHTML = '/';\n this.domNodes.download = document.createElement('div');\n this.domNodes.download.classList.add('sl-download');\n this.domNodes.downloadLink = document.createElement('a');\n this.domNodes.downloadLink.setAttribute('download', '');\n this.domNodes.downloadLink.textContent = this.options.download;\n this.domNodes.download.appendChild(this.domNodes.downloadLink);\n this.domNodes.caption = document.createElement('div');\n this.domNodes.caption.classList.add('sl-caption', 'pos-' + this.options.captionPosition);\n if (this.options.captionClass) {\n var _this$domNodes$captio;\n var captionClasses = this.options.captionClass.split(/[\\s,]+/);\n (_this$domNodes$captio = this.domNodes.caption.classList).add.apply(_this$domNodes$captio, _toConsumableArray(captionClasses));\n }\n this.domNodes.image = document.createElement('div');\n this.domNodes.image.classList.add('sl-image');\n this.domNodes.wrapper = document.createElement('div');\n this.domNodes.wrapper.classList.add('sl-wrapper');\n this.domNodes.wrapper.setAttribute('tabindex', -1);\n this.domNodes.wrapper.setAttribute('role', 'dialog');\n this.domNodes.wrapper.setAttribute('aria-hidden', false);\n if (this.options.className) {\n this.domNodes.wrapper.classList.add(this.options.className);\n }\n if (this.options.rtl) {\n this.domNodes.wrapper.classList.add('sl-dir-rtl');\n }\n }\n }, {\n key: \"throttle\",\n value: function throttle(func, limit) {\n var inThrottle;\n return function () {\n if (!inThrottle) {\n func.apply(this, arguments);\n inThrottle = true;\n setTimeout(function () {\n return inThrottle = false;\n }, limit);\n }\n };\n }\n }, {\n key: \"isValidLink\",\n value: function isValidLink(element) {\n return !this.options.fileExt || element.getAttribute(this.options.sourceAttr) && new RegExp('(' + this.options.fileExt + ')($|\\\\?.*$)', 'i').test(element.getAttribute(this.options.sourceAttr));\n }\n }, {\n key: \"calculateTransitionPrefix\",\n value: function calculateTransitionPrefix() {\n var s = (document.body || document.documentElement).style;\n return 'transition' in s ? '' : 'WebkitTransition' in s ? '-webkit-' : 'MozTransition' in s ? '-moz-' : 'OTransition' in s ? '-o' : false;\n }\n }, {\n key: \"getScrollbarWidth\",\n value: function getScrollbarWidth() {\n var scrollbarWidth = 0;\n var scrollDiv = document.createElement('div');\n scrollDiv.classList.add('sl-scrollbar-measure');\n document.body.appendChild(scrollDiv);\n scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n }\n }, {\n key: \"toggleScrollbar\",\n value: function toggleScrollbar(type) {\n var scrollbarWidth = 0;\n var fixedElements = [].slice.call(document.querySelectorAll('.' + this.options.fixedClass));\n if (type === 'hide') {\n var fullWindowWidth = window.innerWidth;\n if (!fullWindowWidth) {\n var documentElementRect = document.documentElement.getBoundingClientRect();\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left);\n }\n if (document.body.clientWidth < fullWindowWidth || this.isAppleDevice) {\n var paddingRight = parseInt(window.getComputedStyle(document.body).paddingRight || 0, 10);\n scrollbarWidth = this.getScrollbarWidth();\n document.body.dataset.originalPaddingRight = paddingRight;\n if (scrollbarWidth > 0 || scrollbarWidth == 0 && this.isAppleDevice) {\n document.body.classList.add('hidden-scroll');\n document.body.style.paddingRight = paddingRight + scrollbarWidth + 'px';\n fixedElements.forEach(function (element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = window.getComputedStyle(element)['padding-right'];\n element.dataset.originalPaddingRight = actualPadding;\n element.style.paddingRight = \"\".concat(parseFloat(calculatedPadding) + scrollbarWidth, \"px\");\n });\n }\n }\n } else {\n document.body.classList.remove('hidden-scroll');\n document.body.style.paddingRight = document.body.dataset.originalPaddingRight + 'px';\n fixedElements.forEach(function (element) {\n var padding = element.dataset.originalPaddingRight;\n if (typeof padding !== 'undefined') {\n element.style.paddingRight = padding;\n }\n });\n }\n return scrollbarWidth;\n }\n }, {\n key: \"close\",\n value: function close() {\n var _this2 = this;\n if (!this.isOpen || this.isAnimating || this.isClosing) {\n return false;\n }\n this.isClosing = true;\n var element = this.relatedElements[this.currentImageIndex];\n element.dispatchEvent(new Event('close.simplelightbox'));\n if (this.options.history) {\n this.historyHasChanges = false;\n if (!this.hashReseted) {\n this.resetHash();\n }\n }\n this.removeEventListener(document, 'focusin.' + this.eventNamespace);\n this.fadeOut(this.domNodes.overlay, this.options.fadeSpeed);\n this.fadeOut(document.querySelectorAll('.sl-image img, .sl-close, .sl-navigation, .sl-image .sl-caption, .sl-counter'), this.options.fadeSpeed, function () {\n if (_this2.options.disableScroll) {\n _this2.toggleScrollbar('show');\n }\n if (_this2.options.htmlClass && _this2.options.htmlClass !== '') {\n document.querySelector('html').classList.remove(_this2.options.htmlClass);\n }\n document.body.removeChild(_this2.domNodes.wrapper);\n if (_this2.options.overlay) {\n document.body.removeChild(_this2.domNodes.overlay);\n }\n _this2.domNodes.additionalHtml = null;\n _this2.domNodes.download = null;\n element.dispatchEvent(new Event('closed.simplelightbox'));\n _this2.isClosing = false;\n });\n this.currentImage = null;\n this.isOpen = false;\n this.isAnimating = false;\n\n // reset touchcontrol coordinates\n for (var key in this.controlCoordinates) {\n this.controlCoordinates[key] = 0;\n }\n this.controlCoordinates.mousedown = false;\n this.controlCoordinates.zoomed = false;\n this.controlCoordinates.capture = false;\n this.controlCoordinates.initialScale = this.minMax(1, 1, this.options.maxZoom);\n this.controlCoordinates.doubleTapped = false;\n }\n }, {\n key: \"hash\",\n get: function get() {\n return window.location.hash.substring(1);\n }\n }, {\n key: \"preload\",\n value: function preload() {\n var _this3 = this;\n var index = this.currentImageIndex,\n length = this.relatedElements.length,\n next = index + 1 < 0 ? length - 1 : index + 1 >= length - 1 ? 0 : index + 1,\n prev = index - 1 < 0 ? length - 1 : index - 1 >= length - 1 ? 0 : index - 1,\n nextImage = new Image(),\n prevImage = new Image();\n nextImage.addEventListener('load', function (event) {\n var src = event.target.getAttribute('src');\n if (_this3.loadedImages.indexOf(src) === -1) {\n //is this condition even required... setting multiple times will not change usage...\n _this3.loadedImages.push(src);\n }\n _this3.relatedElements[index].dispatchEvent(new Event('nextImageLoaded.' + _this3.eventNamespace));\n });\n nextImage.setAttribute('src', this.relatedElements[next].getAttribute(this.options.sourceAttr));\n prevImage.addEventListener('load', function (event) {\n var src = event.target.getAttribute('src');\n if (_this3.loadedImages.indexOf(src) === -1) {\n _this3.loadedImages.push(src);\n }\n _this3.relatedElements[index].dispatchEvent(new Event('prevImageLoaded.' + _this3.eventNamespace));\n });\n prevImage.setAttribute('src', this.relatedElements[prev].getAttribute(this.options.sourceAttr));\n }\n }, {\n key: \"loadImage\",\n value: function loadImage(direction) {\n var _this4 = this;\n var slideDirection = direction;\n if (this.options.rtl) {\n direction = -direction;\n }\n this.relatedElements[this.currentImageIndex].dispatchEvent(new Event('change.' + this.eventNamespace));\n this.relatedElements[this.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'next' : 'prev') + '.' + this.eventNamespace));\n var newIndex = this.currentImageIndex + direction;\n if (this.isAnimating || (newIndex < 0 || newIndex >= this.relatedElements.length) && this.options.loop === false) {\n return false;\n }\n this.currentImageIndex = newIndex < 0 ? this.relatedElements.length - 1 : newIndex > this.relatedElements.length - 1 ? 0 : newIndex;\n this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;\n if (this.options.animationSlide) {\n this.slide(this.options.animationSpeed / 1000, -100 * slideDirection - this.controlCoordinates.swipeDiff + 'px');\n }\n this.fadeOut(this.domNodes.image, this.options.fadeSpeed, function () {\n _this4.isAnimating = true;\n if (!_this4.isClosing) {\n setTimeout(function () {\n var element = _this4.relatedElements[_this4.currentImageIndex];\n if (!_this4.currentImage) return;\n _this4.currentImage.setAttribute('src', element.getAttribute(_this4.options.sourceAttr));\n if (_this4.loadedImages.indexOf(element.getAttribute(_this4.options.sourceAttr)) === -1) {\n _this4.show(_this4.domNodes.spinner);\n }\n if (_this4.domNodes.image.contains(_this4.domNodes.caption)) {\n _this4.domNodes.image.removeChild(_this4.domNodes.caption);\n }\n _this4.adjustImage(slideDirection);\n if (_this4.options.preloading) _this4.preload();\n }, 100);\n } else {\n _this4.isAnimating = false;\n }\n });\n }\n }, {\n key: \"adjustImage\",\n value: function adjustImage(direction) {\n var _this5 = this;\n if (!this.currentImage) {\n return false;\n }\n var tmpImage = new Image(),\n windowWidth = window.innerWidth * this.options.widthRatio,\n windowHeight = window.innerHeight * this.options.heightRatio;\n tmpImage.setAttribute('src', this.currentImage.getAttribute('src'));\n this.currentImage.dataset.scale = 1;\n this.currentImage.dataset.translateX = 0;\n this.currentImage.dataset.translateY = 0;\n this.zoomPanElement(0, 0, 1);\n tmpImage.addEventListener('error', function (event) {\n _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('error.' + _this5.eventNamespace));\n _this5.isAnimating = false;\n _this5.isOpen = true;\n _this5.domNodes.spinner.style.display = 'none';\n var dirIsDefined = direction === 1 || direction === -1;\n if (_this5.initialImageIndex === _this5.currentImageIndex && dirIsDefined) {\n return _this5.close();\n }\n if (_this5.options.alertError) {\n alert(_this5.options.alertErrorMessage);\n }\n _this5.loadImage(dirIsDefined ? direction : 1);\n });\n tmpImage.addEventListener('load', function (event) {\n if (typeof direction !== 'undefined') {\n _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event('changed.' + _this5.eventNamespace));\n _this5.relatedElements[_this5.currentImageIndex].dispatchEvent(new Event((direction === 1 ? 'nextDone' : 'prevDone') + '.' + _this5.eventNamespace));\n }\n\n // history\n if (_this5.options.history) {\n _this5.updateURL();\n }\n if (_this5.loadedImages.indexOf(_this5.currentImage.getAttribute('src')) === -1) {\n _this5.loadedImages.push(_this5.currentImage.getAttribute('src'));\n }\n var imageWidth = event.target.width,\n imageHeight = event.target.height;\n if (_this5.options.scaleImageToRatio || imageWidth > windowWidth || imageHeight > windowHeight) {\n var ratio = imageWidth / imageHeight > windowWidth / windowHeight ? imageWidth / windowWidth : imageHeight / windowHeight;\n imageWidth /= ratio;\n imageHeight /= ratio;\n }\n _this5.domNodes.image.style.top = (window.innerHeight - imageHeight) / 2 + 'px';\n _this5.domNodes.image.style.left = (window.innerWidth - imageWidth - _this5.globalScrollbarWidth) / 2 + 'px';\n _this5.domNodes.image.style.width = imageWidth + 'px';\n _this5.domNodes.image.style.height = imageHeight + 'px';\n _this5.domNodes.spinner.style.display = 'none';\n if (_this5.options.focus) {\n _this5.forceFocus();\n }\n _this5.fadeIn(_this5.currentImage, _this5.options.fadeSpeed, function () {\n if (_this5.options.focus) {\n _this5.domNodes.wrapper.focus();\n }\n });\n _this5.isOpen = true;\n var captionContainer, captionText;\n if (typeof _this5.options.captionSelector === 'string') {\n captionContainer = _this5.options.captionSelector === 'self' ? _this5.relatedElements[_this5.currentImageIndex] : _this5.getCaptionElement(_this5.relatedElements[_this5.currentImageIndex]);\n } else if (typeof _this5.options.captionSelector === 'function') {\n captionContainer = _this5.options.captionSelector(_this5.relatedElements[_this5.currentImageIndex]);\n }\n if (_this5.options.captions && captionContainer) {\n if (_this5.options.captionType === 'data') {\n captionText = captionContainer.dataset[_this5.options.captionsData];\n } else if (_this5.options.captionType === 'text') {\n captionText = captionContainer.innerHTML;\n } else {\n captionText = captionContainer.getAttribute(_this5.options.captionsData);\n }\n }\n if (!_this5.options.loop) {\n if (_this5.currentImageIndex === 0) {\n _this5.hide(_this5.domNodes.navigation.querySelector('.sl-prev'));\n }\n if (_this5.currentImageIndex >= _this5.relatedElements.length - 1) {\n _this5.hide(_this5.domNodes.navigation.querySelector('.sl-next'));\n }\n if (_this5.currentImageIndex > 0) {\n _this5.show(_this5.domNodes.navigation.querySelector('.sl-prev'));\n }\n if (_this5.currentImageIndex < _this5.relatedElements.length - 1) {\n _this5.show(_this5.domNodes.navigation.querySelector('.sl-next'));\n }\n } else {\n if (_this5.relatedElements.length === 1) {\n _this5.hide(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));\n } else {\n _this5.show(_this5.domNodes.navigation.querySelectorAll('.sl-prev, .sl-next'));\n }\n }\n if (direction === 1 || direction === -1) {\n if (_this5.options.animationSlide) {\n _this5.slide(0, 100 * direction + 'px');\n setTimeout(function () {\n _this5.slide(_this5.options.animationSpeed / 1000, 0 + 'px');\n }, 50);\n }\n _this5.fadeIn(_this5.domNodes.image, _this5.options.fadeSpeed, function () {\n _this5.isAnimating = false;\n _this5.setCaption(captionText, imageWidth);\n });\n } else {\n _this5.isAnimating = false;\n _this5.setCaption(captionText, imageWidth);\n }\n if (_this5.options.additionalHtml && !_this5.domNodes.additionalHtml) {\n _this5.domNodes.additionalHtml = document.createElement('div');\n _this5.domNodes.additionalHtml.classList.add('sl-additional-html');\n _this5.domNodes.additionalHtml.innerHTML = _this5.options.additionalHtml;\n _this5.domNodes.image.appendChild(_this5.domNodes.additionalHtml);\n }\n if (_this5.options.download) {\n _this5.domNodes.downloadLink.setAttribute('href', _this5.currentImage.getAttribute('src'));\n }\n });\n }\n }, {\n key: \"zoomPanElement\",\n value: function zoomPanElement(targetOffsetX, targetOffsetY, targetScale) {\n this.currentImage.style[this.transitionPrefix + 'transform'] = 'translate(' + targetOffsetX + ',' + targetOffsetY + ') scale(' + targetScale + ')';\n }\n }, {\n key: \"minMax\",\n value: function minMax(value, min, max) {\n return value < min ? min : value > max ? max : value;\n }\n }, {\n key: \"setZoomData\",\n value: function setZoomData(initialScale, targetOffsetX, targetOffsetY) {\n this.currentImage.dataset.scale = initialScale;\n this.currentImage.dataset.translateX = targetOffsetX;\n this.currentImage.dataset.translateY = targetOffsetY;\n }\n }, {\n key: \"hashchangeHandler\",\n value: function hashchangeHandler() {\n if (this.isOpen && this.hash === this.initialLocationHash) {\n this.hashReseted = true;\n this.close();\n }\n }\n }, {\n key: \"addEvents\",\n value: function addEvents() {\n var _this6 = this;\n // resize/responsive\n this.addEventListener(window, 'resize.' + this.eventNamespace, function (event) {\n //this.adjustImage.bind(this)\n if (_this6.isOpen) {\n _this6.adjustImage();\n }\n });\n this.addEventListener(this.domNodes.closeButton, ['click.' + this.eventNamespace, 'touchstart.' + this.eventNamespace], this.close.bind(this));\n if (this.options.history) {\n setTimeout(function () {\n _this6.addEventListener(window, 'hashchange.' + _this6.eventNamespace, function (event) {\n if (_this6.isOpen) {\n _this6.hashchangeHandler();\n }\n });\n }, 40);\n }\n this.addEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace, function (event) {\n if (!event.currentTarget.tagName.match(/button/i)) {\n return true;\n }\n event.preventDefault();\n _this6.controlCoordinates.swipeDiff = 0;\n _this6.loadImage(event.currentTarget.classList.contains('sl-next') ? 1 : -1);\n });\n if (this.options.scrollZoom) {\n var scale = 1;\n this.addEventListener(this.domNodes.image, ['mousewheel', 'DOMMouseScroll'], function (event) {\n if (_this6.controlCoordinates.mousedown || _this6.isAnimating || _this6.isClosing || !_this6.isOpen) {\n return true;\n }\n if (_this6.controlCoordinates.containerHeight == 0) {\n _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;\n _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;\n _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;\n _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;\n _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;\n _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;\n _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);\n _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);\n }\n // event.preventDefault();\n\n var delta = event.delta || event.wheelDelta;\n if (delta === undefined) {\n //we are on firefox\n delta = event.detail;\n }\n delta = Math.max(-1, Math.min(1, delta)); // cap the delta to [-1,1] for cross browser consistency\n\n // apply zoom\n scale += delta * _this6.options.scrollZoomFactor * scale;\n scale = Math.max(1, Math.min(_this6.options.maxZoom, scale));\n _this6.controlCoordinates.targetScale = scale;\n var scrollTopPos = document.documentElement.scrollTop || document.body.scrollTop;\n _this6.controlCoordinates.pinchOffsetX = event.pageX;\n _this6.controlCoordinates.pinchOffsetY = event.pageY - scrollTopPos || 0; // need to substract the scroll position\n\n _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;\n _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;\n _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale;\n _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);\n _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);\n _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + \"px\", _this6.controlCoordinates.targetOffsetY + \"px\", _this6.controlCoordinates.targetScale);\n if (_this6.controlCoordinates.targetScale > 1) {\n _this6.controlCoordinates.zoomed = true;\n if ((!_this6.domNodes.caption.style.opacity || _this6.domNodes.caption.style.opacity > 0) && _this6.domNodes.caption.style.display !== 'none') {\n _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);\n }\n } else {\n if (_this6.controlCoordinates.initialScale === 1) {\n _this6.controlCoordinates.zoomed = false;\n if (_this6.domNodes.caption.style.display === 'none') {\n _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);\n }\n }\n _this6.controlCoordinates.initialPinchDistance = null;\n _this6.controlCoordinates.capture = false;\n }\n _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;\n _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale;\n _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;\n _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;\n _this6.setZoomData(_this6.controlCoordinates.targetScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);\n _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + \"px\", _this6.controlCoordinates.targetOffsetY + \"px\", _this6.controlCoordinates.targetScale);\n });\n }\n this.addEventListener(this.domNodes.image, ['touchstart.' + this.eventNamespace, 'mousedown.' + this.eventNamespace], function (event) {\n if (event.target.tagName === 'A' && event.type === 'touchstart') {\n return true;\n }\n if (event.type === 'mousedown') {\n event.preventDefault();\n _this6.controlCoordinates.initialPointerOffsetX = event.clientX;\n _this6.controlCoordinates.initialPointerOffsetY = event.clientY;\n _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;\n _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;\n _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;\n _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;\n _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;\n _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;\n _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);\n _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);\n _this6.controlCoordinates.capture = true;\n } else {\n _this6.controlCoordinates.touchCount = event.touches.length;\n _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;\n _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;\n _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;\n _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;\n _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;\n _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;\n _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;\n _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;\n if (_this6.controlCoordinates.touchCount === 1) /* Single touch */{\n if (!_this6.controlCoordinates.doubleTapped) {\n _this6.controlCoordinates.doubleTapped = true;\n setTimeout(function () {\n _this6.controlCoordinates.doubleTapped = false;\n }, 300);\n } else {\n _this6.currentImage.classList.add('sl-transition');\n if (!_this6.controlCoordinates.zoomed) {\n _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;\n _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);\n _this6.zoomPanElement(0 + \"px\", 0 + \"px\", _this6.controlCoordinates.initialScale);\n if ((!_this6.domNodes.caption.style.opacity || _this6.domNodes.caption.style.opacity > 0) && _this6.domNodes.caption.style.display !== 'none') {\n _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);\n }\n _this6.controlCoordinates.zoomed = true;\n } else {\n _this6.controlCoordinates.initialScale = 1;\n _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);\n _this6.zoomPanElement(0 + \"px\", 0 + \"px\", _this6.controlCoordinates.initialScale);\n _this6.controlCoordinates.zoomed = false;\n }\n setTimeout(function () {\n if (_this6.currentImage) {\n _this6.currentImage.classList.remove('sl-transition');\n }\n }, 200);\n return false;\n }\n _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);\n _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);\n } else if (_this6.controlCoordinates.touchCount === 2) /* Pinch */{\n _this6.controlCoordinates.initialPointerOffsetX2 = event.touches[1].clientX;\n _this6.controlCoordinates.initialPointerOffsetY2 = event.touches[1].clientY;\n _this6.controlCoordinates.initialOffsetX = parseFloat(_this6.currentImage.dataset.translateX);\n _this6.controlCoordinates.initialOffsetY = parseFloat(_this6.currentImage.dataset.translateY);\n _this6.controlCoordinates.pinchOffsetX = (_this6.controlCoordinates.initialPointerOffsetX + _this6.controlCoordinates.initialPointerOffsetX2) / 2;\n _this6.controlCoordinates.pinchOffsetY = (_this6.controlCoordinates.initialPointerOffsetY + _this6.controlCoordinates.initialPointerOffsetY2) / 2;\n _this6.controlCoordinates.initialPinchDistance = Math.sqrt((_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) * (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialPointerOffsetX2) + (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2) * (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialPointerOffsetY2));\n }\n _this6.controlCoordinates.capture = true;\n }\n if (_this6.controlCoordinates.mousedown) return true;\n if (_this6.transitionCapable) {\n _this6.controlCoordinates.imageLeft = parseInt(_this6.domNodes.image.style.left, 10);\n }\n _this6.controlCoordinates.mousedown = true;\n _this6.controlCoordinates.swipeDiff = 0;\n _this6.controlCoordinates.swipeYDiff = 0;\n _this6.controlCoordinates.swipeStart = event.pageX || event.touches[0].pageX;\n _this6.controlCoordinates.swipeYStart = event.pageY || event.touches[0].pageY;\n return false;\n });\n this.addEventListener(this.domNodes.image, ['touchmove.' + this.eventNamespace, 'mousemove.' + this.eventNamespace, 'MSPointerMove'], function (event) {\n if (!_this6.controlCoordinates.mousedown) {\n return true;\n }\n if (event.type === 'touchmove') {\n if (_this6.controlCoordinates.capture === false) {\n return false;\n }\n _this6.controlCoordinates.pointerOffsetX = event.touches[0].clientX;\n _this6.controlCoordinates.pointerOffsetY = event.touches[0].clientY;\n _this6.controlCoordinates.touchCount = event.touches.length;\n _this6.controlCoordinates.touchmoveCount++;\n if (_this6.controlCoordinates.touchCount > 1) /* Pinch */{\n _this6.controlCoordinates.pointerOffsetX2 = event.touches[1].clientX;\n _this6.controlCoordinates.pointerOffsetY2 = event.touches[1].clientY;\n _this6.controlCoordinates.targetPinchDistance = Math.sqrt((_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) * (_this6.controlCoordinates.pointerOffsetX - _this6.controlCoordinates.pointerOffsetX2) + (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2) * (_this6.controlCoordinates.pointerOffsetY - _this6.controlCoordinates.pointerOffsetY2));\n if (_this6.controlCoordinates.initialPinchDistance === null) {\n _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;\n }\n if (Math.abs(_this6.controlCoordinates.initialPinchDistance - _this6.controlCoordinates.targetPinchDistance) >= 1) {\n /* Initialize helpers */\n _this6.controlCoordinates.targetScale = _this6.minMax(_this6.controlCoordinates.targetPinchDistance / _this6.controlCoordinates.initialPinchDistance * _this6.controlCoordinates.initialScale, 1, _this6.options.maxZoom);\n _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;\n _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;\n _this6.controlCoordinates.scaleDifference = _this6.controlCoordinates.targetScale - _this6.controlCoordinates.initialScale;\n _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetX - (_this6.controlCoordinates.pinchOffsetX - _this6.controlCoordinates.containerOffsetX - _this6.controlCoordinates.containerWidth / 2 - _this6.controlCoordinates.initialOffsetX) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);\n _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.initialOffsetY - (_this6.controlCoordinates.pinchOffsetY - _this6.controlCoordinates.containerOffsetY - _this6.controlCoordinates.containerHeight / 2 - _this6.controlCoordinates.initialOffsetY) / (_this6.controlCoordinates.targetScale - _this6.controlCoordinates.scaleDifference) * _this6.controlCoordinates.scaleDifference, _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);\n _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + \"px\", _this6.controlCoordinates.targetOffsetY + \"px\", _this6.controlCoordinates.targetScale);\n if (_this6.controlCoordinates.targetScale > 1) {\n _this6.controlCoordinates.zoomed = true;\n if ((!_this6.domNodes.caption.style.opacity || _this6.domNodes.caption.style.opacity > 0) && _this6.domNodes.caption.style.display !== 'none') {\n _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);\n }\n }\n _this6.controlCoordinates.initialPinchDistance = _this6.controlCoordinates.targetPinchDistance;\n _this6.controlCoordinates.initialScale = _this6.controlCoordinates.targetScale;\n _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;\n _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;\n }\n } else {\n _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;\n _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;\n _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;\n _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);\n _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);\n if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {\n _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;\n _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;\n }\n if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {\n _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;\n _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;\n }\n _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);\n _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + \"px\", _this6.controlCoordinates.targetOffsetY + \"px\", _this6.controlCoordinates.targetScale);\n }\n }\n\n /* Mouse Move implementation */\n if (event.type === 'mousemove' && _this6.controlCoordinates.mousedown) {\n if (event.type == 'touchmove') return true;\n event.preventDefault();\n if (_this6.controlCoordinates.capture === false) return false;\n _this6.controlCoordinates.pointerOffsetX = event.clientX;\n _this6.controlCoordinates.pointerOffsetY = event.clientY;\n _this6.controlCoordinates.targetScale = _this6.controlCoordinates.initialScale;\n _this6.controlCoordinates.limitOffsetX = (_this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerWidth) / 2;\n _this6.controlCoordinates.limitOffsetY = (_this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale - _this6.controlCoordinates.containerHeight) / 2;\n _this6.controlCoordinates.targetOffsetX = _this6.controlCoordinates.imgWidth * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerWidth ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetX - (_this6.controlCoordinates.initialPointerOffsetX - _this6.controlCoordinates.initialOffsetX), _this6.controlCoordinates.limitOffsetX * -1, _this6.controlCoordinates.limitOffsetX);\n _this6.controlCoordinates.targetOffsetY = _this6.controlCoordinates.imgHeight * _this6.controlCoordinates.targetScale <= _this6.controlCoordinates.containerHeight ? 0 : _this6.minMax(_this6.controlCoordinates.pointerOffsetY - (_this6.controlCoordinates.initialPointerOffsetY - _this6.controlCoordinates.initialOffsetY), _this6.controlCoordinates.limitOffsetY * -1, _this6.controlCoordinates.limitOffsetY);\n if (Math.abs(_this6.controlCoordinates.targetOffsetX) === Math.abs(_this6.controlCoordinates.limitOffsetX)) {\n _this6.controlCoordinates.initialOffsetX = _this6.controlCoordinates.targetOffsetX;\n _this6.controlCoordinates.initialPointerOffsetX = _this6.controlCoordinates.pointerOffsetX;\n }\n if (Math.abs(_this6.controlCoordinates.targetOffsetY) === Math.abs(_this6.controlCoordinates.limitOffsetY)) {\n _this6.controlCoordinates.initialOffsetY = _this6.controlCoordinates.targetOffsetY;\n _this6.controlCoordinates.initialPointerOffsetY = _this6.controlCoordinates.pointerOffsetY;\n }\n _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);\n _this6.zoomPanElement(_this6.controlCoordinates.targetOffsetX + \"px\", _this6.controlCoordinates.targetOffsetY + \"px\", _this6.controlCoordinates.targetScale);\n }\n if (!_this6.controlCoordinates.zoomed) {\n _this6.controlCoordinates.swipeEnd = event.pageX || event.touches[0].pageX;\n _this6.controlCoordinates.swipeYEnd = event.pageY || event.touches[0].pageY;\n _this6.controlCoordinates.swipeDiff = _this6.controlCoordinates.swipeStart - _this6.controlCoordinates.swipeEnd;\n _this6.controlCoordinates.swipeYDiff = _this6.controlCoordinates.swipeYStart - _this6.controlCoordinates.swipeYEnd;\n if (_this6.options.animationSlide) {\n _this6.slide(0, -_this6.controlCoordinates.swipeDiff + 'px');\n }\n }\n });\n this.addEventListener(this.domNodes.image, ['touchend.' + this.eventNamespace, 'mouseup.' + this.eventNamespace, 'touchcancel.' + this.eventNamespace, 'mouseleave.' + this.eventNamespace, 'pointerup', 'pointercancel', 'MSPointerUp', 'MSPointerCancel'], function (event) {\n if (_this6.isTouchDevice && event.type === 'touchend') {\n _this6.controlCoordinates.touchCount = event.touches.length;\n if (_this6.controlCoordinates.touchCount === 0) /* No touch */{\n /* Set attributes */\n if (_this6.currentImage) {\n _this6.setZoomData(_this6.controlCoordinates.initialScale, _this6.controlCoordinates.targetOffsetX, _this6.controlCoordinates.targetOffsetY);\n }\n if (_this6.controlCoordinates.initialScale === 1) {\n _this6.controlCoordinates.zoomed = false;\n if (_this6.domNodes.caption.style.display === 'none') {\n _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);\n }\n }\n _this6.controlCoordinates.initialPinchDistance = null;\n _this6.controlCoordinates.capture = false;\n } else if (_this6.controlCoordinates.touchCount === 1) /* Single touch */{\n _this6.controlCoordinates.initialPointerOffsetX = event.touches[0].clientX;\n _this6.controlCoordinates.initialPointerOffsetY = event.touches[0].clientY;\n } else if (_this6.controlCoordinates.touchCount > 1) /* Pinch */{\n _this6.controlCoordinates.initialPinchDistance = null;\n }\n }\n if (_this6.controlCoordinates.mousedown) {\n _this6.controlCoordinates.mousedown = false;\n var possibleDir = true;\n if (!_this6.options.loop) {\n if (_this6.currentImageIndex === 0 && _this6.controlCoordinates.swipeDiff < 0) {\n possibleDir = false;\n }\n if (_this6.currentImageIndex >= _this6.relatedElements.length - 1 && _this6.controlCoordinates.swipeDiff > 0) {\n possibleDir = false;\n }\n }\n if (Math.abs(_this6.controlCoordinates.swipeDiff) > _this6.options.swipeTolerance && possibleDir) {\n _this6.loadImage(_this6.controlCoordinates.swipeDiff > 0 ? 1 : -1);\n } else if (_this6.options.animationSlide) {\n _this6.slide(_this6.options.animationSpeed / 1000, 0 + 'px');\n }\n if (_this6.options.swipeClose && Math.abs(_this6.controlCoordinates.swipeYDiff) > 50 && Math.abs(_this6.controlCoordinates.swipeDiff) < _this6.options.swipeTolerance) {\n _this6.close();\n }\n }\n });\n this.addEventListener(this.domNodes.image, ['dblclick'], function (event) {\n if (_this6.isTouchDevice) return;\n _this6.controlCoordinates.initialPointerOffsetX = event.clientX;\n _this6.controlCoordinates.initialPointerOffsetY = event.clientY;\n _this6.controlCoordinates.containerHeight = _this6.getDimensions(_this6.domNodes.image).height;\n _this6.controlCoordinates.containerWidth = _this6.getDimensions(_this6.domNodes.image).width;\n _this6.controlCoordinates.imgHeight = _this6.getDimensions(_this6.currentImage).height;\n _this6.controlCoordinates.imgWidth = _this6.getDimensions(_this6.currentImage).width;\n _this6.controlCoordinates.containerOffsetX = _this6.domNodes.image.offsetLeft;\n _this6.controlCoordinates.containerOffsetY = _this6.domNodes.image.offsetTop;\n _this6.currentImage.classList.add('sl-transition');\n if (!_this6.controlCoordinates.zoomed) {\n _this6.controlCoordinates.initialScale = _this6.options.doubleTapZoom;\n _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);\n _this6.zoomPanElement(0 + \"px\", 0 + \"px\", _this6.controlCoordinates.initialScale);\n if ((!_this6.domNodes.caption.style.opacity || _this6.domNodes.caption.style.opacity > 0) && _this6.domNodes.caption.style.display !== 'none') {\n _this6.fadeOut(_this6.domNodes.caption, _this6.options.fadeSpeed);\n }\n _this6.controlCoordinates.zoomed = true;\n } else {\n _this6.controlCoordinates.initialScale = 1;\n _this6.setZoomData(_this6.controlCoordinates.initialScale, 0, 0);\n _this6.zoomPanElement(0 + \"px\", 0 + \"px\", _this6.controlCoordinates.initialScale);\n _this6.controlCoordinates.zoomed = false;\n if (_this6.domNodes.caption.style.display === 'none') {\n _this6.fadeIn(_this6.domNodes.caption, _this6.options.fadeSpeed);\n }\n }\n setTimeout(function () {\n if (_this6.currentImage) {\n _this6.currentImage.classList.remove('sl-transition');\n _this6.currentImage.style[_this6.transitionPrefix + 'transform-origin'] = null;\n }\n }, 200);\n _this6.controlCoordinates.capture = true;\n return false;\n });\n }\n }, {\n key: \"getDimensions\",\n value: function getDimensions(element) {\n var styles = window.getComputedStyle(element),\n height = element.offsetHeight,\n width = element.offsetWidth,\n borderTopWidth = parseFloat(styles.borderTopWidth),\n borderBottomWidth = parseFloat(styles.borderBottomWidth),\n paddingTop = parseFloat(styles.paddingTop),\n paddingBottom = parseFloat(styles.paddingBottom),\n borderLeftWidth = parseFloat(styles.borderLeftWidth),\n borderRightWidth = parseFloat(styles.borderRightWidth),\n paddingLeft = parseFloat(styles.paddingLeft),\n paddingRight = parseFloat(styles.paddingRight);\n return {\n height: height - borderBottomWidth - borderTopWidth - paddingTop - paddingBottom,\n width: width - borderLeftWidth - borderRightWidth - paddingLeft - paddingRight\n };\n }\n }, {\n key: \"updateHash\",\n value: function updateHash() {\n var newHash = 'pid=' + (this.currentImageIndex + 1),\n newURL = window.location.href.split('#')[0] + '#' + newHash;\n this.hashReseted = false;\n if (this.pushStateSupport) {\n window.history[this.historyHasChanges ? 'replaceState' : 'pushState']('', document.title, newURL);\n } else {\n // what is the browser target of this?\n if (this.historyHasChanges) {\n window.location.replace(newURL);\n } else {\n window.location.hash = newHash;\n }\n }\n if (!this.historyHasChanges) {\n this.urlChangedOnce = true;\n }\n this.historyHasChanges = true;\n }\n }, {\n key: \"resetHash\",\n value: function resetHash() {\n this.hashReseted = true;\n if (this.urlChangedOnce) {\n history.back();\n } else {\n if (this.pushStateSupport) {\n history.pushState('', document.title, window.location.pathname + window.location.search);\n } else {\n window.location.hash = '';\n }\n }\n //\n //in case an history operation is still pending\n clearTimeout(this.historyUpdateTimeout);\n }\n }, {\n key: \"updateURL\",\n value: function updateURL() {\n clearTimeout(this.historyUpdateTimeout);\n if (!this.historyHasChanges) {\n this.updateHash(); // first time\n } else {\n this.historyUpdateTimeout = setTimeout(this.updateHash.bind(this), 800);\n }\n }\n }, {\n key: \"setCaption\",\n value: function setCaption(captionText, imageWidth, allowHTML) {\n var _this7 = this;\n if (this.options.captions && captionText && captionText !== '' && typeof captionText !== \"undefined\") {\n var _ref;\n var property = ((_ref = allowHTML !== null && allowHTML !== void 0 ? allowHTML : this.options.captionHTML) !== null && _ref !== void 0 ? _ref : true) ? 'innerHTML' : 'innerText';\n this.hide(this.domNodes.caption);\n this.domNodes.caption.style.width = imageWidth + 'px';\n this.domNodes.caption[property] = captionText;\n this.domNodes.image.appendChild(this.domNodes.caption);\n setTimeout(function () {\n _this7.fadeIn(_this7.domNodes.caption, _this7.options.fadeSpeed);\n }, this.options.captionDelay);\n }\n }\n }, {\n key: \"slide\",\n value: function slide(speed, pos) {\n if (!this.transitionCapable) {\n return this.domNodes.image.style.left = pos;\n }\n this.domNodes.image.style[this.transitionPrefix + 'transform'] = 'translateX(' + pos + ')';\n this.domNodes.image.style[this.transitionPrefix + 'transition'] = this.transitionPrefix + 'transform ' + speed + 's linear';\n }\n }, {\n key: \"getRelated\",\n value: function getRelated(rel) {\n var elems;\n if (rel && rel !== false && rel !== 'nofollow') {\n elems = Array.from(this.elements).filter(function (element) {\n return element.getAttribute('rel') === rel;\n });\n } else {\n elems = this.elements;\n }\n return elems;\n }\n }, {\n key: \"openImage\",\n value: function openImage(element) {\n var _this8 = this;\n element.dispatchEvent(new Event('show.' + this.eventNamespace));\n this.globalScrollbarWidth = this.getScrollbarWidth();\n if (this.options.disableScroll) {\n this.toggleScrollbar('hide');\n this.globalScrollbarWidth = 0;\n }\n if (this.options.htmlClass && this.options.htmlClass !== '') {\n document.querySelector('html').classList.add(this.options.htmlClass);\n }\n document.body.appendChild(this.domNodes.wrapper);\n this.domNodes.wrapper.appendChild(this.domNodes.image);\n if (this.options.overlay) {\n document.body.appendChild(this.domNodes.overlay);\n }\n this.relatedElements = this.getRelated(element.rel);\n if (this.options.showCounter) {\n if (this.relatedElements.length == 1 && this.domNodes.wrapper.contains(this.domNodes.counter)) {\n this.domNodes.wrapper.removeChild(this.domNodes.counter);\n } else if (this.relatedElements.length > 1 && !this.domNodes.wrapper.contains(this.domNodes.counter)) {\n this.domNodes.wrapper.appendChild(this.domNodes.counter);\n }\n }\n if (this.options.download && this.domNodes.download) {\n this.domNodes.wrapper.appendChild(this.domNodes.download);\n }\n this.isAnimating = true;\n this.currentImageIndex = this.relatedElements.indexOf(element);\n var targetURL = element.getAttribute(this.options.sourceAttr);\n this.currentImage = document.createElement('img');\n this.currentImage.style.display = 'none';\n this.currentImage.setAttribute('src', targetURL);\n this.currentImage.dataset.scale = 1;\n this.currentImage.dataset.translateX = 0;\n this.currentImage.dataset.translateY = 0;\n if (this.loadedImages.indexOf(targetURL) === -1) {\n this.loadedImages.push(targetURL);\n }\n this.domNodes.image.innerHTML = '';\n this.domNodes.image.setAttribute('style', '');\n this.domNodes.image.appendChild(this.currentImage);\n this.fadeIn(this.domNodes.overlay, this.options.fadeSpeed);\n this.fadeIn([this.domNodes.counter, this.domNodes.navigation, this.domNodes.closeButton, this.domNodes.download], this.options.fadeSpeed);\n this.show(this.domNodes.spinner);\n this.domNodes.counter.querySelector('.sl-current').innerHTML = this.currentImageIndex + 1;\n this.domNodes.counter.querySelector('.sl-total').innerHTML = this.relatedElements.length;\n this.adjustImage();\n if (this.options.preloading) {\n this.preload();\n }\n setTimeout(function () {\n element.dispatchEvent(new Event('shown.' + _this8.eventNamespace));\n }, this.options.animationSpeed);\n }\n }, {\n key: \"forceFocus\",\n value: function forceFocus() {\n var _this9 = this;\n this.removeEventListener(document, 'focusin.' + this.eventNamespace);\n this.addEventListener(document, 'focusin.' + this.eventNamespace, function (event) {\n if (document !== event.target && _this9.domNodes.wrapper !== event.target && !_this9.domNodes.wrapper.contains(event.target)) {\n _this9.domNodes.wrapper.focus();\n }\n });\n }\n\n // utility\n }, {\n key: \"addEventListener\",\n value: function addEventListener(elements, events, callback, opts) {\n elements = this.wrap(elements);\n events = this.wrap(events);\n var _iterator = _createForOfIteratorHelper(elements),\n _step;\n try {\n for (_iterator.s(); !(_step = _iterator.n()).done;) {\n var element = _step.value;\n if (!element.namespaces) {\n element.namespaces = {};\n } // save the namespaces addEventListener the DOM element itself\n var _iterator2 = _createForOfIteratorHelper(events),\n _step2;\n try {\n for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n var event = _step2.value;\n var options = opts || false;\n var needsPassiveFix = ['touchstart', 'touchmove', 'mousewheel', 'DOMMouseScroll'].indexOf(event.split('.')[0]) >= 0;\n if (needsPassiveFix && this.isPassiveEventsSupported) {\n if (_typeof(options) === 'object') {\n options.passive = true;\n } else {\n options = {\n passive: true\n };\n }\n }\n element.namespaces[event] = callback;\n element.addEventListener(event.split('.')[0], callback, options);\n }\n } catch (err) {\n _iterator2.e(err);\n } finally {\n _iterator2.f();\n }\n }\n } catch (err) {\n _iterator.e(err);\n } finally {\n _iterator.f();\n }\n }\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(elements, events) {\n elements = this.wrap(elements);\n events = this.wrap(events);\n var _iterator3 = _createForOfIteratorHelper(elements),\n _step3;\n try {\n for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n var element = _step3.value;\n var _iterator4 = _createForOfIteratorHelper(events),\n _step4;\n try {\n for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n var event = _step4.value;\n if (element.namespaces && element.namespaces[event]) {\n element.removeEventListener(event.split('.')[0], element.namespaces[event]);\n delete element.namespaces[event];\n }\n }\n } catch (err) {\n _iterator4.e(err);\n } finally {\n _iterator4.f();\n }\n }\n } catch (err) {\n _iterator3.e(err);\n } finally {\n _iterator3.f();\n }\n }\n }, {\n key: \"fadeOut\",\n value: function fadeOut(elements, duration, callback) {\n var _this10 = this;\n elements = this.wrap(elements);\n var _iterator5 = _createForOfIteratorHelper(elements),\n _step5;\n try {\n for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n var element = _step5.value;\n element.style.opacity = parseFloat(element) || window.getComputedStyle(element).getPropertyValue(\"opacity\");\n }\n } catch (err) {\n _iterator5.e(err);\n } finally {\n _iterator5.f();\n }\n this.isFadeIn = false;\n var step = 16.66666 / (duration || this.options.fadeSpeed),\n _fade = function fade() {\n var currentOpacity = parseFloat(elements[0].style.opacity);\n if ((currentOpacity -= step) < 0) {\n var _iterator6 = _createForOfIteratorHelper(elements),\n _step6;\n try {\n for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n var element = _step6.value;\n element.style.display = \"none\";\n // element.style.opacity = '';\n element.style.opacity = 1;\n }\n } catch (err) {\n _iterator6.e(err);\n } finally {\n _iterator6.f();\n }\n callback && callback.call(_this10, elements);\n } else {\n var _iterator7 = _createForOfIteratorHelper(elements),\n _step7;\n try {\n for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n var _element = _step7.value;\n _element.style.opacity = currentOpacity;\n }\n } catch (err) {\n _iterator7.e(err);\n } finally {\n _iterator7.f();\n }\n requestAnimationFrame(_fade);\n }\n };\n _fade();\n }\n }, {\n key: \"fadeIn\",\n value: function fadeIn(elements, duration, callback, display) {\n var _this11 = this;\n elements = this.wrap(elements);\n var _iterator8 = _createForOfIteratorHelper(elements),\n _step8;\n try {\n for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n var element = _step8.value;\n if (element) {\n element.style.opacity = 0;\n element.style.display = display || \"block\";\n }\n }\n } catch (err) {\n _iterator8.e(err);\n } finally {\n _iterator8.f();\n }\n this.isFadeIn = true;\n var opacityTarget = parseFloat(elements[0].dataset.opacityTarget || 1),\n step = 16.66666 * opacityTarget / (duration || this.options.fadeSpeed),\n _fade2 = function fade() {\n var currentOpacity = parseFloat(elements[0].style.opacity);\n if (!((currentOpacity += step) > opacityTarget)) {\n var _iterator9 = _createForOfIteratorHelper(elements),\n _step9;\n try {\n for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n var element = _step9.value;\n if (element) {\n element.style.opacity = currentOpacity;\n }\n }\n } catch (err) {\n _iterator9.e(err);\n } finally {\n _iterator9.f();\n }\n if (!_this11.isFadeIn) return;\n requestAnimationFrame(_fade2);\n } else {\n var _iterator10 = _createForOfIteratorHelper(elements),\n _step10;\n try {\n for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n var _element2 = _step10.value;\n if (_element2) {\n _element2.style.opacity = opacityTarget;\n }\n }\n } catch (err) {\n _iterator10.e(err);\n } finally {\n _iterator10.f();\n }\n callback && callback.call(_this11, elements);\n }\n };\n _fade2();\n }\n }, {\n key: \"hide\",\n value: function hide(elements) {\n elements = this.wrap(elements);\n var _iterator11 = _createForOfIteratorHelper(elements),\n _step11;\n try {\n for (_iterator11.s(); !(_step11 = _iterator11.n()).done;) {\n var element = _step11.value;\n if (element.style.display != 'none') {\n element.dataset.initialDisplay = element.style.display;\n }\n element.style.display = 'none';\n }\n } catch (err) {\n _iterator11.e(err);\n } finally {\n _iterator11.f();\n }\n }\n }, {\n key: \"show\",\n value: function show(elements, display) {\n elements = this.wrap(elements);\n var _iterator12 = _createForOfIteratorHelper(elements),\n _step12;\n try {\n for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {\n var element = _step12.value;\n element.style.display = element.dataset.initialDisplay || display || 'block';\n }\n } catch (err) {\n _iterator12.e(err);\n } finally {\n _iterator12.f();\n }\n }\n }, {\n key: \"wrap\",\n value: function wrap(input) {\n return typeof input[Symbol.iterator] === 'function' && typeof input !== 'string' ? input : [input];\n }\n }, {\n key: \"on\",\n value: function on(events, callback) {\n events = this.wrap(events);\n var _iterator13 = _createForOfIteratorHelper(this.elements),\n _step13;\n try {\n for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {\n var element = _step13.value;\n if (!element.fullyNamespacedEvents) {\n element.fullyNamespacedEvents = {};\n }\n var _iterator14 = _createForOfIteratorHelper(events),\n _step14;\n try {\n for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {\n var event = _step14.value;\n element.fullyNamespacedEvents[event] = callback;\n element.addEventListener(event, callback);\n }\n } catch (err) {\n _iterator14.e(err);\n } finally {\n _iterator14.f();\n }\n }\n } catch (err) {\n _iterator13.e(err);\n } finally {\n _iterator13.f();\n }\n return this;\n }\n }, {\n key: \"off\",\n value: function off(events) {\n events = this.wrap(events);\n var _iterator15 = _createForOfIteratorHelper(this.elements),\n _step15;\n try {\n for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {\n var element = _step15.value;\n var _iterator16 = _createForOfIteratorHelper(events),\n _step16;\n try {\n for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {\n var event = _step16.value;\n if (typeof element.fullyNamespacedEvents !== 'undefined' && event in element.fullyNamespacedEvents) {\n element.removeEventListener(event, element.fullyNamespacedEvents[event]);\n }\n }\n } catch (err) {\n _iterator16.e(err);\n } finally {\n _iterator16.f();\n }\n }\n } catch (err) {\n _iterator15.e(err);\n } finally {\n _iterator15.f();\n }\n return this;\n }\n\n // api\n }, {\n key: \"open\",\n value: function open(elem) {\n var position = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n elem = elem || this.elements[0];\n if (typeof jQuery !== \"undefined\" && elem instanceof jQuery) {\n elem = elem.get(0);\n }\n if (position > 0) {\n elem = this.elements[position];\n }\n this.initialImageIndex = this.elements.indexOf(elem);\n if (this.initialImageIndex > -1) {\n this.openImage(elem);\n }\n }\n }, {\n key: \"openPosition\",\n value: function openPosition(position) {\n var elem = this.elements[position];\n this.open(elem, position);\n }\n }, {\n key: \"next\",\n value: function next() {\n this.loadImage(1);\n }\n }, {\n key: \"prev\",\n value: function prev() {\n this.loadImage(-1);\n }\n\n // get some useful data\n }, {\n key: \"getLighboxData\",\n value: function getLighboxData() {\n return {\n currentImageIndex: this.currentImageIndex,\n currentImage: this.currentImage,\n globalScrollbarWidth: this.globalScrollbarWidth\n };\n }\n\n //close is exposed anyways..\n }, {\n key: \"destroy\",\n value: function destroy() {\n //remove all custom event listeners from elements\n this.off(['close.' + this.eventNamespace, 'closed.' + this.eventNamespace, 'nextImageLoaded.' + this.eventNamespace, 'prevImageLoaded.' + this.eventNamespace, 'change.' + this.eventNamespace, 'nextDone.' + this.eventNamespace, 'prevDone.' + this.eventNamespace, 'error.' + this.eventNamespace, 'changed.' + this.eventNamespace, 'next.' + this.eventNamespace, 'prev.' + this.eventNamespace, 'show.' + this.eventNamespace, 'shown.' + this.eventNamespace]);\n this.removeEventListener(this.elements, 'click.' + this.eventNamespace);\n this.removeEventListener(document, 'focusin.' + this.eventNamespace);\n this.removeEventListener(document.body, 'contextmenu.' + this.eventNamespace);\n this.removeEventListener(document.body, 'keyup.' + this.eventNamespace);\n this.removeEventListener(this.domNodes.navigation.getElementsByTagName('button'), 'click.' + this.eventNamespace);\n this.removeEventListener(this.domNodes.closeButton, 'click.' + this.eventNamespace);\n this.removeEventListener(window, 'resize.' + this.eventNamespace);\n this.removeEventListener(window, 'hashchange.' + this.eventNamespace);\n this.close();\n if (this.isOpen) {\n document.body.removeChild(this.domNodes.wrapper);\n document.body.removeChild(this.domNodes.overlay);\n }\n this.elements = null;\n }\n }, {\n key: \"refresh\",\n value: function refresh() {\n if (!this.initialSelector) {\n throw 'refreshing only works when you initialize using a selector!';\n }\n var options = this.options,\n selector = this.initialSelector;\n this.destroy();\n this.constructor(selector, options);\n return this;\n }\n }]);\n}();\n/* harmony default export */ const simple_lightbox_esm = ((/* unused pure expression or super */ null && (simple_lightbox_esm_SimpleLightbox)));\n__webpack_require__.g.SimpleLightbox = simple_lightbox_esm_SimpleLightbox;\n;// CONCATENATED MODULE: ./src/lightbox.ts\n\n\nfunction generateLightbox(id, images) {\n let imagesMarkup = '';\n for (let image of images) {\n imagesMarkup += `\n \n \n \n \"Plan\"\n \n \n `;\n }\n return `\n
\n ${imagesMarkup}\n
`;\n}\nfunction initGalleries(selector, elementSelector) {\n let sourceAttr = 'href';\n if (Modernizr.webp) {\n sourceAttr = 'data-gal-webp';\n }\n elementSelector ??= 'a';\n let items = document.querySelectorAll(selector);\n items.forEach(item => {\n let elements = Array.from(item.querySelectorAll(elementSelector));\n new SimpleLightbox(elements, {\n sourceAttr,\n fileExt: false,\n alertErrorMessage: 'Błąd ładowania obrazka'\n });\n });\n}\n\n;// CONCATENATED MODULE: ./src/plan.ts\n\nvar PlanElementType;\n(function (PlanElementType) {\n PlanElementType[\"BlockOfFlats\"] = \"bf\";\n PlanElementType[\"MultiPremises\"] = \"mp\";\n PlanElementType[\"MultiPremisesDouble\"] = \"mpd\";\n PlanElementType[\"House\"] = \"h\";\n PlanElementType[\"DoubleHouse\"] = \"dh\";\n PlanElementType[\"TerracedHouse\"] = \"th\";\n PlanElementType[\"Floor\"] = \"fl\";\n PlanElementType[\"Property\"] = \"pr\";\n})(PlanElementType || (PlanElementType = {}));\nvar PropertyType;\n(function (PropertyType) {\n PropertyType[\"Flat\"] = \"f\";\n PropertyType[\"Cellar\"] = \"c\";\n PropertyType[\"StorageRoom\"] = \"sr\";\n PropertyType[\"House\"] = \"h\";\n PropertyType[\"Premises\"] = \"p\";\n PropertyType[\"LowerPlatform\"] = \"pl\";\n PropertyType[\"UpperPlatform\"] = \"pu\";\n PropertyType[\"ParkingLot\"] = \"lot\";\n PropertyType[\"BicycleBox\"] = \"bb\";\n PropertyType[\"Garage\"] = \"g\";\n PropertyType[\"ExternalLot\"] = \"el\";\n})(PropertyType || (PropertyType = {}));\nfunction isBlockOfFlats(element) {\n return element.t === PlanElementType.BlockOfFlats;\n}\nfunction isFloor(element) {\n return element.t === PlanElementType.Floor;\n}\nfunction isProperty(element) {\n return element.t === PlanElementType.Property;\n}\nfunction propertyTypeToString(propertyType) {\n switch (propertyType) {\n case PropertyType.BicycleBox:\n return 'Boks rowerowy';\n case PropertyType.Cellar:\n return 'Piwnica';\n case PropertyType.ExternalLot:\n return 'Miejsce postojowe zewnętrzne';\n case PropertyType.Flat:\n return 'Mieszkanie';\n case PropertyType.Garage:\n return 'Garaż';\n case PropertyType.LowerPlatform:\n return 'Platforma postjowa dolna';\n case PropertyType.House:\n return 'Dom';\n case PropertyType.ParkingLot:\n return 'Miejsce postojowe';\n case PropertyType.Premises:\n return 'Lokal usługowy';\n case PropertyType.StorageRoom:\n return 'Schowek';\n case PropertyType.UpperPlatform:\n return 'Platforma postojowa górna';\n default:\n return '';\n }\n}\nasync function initializePlans(selectorOrOptions, optionsArg) {\n let selector = 'picture[data-path]';\n let options;\n if (typeof selectorOrOptions === 'string') {\n if (!optionsArg)\n throw new Error('Must provide options');\n selector = selectorOrOptions;\n options = optionsArg;\n }\n else {\n options = selectorOrOptions;\n }\n let planElements = document.querySelectorAll(selector);\n let planArr = Array.from(planElements);\n let results = [];\n for (let planElement of planArr) {\n let planData = planElement.dataset['path'];\n if (planData == null)\n continue;\n let decoded = JSON.parse(atob(planData));\n results.push(initializePlan(planElement, decoded, options));\n }\n return await Promise.all(results);\n}\nasync function initializePlan(planElement, data, options) {\n let plan = await PropertyPlan.create(planElement, options, data);\n return plan;\n}\nclass PropertyPlan {\n pictureTag;\n _options;\n _data;\n wrapper;\n elements;\n _width;\n _height;\n resizeObserver;\n img;\n _activeObject;\n get data() {\n return this._data;\n }\n get options() {\n return this._options;\n }\n static async create(pictureTag, options, planData) {\n if (!pictureTag || !(pictureTag instanceof HTMLPictureElement) || !pictureTag.parentElement)\n throw new Error('Invalid investment plan element');\n const image = await PropertyPlan.prepareElement(pictureTag);\n const wrapper = PropertyPlan.setupWrapper(pictureTag);\n let plan = new PropertyPlan(pictureTag, options, planData, image, wrapper);\n if (options.popoversEnabled ?? true) {\n plan.initPopovers(options);\n }\n return plan;\n }\n static async prepareElement(pictureTag) {\n let image = pictureTag.querySelector('img');\n if (!image)\n throw new Error('Cannot find img element');\n if (!image.complete) {\n await new Promise((resolve, reject) => {\n image.addEventListener('load', () => {\n resolve();\n });\n image.addEventListener('error', () => {\n reject(new Error('Cannot initialize property plan. Image could not be loaded.'));\n });\n });\n }\n if (image.naturalHeight === 0)\n throw new Error('Cannot initialize property plan. Image could not be loaded.');\n return image;\n }\n static setupWrapper(picture) {\n let wrapper = document.createElement('div');\n wrapper.style.position = 'relative';\n wrapper.style.display = 'inline-block';\n picture.parentElement.insertBefore(wrapper, picture);\n picture.remove();\n wrapper.appendChild(picture);\n return wrapper;\n }\n constructor(pictureTag, options, data, image, wrapper) {\n this.pictureTag = pictureTag;\n this._options = options;\n this._data = data;\n this.img = image;\n this._width = this.img.clientWidth;\n this._height = this.img.clientHeight;\n if (isNaN(this._width) || isNaN(this._height)) {\n throw new Error('Image element must have width and height attributes set');\n }\n this.wrapper = wrapper;\n this.elements = this.prepareObjects();\n this.setupResizeObserver();\n this.updateDimensions();\n this.img.addEventListener('mousemove', evt => this.handleMouseMove(evt));\n this.img.addEventListener('mouseleave', () => this.handleMouseLeave());\n this.img.addEventListener('click', evt => this.handleMouseClick(evt));\n let onClick = options.onClick;\n if (onClick) {\n this.element.addEventListener('objectclick', (evt) => {\n onClick.apply(this, [evt.detail.object]);\n });\n }\n }\n setupResizeObserver() {\n if (window.ResizeObserver) {\n this.resizeObserver = new ResizeObserver(() => {\n this.updateDimensions();\n });\n this.resizeObserver.observe(this.img);\n }\n else {\n window.addEventListener('resize', () => {\n this.updateDimensions();\n });\n }\n }\n initPopovers(options) {\n if (!this.element)\n throw new Error('Call initialize first');\n if (!this.options.getPopoverContent)\n throw new Error('getPopoverContent must be set if showPopover is set');\n if (!this.options.getPopoverTitle)\n throw new Error('getPopoverTitle must be set if showPopover is set');\n const getContent = this.options.getPopoverContent;\n const getTitle = this.options.getPopoverTitle;\n let placement = options.popoverPlacement ?? 'right';\n let activePopovers = new WeakMap();\n window.addEventListener('hide.bs.popover', evt => {\n let state = activePopovers.get(evt.target);\n if (!state)\n return;\n state.status = 'showing';\n });\n window.addEventListener('show.bs.popover', evt => {\n let state = activePopovers.get(evt.target);\n if (!state)\n return;\n state.status = 'showing';\n });\n window.addEventListener('hidden.bs.popover', evt => {\n let state = activePopovers.get(evt.target);\n if (!state)\n return;\n state.status = undefined;\n if (state.targetStatus === 'shown') {\n setTimeout(() => {\n state.popover.show();\n }, 0);\n }\n });\n window.addEventListener('shown.bs.popover', evt => {\n let state = activePopovers.get(evt.target);\n if (!state)\n return;\n state.status = undefined;\n if (state.targetStatus === 'hidden') {\n setTimeout(() => {\n state.popover.hide();\n }, 0);\n }\n });\n this.element.addEventListener('objectenter', (evt) => {\n let planLayer = evt.detail;\n if (this.options.shouldShowPopover) {\n if (!this.options.shouldShowPopover(planLayer.object))\n return;\n }\n let popoverState = activePopovers.get(planLayer.canvas);\n let customClass = '';\n if (options.popoverClass) {\n customClass = options.popoverClass(evt.detail.object) || '';\n }\n let popover = popoverState?.popover;\n if (!popover) {\n popover = new bootstrap.Popover(evt.detail.canvas, {\n html: true,\n content: () => getContent(evt.detail.object),\n title: () => getTitle(evt.detail.object),\n trigger: 'manual',\n allowList: PropertyPlan._getAllowList(),\n placement,\n customClass\n });\n popoverState = { popover };\n activePopovers.set(planLayer.canvas, popoverState);\n }\n popoverState.targetStatus = 'shown';\n if (popoverState.status === undefined) {\n popover.show();\n }\n });\n this.element.addEventListener('objectleave', (evt) => {\n let popover = activePopovers.get(evt.detail.canvas);\n if (!popover)\n return;\n popover.targetStatus = 'hidden';\n if (popover.status === undefined) {\n popover.popover.hide();\n }\n });\n }\n getStyle(object) {\n let styleName = this.options.getElementStyle(object);\n return this.options.styles[styleName];\n }\n static _getAllowList() {\n let allowList = bootstrap.Popover.Default.allowList;\n allowList.table = [];\n allowList.td = ['colspan'];\n allowList.tr = [];\n allowList.tbody = [];\n return allowList;\n }\n prepareObjects() {\n const elements = [];\n for (let object of this._data) {\n if (object.pd != null) {\n const element = new PlanPathLayer(object, this);\n elements.push(element);\n if (!!element.canvas) {\n this.wrapper.insertBefore(element.canvas, this.pictureTag);\n }\n }\n }\n return elements;\n }\n updateDimensions() {\n this._width = this.img.clientWidth;\n this._height = this.img.clientHeight;\n for (let elem of this.childElements) {\n elem.updateBounds();\n }\n }\n translateEventCoords(event) {\n let rect = this.element.getBoundingClientRect();\n let x = event.clientX - rect.left;\n let y = event.clientY - rect.top;\n x /= this.width;\n y /= this.height;\n return { x, y };\n }\n handleMouseMove(evt) {\n let coords = this.translateEventCoords(evt);\n for (let child of this.childElements) {\n let object = child.object;\n if (!object.pd)\n continue;\n let newActive = this.isInside(coords, object.pd);\n if (newActive) {\n if (this._activeObject === child)\n return;\n this.clearActiveObject();\n this._activeObject = child;\n child.isActive = true;\n let event = new CustomEvent('objectenter', { detail: child });\n this.element.dispatchEvent(event);\n return;\n }\n }\n this.clearActiveObject();\n }\n handleMouseLeave() {\n this.clearActiveObject();\n }\n handleMouseClick(evt) {\n let coords = this.translateEventCoords(evt);\n for (let child of this.childElements) {\n let object = child.object;\n if (object.pd && this.isInside(coords, object.pd)) {\n let event = new CustomEvent('objectclick', { detail: child });\n this.element.dispatchEvent(event);\n return;\n }\n }\n }\n isInside(point, vs) {\n if (!vs)\n return;\n let x = point.x, y = point.y;\n let inside = false;\n for (let i = 0, j = vs.length - 1; i < vs.length; j = i++) {\n let xi = vs[i].x, yi = vs[i].y;\n let xj = vs[j].x, yj = vs[j].y;\n let intersect = ((yi > y) != (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect)\n inside = !inside;\n }\n return inside;\n }\n clearActiveObject() {\n if (this._activeObject != null) {\n this._activeObject.isActive = false;\n let event = new CustomEvent('objectleave', { detail: this._activeObject });\n this._activeObject = undefined;\n this.element.dispatchEvent(event);\n }\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get element() {\n return this.wrapper;\n }\n get childElements() {\n return [...this.elements];\n }\n}\nclass PlanPathLayer {\n _canvas;\n _plan;\n _object;\n bounds;\n isForcedActive = false;\n _isActive = false;\n constructor(object, plan) {\n this._object = object;\n this._plan = plan;\n this._canvas = document.createElement('canvas');\n }\n updateBounds() {\n this.bounds = this.getObjectBounds();\n this._canvas.setAttribute('width', '' + this.bounds.width);\n this._canvas.setAttribute('height', '' + this.bounds.height);\n this._canvas.style.left = this.bounds.x + 'px';\n this._canvas.style.top = this.bounds.y + 'px';\n this._canvas.style.position = 'absolute';\n this._canvas.style.pointerEvents = 'none';\n this.draw();\n }\n draw() {\n if (!this._canvas || !this.bounds || !this._object.pd)\n return;\n const context = this._canvas.getContext('2d');\n if (!context)\n throw new Error('Unable to get drawing context');\n context.clearRect(0, 0, this.bounds.width, this.bounds.height);\n const active = this._isActive || this.isForcedActive;\n let style = this.plan.getStyle(this.object);\n context.fillStyle = active ? (style.fillHover ?? style.fill) : style.fill;\n context.strokeStyle = active ? (style.strokeHover ?? style.stroke) : style.stroke;\n context.lineWidth = 4;\n context.lineCap = 'round';\n context.lineJoin = 'round';\n context.beginPath();\n context.moveTo(this._object.pd[0].x * this._plan.width - this.bounds.x, this._object.pd[0].y * this._plan.height - this.bounds.y);\n for (let i = 1; i < this._object.pd.length; ++i) {\n context.lineTo(this._object.pd[i].x * this._plan.width - this.bounds.x, this._object.pd[i].y * this._plan.height - this.bounds.y);\n }\n context.closePath();\n context.fill();\n context.stroke();\n }\n getObjectBounds() {\n if (!this._object.pd)\n throw new Error('Path data not set');\n let minx = this._object.pd[0].x;\n let miny = this._object.pd[0].y;\n let maxx = this._object.pd[0].x;\n let maxy = this._object.pd[0].y;\n for (let point of this._object.pd) {\n if (point.x < minx)\n minx = point.x;\n if (point.x > maxx)\n maxx = point.x;\n if (point.y < miny)\n miny = point.y;\n if (point.y > maxy)\n maxy = point.y;\n }\n minx *= this._plan.width;\n miny *= this._plan.height;\n maxx *= this._plan.width;\n maxy *= this._plan.height;\n return { x: minx, y: miny, width: maxx - minx, height: maxy - miny };\n }\n get plan() {\n return this._plan;\n }\n get canvas() {\n return this._canvas;\n }\n get object() {\n return this._object;\n }\n get forceActive() {\n return this.isForcedActive;\n }\n set forceActive(value) {\n this.isForcedActive = value;\n this.draw();\n }\n get isActive() {\n return this._isActive;\n }\n set isActive(value) {\n this._isActive = value;\n this.draw();\n }\n}\n\n;// CONCATENATED MODULE: ./src/utils.ts\nconst MoneyFormat = Intl.NumberFormat('pl-PL', { maximumFractionDigits: 0, useGrouping: true });\nconst AreaFormat = Intl.NumberFormat('pl-PL', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n useGrouping: true\n});\nlet existingIds = new Set();\nfunction randomId(prefix) {\n while (true) {\n let tmpId = Math.random().toString(36).replace('0.', prefix || '');\n if (!existingIds.has(tmpId)) {\n existingIds.add(tmpId);\n return tmpId;\n }\n }\n}\nfunction escapeHtml(unsafe) {\n return unsafe.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>').replaceAll('\"', '"').replaceAll(\"'\", ''');\n}\n\n;// CONCATENATED MODULE: ./src/index.ts\n\n\n\n\n\nvar __webpack_exports__AreaFormat = __webpack_exports__.JJ;\nvar __webpack_exports__DefaultPermissions = __webpack_exports__.Eg;\nvar __webpack_exports__MoneyFormat = __webpack_exports__.Ex;\nvar __webpack_exports__PlanElementType = __webpack_exports__.w0;\nvar __webpack_exports__PropertyPlan = __webpack_exports__.BH;\nvar __webpack_exports__PropertyType = __webpack_exports__.Ut;\nvar __webpack_exports__escapeHtml = __webpack_exports__.ZD;\nvar __webpack_exports__generateLightbox = __webpack_exports__.XK;\nvar __webpack_exports__initCookieConsent = __webpack_exports__.H1;\nvar __webpack_exports__initGalleries = __webpack_exports__.Dm;\nvar __webpack_exports__initializePlan = __webpack_exports__.qY;\nvar __webpack_exports__initializePlans = __webpack_exports__.FW;\nvar __webpack_exports__isBlockOfFlats = __webpack_exports__.XT;\nvar __webpack_exports__isFloor = __webpack_exports__.b5;\nvar __webpack_exports__isProperty = __webpack_exports__.uM;\nvar __webpack_exports__propertyTypeToString = __webpack_exports__.Ad;\nvar __webpack_exports__randomId = __webpack_exports__.zE;\nexport { __webpack_exports__AreaFormat as AreaFormat, __webpack_exports__DefaultPermissions as DefaultPermissions, __webpack_exports__MoneyFormat as MoneyFormat, __webpack_exports__PlanElementType as PlanElementType, __webpack_exports__PropertyPlan as PropertyPlan, __webpack_exports__PropertyType as PropertyType, __webpack_exports__escapeHtml as escapeHtml, __webpack_exports__generateLightbox as generateLightbox, __webpack_exports__initCookieConsent as initCookieConsent, __webpack_exports__initGalleries as initGalleries, __webpack_exports__initializePlan as initializePlan, __webpack_exports__initializePlans as initializePlans, __webpack_exports__isBlockOfFlats as isBlockOfFlats, __webpack_exports__isFloor as isFloor, __webpack_exports__isProperty as isProperty, __webpack_exports__propertyTypeToString as propertyTypeToString, __webpack_exports__randomId as randomId };\n\n//# sourceMappingURL=main.mjs.map","import {\n AreaFormat,\n escapeHtml,\n FloorPlanElement,\n initializePlan,\n isBlockOfFlats,\n isFloor,\n isProperty,\n MoneyFormat,\n PlanElement,\n PlanElementType,\n PlanOptions,\n PlanProperty,\n PropertyType,\n propertyTypeToString\n} from \"@vpsoftware/vprealestate-www\";\n\nexport const planOptions: PlanOptions = {\n styles: {\n Regular: { fill: 'rgb(247, 215, 128, 0.2)', stroke: 'rgb(247, 215, 128, 0.8)', fillHover: 'rgb(247, 215, 128, 0.4)', strokeHover: 'rgb(247, 215, 128, 1)'},\n Available: { fill: 'rgb(0, 215, 0, 0.2)', stroke: 'rgb(0, 215, 0, 0.8)', fillHover: 'rgb(0, 215, 0, 0.4)', strokeHover: 'rgb(0, 215, 0, 1)'},\n Reserved: { fill: 'rgb(255, 255, 0, 0.2)', stroke: 'rgb(255, 255, 0, 0.4)', fillHover: 'rgb(255, 255, 0, 0.4)', strokeHover: 'rgb(255, 255, 0, 0.4)'},\n Sold: { fill: 'rgb(255, 0, 0, 0.2)', stroke: 'rgb(255, 0, 0, 0.4)', fillHover: 'rgb(255, 0, 0, 0.4)', strokeHover: 'rgb(255, 0, 0, 0.4)'}\n },\n getPopoverTitle: popoverTitle,\n getPopoverContent: popoverContent,\n onClick: elementClick,\n getElementStyle\n};\n\nexport const propertyPlanOptions: PlanOptions = {\n styles: {\n Regular: { fill: 'rgb(247, 215, 128, 0.4)', stroke: 'rgb(247, 215, 128, 0.4)'}\n },\n popoversEnabled: false,\n getElementStyle: _ => 'Regular'\n};\n\nfunction getElementStyle(element: PlanElement) {\n if (isProperty(element)) {\n return element.st;\n }\n return 'Regular';\n}\n\nfunction elementClick(element: PlanElement) {\n if (isFloor(element)) {\n loadFloor(element);\n return;\n }\n if (!element.url) return;\n if( element.t == PlanElementType.Property)\n document.location = element.url + '#propertySection';\n else \n document.location = element.url;\n}\n\nfunction loadFloor(floor: FloorPlanElement) {\n if (!floor.plUrl || !floor.pr) return;\n\n let floorPlanContainer = document.getElementById('floor-plan-container');\n let hasPrev = false;\n floorPlanContainer.childNodes.forEach(x => {\n if (!(x instanceof HTMLElement)) return;\n if (x.dataset.floor === '' + floor.fl) {\n x.classList.remove('d-none');\n hasPrev = true;\n }\n x.classList.add('d-none');\n });\n if (hasPrev) return;\n let newPicture = document.createElement('picture');\n newPicture.innerHTML = `\n \n \"${floor.n}`;\n\n newPicture.classList.add('floor-plan', 'clickable-plan', 'plan-image');\n newPicture.dataset.floor = '' + floor.fl;\n\n floorPlanContainer.appendChild(newPicture);\n initializePlan(newPicture, floor.pr, planOptions);\n floorPlanContainer.scrollIntoView({behavior: 'smooth', block: 'center'});\n \n let estateEntries = document.querySelectorAll('.estate-list-section .estate-list-row');\n estateEntries.forEach(e => {\n e.classList.toggle('d-none', e.dataset.floor !== '' + floor.fl); \n });\n}\n\nfunction popoverTitle(_: PlanElement) {\n return null;\n}\n\nfunction popoverContent(obj: PlanElement) {\n if (isBlockOfFlats(obj) || isFloor(obj)) {\n return formatPropertyStats(obj);\n }\n if (isProperty(obj)) {\n let result = '
';\n let typeStr = propertyTypeToString(obj.pt);\n let numberStr = `${typeStr} nr ${obj.pn}`;\n result += `
${escapeHtml(numberStr)}
`;\n\n if (obj.a) {\n result += `
Powierzchnia:
${AreaFormat.format(obj.a)} m²
`;\n }\n\n if (obj.tr) {\n if (obj.pt === PropertyType.Premises) {\n result += `
Ilość pomieszczeń:
${obj.tr}
`;\n } else {\n result += `
Ilość pokoi:
${obj.tr}
`;\n }\n }\n\n if (obj.pr ) {\n result += `
Cena brutto:
`;\n\n if (obj.orgPr && obj.orgPr > obj.pr) {\n result += `
${MoneyFormat.format(obj.orgPr)} zł
`;\n }\n result += `
${MoneyFormat.format(obj.pr)} zł
`;\n }\n\n if (obj.npr) {\n result += `
Cena netto:
`;\n\n if (obj.npr && obj.norgPr > obj.npr) {\n result += `
${MoneyFormat.format(obj.norgPr)} zł
`;\n }\n result += `
${MoneyFormat.format(obj.npr)} zł
`;\n }\n \n switch (obj.st) {\n case \"Available\":\n result += \n `
\n Dostępne\n
`;\n break;\n case \"Reserved\":\n result += \n `
\n Rezerwacja - Zadzwoń\n
`;\n break;\n case \"Sold\":\n result += \n `
\n Sprzedane\n
`;\n break;\n }\n \n result += '
';\n return result;\n }\n}\n\nfunction formatPropertyStats(obj: {pr?: PlanProperty[], n: string}) {\n let result = '
';\n \n result += `
${escapeHtml(obj.n)}
`;\n \n if (obj.pr) {\n let reserved = 0;\n let sold = 0;\n let available = 0;\n obj.pr.forEach(prop => {\n switch (prop.st) {\n case 'Available':\n ++available;\n break;\n case \"Reserved\":\n ++reserved;\n break;\n case \"Sold\":\n ++sold;\n break;\n }\n });\n \n if (available > 0) {\n result += `
Dostępne
${available} ${declination(available)}
`;\n }\n if (reserved > 0) {\n result += `
Dostępne
${reserved} ${declination(reserved)}
`;\n }\n if (sold > 0) {\n result += `
Sprzedane
${sold} ${declination(sold)}
`;\n }\n }\n\n result += `
`;\n return result;\n}\n\nfunction declination(value: number) {\n if (value < 1) return 'mieszkań';\n if (value === 1) return 'mieszkanie';\n if (value < 5) return 'mieszkania';\n return 'mieszkań';\n}\n","/*\n Wymagane pliki: cookie-consent.scss, cookie-consent.ts, CookieRenderTagHelper, CookieRenderTagHelper\n Na poziomie strony polityki prywatności: ViewData[\"CookieConsentSuppress\"] = true; (na danej stronie nie \n wyświetla się cookie-consent url# np Zmień preferencje cookie)\n Renderowanie fragmentu DOM wykorzystując CookieRenderTagHelper
\n*/\n\nimport ConsentParams = Gtag.ConsentParams;\n\nconst CookieName = \"cookie-permits\";\nexport const DefaultPermissions: ConsentParams = {\n 'ad_storage': 'denied',\n 'analytics_storage': 'denied',\n 'ad_user_data': 'denied',\n 'ad_personalization': 'denied',\n 'functionality_storage': 'denied',\n};\n\nconst CookiesPermissions = [\n {key: 'basic', name: 'Niezbędne'},\n {key: 'ads', name: 'Reklamowe'},\n {key: 'analytics', name: 'Analityczne'},\n {key: 'func', name: 'Funkcjonalne'}\n]\n\nexport function initCookieConsent(defaultPermissions: ConsentParams) {\n const confirmButtons = document.querySelectorAll(\"#cookie-consent button[data-cookie-string]\");\n confirmButtons.forEach((confirmButton: HTMLButtonElement) => {\n confirmButton.addEventListener(\"click\", confirmButtonClicked, false);\n });\n\n const adjustButton = document.querySelector(\"#cookie-consent button.adjust-button\");\n if (adjustButton instanceof HTMLButtonElement) {\n adjustButton.addEventListener(\"click\", () => {\n console.log('i jest klik')\n const popup = document.querySelector(\".cookie-popup\");\n if (!popup) throw new Error('Could not find popup element');\n popup.classList.add('cookie-details')\n }, false);\n }\n\n const acc = document.getElementsByClassName(\"accordion-custom\");\n for (let i = 0; i < acc.length; i++) {\n acc[i].addEventListener(\"click\", function(this: HTMLElement) {\n this.classList.toggle(\"active\");\n const panel = acc[i].querySelector('.accordion-panel');\n if (!panel) throw new Error('Panel not found');\n if (panel.style.maxHeight) {\n panel.style.maxHeight = '';\n } else {\n panel.style.maxHeight = panel.scrollHeight + 30 + \"px\";\n }\n });\n }\n\n gtag('consent', 'default', defaultPermissions);\n const cookiePermits = getCookie(CookieName);\n if(cookiePermits != null) {\n let perm: ConsentParams = structuredClone(defaultPermissions);\n cookiePermits.split(',').forEach(item => {\n if (item === 'analytics') {\n perm['analytics_storage'] = 'granted'\n } else if (item === 'ads') {\n perm['ad_storage'] = 'granted'\n perm['ad_user_data'] = 'granted'\n perm['ad_personalization'] = 'granted'\n }else if (item === 'func'){\n perm['functional_storage'] = 'granted'\n }\n });\n gtag('consent', 'update', perm);\n }\n initializePermitValues();\n}\n\nfunction initializePermitValues() {\n const confirmInputs= document.querySelectorAll(\"#cookie-consent input[data-cookie-permit]\");\n const cookiePermits = getCookie(CookieName)?.split(',') ?? [];\n confirmInputs.forEach((input: HTMLInputElement) => {\n if (cookiePermits.some(x => x === input.dataset['cookiePermit']))\n input.checked = true;\n });\n}\n\nfunction confirmButtonClicked(event: MouseEvent) {\n\n const button = event.currentTarget;\n if (!(button instanceof HTMLElement)) return;\n\n const cookieAllPermit = button.dataset['cookieAll'] != null;\n const confirmInputs= document.querySelectorAll(\"#cookie-consent input[data-cookie-permit]\");\n const permits = [...confirmInputs].filter(x => x instanceof HTMLInputElement && (cookieAllPermit || !!x.checked));\n const permitValues = permits.map((x: HTMLElement) => x.dataset['cookiePermit'])\n .filter(x => !!x?.length);\n const expires = getCookieExpireString(button.dataset['cookieString']);\n\n clearCookies();\n if (button.dataset['cookieString']) {\n document.cookie = button.dataset['cookieString'];\n }\n document.cookie = CookieName + \"=\" + encodeURIComponent(permitValues.join(',')) + \"; expires=\" + expires + \"; path=/; secure; samesite=none\";\n window.location.replace(window.location.href.split('#')[0]);\n}\n\nfunction getCookieExpireString(cookieString: string | undefined) {\n if (!cookieString) return '';\n const expiresRegex = /expires=([^;]+)/;\n const expiresMatch = expiresRegex.exec(cookieString);\n\n let expiresValue = '';\n if (expiresMatch && expiresMatch.length > 1)\n expiresValue = expiresMatch[1].trim();\n return expiresValue;\n}\n\nfunction getCookie(name: string): string | null {\n const nameLenPlus = (name.length + 1);\n return document.cookie\n .split(';')\n .map(c => c.trim())\n .filter(cookie => {\n return cookie.substring(0, nameLenPlus) === `${name}=`;\n })\n .map(cookie => {\n return decodeURIComponent(cookie.substring(nameLenPlus));\n })[0] || null;\n}\n\nfunction clearCookies() {\n document.cookie.split(\";\").forEach(function(c) { document.cookie = c.replace(/^ +/, \"\").replace(/=.*/, \"=;expires=\" + new Date().toUTCString() + \";path=/\"); });\n}","import * as bootstrap from 'bootstrap';\nimport \"@vpsoftware/vprealestate-www/modernizr\";\nimport {initializePlans, initGalleries} from \"@vpsoftware/vprealestate-www\";\nimport './style.scss';\nimport './cookie-consent.scss';\nimport {planOptions, propertyPlanOptions} from './plan.custom';\nimport {DefaultPermissions, initCookieConsent} from \"./cookie-consent\";\n\ndeclare const vpcCaptchaPublicKey: string;\ndocument.addEventListener('DOMContentLoaded', () => {\n initContactForms();\n initGalleries('.plan-lightbox');\n initGalleries('.estate-slider', 'a.slide-img');\n initCookieConsent(DefaultPermissions);\n \n initPropertyListSorting();\n initPropertyListExpand();\n initSliderNav();\n initAskForOffer();\n});\n\ndocument.querySelectorAll('.estate-list-section .plan-lightbox img').forEach(img => {\n if (img.complete && img.naturalWidth == 0) {\n img.closest('.plan-lightbox').remove();\n } else {\n img.addEventListener('error', err => {\n img.closest('.plan-lightbox').remove();\n });\n }\n});\n\nfunction initPropertyListSorting() {\n const sortControls = document.querySelectorAll('.estate-list-section .sort-control');\n sortControls.forEach(control => {\n control.addEventListener('change', change => {\n const target = change.target as HTMLInputElement;\n let val = target.value;\n let list = target.closest('.estate-list-section');\n let priceElements = Array.from(list.querySelectorAll('[data-price]')).map((element : HTMLElement) => ({\n element,\n price: Number(element.dataset.price)\n }));\n\n let container = target.closest('.container');\n\n priceElements.forEach(p => p.element.remove());\n priceElements.sort((p1, p2) => {\n let diff = p2.price - p1.price;\n if (val === 'low') return -diff;\n return diff;\n });\n priceElements.forEach(p => {\n container.appendChild(p.element);\n });\n });\n });\n}\nfunction initPropertyListExpand() {\n document.querySelectorAll('.expand-list').forEach(expand => {\n expand.addEventListener('click', evt => {\n evt.preventDefault();\n let section = (evt.target as HTMLElement).closest('section');\n let prevSection = section.previousElementSibling as HTMLElement;\n let container = prevSection.querySelector('.container.collapsed');\n if (container){\n container.classList.remove('collapsed');\n }\n section.classList.add('d-none');\n });\n });\n\n}\n\nfunction initSliderNav() {\n const mainModalElement = document.querySelector('#homeCarousel');\n if (!mainModalElement) return;\n let buttons = mainModalElement.querySelectorAll('.home-carousel-nav button.slide-button');\n (mainModalElement as Element).addEventListener(\"slide.bs.carousel\", (evt: bootstrap.Carousel.Event) => {\n buttons.forEach(b => {\n const shouldBeActive = b.dataset.bsSlideTo === '' + evt.to;\n b.classList.toggle('active', shouldBeActive);\n })\n })\n}\n\nexport function initializeDefaultPlan() {\n initializePlans('picture.plan-image.clickable-plan', planOptions);\n}\n\nexport function initializePropertyPlan() {\n initializePlans('picture.plan-image.clickable-plan:not(.floor-plan)', propertyPlanOptions);\n initializePlans('picture.plan-image.clickable-plan.floor-plan', planOptions);\n}\n\nfunction initAskForOffer() {\n let links = document.querySelectorAll('a[data-offer-form]');\n links.forEach(link => {\n link.addEventListener('click', evt => {\n evt.preventDefault();\n let propertyId = Number(link.dataset.offerForm);\n if (!isNaN(propertyId)) {\n let address = `${link.dataset.offerCity}, ${link.dataset.offerStreet} ${link.dataset.offerBuildingNumber} m. ${link.dataset.offerPropertyNumber}`;\n openAskOfferPopup(propertyId, address);\n }\n });\n })\n}\n\nfunction openAskOfferPopup(propertyId: number, propertyAddress: string) {\n let modalElement = document.getElementById('askOfferModal');\n if (!modalElement) return;\n let address = modalElement.querySelector('.property-address');\n if (address) {\n address.innerText = propertyAddress;\n }\n let form = (document.getElementById('contactFormPopup'));\n if (form) {\n form.reset();\n let propId = form.querySelector('input[name=\"property-id\"]');\n propId.value = \"\"+propertyId;\n } else {\n return;\n }\n let modal = bootstrap.Modal.getOrCreateInstance(modalElement);\n modal.show();\n}\n\n\nfunction initContactForms() {\n let forms = document.querySelectorAll('form.contact-form');\n for (let i = 0, l = forms.length; i < l; i++) {\n initContactForm(forms.item(i))\n }\n}\n\nfunction closeAskOfferPopup() {\n let modalElement = document.getElementById('askOfferModal');\n if (!modalElement) return;\n let modal = bootstrap.Modal.getInstance(modalElement);\n if (!modal) return;\n modal.hide();\n}\n\nfunction initContactForm(form: HTMLFormElement) {\n // setup requirement for either email or phone number\n const inputs = Array.from(\n form.querySelectorAll(\"[name='email'], [name='phone-number']\")\n );\n\n const inputListener = (e: InputEvent) => {\n inputs\n .filter(i => i !== e.target)\n .forEach(i => (i.required = !(e.target as HTMLInputElement).value.length));\n };\n inputs.forEach(i => i.addEventListener('input', inputListener));\n\n\n const contactModalElement = document.getElementById('contactModal');\n const modal = bootstrap.Modal.getOrCreateInstance(contactModalElement);\n\n let submitButton = form.querySelector('button[type=\"submit\"]');\n form.addEventListener('submit', function (event) {\n event.preventDefault();\n submitButton.setAttribute('disabled', 'disabled');\n const xhr = new XMLHttpRequest();\n let controls = ['name', 'email', 'phone-number', 'subject', 'message', 'property-id'].map(x => form.querySelector(`[name='${x}']`))\n .filter(x => !!x);\n let request = '';\n\n function resetForm() {\n for (let control of controls) {\n control.removeAttribute('disabled');\n }\n submitButton.removeAttribute('disabled');\n }\n\n for (let control of controls) {\n request += control.name + \"=\" + encodeURIComponent(control.value) + '&';\n control.setAttribute('disabled', 'disabled');\n }\n let tokenInput = form.querySelector('input[name=\"__RequestVerificationToken\"]');\n request += '__RequestVerificationToken=' + tokenInput.value;\n xhr.addEventListener('loadend', function () {\n resetForm();\n let status = xhr.status;\n let body = contactModalElement.querySelector('.modal-body');\n if (status !== 200 && status !== 204) {\n body.innerText = 'Nie udało się wysłać prośby o kontakt';\n } else {\n body.innerText = 'Prośba o kontakt została wysłana';\n for (let control of controls) {\n control.value = '';\n }\n closeAskOfferPopup();\n }\n modal.show();\n });\n if (typeof vpcCaptchaPublicKey !== 'undefined') {\n grecaptcha.ready(function () {\n grecaptcha.execute(vpcCaptchaPublicKey, {action: 'submit'}).then(\n function (token) {\n request += '&token=' + token;\n xhr.open('POST', '/Kontakt-Wyslij', true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send(request);\n }, err => {\n console.error(err);\n alert('Błąd wysyłki prośby o kontakt');\n });\n });\n } else {\n xhr.open('POST', '/Kontakt-Wyslij', true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send(request);\n }\n });\n}\n"],"names":["e","n","o","r","className","A","Modernizr","_config","classPrefix","l","baseVal","enableJSClass","RegExp","replace","enableClasses","join","t","i","c","toLowerCase","split","a","length","Boolean","_trigger","s","documentElement","nodeName","f","u","_version","usePrefixes","_q","on","this","setTimeout","addTest","push","name","fn","options","addAsyncTest","prototype","hasOwnProperty","call","constructor","_l","type","width","Image","onerror","onload","src","uri","shift","aliases","p","window","document","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","d","definition","key","Object","defineProperty","enumerable","get","obj","prop","Symbol","toStringTag","value","bootstrap","g","globalThis","Function","JJ","Eg","Ex","w0","BH","Ut","ZD","XK","H1","Dm","qY","FW","XT","b5","uM","Ad","zE","CookieName","DefaultPermissions","initCookieConsent","defaultPermissions","querySelectorAll","forEach","confirmButton","addEventListener","confirmButtonClicked","adjustButton","querySelector","HTMLButtonElement","popup","Error","classList","add","acc","getElementsByClassName","toggle","panel","style","maxHeight","scrollHeight","gtag","cookiePermits","getCookie","perm","structuredClone","item","confirmInputs","input","some","x","dataset","checked","initializePermitValues","event","button","currentTarget","HTMLElement","cookieAllPermit","permitValues","filter","HTMLInputElement","map","expires","cookieString","expiresMatch","exec","expiresValue","trim","getCookieExpireString","cookie","Date","toUTCString","encodeURIComponent","location","href","nameLenPlus","substring","decodeURIComponent","_typeof","iterator","_createForOfIteratorHelper","Array","isArray","_unsupportedIterableToArray","_n","F","done","TypeError","next","_arrayLikeToArray","toString","slice","from","test","_defineProperties","configurable","writable","_toPropertyKey","_defineProperty","toPrimitive","String","_toPrimitive","PlanElementType","PropertyType","simple_lightbox_esm_SimpleLightbox","SimpleLightbox","elements","_this","_classCallCheck","sourceAttr","overlay","overlayOpacity","spinner","nav","navText","captions","captionDelay","captionSelector","captionType","captionsData","captionPosition","captionClass","captionHTML","close","closeText","swipeClose","showCounter","fileExt","animationSlide","animationSpeed","preloading","enableKeyboard","loop","rel","docClose","swipeTolerance","widthRatio","heightRatio","scaleImageToRatio","disableRightClick","disableScroll","alertError","alertErrorMessage","additionalHtml","history","throttleInterval","doubleTapZoom","maxZoom","htmlClass","rtl","fixedClass","fadeSpeed","uniqueImages","focus","scrollZoom","scrollZoomFactor","download","navigator","platform","swipeDiff","swipeYDiff","swipeStart","swipeEnd","swipeYStart","swipeYEnd","mousedown","imageLeft","zoomed","containerHeight","containerWidth","containerOffsetX","containerOffsetY","imgHeight","imgWidth","capture","initialOffsetX","initialOffsetY","initialPointerOffsetX","initialPointerOffsetY","initialPointerOffsetX2","initialPointerOffsetY2","initialScale","initialPinchDistance","pointerOffsetX","pointerOffsetY","pointerOffsetX2","pointerOffsetY2","targetOffsetX","targetOffsetY","targetScale","pinchOffsetX","pinchOffsetY","limitOffsetX","limitOffsetY","scaleDifference","targetPinchDistance","touchCount","doubleTapped","touchmoveCount","assign","defaultOptions","isPassiveEventsSupported","checkPassiveEventsSupport","initialSelector","relatedElements","transitionPrefix","calculateTransitionPrefix","transitionCapable","initialLocationHash","hash","getRelated","imgArr","element","getAttribute","indexOf","createDomNodes","domNodes","wrapper","appendChild","closeButton","navigation","eventNamespace","isValidLink","preventDefault","isAnimating","initialImageIndex","openImage","isOpen","target","body","parentElement","contains","throttle","controlCoordinates","currentImage","setAttribute","loadImage","addEvents","supportsPassive","opts","removeEventListener","elem","startsWith","selector","trimStart","sibling","nextElementSibling","matches","_selector","tagName","id","parentNode","str","concat","classes","childIndex","previousElementSibling","generateQuerySelector","createElement","opacityTarget","innerHTML","counter","downloadLink","textContent","caption","_this$domNodes$captio","captionClasses","apply","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_toConsumableArray","image","func","limit","inThrottle","arguments","scrollbarWidth","scrollDiv","offsetWidth","clientWidth","removeChild","fixedElements","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","right","Math","abs","left","isAppleDevice","paddingRight","parseInt","getComputedStyle","getScrollbarWidth","originalPaddingRight","actualPadding","calculatedPadding","parseFloat","remove","padding","_this2","isClosing","currentImageIndex","dispatchEvent","Event","historyHasChanges","hashReseted","resetHash","fadeOut","toggleScrollbar","minMax","_this3","index","prev","nextImage","prevImage","loadedImages","direction","_this4","slideDirection","newIndex","slide","show","adjustImage","preload","_this5","tmpImage","windowWidth","windowHeight","innerHeight","scale","translateX","translateY","zoomPanElement","display","dirIsDefined","alert","updateURL","captionContainer","captionText","imageWidth","imageHeight","height","ratio","top","globalScrollbarWidth","forceFocus","fadeIn","getCaptionElement","hide","setCaption","min","max","_this6","bind","hashchangeHandler","getElementsByTagName","match","getDimensions","offsetLeft","offsetTop","delta","wheelDelta","detail","scrollTopPos","scrollTop","pageX","pageY","opacity","setZoomData","clientX","clientY","touches","sqrt","isTouchDevice","possibleDir","styles","offsetHeight","borderTopWidth","borderBottomWidth","paddingTop","paddingBottom","borderLeftWidth","borderRightWidth","paddingLeft","newHash","newURL","pushStateSupport","title","urlChangedOnce","back","pushState","pathname","search","clearTimeout","historyUpdateTimeout","updateHash","allowHTML","_this7","_ref","property","speed","pos","_this8","targetURL","_this9","events","callback","wrap","_step","_iterator","namespaces","_step2","_iterator2","passive","err","_step3","_iterator3","_step4","_iterator4","duration","_step5","_this10","_iterator5","getPropertyValue","isFadeIn","step","_fade","currentOpacity","_step6","_iterator6","_step7","_iterator7","requestAnimationFrame","_step8","_this11","_iterator8","_fade2","_step10","_iterator10","_element2","_step9","_iterator9","_step11","_iterator11","initialDisplay","_step12","_iterator12","_step13","_iterator13","fullyNamespacedEvents","_step14","_iterator14","_step15","_iterator15","_step16","_iterator16","position","jQuery","open","off","destroy","generateLightbox","images","imagesMarkup","jpg","webp","initGalleries","elementSelector","isBlockOfFlats","BlockOfFlats","isFloor","Floor","isProperty","Property","propertyTypeToString","propertyType","BicycleBox","Cellar","ExternalLot","Flat","Garage","LowerPlatform","House","ParkingLot","Premises","StorageRoom","UpperPlatform","async","initializePlans","selectorOrOptions","optionsArg","planElements","planArr","results","planElement","planData","decoded","JSON","parse","atob","initializePlan","Promise","all","data","PropertyPlan","create","pictureTag","_options","_data","_width","_height","resizeObserver","img","_activeObject","HTMLPictureElement","prepareElement","setupWrapper","plan","popoversEnabled","initPopovers","complete","resolve","reject","naturalHeight","picture","insertBefore","clientHeight","isNaN","prepareObjects","setupResizeObserver","updateDimensions","evt","handleMouseMove","handleMouseLeave","handleMouseClick","onClick","object","ResizeObserver","observe","getPopoverContent","getPopoverTitle","getContent","getTitle","placement","popoverPlacement","activePopovers","WeakMap","state","status","targetStatus","popover","planLayer","shouldShowPopover","popoverState","canvas","customClass","popoverClass","Popover","html","content","trigger","allowList","_getAllowList","set","getStyle","styleName","getElementStyle","Default","table","td","tr","tbody","pd","PlanPathLayer","childElements","updateBounds","translateEventCoords","rect","y","coords","child","isInside","clearActiveObject","isActive","CustomEvent","point","vs","inside","j","xi","yi","xj","yj","_canvas","_plan","_object","bounds","isForcedActive","_isActive","getObjectBounds","pointerEvents","draw","context","getContext","clearRect","active","fillStyle","fillHover","fill","strokeStyle","strokeHover","stroke","lineWidth","lineCap","lineJoin","beginPath","moveTo","lineTo","closePath","minx","miny","maxx","maxy","forceActive","MoneyFormat","Intl","NumberFormat","maximumFractionDigits","useGrouping","AreaFormat","minimumFractionDigits","existingIds","Set","randomId","prefix","tmpId","random","has","escapeHtml","unsafe","replaceAll","__webpack_exports__AreaFormat","__webpack_exports__MoneyFormat","__webpack_exports__PlanElementType","__webpack_exports__PropertyType","__webpack_exports__escapeHtml","__webpack_exports__initGalleries","__webpack_exports__initializePlan","__webpack_exports__initializePlans","__webpack_exports__isBlockOfFlats","__webpack_exports__isFloor","__webpack_exports__isProperty","__webpack_exports__propertyTypeToString","planOptions","Regular","Available","Reserved","Sold","_","result","pr","reserved","sold","available","st","declination","formatPropertyStats","numberStr","pt","pn","format","orgPr","npr","norgPr","floor","plUrl","floorPlanContainer","getElementById","hasPrev","childNodes","fl","newPicture","scrollIntoView","behavior","block","loadFloor","url","propertyPlanOptions","initializeDefaultPlan","initializePropertyPlan","initContactForm","form","inputs","inputListener","required","contactModalElement","modal","getOrCreateInstance","submitButton","xhr","XMLHttpRequest","controls","request","control","tokenInput","removeAttribute","resetForm","innerText","modalElement","getInstance","closeAskOfferPopup","vpcCaptchaPublicKey","grecaptcha","ready","execute","action","then","token","setRequestHeader","send","console","error","forms","initContactForms","log","change","val","list","closest","priceElements","price","Number","container","sort","p1","p2","diff","expand","section","mainModalElement","buttons","b","shouldBeActive","bsSlideTo","to","initSliderNav","link","propertyId","offerForm","propertyAddress","address","reset","openAskOfferPopup","offerCity","offerStreet","offerBuildingNumber","offerPropertyNumber","naturalWidth"],"sourceRoot":""}