{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/js/modules/globals.js","webpack:///./src/assets/js/modules/toolbox.js","webpack:///./src/assets/js/modules/home-hero.js","webpack:///./src/assets/js/modules/home-sub-hero.js","webpack:///./src/assets/js/modules/form-validator.js","webpack:///./src/assets/js/modules/form-handler.js","webpack:///./src/assets/js/modules/search-box.js","webpack:///./src/assets/js/modules/tab-bar.js","webpack:///./src/assets/js/modules/box-slider.js","webpack:///./src/assets/js/modules/image-carousel.js","webpack:///./src/assets/js/modules/list-filter.js","webpack:///./src/assets/js/modules/video-handler.js","webpack:///./src/assets/js/modules/event-popup.js","webpack:///./src/assets/js/modules/event-browser.js","webpack:///./src/assets/js/modules/social-media-thumbs.js","webpack:///./src/assets/js/modules/property-map.js","webpack:///./src/assets/js/main.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","locale","lang","document","querySelector","getAttribute","dir","next","prev","getOffset","element","offset","_ref","_ref2","top","left","_ref2$offsetTop","offsetTop","_ref2$offsetLeft","offsetLeft","offsetParent","output","_objectSpread","insertAfter","newNode","referenceNode","parentNode","insertBefore","nextSibling","loadJSON","url","callback","fail","xobj","XMLHttpRequest","overrideMimeType","open","onreadystatechange","readyState","status","responseText","statusText","send","pageVisibilityStatus","hidden","visibilityChange","msHidden","webkitHidden","HomeHero","el","_classCallCheck","this","covers","contents","rtl","initSliders","children","length","initPager","_this","coverSldr","Flickity","prevNextButtons","pageDots","wrapAround","rightToLeft","autoPlay","contentSldr","on","index","select","playPlayer","updateTheme","_this2","pager","createElement","classList","add","innerHTML","concat","pagerButton","addEventListener","stopPlayer","previous","theme","cells","setAttribute","HomeSubHero","home_sub_hero_classCallCheck","widgetIndex","features","remove","setTimeout","options","fieldErrors","required","en","ar","requiredSelect","email","phone","emiratesID","errorLabel","label","intlTel_inited","init_intlTelInput","style","append","script","event","intlTelInputGlobals","loadUtils","Array","from","querySelectorAll","forEach","elem","appendChild","intlTelInput","preferredCountries","excludeCountries","separateDialCode","formatOnDisplay","autoPlaceholder","fieldUpdate","errorID","errorDom","type","hasAttribute","validateInput","test","checked","window","getInstance","isValidNumber","validateSelect","validate","tagName","initValidation","_unused","forms","SmartForm","init","push","id","requireds","validees","submitHandler","submitBtn","initSubmitDisable","requirement","disabled","validateForm","valid","preventDefault","stopPropagation","api","setState","responseBox","submitData","testState","XHR","FD","FormData","response","JSON","parse","target","state","_this3","displayResponse","requestAnimationFrame","_this4","location","pathname","undefined","message","SearchBox","search_box_classCallCheck","button","input","events","clickHandler","blurHandler","submit","blur","focus","arrowBtn","TabBar","tab_bar_classCallCheck","list","hasSlideControls","freeScroll","tabAlign","updateEvent","Event","initSlider","initControls","fn","threshhold","scope","last","deferTimer","self","flkty","cellAlign","contain","dragged","updatePagerControls","progress","slideState","updateSlideControls","context","now","Date","args","arguments","clearTimeout","apply","cell","contains","activateTab","defaultIndex","activeTab","checkHash","hashIndex","hash","tab","prevTab","currentIndex","parseInt","tabHref","startsWith","updateHash","activateContent","slice","history","pushState","content","prevContent","parentElement","dispatchEvent","slideControls","initSlideControls","initPagerControls","_this5","slide","applyForce","startAnimation","dragEnd","isNaN","Infinity","BoxSlider","box_slider_classCallCheck","firstChild","popupListenerOn","carouselShowing","carouselHiding","ImageCarousel","image_carousel_classCallCheck","onScreen","closest","$","instance","$refs","container","carousel","scrollTimeout","resize","setScrollTimeout","item","tabParent","pvs","videoChild","video","Filter","list_filter_classCallCheck","initList","initSearch","domLists","items","text","tags","innerText","searchBox","searchUpdate","pos","scroll","behavior","term","trim","results","terms","split","pass","toUpperCase","includes","msg","playButton","date","VideoHandler","video_handler_classCallCheck","paused","play","removeAttribute","sliderParent","slider","data","pause","shareLabel","EventPopup","event_popup_classCallCheck","href","getUrl","popup","parseResponse","responseType","responseXML","charAt","origin","hero","title","info","media","mediaElem","console","log","fancybox","baseClass","idleTime","autoStart","afterShow","current","$content","videos","addthis","layers","refresh","find","toggleClass","initCarousel","initVideo","event_popup","option","supported","opts","removeEventListener","e","eos","defaultApi","todayISOstring","moment","format","today","EventBrowser","event_browser_classCallCheck","HelloWeek","helloWeek","langFolder","weekStart","disablePastDays","onNavigation","update","nav","highlightCalendar","resp","calendar","month","peekingHandler","peeking","peekingClose","day","days","addToMonth","entries","dayLast","join","eventsToday","titles","uniqueEntries","dateDisplay","peek","indexOf","peekView","calendarEvents","dates","hasRange","some","isArray","updateEntries","createUniqueEntries","calendarMarkers","sortUniqueEntries","pastRestictions","updateList","eventPopup","_this6","dateStart","dateEnd","isCurrent","isPast","sortDay","closeDay","calendarDate","getYear","getMonth","isBefore","getFullYear","getDate","endOf","startOf","isAfter","past","currentDates","thumb","sort","a","b","_this7","ids","filter","uev","ev","_this8","hidePastEntries","preventListUpdate","_this9","dom","isToday","lastDateEntrySplit","comma","eventThumb","emptyThumb","postPopup","post","caption","postType","source","postPopupHeader","postPopupCaption","postUrl","username","mediaType","mediaUrl","mediaPoster","postThumbImage","string","max","thumbnailUrl","postThumbText","SocialMediaThumbs","social_media_thumbs_classCallCheck","rowLength","getComputedStyle","getPropertyValue","expandIndex","batch","expandButton","createThumbs","createPopups","thumbs","postElem","newList","cloneNode","replaceChild","popups","thumbClicked","openPopups","fancyOptions","initPopupContents","PropertyMap","property_map_classCallCheck","mapplic","height","minimap","sidebar","hovertip","maxscale","box","imageCarousel","videoHandler"],"mappings":"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","file":"main.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","\n\nexport const locale = {\n lang: document.querySelector('html').getAttribute('lang'),\n dir: document.querySelector('html').getAttribute('dir'),\n next: (document.querySelector('html').getAttribute('dir') == 'ltr') ? 'right' : 'left',\n prev: (document.querySelector('html').getAttribute('dir') == 'ltr') ? 'left' : 'right'\n};\n\nexport const root = document.querySelector('body').getAttribute('data-root');\n","export function debounce (fn, delay) {\n\tvar timer = null;\n\treturn function () {\n\t\tvar context = this, args = arguments;\n\t\tclearTimeout(timer);\n\t\ttimer = setTimeout(function () {\n\t\t\tfn.apply(context, args);\n\t\t}, delay);\n\t};\n}\n\nexport function throttle (fn, threshhold, scope) {\n\tthreshhold || (threshhold = 250);\n\tvar last,\n\tdeferTimer;\n\treturn function () {\n\t\tvar context = scope || this;\n\n\t\tvar now = +new Date,\n\t\targs = arguments;\n\t\tif (last && now < last + threshhold) {\n\t\t\t// hold on to it\n\t\t\tclearTimeout(deferTimer);\n\t\t\tdeferTimer = setTimeout(function () {\n\t\t\t\tlast = now;\n\t\t\t\tfn.apply(context, args);\n\t\t\t}, threshhold);\n\t\t} else {\n\t\t\tlast = now;\n\t\t\tfn.apply(context, args);\n\t\t}\n\t};\n}\n\nexport function viewport() {\n\tvar e = window, a = 'inner';\n\tif ( !( 'innerWidth' in window ) )\n\t{\n\t\ta = 'client';\n\t\te = document.documentElement || document.body;\n\t}\n\treturn { width : e[ a+'Width' ] , height : e[ a+'Height' ] }\n}\n\nexport function getOffset (element) {\n const offset = ({ top, left }, { offsetTop = 0, offsetLeft = 0, offsetParent }) => {\n const output = { top: top + offsetTop, left: left + offsetLeft }\n return offsetParent ? offset({ ...output }, offsetParent) : output\n }\n\n return offset({ top: 0, left: 0 }, element)\n}\n\nexport function getRandomInt(min, max) {\n\treturn Math.floor(Math.random() * (max - min)) + min;\n}\n\nexport function watchScroll (elem) {\n\t$(elem).on('scroll', exports.throttle(function(){\n\t\t$(elem).trigger('scrolled');\n\t}, 50));\n}\n\nexport function getQueryVariable (variable) {\n\tvar query = window.location.search.substring(1);\n\tvar vars = query.split(\"&\");\n\tfor (var i=0;i max) {\n\t\treturn `${string.slice(0, max).split(' ').slice(0, -1).join(' ')} `;\n\t} else {\n\t\treturn string\n\t}\n}\n\nexport function hexToRgb(hex) {\n\tvar shorthandRegex = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n\thex = hex.replace(shorthandRegex, function(m, r, g, b) {\n\t\t\treturn r + r + g + g + b + b;\n\t});\n\n\tvar result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n\treturn result ? {\n\t\t\tr: parseInt(result[1], 16),\n\t\t\tg: parseInt(result[2], 16),\n\t\t\tb: parseInt(result[3], 16)\n\t} : null;\n}\n\nexport function removeHash() {\n\tvar scrollV, scrollH, loc = window.location;\n\tif ('pushState' in history)\n\t\thistory.pushState(\"\", document.title, loc.pathname + loc.search);\n\telse {\n\t\t// Prevent scrolling by storing the page's current scroll offset\n\t\tscrollV = document.body.scrollTop;\n\t\tscrollH = document.body.scrollLeft;\n\n\t\tloc.hash = \"\";\n\n\t\t// Restore the scroll offset, should be flicker free\n\t\tdocument.body.scrollTop = scrollV;\n\t\tdocument.body.scrollLeft = scrollH;\n\t}\n}\n\n// support test for event listener options like 'passive' or 'once'\nexport function eventOptionSupport(option) {\n\tvar supported = false;\n\ttry {\n\t\tvar opts = Object.defineProperty({}, option, {\n\t\t\tget: function() {\n\t\t\t\tsupported = true;\n\t\t\t}\n\t\t});\n\t\twindow.addEventListener(\"testPassive\", null, opts);\n\t\twindow.removeEventListener(\"testPassive\", null, opts);\n\t} catch (e) { supported = false }\n\treturn supported;\n}\n\nexport function getDocumentScrollTop() {\n return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n};\n\nexport function getDocumentScrollLeft() {\n return window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n};\n\nexport function unique(value, index, self) {\n\treturn self.indexOf(value) === index;\n}\n\nexport function pageVisibilityStatus() {\n\tlet hidden, visibilityChange; \n\tif (typeof document.hidden !== \"undefined\") { // Opera 12.10 and Firefox 18 and later support \n\t\thidden = \"hidden\";\n\t\tvisibilityChange = \"visibilitychange\";\n\t} else if (typeof document.msHidden !== \"undefined\") {\n\t\thidden = \"msHidden\";\n\t\tvisibilityChange = \"msvisibilitychange\";\n\t} else if (typeof document.webkitHidden !== \"undefined\") {\n\t\thidden = \"webkitHidden\";\n\t\tvisibilityChange = \"webkitvisibilitychange\";\n\t}\n\treturn { hidden, visibilityChange }\n}\n","\nimport { locale } from './globals.js';\nimport { insertAfter } from './toolbox.js';\n\nclass HomeHero {\n constructor(el) {\n if(!el) return false;\n this.el = el;\n this.covers = this.el.querySelector('[data-hero-covers]');\n this.contents = this.el.querySelector('[data-hero-contents]');\n this.rtl = (locale.dir == 'rtl');\n this.initSliders();\n if (this.covers.children.length > 1) {\n this.initPager();\n }\n }\n initSliders () {\n this.coverSldr = new Flickity(this.covers, {\n prevNextButtons: false,\n pageDots: false,\n wrapAround: true,\n rightToLeft: this.rtl,\n autoPlay: 5000\n // selectedAttraction: 0.01,\n // friction: 0.15\n });\n this.contentSldr = new Flickity(this.contents, {\n prevNextButtons: false,\n pageDots: false,\n wrapAround: true,\n rightToLeft: this.rtl\n });\n\n this.coverSldr.on('change', (index) => {\n this.contentSldr.select(index);\n this.coverSldr.playPlayer()\n });\n this.contentSldr.on('change', (index) => {\n this.coverSldr.select(index);\n this.updateTheme(index);\n });\n this.updateTheme(0);\n }\n initPager () {\n let pager = document.createElement('div');\n pager.classList.add('pager-arrows');\n pager.innerHTML = `${this.pagerButton('prev')}${this.pagerButton('next')}`;\n insertAfter(pager, this.contents);\n pager.querySelector('.arrow.prev').addEventListener('click', () => {\n this.contentSldr.stopPlayer();\n this.coverSldr.stopPlayer();\n this.contentSldr.previous();\n });\n pager.querySelector('.arrow.next').addEventListener('click', () => {\n this.contentSldr.stopPlayer();\n this.coverSldr.stopPlayer();\n this.contentSldr.next();\n });\n }\n updateTheme(index) {\n let theme = this.contentSldr.cells[index].element.getAttribute('data-theme');\n if (!theme) theme = 'default';\n this.el.setAttribute('data-theme', theme);\n }\n pagerButton (dir) {\n return ``\n }\n \n}\nexport default function () {\n new HomeHero(document.querySelector('[data-home-hero]'));\n}\n","\nimport { locale } from './globals.js';\nimport { insertAfter } from './toolbox.js';\n\n\nclass HomeSubHero {\n constructor(el, index) {\n if(!el) return false;\n this.el = el;\n this.widgetIndex = index;\n this.covers = this.el.querySelector('[data-covers]');\n this.features = this.el.querySelector('[data-features]');\n this.rtl = (locale.dir == 'rtl');\n if(this.covers.children.length > 0) {\n this.initSliders();\n }\n }\n initSliders () {\n if(this.covers.children.length > 1) {\n this.coverSldr = new Flickity(this.covers, {\n prevNextButtons: false,\n pageDots: false,\n wrapAround: true,\n rightToLeft: this.rtl\n });\n this.coverSldr.on('change', (index) => {\n this.features.querySelector('.active').classList.remove('active');\n this.features.children[index].classList.add('active');\n this.coverSldr.playPlayer()\n });\n this.initPager();\n setTimeout(() => {\n this.coverSldr.options.autoPlay = 5000;\n this.coverSldr.playPlayer()\n }, 600 + this.widgetIndex * 300);\n }\n this.features.children[0].classList.add('active');\n }\n initPager () {\n let pager = document.createElement('div');\n pager.classList.add('pager-arrows');\n pager.innerHTML = `${this.pagerButton('prev')}${this.pagerButton('next')}`;\n insertAfter(pager, this.features);\n pager.querySelector('.arrow.prev').addEventListener('click', () => {\n this.coverSldr.stopPlayer();\n this.coverSldr.previous();\n });\n pager.querySelector('.arrow.next').addEventListener('click', () => {\n this.coverSldr.stopPlayer();\n this.coverSldr.next();\n });\n }\n pagerButton (dir) {\n return ``\n }\n \n}\nexport default function () {\n Array.from(document.querySelectorAll('[data-home-sub-hero]')).forEach( (item, index) => {\n new HomeSubHero(item, index);\n });\n}\n","\nimport { locale } from './globals.js';\n\nconst fieldErrors = {\n\trequired: {\n\t\t'en': 'This field is required.',\n\t\t'ar': 'هذا الحقل إلزامي'\n\t},\n\trequiredSelect: {\n\t\t'en': 'Please select.',\n\t\t'ar': 'الرجاء اختيار'\n\t},\n\temail: {\n\t\t'en': 'Please enter a valid email address.',\n\t\t'ar': 'رجاء إدخال عنوان بريد إلكتروني صحيح'\n\t},\n\tphone: {\n\t\t'en': 'Please enter a valid phone number',\n\t\t'ar': 'صحيح يرجى إدخال رقم هاتف'\n\t},\n\temiratesID: {\n\t\t'en': 'Please enter a valid Emirate ID number',\n\t\t'ar': 'يرجى إدخال رقم الهوية الإماراتية'\n\t}\n}\nfunction errorLabel () {\n var label = document.createElement('div');\n label.classList.add('error-msg');\n return label;\n}\nlet intlTel_inited = false;\nfunction init_intlTelInput () {\n if(intlTel_inited) return;\n intlTel_inited = true;\n let style = document.createElement('link');\n style.setAttribute('rel', 'stylesheet');\n style.setAttribute('href', '/assets/lib/intl-tel-input/css/intlTelInput.min.css');\n document.querySelector('head').append(style);\n\n let script = document.createElement('script');\n script.setAttribute('src', '/assets/lib/intl-tel-input/js/intlTelInput.min.js')\n script.addEventListener('load', (event) => {\n init_intlTelInput_fields();\n })\n document.querySelector('body').append(script);\n}\nfunction init_intlTelInput_fields () {\n intlTelInputGlobals.loadUtils('/assets/lib/intl-tel-input/js/utils.js');\n\n let telFields = Array.from(document.querySelectorAll('input[type=\"tel\"]'));\n\n telFields.forEach((elem) => {\n elem.parentNode.appendChild(errorLabel());\n elem.setAttribute('data-state', 'ready');\n let iti = intlTelInput(elem, {\n preferredCountries: ['ae','kw','sa','bh','om','qa'],\n excludeCountries: ['il'],\n separateDialCode: true,\n formatOnDisplay: true,\n autoPlaceholder: 'aggressive'\n })\n })\n}\nfunction fieldUpdate (elem, errorID) {\n let errorDom = elem.parentNode.querySelector('.error-msg');\n if(elem.type === 'tel' && elem.hasAttribute('data-intl-tel-input-id'))\n errorDom = elem.parentNode.parentNode.querySelector('.error-msg')\n\n if(errorID) {\n elem.setAttribute('data-state', 'error');\n errorDom.innerHTML = fieldErrors[errorID][locale.lang];\n errorDom.classList.add('show');\n } else {\n elem.setAttribute('data-state', 'valid');\n errorDom.classList.remove('show');\n }\n}\n\nexport function validateInput (elem) {\n if(elem.value == '') {\n if (elem.hasAttribute('required')) {\n fieldUpdate(elem, 'required');\n } else {\n fieldUpdate(elem);\n }\n\t} else {\n\t\tif(elem.type === 'email') {\n\t\t\tif (validateEmail(elem.value)) {\n fieldUpdate(elem);\n\t\t\t} else {\n fieldUpdate(elem, 'email');\n\t\t\t}\n\t\t} else if(elem.type === 'checkbox') {\n\t\t\tif (elem.checked) {\n fieldUpdate(elem);\n\t\t\t} else {\n fieldUpdate(elem, 'required');\n\t\t\t}\n\t\t} else if(elem.type === 'tel') {\n let tElem = window.intlTelInputGlobals.getInstance(elem);\n if(tElem.isValidNumber()) {\n fieldUpdate(elem);\n } else {\n fieldUpdate(elem, 'phone');\n }\n\t\t} else {\n fieldUpdate(elem);\n\t\t}\n\t}\n};\nexport function validateSelect (elem) {\n if (elem.value == 'n/a') {\n\t\telem.setAttribute('data-state', 'error');\n\t\telem.parentNode.querySelector('.error-msg').innerHTML = fieldErrors.requiredSelect[locale.lang];\n\t} else {\n\t\telem.setAttribute('data-state', 'valid');\n\t}\n};\nexport function validateEmail (email) {\n\tvar re = /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return re.test(email);\n};\n\nexport function validate (elem) {\n\tif(elem.tagName === 'INPUT' || elem.tagName === 'TEXTAREA') {\n\t\tvalidateInput(elem);\n\t}\n\tif(elem.tagName === 'SELECT') {\n\t\tvalidateSelect(elem);\n\t}\n\treturn (elem.getAttribute('data-state') === 'valid');\n};\n\nexport function initValidation (elem) {\n if(elem.tagName === 'INPUT' && elem.type === 'tel') {\n try { intlTelInput }\n catch { init_intlTelInput() }\n } else {\n elem.parentNode.appendChild(errorLabel());\n elem.setAttribute('data-state', 'ready');\n }\n\n elem.addEventListener('blur', (event) => {\n if(elem.tagName === 'INPUT' || elem.tagName === 'TEXTAREA') {\n validateInput(elem);\n }\n });\n elem.addEventListener('input', (event) => {\n if(elem.tagName === 'SELECT') {\n validateSelect(elem);\n }\n if((elem.tagName === 'INPUT' || elem.tagName === 'TEXTAREA') && elem.getAttribute('data-state') === 'error') {\n validateInput(elem);\n }\n if(elem.tagName === 'INPUT' && elem.type === 'checkbox') {\n validateInput(elem);\n }\n if(elem.tagName === 'INPUT' && elem.type === 'tel') {\n validateInput(elem);\n }\n });\n};\n\n","\nimport { locale } from './globals.js';\nimport { initValidation, validate } from './form-validator';\n\nconst forms = [];\n\nfunction SmartForm(el) {\n\tthis.el = el;\n\tthis.init();\n};\nSmartForm.prototype.init = function() {\n this.id = `f${forms.length-1}`\n\tthis.el.setAttribute('novalidate', '');\n\tthis.el.setAttribute('data-state', 'ready');\n\tthis.requireds = this.el.querySelectorAll('[required]');\n\tthis.validees = this.el.querySelectorAll('[data-validate]');\n\n\tif (this.el.hasAttribute('data-api')) {\n\t\tthis.el.addEventListener('submit', this.submitHandler.bind(this));\n\t}\n\tthis.requireds.forEach((elem, index) => {\n\t\tinitValidation(elem);\n\t});\n\tthis.validees.forEach((elem, index) => {\n\t\tinitValidation(elem);\n\t});\n\n\tthis.submitBtn = this.el.querySelector('[type=\"submit\"]');\n\tif(this.submitBtn.hasAttribute('data-require')) {\n\t\tthis.initSubmitDisable();\n\t}\n}\nSmartForm.prototype.initSubmitDisable = function () {\n\tvar requirement = this.el.querySelector(this.submitBtn.getAttribute('data-require'));\n\tthis.submitBtn.disabled = !validate(requirement);\n\trequirement.addEventListener('input', (event) => {\n\t\tthis.submitBtn.disabled = !validate(requirement);\n\t})\n}\nSmartForm.prototype.validateForm = function() {\n\tvar valid = true;\n\tthis.requireds.forEach((elem) => {\n\t\tvalidate(elem);\n\t\tif(elem.getAttribute('data-state') === 'error') valid = false;\n\t})\n\treturn valid;\n}\nSmartForm.prototype.submitHandler = function (event) {\n\tevent.preventDefault();\n event.stopPropagation();\n\n\tif(!this.validateForm()) return;\n\n\t// get api url\n\tthis.api = this.el.getAttribute('data-api');\n\n\tthis.setState('working');\n\tif (this.responseBox) this.responseBox.remove();\n\n\tif (this.api.length == 0 || this.api == 'test') {\n\t\tvar testState = (this.el.hasAttribute('data-test-state')) ? this.el.getAttribute('data-test-state') : 'error';\n\t\tsetTimeout(function(){\n\t this.setState(testState);\n\t }.bind(this), 1000);\n\t return;\n\t}\n\tthis.submitData();\n}\nSmartForm.prototype.submitData = function() {\n\tvar XHR = new XMLHttpRequest();\n var FD = new FormData(this.el);\n // Success\n XHR.addEventListener('load', (event) => {\n\t\tthis.response = JSON.parse(event.target.responseText);\n\t\tif(event.target.status == 200) {\n\t\t\tthis.setState('success');\n\t\t} else {\n\t\t\tthis.setState('error');\n\t\t}\n\t});\n\tXHR.open(\"POST\", this.api);\n XHR.send(FD);\n}\nSmartForm.prototype.setState = function(state) {\n\tthis.el.setAttribute('data-state', state);\n\tif (state == 'error') {\n\t\tif(this.el.hasAttribute('data-response')) {\n\t\t\tthis.displayResponse();\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.setState('error-response');\n\t\t\t})\n\t\t}\n\t\tsetTimeout(function(){\n\t\t\tthis.el.setAttribute('data-state', 'ready');\n\t\t}.bind(this), 3000);\n\t}\n\tif (state == 'success') {\n\t\tsetTimeout(function(){\n\t\t\tif(this.el.hasAttribute('data-redirect')) {\n\t\t\t\twindow.location.pathname = this.el.getAttribute('data-redirect');\n\t\t\t}\n\t\t\tif(this.el.hasAttribute('data-collapse')) {\n\t\t\t\tthis.el.classList.add('collapse');\n\t\t\t}\n\t\t\tif(this.el.hasAttribute('data-response')) {\n\t\t\t\tthis.displayResponse();\n\t\t\t}\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tthis.setState('success-response');\n\t\t\t})\n\t\t}.bind(this), 700);\n\t}\n}\nSmartForm.prototype.displayResponse = function() {\n\tif(this.response == undefined) {\n\t\tthis.response = {\n\t\t\tmessage: (this.el.getAttribute('data-response').length > 0) ? this.el.getAttribute('data-response') : 'Thank you!'\n\t\t}\n\t\t\n\t}\n\tthis.responseBox = document.createElement('div');\n\tthis.responseBox.classList.add('response-box');\n\tthis.responseBox.innerHTML = this.response.message;\n\tthis.el.parentNode.insertBefore(this.responseBox, this.el.nextSibling);\n}\n\nexport function initAll () {\n\tArray.from(document.querySelectorAll('[data-smart-form]')).forEach(function(elem, index) {\n\t\tinit(elem);\n\t});\n};\nexport function init(elem) {\n\tif(elem.hasAttribute('data-state')) return;\n forms.push(elem)\n var form = new SmartForm(elem);\n}\n\nexport default function (elem) {\n\tif (!elem || elem.length < 1) {\n\t\tinitAll();\n\t} else {\n\t init(elem);\n\t}\n}\n","\n\nclass SearchBox {\n constructor(el) {\n if(!el) return false;\n this.el = el;\n this.button = this.el.querySelector('button');\n this.input = this.el.querySelector('input');\n this.events();\n this.setState('ready');\n }\n events() {\n this.button.addEventListener('click', this.clickHandler.bind(this));\n this.input.addEventListener('blur', this.blurHandler.bind(this));\n }\n clickHandler(event) {\n if(this.state == 'ready') {\n event.preventDefault();\n this.setState('search');\n } else if(this.state == 'search') {\n this.el.submit();\n }\n }\n blurHandler(event) {\n setTimeout(() => {\n if(this.state == 'search') {\n this.setState('ready');\n this.input.blur();\n }\n }, 300);\n }\n setState(state) {\n this.state = state;\n this.el.setAttribute('data-state', state);\n if(this.state == 'search') {\n this.input.focus();\n document.querySelector('html').classList.add('search-mode');\n } else if(this.state == 'ready') {\n document.querySelector('html').classList.remove('search-mode');\n }\n }\n}\nexport default function () {\n new SearchBox(document.querySelector('[data-search-box]'));\n}\n","\nimport { locale } from './globals.js';\nimport { getOffset, throttle, viewport } from './toolbox.js';\n\nconst arrowBtn = function (dir) {\n return ``\n}\nclass TabBar {\n constructor(el) {\n if(!el) return false;\n this.el = el;\n this.id = this.el.getAttribute('id');\n this.list = this.el.querySelector('[data-tab-list]');\n this.hasSlideControls = this.el.hasAttribute('data-slide-controls');\n this.freeScroll = this.el.hasAttribute('data-free-scroll');\n this.rtl = (locale.dir == 'rtl');\n this.tabAlign = (locale.dir == 'ltr') ? 'left' : 'right';\n this.updateEvent = new Event('tab-content-update');\n this.initSlider();\n this.initControls();\n }\n initSlider () {\n let self = this;\n this.flkty = new Flickity(this.list, {\n cellAlign: this.tabAlign,\n contain: true,\n prevNextButtons: false,\n pageDots: false,\n rightToLeft: this.rtl,\n freeScroll: this.freeScroll/*,\n friction: 0.15,\n selectedAttraction: 0.01*/\n });\n this.dragged = false;\n this.flkty.on('change', () => {\n this.updatePagerControls();\n });\n if(this.hasSlideControls) {\n this.flkty.on('scroll', throttle( (progress) => {\n self.slideState = progress;\n self.updateSlideControls();\n }, 50) );\n this.flkty.on('settle', () => {\n this.updateSlideControls();\n });\n }\n this.flkty.on('dragStart', () => { this.dragged = true; })\n this.flkty.on('dragEnd', () => {\n setTimeout( () => { this.dragged = false; }, 50);\n })\n this.flkty.cells.forEach( (cell, index) => {\n cell.element.setAttribute('data-index', index);\n cell.element.addEventListener('click', function(event) {\n if(this.classList.contains('.active')) return;\n self.activateTab(this, event);\n })\n })\n\n // initialize an active tab\n let defaultIndex = 0; // default is the first tab\n let activeTab = this.el.querySelector('.tab.active'); // if the dom has one, activate that\n if(activeTab) {\n this.activateTab(activeTab, false, true);\n } else {\n defaultIndex = this.checkHash(); // if our tabs have the hash, use that tab\n if(defaultIndex < 0) { defaultIndex = 0} // otherwise 0\n this.activateTab(this.flkty.cells[defaultIndex].element, false, true);\n }\n window.addEventListener('hashchange', (event) => {\n let hashIndex = this.checkHash();\n if (hashIndex > -1) this.activateTab(this.flkty.cells[hashIndex].element);\n })\n }\n // activateIndex(index) {\n // this.activateTab(this.flkty.cells[index], false);\n // }\n checkHash (hash) {\n let index = -1;\n if(hash == undefined) hash = location.hash;\n this.flkty.cells.forEach((cell, i) => {\n if(hash == cell.element.getAttribute('href')) {\n index = i;\n }\n })\n return index;\n // if(index > -1) {\n // this.activateIndex(index);\n // if(this.parentSlide) {\n // $(this.parentSlide).trigger('initslide.carousel');\n // }\n // }\n }\n activateTab(tab, event, init) {\n if (!init) {\n // skip these for initial setup\n if(!tab) return;\n if (tab.classList.contains('active')) return;\n if (this.dragged) { this.dragged = false; return; }\n let prevTab = this.el.querySelector('.tab.active');\n if (prevTab) prevTab.classList.remove('active')\n }\n\n tab.classList.add('active'); // activate tab\n this.currentIndex = parseInt(tab.getAttribute('data-index')); //save active index\n this.flkty.select(this.currentIndex); // select flkty cell to slide in position\n\n let tabHref = tab.getAttribute('href'); // check if #href for content\n if(tabHref && tabHref.startsWith('#') && tabHref.length > 1) {\n if(event) event.preventDefault(); \n this.updateHash(tabHref);\n this.activateContent(tabHref.slice(1));\n }\n \n }\n updateHash (hash) {\n // if (index == undefined) index = this.current;\n // let hash = this.tabs[index].getAttribute('href');\n if (location.hash == hash) {\n return;\n }\n if(history && history.pushState) {\n history.pushState(null, null, hash);\n } else {\n location.hash = hash;\n }\n }\n activateContent(tabHref) {\n let contents = Array.from(document.querySelectorAll(`[data-tab-content=${tabHref}]`));\n if (contents.length < 1) return;\n contents.forEach((content) => {\n let prevContent = content.parentElement.querySelector('.tab-content.active');\n if(prevContent) {\n prevContent.classList.remove('active');\n prevContent.dispatchEvent(this.updateEvent);\n }\n content.classList.add('active');\n content.dispatchEvent(this.updateEvent);\n });\n }\n\n initControls () {\n // slide controls\n if(this.hasSlideControls) {\n this.slideControls = document.createElement('div');\n this.slideControls.classList.add('tab-controls');\n this.slideControls.innerHTML = arrowBtn('prev') + arrowBtn('next');\n this.el.insertBefore(this.slideControls, this.list);\n requestAnimationFrame(this.initSlideControls.bind(this));\n }\n // pre-defined pager controls\n let pagers = Array.from(document.querySelectorAll(`[data-tab-pager=${this.id}]`));\n pagers.forEach((pager, index) => {\n pager.innerHTML = arrowBtn('prev') + arrowBtn('next');\n requestAnimationFrame(() => {\n this.initPagerControls(pager); \n });\n });\n }\n initPagerControls(pager) {\n pager.querySelector('.arrow.prev').addEventListener('click', () => {\n if(this.flkty.cells[this.currentIndex - 1])\n this.activateTab(this.flkty.cells[this.currentIndex - 1].element);\n else \n this.activateTab(this.flkty.cells[this.flkty.cells.length - 1].element);\n })\n pager.querySelector('.arrow.next').addEventListener('click', () => {\n if(this.flkty.cells[this.currentIndex + 1])\n this.activateTab(this.flkty.cells[this.currentIndex + 1].element);\n else \n this.activateTab(this.flkty.cells[0].element);\n })\n }\n updatePagerControls() {\n\n }\n initSlideControls () {\n this.slideControls.querySelector('.arrow.prev').addEventListener('click', () => {\n this.slide(20);\n })\n this.slideControls.querySelector('.arrow.next').addEventListener('click', () => {\n this.slide(-20);\n })\n }\n slide(offset) {\n this.flkty.applyForce(offset);\n this.flkty.startAnimation();\n this.flkty.dragEnd();\n }\n updateSlideControls () {\n if (isNaN(this.slideState) || this.slideState === Infinity || this.slideState === -Infinity ) {\n this.slideControls.querySelector('.arrow.prev').classList.add('disabled');\n this.slideControls.querySelector('.arrow.next').classList.add('disabled');\n } else {\n if(this.slideState < 0.05) {\n this.slideControls.querySelector('.arrow.prev').classList.add('disabled');\n this.list.classList.remove('overflown-prev');\n } else {\n this.slideControls.querySelector('.arrow.prev').classList.remove('disabled');\n this.list.classList.add('overflown-prev');\n }\n if(this.slideState > 0.95) {\n this.slideControls.querySelector('.arrow.next').classList.add('disabled');\n this.list.classList.remove('overflown-next');\n } else {\n this.slideControls.querySelector('.arrow.next').classList.remove('disabled');\n this.list.classList.add('overflown-next');\n }\n }\n }\n}\nexport default function () {\n Array.from(document.querySelectorAll('[data-tab-bar]')).forEach( (item, index) => {\n new TabBar(item, index);\n });\n}\n","\nimport { locale } from './globals.js';\n\nconst arrowBtn = function (dir) {\n return ``\n}\n\nclass BoxSlider {\n constructor(el) {\n if(!el) return false;\n this.el = el;\n this.list = this.el.querySelector('[data-box-slider-list]');\n this.rtl = (locale.dir == 'rtl');\n if(this.list.children.length > 1) {\n this.initSlider();\n }\n }\n initSlider () {\n this.flkty = new Flickity(this.list, {\n contain: true,\n prevNextButtons: false,\n pageDots: false,\n rightToLeft: this.rtl,\n autoPlay: 4000\n });\n this.pager = document.createElement('div');\n this.pager.classList.add('box-slider-pager', 'pager-arrows');\n this.pager.innerHTML = arrowBtn('prev') + arrowBtn('next');\n this.el.insertBefore(this.pager, this.el.firstChild);\n requestAnimationFrame(() => {\n this.initPagerControls(); \n });\n\n }\n initPagerControls() {\n this.pager.querySelector('.arrow.prev').addEventListener('click', () => {\n this.flkty.previous(true);\n })\n this.pager.querySelector('.arrow.next').addEventListener('click', () => {\n this.flkty.next(true);\n })\n }\n}\nexport default function () {\n Array.from(document.querySelectorAll('[data-box-slider]')).forEach( (box) => {\n new BoxSlider(box);\n });\n}\n","\nimport { locale } from './globals.js';\nimport { pageVisibilityStatus as pvs } from './toolbox.js';\n\nconst arrowBtn = function (dir) {\n return ``\n}\nlet popupListenerOn = false;\nlet carouselShowing = new Event('carousel-showing');\nlet carouselHiding = new Event('carousel-hiding');\nfunction popupListener() {\n if(popupListenerOn) return;\n popupListenerOn = true;\n $(document).on('beforeShow.fb', (instance, slide) => {\n requestAnimationFrame(() => {\n Array.from(slide.$refs.container[0].querySelectorAll('[data-image-carousel]')).forEach((carousel) => {\n carousel.dispatchEvent(carouselShowing);\n })\n });\n })\n $(document).on('afterClose.fb', (instance, slide) => {\n requestAnimationFrame(() => {\n Array.from(slide.$refs.container[0].querySelectorAll('[data-image-carousel]')).forEach((carousel) => {\n carousel.dispatchEvent(carouselHiding);\n })\n });\n })\n}\nclass ImageCarousel {\n constructor(el) {\n if(!el) return false;\n if (el.hasAttribute('data-inited')) return;\n this.el = el;\n this.el.setAttribute('data-inited', true);\n this.rtl = (locale.dir == 'rtl');\n this.onScreen = true;\n if(this.el.children.length > 1) {\n this.initSlider();\n }\n \n if(this.el.closest('.popup-buffer')) {\n popupListener();\n this.onScreen = false;\n clearTimeout(this.scrollTimeout);\n this.el.addEventListener('carousel-showing', () => {\n this.onScreen = true;\n if(this.flkty) {\n this.flkty.resize();\n this.setScrollTimeout();\n }\n })\n this.el.addEventListener('carousel-hiding', () => {\n this.onScreen = false;\n if(this.flkty) {\n clearTimeout(this.scrollTimeout);\n }\n })\n }\n }\n initSlider () {\n \n Array.from(this.el.children).forEach((item) => {\n item.classList.add('image-carousel-item');\n })\n \n this.flkty = new Flickity(this.el, {\n contain: true,\n prevNextButtons: false,\n pageDots: false,\n rightToLeft: this.rtl,\n wrapAround: true\n });\n this.el.classList.add('image-carousel');\n this.pager = document.createElement('div');\n this.pager.classList.add('image-carousel-pager', 'pager-arrows');\n this.pager.innerHTML = arrowBtn('prev') + arrowBtn('next');\n this.el.insertBefore(this.pager, this.el.firstChild);\n this.tabParent = this.el.closest('[data-tab-content]');\n if(this.tabParent) {\n this.tabParent.addEventListener('tab-content-update', () => {\n if(this.tabParent.classList.contains('active')) {\n this.setScrollTimeout();\n } else {\n clearTimeout(this.scrollTimeout);\n }\n });\n }\n document.addEventListener(pvs().visibilityChange, () => {\n if(document[pvs().hidden]) {\n clearTimeout(this.scrollTimeout)\n } else {\n this.setScrollTimeout();\n }\n }, false);\n requestAnimationFrame(() => {\n this.initPagerControls();\n });\n this.flkty.on('change', this.setScrollTimeout.bind(this));\n this.setScrollTimeout();\n setTimeout(this.videoChild.bind(this), 500);\n }\n setScrollTimeout() {\n if(document[pvs().hidden] || !this.onScreen) return;\n if(!this.tabParent || this.tabParent.classList.contains('active')) {\n clearTimeout(this.scrollTimeout);\n this.scrollTimeout = setTimeout(() => {\n this.flkty.next(true);\n }, 7000);\n }\n }\n initPagerControls() {\n this.pager.querySelector('.arrow.prev').addEventListener('click', () => {\n this.flkty.previous(true);\n })\n this.pager.querySelector('.arrow.next').addEventListener('click', () => {\n this.flkty.next(true);\n })\n }\n videoChild() {\n this.flkty.cells.forEach((cell) => {\n let video = cell.element.querySelector('video');\n if(video) {\n video.addEventListener('play', () => {\n clearTimeout(this.scrollTimeout);\n })\n video.addEventListener('pause', () => {\n this.setScrollTimeout();\n })\n }\n });\n }\n}\n\nexport function initAll () {\n\tArray.from(document.querySelectorAll('[data-image-carousel]')).forEach((elem, index) => {\n\t\tinit(elem);\n\t});\t\n};\n\nexport function init(elem) {\n new ImageCarousel(elem);\n}\n\nexport default function (elem) {\n\tif (!elem || elem.length < 1) {\n\t\tinitAll();\n\t} else {\n\t init(elem);\n\t}\n}","\nimport { locale } from './globals.js';\nimport { getOffset } from './toolbox.js';\n\nclass Filter {\n constructor (el) {\n if(!el) return false;\n this.el = el;\n this.id = this.el.getAttribute('data-filter');\n this.initList();\n this.initSearch();\n }\n initList () {\n this.domLists = Array.from(document.querySelectorAll(`[data-filter-list=${this.id}]`));\n this.items = [];\n this.domLists.forEach( (list) => {\n list.classList.add('filter-list');\n let domItems = Array.from(list.children);\n domItems.forEach((elem) => {\n let text = elem.querySelector('[data-filter-text]')\n let tags = elem.querySelector('[data-filter-tags]');\n let content = \"\";\n if (text) content += text.innerText;\n if (tags) content += ` ${tags.getAttribute('data-filter-tags')}`;\n elem.classList.add('filter-list-item');\n this.items.push (\n { content, elem }\n )\n })\n });\n }\n initSearch () {\n this.el.addEventListener('submit', (event) => {event.preventDefault()});\n this.searchBox = this.el.querySelector('[data-filter-search]');\n this.searchBox.addEventListener('input', this.searchUpdate.bind(this));\n this.searchBox.addEventListener('focus', () => {\n let pos = getOffset(this.searchBox).top - 50;\n window.scroll({ top: pos, left: 0, behavior: 'smooth' });\n });\n }\n searchUpdate (event) {\n let term = this.searchBox.value.trim();\n let results = 0;\n if (term.length > 2) {\n this.items.forEach((item) => {\n let terms = term.split(' ');\n let pass = true;\n if (terms.length < 2) {\n if(item.content.toUpperCase().includes(term.toUpperCase())) {\n item.elem.classList.remove('hide');\n results++;\n } else {\n item.elem.classList.add('hide');\n }\n } else {\n terms.forEach((t) => {\n if(!item.content.toUpperCase().includes(t.toUpperCase())) {\n pass = false;\n }\n })\n if (pass) {\n item.elem.classList.remove('hide');\n results++;\n } else {\n item.elem.classList.add('hide');\n }\n }\n\n \n })\n if (results == 0) {\n this.domLists.forEach((list) => {\n list.classList.add('no-results')\n let msg = list.getAttribute('data-filter-no-results').split(':');\n if (msg) list.setAttribute('data-filter-no-results', `${msg[0]}: ${term}`);\n })\n } else {\n this.domLists.forEach((list) => { list.classList.remove('no-results')})\n }\n } else {\n this.domLists.forEach((list) => { list.classList.remove('no-results')})\n this.items.forEach((item) => {\n item.elem.classList.remove('hide');\n })\n }\n \n }\n\n \n}\nexport default function () {\n new Filter(document.querySelector('[data-filter]'));\n}\n","\nimport { locale } from './globals.js';\nconst playButton = function (date) {\n return `
`\n}\nclass VideoHandler {\n constructor(el) {\n if(!el) return false;\n if (el.hasAttribute('data-inited')) return;\n this.el = el;\n this.el.setAttribute('data-inited', true);\n this.el.innerHTML += playButton();\n this.video = this.el.querySelector('video');\n this.video.addEventListener('click', () => {\n if(this.video.paused) {\n if(this.dragged) return;\n this.video.play();\n }\n })\n this.video.addEventListener('play', () => {\n this.video.classList.add('playing');\n this.video.setAttribute('controls', true);\n })\n this.video.addEventListener('pause', () => {\n this.video.classList.remove('playing');\n this.video.removeAttribute('controls');\n })\n \n setTimeout(this.sliderParent.bind(this), 500);\n }\n sliderParent() {\n let slider = this.el.closest('.flickity-enabled');\n if (slider) {\n this.flkty = Flickity.data(slider);\n this.flkty.on('dragStart', () => {\n this.dragged = true;\n this.video.pause();\n })\n this.flkty.on('change', () => {\n this.video.pause();\n })\n this.flkty.on('dragEnd', () => {\n setTimeout(() => {this.dragged = false;}, 200);\n })\n }\n }\n \n}\nexport function initAll () {\n\tArray.from(document.querySelectorAll('[data-video-handler]')).forEach((elem, index) => {\n\t\tinit(elem);\n\t});\t\n};\n\nexport function init(elem) {\n new VideoHandler(elem);\n}\n\nexport default function (elem) {\n\tif (!elem || elem.length < 1) {\n\t\tinitAll();\n\t} else {\n\t init(elem);\n\t}\n}","import { locale } from \"./globals.js\";\nimport { loadHTML } from \"./toolbox.js\";\nimport { init as initCarousel } from \"./image-carousel.js\";\nimport { init as initVideo } from \"./video-handler.js\";\nlet shareLabel = locale.lang == 'en' ? 'Share' : 'شارك';\n\nconst popupDom = function(event) {\n return `\n
\n
${\n event.hero.innerHTML\n }
\n
\n ${event.info.innerHTML}\n
\n
\n

${event.title.innerHTML}

\n\n ${event.content.innerHTML}\n
\n
\n \n \n
\n
\n ${shareLabel}\n
\n
\n
\n \n \n
\n
\n `;\n};\nclass EventPopup {\n constructor(el) {\n if (!el) return false;\n if (el.hasAttribute(\"data-state\")) return;\n this.el = el;\n this.href = this.getUrl();\n this.el.innerHTML +=\n '
';\n this.setState(\"inited\");\n this.el.addEventListener(\"click\", event => {\n event.preventDefault();\n if (this.state == \"loaded\") {\n this.popup();\n } else {\n this.el.classList.add(\"loading\");\n loadHTML(this.href, data => {\n this.response = data;\n this.parseResponse();\n this.el.classList.remove(\"loading\");\n this.popup();\n });\n }\n });\n }\n getUrl() {\n let url = this.el.getAttribute(\"href\");\n if (url.charAt(0) == \"/\") url = `${window.location.origin}${url}`;\n return url;\n }\n parseResponse() {\n this.event = {\n hero: this.response.querySelector(\".page-cover\"),\n title: this.response.querySelector(\".page-header h1\"),\n info: this.response.querySelector(\".page-header .event-info\"),\n content: this.response.querySelector(\".page-content\"),\n url: this.href,\n media: ''\n };\n let mediaElem = this.event.hero.querySelector('figure')\n if (mediaElem && mediaElem.hasAttribute('data-media')) {\n this.event.media = mediaElem.getAttribute('data-media')\n }\n //this.event.media = this.event.hero.querySelector('figure')\n console.log(this.event.media);\n this.setState(\"loaded\");\n }\n popup() {\n $.fancybox.open({\n type: \"html\",\n content: popupDom(this.event),\n baseClass: \"event-popup content-view\",\n idleTime: false,\n video: {\n autoStart: false\n },\n afterShow: (instance, current) => {\n let carousel = current.$content[0].querySelector(\n \"[data-image-carousel]\"\n );\n let videos = Array.from(\n current.$content[0].querySelectorAll(\"[data-video-handler]\")\n );\n addthis.layers.refresh()\n current.$content.find('.addthis-toggle').on('click', function() {\n $(this).toggleClass('show-tools');\n })\n\n initCarousel(carousel);\n if (videos && videos.length > 0) {\n videos.forEach(video => {\n initVideo(video);\n });\n }\n }\n });\n }\n setState(state) {\n this.state = state;\n this.el.setAttribute(\"data-state\", state);\n }\n}\n\nexport function initAll() {\n Array.from(document.querySelectorAll(\"[data-event-popup]\")).forEach(\n (elem, index) => {\n init(elem);\n }\n );\n}\n\nexport function init(elem) {\n if (elem.hasAttribute(\"data-status\")) return;\n new EventPopup(elem);\n}\n\nexport default function(elem) {\n if (!elem || elem.length < 1) {\n initAll();\n } else {\n init(elem);\n }\n}\n","\nimport { locale } from './globals.js';\nimport { loadJSON, eventOptionSupport as eos } from './toolbox.js';\nimport eventPopup from './event-popup';\n\nlet oneoffEvents = eos('once');\n\nconst defaultApi = '/assets/data/events.json';\n\nconst todayISOstring = moment(new Date()).format().split('T')[0];\nconst today = new Date(todayISOstring);\n\nconst monthSeparator = function (date) {\n return `
  • ${date}
  • `\n}\nconst eventThumb = function (event) {\n let url = event.url;\n let isToday = (event.day == today.getDate()) ? 'is-today' : '';\n let isPast = event.past ? 'is-past' : '';\n let lastDateEntry = event.days[event.days.length - 1];\n let lastDateEntrySplit = lastDateEntry.split(' ');\n let comma = (locale.lang == \"ar\") ? '، ' : ',';\n\n \n // only add locale if it's not present already\n if (url.indexOf(`/${locale.lang}/`) === -1 ) url = `/${locale.lang}${event.url}`;\n\n return `\n
  • \n
    ${event.dateDisplay.day}
    ${event.dateDisplay.month}
    \n
    \n
    \n

    ${event.title}

    \n
    ${event.days.join(`${comma} `)} ${(lastDateEntrySplit[lastDateEntrySplit.length - 1].length <= 2) ? event.dateDisplay.month : ''}
    \n
    \n
  • \n `\n}\nconst peekView = function (events, date) {\n let peek = document.createElement('div');\n peek.classList.add('day-peek');\n peek.innerHTML += `
    ${date}
    `;\n events.forEach((event) => {\n let url = event.url;\n if (url.indexOf(`/${locale.lang}/`) === -1 ) url = `/${locale.lang}${event.url}`;\n peek.innerHTML += `${event.title}`;\n })\n return peek;\n}\nconst emptyThumb = function (msg) {\n return `\n
  • ${msg}
  • \n `\n}\n\nclass EventBrowser {\n constructor (el) {\n if(!el) return false;\n this.el = el;\n this.list = this.el.querySelector('[data-event-list]');\n this.api = this.el.getAttribute('data-event-api') ? this.el.getAttribute('data-event-api') : defaultApi;\n let calendarArrows = ['◀', '▶'];\n //if (locale.dir == 'rtl') calendarArrows = ['▶', '◀'];\n try { HelloWeek } catch { return; }\n this.helloWeek = new HelloWeek({\n langFolder: '/assets/lib/hello-week/langs/',\n weekStart: 0,\n disablePastDays: true,\n onNavigation: this.update.bind(this),\n // onSelect: this.daySelected.bind(this),\n nav: calendarArrows,\n rtl: (locale.dir == 'rtl'),\n lang: locale.lang\n });\n loadJSON(this.api, (data) => {\n this.data = JSON.parse(data);\n requestAnimationFrame(() => {\n this.highlightCalendar();\n this.update();\n })\n }, (resp) => {});\n this.el.querySelector('[data-event-nav=\"next-month\"]').addEventListener('click', () => {this.helloWeek.next()});\n this.helloWeek.calendar.month.addEventListener('click', this.peekingHandler.bind(this));\n window.addEventListener('click', () => {\n if(this.peeking) this.peekingClose();\n })\n }\n peekingHandler(event) {\n event.stopPropagation();\n if (event.target.hasAttribute('data-event-popup')) return;\n \n if (this.peeking) this.peekingClose();\n if (event.target.hasAttribute('data-events')) {\n requestAnimationFrame(() => {\n this.peeking = true;\n event.target.classList.add('peeking');\n })\n }\n }\n peekingClose() {\n this.peeking = false;\n Array.from(this.helloWeek.calendar.month.querySelectorAll('.peeking')).forEach((day) => {\n day.classList.remove('peeking');\n })\n }\n calendarMarkers() {\n let days = Array.from(this.helloWeek.calendar.month.children)\n let month = new Array(days.length);\n this.entries.forEach((event) => {\n days[event.day - 1].classList.add('is-highlight');\n //this.addEventToDay(days[event.day - 1], event.id);\n addToMonth(event.day - 1, event.id);\n \n if (event.dayLast) {\n for (let d = event.day; d < event.dayLast; d++) {\n days[d].classList.add('is-highlight');\n addToMonth(d, event.id);\n }\n }\n })\n function addToMonth(index, id) {\n if (month[index]) month[index].push(id)\n else month[index] = [`${id}`];\n }\n days.forEach((day, index) => {\n if(month[index]) {\n day.setAttribute('data-events', month[index].join(','));\n let eventsToday = [];\n let titles = [];\n month[index].forEach((id) => {\n let event = this.uniqueEntries.find((e) => {\n return e.id == id;\n })\n if (event) {\n eventsToday.push(event);\n titles.push(event.title);\n }\n })\n day.setAttribute('title', titles.join(', '));\n let date = `${index+1} ${eventsToday[0].dateDisplay.month}`\n day.appendChild(peekView(eventsToday, date));\n }\n })\n }\n\n highlightCalendar() {\n let calendarEvents = [];\n this.data.forEach((event) => {\n calendarEvents.push(\n {\n days: event.dates,\n title: event.title[locale.lang]\n }\n )\n })\n this.helloWeek.update();\n }\n normalizeDates() {\n this.data.forEach((event, e) => {\n let hasRange = false;\n this.data[e].dates.some((date) => {\n if(Array.isArray(date)) {\n hasRange = true;\n }\n })\n if (hasRange) {\n this.data[e].dates.forEach((date, d) => {\n if(!Array.isArray(date)) this.data[e].dates[d] = [date, date];\n })\n }\n });\n }\n update() {\n this.updateEntries();\n this.createUniqueEntries();\n this.calendarMarkers();\n this.sortUniqueEntries();\n this.pastRestictions();\n requestAnimationFrame(() => {\n // if (this.preventListUpdate) return;\n this.updateList();\n requestAnimationFrame(() => {\n eventPopup();\n })\n })\n }\n updateEntries() {\n this.entries = [];\n\n //console.log(moment([this.helloWeek.getYear(), this.helloWeek.getMonth() - 1]).endOf('month').format('D'));\n this.data.forEach((event, e) => {\n event.dates.forEach((date, d) => {\n let dateStart, dateEnd;\n let isCurrent = false;\n let isPast = false;\n let sortDay = 1;\n let closeDay = undefined;\n let calendarDate = moment([this.helloWeek.getYear(), this.helloWeek.getMonth() - 1]);\n\n \n if (Array.isArray(date)) dateStart = new Date(date[0]);\n else dateStart = new Date(date);\n\n if(moment(dateStart).isBefore(today)) isPast = true;\n\n if (Array.isArray(date) && date[0] != date[1] ) {\n dateEnd = new Date(date[1]);\n \n if(moment(dateEnd).isBefore(today)) isPast = true;\n else isPast = false;\n\n if (this.helloWeek.getYear() === dateStart.getFullYear()) {\n if (this.helloWeek.getMonth() === dateStart.getMonth() + 1) {\n // starts this month\n isCurrent = true;\n sortDay = dateStart.getDate();\n if (this.helloWeek.getMonth() === dateEnd.getMonth() + 1) {\n // starts and ends this month\n closeDay = dateEnd.getDate();\n } else {\n // starts this month and ends later\n closeDay = moment([this.helloWeek.getYear(), this.helloWeek.getMonth() - 1]).endOf('month').format('D');\n }\n } else {\n if (this.helloWeek.getMonth() === dateEnd.getMonth() + 1) {\n // starts earlier and ends this month\n isCurrent = true;\n closeDay = dateEnd.getDate();\n } else {\n if (calendarDate.startOf('month').isAfter(dateStart) && calendarDate.endOf('month').isBefore(dateEnd)) {\n // starts earlier and ends later\n closeDay = moment([this.helloWeek.getYear(), this.helloWeek.getMonth() - 1]).endOf('month').format('D');\n isCurrent = true;\n }\n }\n }\n } else if (this.helloWeek.getYear() === dateEnd.getFullYear()) {\n if (this.helloWeek.getMonth() === dateEnd.getMonth() + 1) {\n isCurrent = true;\n closeDay = dateEnd.getDate();\n }\n }\n } else {\n if (this.helloWeek.getYear() === dateStart.getFullYear()) {\n if (this.helloWeek.getMonth() === dateStart.getMonth() + 1) {\n isCurrent = true;\n sortDay = dateStart.getDate();\n }\n }\n }\n\n if (isCurrent) {\n\n this.entries.push({\n id: event.id,\n day: sortDay,\n dayLast: closeDay,\n past: isPast,\n dateDisplay: {\n day: moment(dateStart).format('DD'),\n month: moment(dateStart).format('MMM')\n },\n dates: event.dates,\n currentDates: (dateEnd) ? [dateStart, dateEnd] : [dateStart],\n title: event.title[locale.lang],\n thumb: event.thumb,\n url: event.url\n })\n }\n })\n })\n this.entries.sort((a, b) => (a.day - b.day) );\n \n }\n createUniqueEntries() {\n let ids = [];\n let calendarDate = moment([this.helloWeek.getYear(), this.helloWeek.getMonth() - 1]);\n this.uniqueEntries = this.entries.filter((event, index, self) => {\n ids.push(event.id);\n return ids.indexOf(event.id) == index;\n })\n this.uniqueEntries.forEach((uev) => {\n uev.days = [];\n this.entries.forEach((ev) => {\n if (ev.id == uev.id) {\n if(ev.dayLast) {\n if (calendarDate.startOf('month').isAfter(ev.currentDates[0])) {\n //console.log(ev.title, calendarDate.format(\"D MMM\"), moment(ev.currentDates[0]).format(\"D MMM\"));\n // starts earlier\n uev.days.push(`${moment(ev.currentDates[0]).format(\"D MMM\")} – ${moment(ev.currentDates[1]).format(\"D MMM\")}`);\n } else {\n // starts this month\n\n if (calendarDate.endOf('month').isBefore(ev.currentDates[1])) {\n // starts this month and ends later\n uev.days.push(`${moment(ev.currentDates[0]).format(\"D MMM\")} – ${moment(ev.currentDates[1]).format(\"D MMM\")}`);\n } else {\n // starts and ends this month\n uev.days.push(`${ev.day} – ${ev.dayLast}`);\n }\n }\n\n } else {\n uev.days.push(`${ev.day}`);\n }\n }\n })\n });\n \n }\n sortUniqueEntries() {\n this.uniqueEntries.forEach((uev) => {\n this.entries.forEach((ev) => {\n if (ev.id == uev.id) {\n if(uev.past && !ev.past) {\n uev.past = false;\n if(ev.dayLast) {\n if (ev.day > today.getDate()) {\n uev.day = ev.day;\n uev.dateDisplay.day = moment(ev.currentDates[0]).format('DD');\n } else {\n uev.day = today.getDate();\n uev.dateDisplay.day = moment(today).format('DD');\n }\n \n } else {\n uev.day = ev.day;\n uev.dateDisplay.day = moment(ev.currentDates[0]).format('DD');\n }\n }\n }\n })\n });\n this.uniqueEntries.sort((a, b) => (a.day - b.day) );\n }\n pastRestictions() {\n // hide list items from the past\n this.hidePastEntries = true;\n // get current calendar date\n let calendarDate = moment([this.helloWeek.getYear(), this.helloWeek.getMonth() - 1]);\n if (calendarDate.endOf('month').isBefore(today)) {\n this.preventListUpdate = true;\n } else {\n this.preventListUpdate = false;\n }\n // prevent calendar from navigating to past months\n /* if (moment(today).startOf('month').isSame(calendarDate.startOf('month')) || calendarDate.endOf('month').isBefore(today)) {\n this.helloWeek.calendar.prevMonth.classList.add('past');\n } else {\n this.helloWeek.calendar.prevMonth.classList.remove('past');\n } */\n }\n updateList () {\n if (this.preventListUpdate) return;\n let msg = '';\n let dom = '';\n let month = (this.helloWeek.getMonth() > 9) ? this.helloWeek.getMonth() : '0'+this.helloWeek.getMonth();\n let title = moment(`${this.helloWeek.getYear()}-${month}-01`).format('MMMM YYYY');\n let entries = this.uniqueEntries;\n dom += monthSeparator(title);\n if (entries && entries.length > 0) {\n entries.forEach(event => {\n if(event.past && this.hidePastEntries) return;\n dom += eventThumb(event);\n });\n } else {\n msg = this.list.getAttribute('data-event-empty') ? this.list.getAttribute('data-event-empty') : 'No events';\n dom += emptyThumb(msg);\n }\n requestAnimationFrame(() => {\n this.list.innerHTML = dom;\n })\n }\n}\nexport default function () {\n new EventBrowser(document.querySelector('[data-event-browser]'));\n}\n","\nimport { locale } from './globals.js';\nimport { loadJSON, throttle, truncateString } from './toolbox.js';\nimport { init as initCarousel } from './image-carousel.js';\nimport { init as initVideo } from './video-handler.js';\n\nconst defaultApi = '/assets/data/instagram.json';\n\nconst postPopup = function (post) {\n // ${post.caption ? (postPopupCaption(post)) : ''}\n let imgOnly = (post.caption == null) ? 'image-only' : '';\n if (post.caption == null) {\n\n }\n return `\n
    \n
    \n ${post.media ? (postPopupHeader(post)) : ''}\n ${postPopupCaption(post)}\n
    \n
    \n `\n}\nconst postPopupCaption = function (post) {\n return `\n
    \n \n
    @${post.username}
    \n
    \n
    \n

    \n ${(post.caption) ? post.caption : ''}\n

    \n
    \n `\n}\nconst postPopupHeader = function (post) {\n let media = [];\n post.media.forEach((item) => {\n if (item.mediaType === 'image') {\n media.push(`\n
    \n \"\"\n
    \n `)\n } else if (item.mediaType === 'video') {\n media.push(`\n
    \n \n
    \n `)\n }\n })\n return `\n
    \n ${media.join(' ')}\n
    \n `\n}\nconst postElem = function (post, index) {\n let item = document.createElement('div');\n item.classList.add('post-item');\n let thumb = (post.postType == 'text') ? postThumbText(post, index) : postThumbImage(post, index);\n item.innerHTML = `\n ${thumb}\n \n @${post.username}\n `\n return item;\n}\nconst postThumbImage = function (post, index) {\n let caption = '';\n if (post.caption) caption = `
    ${truncateString(post.caption, 100)}
    `;\n return `\n \n
    \n ${caption}\n
    `\n}\nconst postThumbText = function (post, index) {\n return `\n \n

    ${post.caption}

    \n
    `\n}\n\nclass SocialMediaThumbs {\n constructor (el) {\n if(!el) return false;\n this.el = el;\n this.api = this.el.getAttribute('data-api') ? this.el.getAttribute('data-api') : defaultApi;\n this.rowLength = parseInt(window.getComputedStyle( this.el, ':before').getPropertyValue('content').split('\"')[1]);\n this.expandIndex = 1;\n this.batch = this.rowLength * 2;\n this.list = this.el.querySelector('[data-post-list]');\n this.expandButton = this.el.querySelector('[data-post-list-expand]');\n if(this.expandButton) {\n this.expandButton.addEventListener('click', () => {\n this.expandIndex += 1;\n this.updateList();\n });\n }\n loadJSON(this.api, (data) => {\n this.data = JSON.parse(data);\n requestAnimationFrame(() => {\n this.createThumbs();\n this.createPopups();\n this.updateList();\n })\n }, (resp) => {});\n }\n createThumbs() {\n this.thumbs = [];\n this.data.forEach((post, index) => {\n this.thumbs.push(postElem(post, index));\n })\n }\n updateList() {\n this.rowLength = parseInt(window.getComputedStyle( this.el, ':before').getPropertyValue('content').split('\"')[1]);\n this.batch = this.rowLength * 2 * this.expandIndex;\n\n let newList = this.list.cloneNode(true);\n newList.innerHTML = '';\n this.thumbs.forEach((post, index) => {\n if (index < this.batch) {\n newList.appendChild(post);\n }\n })\n requestAnimationFrame(() => {\n this.list.parentNode.replaceChild(newList, this.list);\n this.list = newList;\n if(this.list.children.length >= this.thumbs.length) {\n this.expandButton.setAttribute('disabled', 'disabled');\n }\n requestAnimationFrame(() => {\n //this.prepPopups();\n });\n })\n }\n createPopups() {\n let thumbItems = Array.from(this.list.querySelectorAll('.post-thumb'));\n this.popups = [];\n this.thumbs.forEach((thumb, index) => {\n this.popups.push({content: postPopup(this.data[index])});\n let t = thumb.querySelector('.post-thumb');\n t.addEventListener('click', (event) => {\n event.preventDefault();\n this.thumbClicked(thumb, index);\n })\n })\n }\n thumbClicked(thumb, index) {\n this.openPopups(index)\n }\n openPopups(index) {\n let fancyOptions = {\n type: 'html',\n baseClass: 'event-popup content-view',\n idleTime: false,\n video: { autoStart: false },\n afterShow: this.initPopupContents\n }\n $.fancybox.open(this.popups, fancyOptions, index);\n }\n initPopupContents (instance, current) {\n let carousel = current.$content[0].querySelector('[data-image-carousel]');\n let videos = Array.from(current.$content[0].querySelectorAll('[data-video-handler]'));\n initCarousel(carousel);\n if (videos && videos.length > 0) {\n videos.forEach((video) => {\n initVideo(video);\n })\n }\n }\n\n \n}\nexport default function () {\n new SocialMediaThumbs(document.querySelector('[data-social-media-thumbs]'));\n}\n","\nimport { locale } from './globals.js';\n\nclass PropertyMap {\n constructor (el) {\n if(!el) return false;\n this.el = el\n $(this.el).mapplic({\n source: `/assets/data/map-data-${locale.lang}.json`,\n height: 480,\n minimap: false,\n sidebar: false,\n hovertip: true,\n maxscale: 3\n });\n \n }\n\n \n}\nexport default function () {\n new PropertyMap(document.querySelector('[data-property-map]'));\n}\n","import {\n locale\n} from './modules/globals.js';\n\nimport homeHero from './modules/home-hero';\nimport homeSubHero from './modules/home-sub-hero';\nimport forms from './modules/form-handler';\nimport searchBox from './modules/search-box';\nimport tabBar from './modules/tab-bar';\nimport boxSlider from './modules/box-slider';\nimport imageCarousel from './modules/image-carousel';\nimport listFilter from './modules/list-filter';\nimport eventBrowser from './modules/event-browser';\nimport eventPopup from './modules/event-popup';\nimport smThumbs from './modules/social-media-thumbs';\nimport videoHandler from './modules/video-handler';\nimport propertyMap from './modules/property-map';\n// import dropdown from './modules/dropdown';\n\nhomeHero();\nsearchBox();\nhomeSubHero();\ntabBar();\nforms();\nboxSlider();\nimageCarousel();\nlistFilter();\neventBrowser();\neventPopup();\nsmThumbs();\nvideoHandler();\npropertyMap();\n\n$('[data-nav-trigger]').on('click', () => {\n $('html').toggleClass('show-nav');\n})\n\n$('.addthis-toggle').on('click', function () {\n $(this).toggleClass('show-tools');\n})\n\n\n$('[data-fancybox]').fancybox();\n\ntry {\n if (moment) {\n if (locale.dir == \"ltr\") {\n moment.locale('en-gb');\n } else {\n moment.locale('ar-ae');\n }\n }\n} catch {\n\n}"],"sourceRoot":""}