{"version":3,"file":"6609.b41be4fdfb91a253ed05.js","mappings":";ueACA,4gGAAAA,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,0oDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,qGAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,k7BAMA,IAAMC,EAAeC,OAAOC,sBAEtBC,EAAmBF,OAAOG,uBAG1BC,EAAe,IAAIC,sCAGzB,WAA2BC,EAAMC,EAAIC,GAArC,8EACQC,EADR,UACqBF,EADrB,aAC4BD,GACnBF,EAAaM,IAAID,GAF1B,uBAGcE,EAHd,UAGuBT,EAHvB,iBAGgDI,EAHhD,yBAGqEC,EAHrE,yBAGwFC,GAHxF,SAIsCR,OAAOY,MAAMD,GAJnD,8BAIyDE,OAJzD,OAIYC,EAJZ,OAKQV,EAAaW,IAAIN,EAASK,GALlC,gCAOWV,EAAaY,IAAIP,IAP5B,uEASMQ,EAAAA,WAEF,WAAYC,GAAI,qBACZC,KAAKD,GAAKA,EAEVC,KAAKC,aAAeF,EAAGG,QAAQC,aAE/BH,KAAKI,oBAAsBL,EAAGM,cAAc,2BAE5CL,KAAKM,eAAiB,CAClBC,eAAgBR,EAAGM,cAAc,uDACjCG,cAAeT,EAAGU,iBAAiB,qEACnCC,QAASX,EAAGM,cAAc,wCAC1BM,QAASZ,EAAGM,cAAc,yCAE9BL,KAAKY,aAAe,GACpBZ,KAAKa,iBAAmB,EACxBb,KAAKM,eAAeE,cAAcM,SAAQ,SAACC,EAAGpC,GAC1C,EAAKiC,aAAaI,KAAK,IAAIC,KAAKF,EAAEb,QAAQf,KAAO,mBAC7C4B,EAAEG,UAAUC,SAAS,YAAW,EAAKN,iBAAmBlC,GAE5DoC,EAAEK,QAAU,SAACC,GACTA,EAAEC,iBACF,EAAKC,UAAU5C,EAClB,CACJ,IAEDqB,KAAKwB,iBAELxB,KAAKM,eAAeI,QAAQU,QAAU,SAACC,GACnCA,EAAEC,iBACF,EAAKC,UAAU,EAAKV,iBAAmB,EAC1C,EACDb,KAAKM,eAAeK,QAAQS,QAAU,SAACC,GACnCA,EAAEC,iBACF,EAAKC,UAAU,EAAKV,iBAAmB,EAC1C,EAEDb,KAAKyB,aAAe,IAAIC,EAAa1B,KAAKI,oBAAqBJ,KAAKC,aACvE,yCAED,WAAiB,WAEb,GAAID,KAAKa,iBAAmB,EAAG,CAC3Bb,KAAKM,eAAeI,QAAQiB,gBAAgB,YAC5C3B,KAAKM,eAAeI,QAAQQ,UAAUU,OAAO,YAC7C,IAAIzC,GAAO0C,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,GAAU9B,KAAKY,aAAaZ,KAAKa,iBAAmB,GAAI,GAAI,CAAEkB,eAAgB,SACnG/B,KAAKM,eAAeI,QAAQsB,aAAa,OAAQ,UAAY7C,EAAO,iBAAmBa,KAAKC,cAC5FD,KAAKM,eAAeI,QAAQsB,aAAa,YAAa7C,EACzD,MACGa,KAAKM,eAAeI,QAAQQ,UAAUe,IAAI,YAC1CjC,KAAKM,eAAeI,QAAQsB,aAAa,WAAY,YACrDhC,KAAKM,eAAeI,QAAQiB,gBAAgB,QAQhD,GALA3B,KAAKM,eAAeC,eAAe2B,WAAYC,EAAAA,EAAAA,GAAOnC,KAAKY,aAAaZ,KAAKa,kBAAmB,UAChGb,KAAKM,eAAeE,cAAcM,SAAQ,SAACC,EAAGpC,GAC1CoC,EAAEG,UAAUkB,OAAO,SAAUzD,GAAK,EAAKkC,iBAC1C,IAEGb,KAAKa,iBAAoBb,KAAKY,aAAayB,OAAS,EAAI,CACxDrC,KAAKM,eAAeK,QAAQgB,gBAAgB,YAC5C3B,KAAKM,eAAeK,QAAQO,UAAUU,OAAO,YAC7C,IAAIzC,GAAO0C,EAAAA,EAAAA,IAAUC,EAAAA,EAAAA,GAAU9B,KAAKY,aAAaZ,KAAKa,iBAAmB,GAAI,GAAI,CAAEkB,eAAgB,SACnG/B,KAAKM,eAAeK,QAAQqB,aAAa,OAAQ,UAAY7C,EAAO,iBAAmBa,KAAKC,cAC5FD,KAAKM,eAAeK,QAAQqB,aAAa,YAAa7C,EACzD,MACGa,KAAKM,eAAeK,QAAQO,UAAUe,IAAI,YAC1CjC,KAAKM,eAAeK,QAAQqB,aAAa,WAAY,YACrDhC,KAAKM,eAAeK,QAAQgB,gBAAgB,OAEnD,0BAED,SAAUW,GACN,IAAIC,EAAQvC,KACZ,GAAIsC,GAAuBtC,KAAKa,iBAAkB,CAE9C,IAAI2B,EAAI,IAAIC,eACZD,EAAEE,KAAK,MAAP,UAAiB9D,EAAjB,kBAAuCoB,KAAKY,aAAa0B,GAAqBK,cAA9E,yBAA4G3C,KAAKC,eAAgB,GACjIuC,EAAEI,mBAAqB,WAAY,WACX,GAAhBJ,EAAEK,YAA+B,KAAZL,EAAEM,SAC3BP,EAAMnC,oBAAoB2C,MAAMC,QAAU,EAE1CT,EAAMnC,oBAAoB6C,gBAAkB,SAAC5B,GACrCA,EAAE6B,QAAUX,EAAMnC,sBAClBmC,EAAMnC,oBAAoB6C,gBAAkB,KAC5CV,EAAMnC,oBAAoB8B,UAAYM,EAAEW,aACxCZ,EAAMnC,oBAAoB2C,MAAMC,QAAU,EAC1CT,EAAM1B,iBAAmByB,EACzBC,EAAMf,iBAEN,EAAKC,aAAe,KAEpB,EAAKA,aAAe,IAAIC,EAAaa,EAAMnC,oBAAqBmC,EAAMtC,cAE7E,EACJ,EACDuC,EAAEY,MACL,CACJ,OAnGCtD,GAuGA4B,EAAAA,WACF,WAAY3B,EAAIE,GAAc,qBAC1BD,KAAKD,GAAKA,EACVC,KAAKC,aAAeA,EAEpBD,KAAKqD,UAAY,CACbtD,GAAIA,EAAGM,cAAc,eACrBiD,UAAU,EACVC,QAASxD,EAAGM,cAAc,wBAC1BmD,MAAOzD,EAAGM,cAAc,wBACxBoD,YAAa1D,EAAGM,cAAc,sCAGlCL,KAAK0D,QAAU,GACf1D,KAAK2D,mBAAqB,EAC1B5D,EAAGU,iBAAiB,qBAAqBK,SAAQ,SAAC8C,EAAGjF,GACjD,IAAIkF,EAAS,CACT9D,GAAI6D,EACJE,MAAOnF,EACPQ,KAAMyE,EAAE1D,QAAQf,KAChBE,aAAcuE,EAAE1D,QAAQb,aACxBiE,UAAU,EACVS,MAAOH,EAAEI,cAAcjB,MAAMgB,OAEjCF,EAAO9D,GAAGqB,QAAU,SAACC,GACbwC,EAAOP,UACP,EAAKW,eACL,EAAKN,mBAAqB,IAEtB,EAAKN,UAAUC,UAEf,EAAKI,QAAQ,EAAKC,mBAAmBL,UAAW,EAChD,EAAKI,QAAQ,EAAKC,mBAAmB5D,GAAGiC,aAAa,iBAAiB,GAEtE,EAAKiC,cAAa,WAAQ,EAAKC,YAAYL,EAAS,KAGpD,EAAKK,YAAYL,GAErBA,EAAOP,UAAW,EAClBO,EAAO9D,GAAGiC,aAAa,iBAAiB,GACxC,EAAK2B,kBAAoBE,EAAOC,MAEvC,EACD,EAAKJ,QAAQ1C,KAAK6C,EACrB,IAED7D,KAAKqD,UAAUI,YAAYrC,QAAU,WACjC,EAAK6C,eACL,EAAKP,QAAQ,EAAKC,mBAAmB5D,GAAGoE,OAC3C,EAEDnE,KAAKoE,iBAAmB,EACxBpE,KAAKqE,QAAU,YAAc,IAAXC,EAAW,EAAXA,KACVA,EAAKC,UACD,EAAKlB,UAAUC,WACf,EAAKkB,gBAEA,EAAKJ,iBAAmBK,EAAAA,EAAAA,IAAiBH,EAAKI,GAAKD,EAAAA,EAAAA,IAChD,EAAKL,kBAAoBK,EAAAA,EAAAA,IAAiBH,EAAKI,EAAID,EAAAA,EAAAA,KACvD,EAAKE,YAAY,EAAKjB,QAAQ,EAAKC,qBAG3C,EAAKS,iBAAmBE,EAAKI,EAEpC,GACDE,EAAAA,EAAAA,IAAc5E,KAAKqE,QACtB,sCAED,SAAYR,GACR,GAAc,MAAVA,EAAJ,CAGA,IAAIE,EAAQF,EAAOE,MACflF,OAAOgG,YAAcJ,EAAAA,EAAAA,KACrBV,EAAgC,EAAvBe,KAAKC,KAAKhB,EAAQ,IAE/B/D,KAAKqD,UAAUtD,GAAGgD,MAAMgB,MAAQA,CAL/B,CAMJ,4BAED,SAAYF,GAAQ,WAChBmB,QAAQC,IAAI,gBACZjF,KAAK2E,YAAYd,YAlME,EAAZqB,EAAAA,kCAmMPA,CAAYrB,EAAO1E,KAAMa,KAAKC,aAAc4D,EAAOxE,cAAc8F,MAAK,SAACC,GACnE,EAAK/B,UAAUG,MAAMtB,UAAYkD,EAEjC,EAAK/B,UAAUtD,GAAGiC,aAAa,iBAAiB,GAChD,EAAKqB,UAAUtD,GAAGkD,gBAAkB,SAAC5B,GAC7BA,EAAE6B,QAAU,EAAKG,UAAUtD,KAE3B,EAAKsD,UAAUG,MAAMnD,cAAc,aAAa8D,QAChD,EAAKd,UAAUtD,GAAGkD,gBAAkB,KAE3C,EAED,EAAKuB,eACL,EAAKnB,UAAUC,UAAW,CAC7B,GACJ,6BAED,SAAa+B,GAAU,WACnBL,QAAQC,IAAI,iBACZjF,KAAKqD,UAAUC,UAAW,EAC1BtD,KAAKqD,UAAUtD,GAAGiC,aAAa,iBAAiB,GAEhDhC,KAAKqD,UAAUtD,GAAGkD,gBAAkB,SAAC5B,GAC7BA,EAAE6B,QAAU,EAAKG,UAAUtD,IAAwB,cAAlBsB,EAAEiE,eACX,mBAAbD,GACPA,IACA,EAAKhC,UAAUtD,GAAGkD,gBAAkB,MAEpC,EAAKI,UAAUtD,GAAGgD,MAAMgB,MAAQ,MAG3C,EACD/D,KAAKqD,UAAUtD,GAAGgD,MAAMwC,UAAY,EAEpCvF,KAAK0D,QAAQ1D,KAAK2D,mBAAmBL,UAAW,EAChDtD,KAAK0D,QAAQ1D,KAAK2D,mBAAmB5D,GAAGiC,aAAa,iBAAiB,EACzE,6BAED,WACQhC,KAAKqD,UAAUtD,GAAGgD,MAAMwC,WAAavF,KAAKqD,UAAUE,QAAQiC,aAAe,OAAMxF,KAAKqD,UAAUtD,GAAGgD,MAAMwC,UAAYvF,KAAKqD,UAAUE,QAAQiC,aAAe,KAClK,OA3HC9D,GAgIC,SAAS+D,EAAWC,GACvBA,EAAS5E,SAAQ,SAAC6E,GAEQ,IAAlBA,EAAKC,UACL,IAAI9F,EAAqB6F,EAEhC,GACJ","sources":["webpack://nationalspacecentre.web/./wwwroot/app/src/modules/opening-times-calendar/opening-times-calendar.js"],"sourcesContent":["import { addMonths, subMonths, format, formatISO, isThisMonth, isSameDay } from 'date-fns';\r\nimport { watchViewport, unwatchViewport } from 'tornis';\r\nimport { breakPoint } from '../../js/config';\r\n\r\nimport './opening-times-calendar.scss';\r\n\r\n// endpoint where month data comes from\r\nconst monthDataURL = window.calendarMonthEndpoint;\r\n// endpoint where day detail comes from\r\nconst dayDetailDataURL = window.calendarDetailEndpoint;\r\n\r\n// Memory cache of previously fetched dates\r\nconst detailsCache = new Map();\r\n\r\n// Get from the cache, or make a new fetch request\r\nasync function getOtDetail(date, id, resourceView) {\r\n let cacheID = `${id}--${date}`; // unique id for date and attraction\r\n if (!detailsCache.has(cacheID)) {\r\n const url = `${dayDetailDataURL}?date=${date}&attractionId=${id}&resourceView=${resourceView}`;\r\n let detailHtml = await (await window.fetch(url)).text();\r\n detailsCache.set(cacheID, detailHtml);\r\n }\r\n return detailsCache.get(cacheID);\r\n}\r\nclass OpeningTimesCalendar {\r\n\r\n constructor(el) {\r\n this.el = el;\r\n // get attraction id to use in queries for data\r\n this.attractionID = el.dataset.attractionId;\r\n // store month listing container element\r\n this.monthContentWrapper = el.querySelector('ol.opening-times--month');\r\n // month switching stuff\r\n this.monthsControls = {\r\n dropdownToggle: el.querySelector('.opening-times--controls .dropdown .dropdown-toggle'),\r\n dropdownLinks: el.querySelectorAll('.opening-times--controls .dropdown .dropdown-menu a.dropdown-item'),\r\n prevBtn: el.querySelector('.opening-times--controls .prev-month'),\r\n nextBtn: el.querySelector('.opening-times--controls .next-month')\r\n }\r\n this.monthOptions = []; // store the data-date values of the dropdown options\r\n this.monthOptionIndex = 0\r\n this.monthsControls.dropdownLinks.forEach((l, i) => {\r\n this.monthOptions.push(new Date(l.dataset.date + 'T00:00:00.000Z'));\r\n if (l.classList.contains('active')) this.monthOptionIndex = i;\r\n // add behaviour\r\n l.onclick = (e) => {\r\n e.preventDefault();\r\n this.loadMonth(i);\r\n };\r\n });\r\n // update controls\r\n this.updateControls();\r\n // add btn controls behaviours\r\n this.monthsControls.prevBtn.onclick = (e) => {\r\n e.preventDefault();\r\n this.loadMonth(this.monthOptionIndex - 1);\r\n };\r\n this.monthsControls.nextBtn.onclick = (e) => {\r\n e.preventDefault();\r\n this.loadMonth(this.monthOptionIndex + 1);\r\n };\r\n // process the initial month content\r\n this.monthContent = new MonthContent(this.monthContentWrapper, this.attractionID);\r\n }\r\n\r\n updateControls() {\r\n // prev button\r\n if (this.monthOptionIndex > 0) {\r\n this.monthsControls.prevBtn.removeAttribute('disabled');\r\n this.monthsControls.prevBtn.classList.remove('disabled');\r\n let date = formatISO(subMonths(this.monthOptions[this.monthOptionIndex - 1], 1), { representation: 'date' });\r\n this.monthsControls.prevBtn.setAttribute('href', \"?month=\" + date + \"&attractionId=\" + this.attractionID);\r\n this.monthsControls.prevBtn.setAttribute('data-date', date);\r\n } else {\r\n this.monthsControls.prevBtn.classList.add('disabled');\r\n this.monthsControls.prevBtn.setAttribute('disabled', 'disabled');\r\n this.monthsControls.prevBtn.removeAttribute('href');\r\n }\r\n // dropdown\r\n this.monthsControls.dropdownToggle.innerHTML = format(this.monthOptions[this.monthOptionIndex], 'MMMM y');\r\n this.monthsControls.dropdownLinks.forEach((l, i) => {\r\n l.classList.toggle('active', i == this.monthOptionIndex);\r\n });\r\n // next button\r\n if (this.monthOptionIndex < (this.monthOptions.length - 1)) {\r\n this.monthsControls.nextBtn.removeAttribute('disabled');\r\n this.monthsControls.nextBtn.classList.remove('disabled');\r\n let date = formatISO(subMonths(this.monthOptions[this.monthOptionIndex + 1], 1), { representation: 'date' });\r\n this.monthsControls.nextBtn.setAttribute('href', \"?month=\" + date + \"&attractionId=\" + this.attractionID);\r\n this.monthsControls.nextBtn.setAttribute('data-date', date);\r\n } else {\r\n this.monthsControls.nextBtn.classList.add('disabled');\r\n this.monthsControls.nextBtn.setAttribute('disabled', 'disabled');\r\n this.monthsControls.nextBtn.removeAttribute('href');\r\n }\r\n }\r\n\r\n loadMonth(newMonthOptionIndex) {\r\n let _this = this;\r\n if (newMonthOptionIndex != this.monthOptionIndex) {\r\n // load\r\n let r = new XMLHttpRequest();\r\n r.open('GET', `${monthDataURL}?month=${this.monthOptions[newMonthOptionIndex].toISOString()}&attractionId=${this.attractionID}`, true);\r\n r.onreadystatechange = function () {\r\n if (r.readyState != 4 || r.status != 200) return;\r\n _this.monthContentWrapper.style.opacity = 0;\r\n // listen for end of opacity transition\r\n _this.monthContentWrapper.ontransitionend = (e) => {\r\n if (e.target == _this.monthContentWrapper) {\r\n _this.monthContentWrapper.ontransitionend = null;\r\n _this.monthContentWrapper.innerHTML = r.responseText;\r\n _this.monthContentWrapper.style.opacity = 1;\r\n _this.monthOptionIndex = newMonthOptionIndex;\r\n _this.updateControls()\r\n // reset\r\n this.monthContent = null;\r\n // start over\r\n this.monthContent = new MonthContent(_this.monthContentWrapper, _this.attractionID);\r\n }\r\n }\r\n };\r\n r.send();\r\n }\r\n }\r\n\r\n}\r\n\r\nclass MonthContent {\r\n constructor(el, attractionID) {\r\n this.el = el;\r\n this.attractionID = attractionID;\r\n // day detail element\r\n this.dayDetail = {\r\n el: el.querySelector('.day-detail'),\r\n expanded: false,\r\n wrapper: el.querySelector('.day-detail--wrapper'),\r\n inner: el.querySelector('.day-detail--content'),\r\n closeButton: el.querySelector('.day-detail--wrapper button.close')\r\n };\r\n // buttons\r\n this.buttons = [];\r\n this.buttonActiveIndex = -1;\r\n el.querySelectorAll('button[data-date]').forEach((b, i) => {\r\n let button = {\r\n el: b,\r\n index: i,\r\n date: b.dataset.date,\r\n resourceView: b.dataset.resourceView,\r\n expanded: false,\r\n order: b.parentElement.style.order\r\n };\r\n button.el.onclick = (e) => {\r\n if (button.expanded) {\r\n this.closeDetails();\r\n this.buttonActiveIndex = -1;\r\n } else {\r\n if (this.dayDetail.expanded) {\r\n // turn off old button\r\n this.buttons[this.buttonActiveIndex].expanded = false;\r\n this.buttons[this.buttonActiveIndex].el.setAttribute('aria-expanded', false);\r\n // close existing then open new day detail\r\n this.closeDetails(() => { this.openDetails(button) });\r\n } else {\r\n // open new day detail\r\n this.openDetails(button);\r\n }\r\n button.expanded = true;\r\n button.el.setAttribute('aria-expanded', true);\r\n this.buttonActiveIndex = button.index;\r\n }\r\n };\r\n this.buttons.push(button);\r\n });\r\n // details close button\r\n this.dayDetail.closeButton.onclick = () => {\r\n this.closeDetails();\r\n this.buttons[this.buttonActiveIndex].el.focus();\r\n }\r\n // watch for viewport changes - update heights and/or order values\r\n this.watcherLastWidth = 0;\r\n this.watcher = ({ size }) => {\r\n if (size.changed) {\r\n if (this.dayDetail.expanded) {\r\n this.fitToContent();\r\n // logical throttle, we only need to call again on a breakPoint change\r\n if ((this.watcherLastWidth < breakPoint.MD && size.x >= breakPoint.MD)\r\n || (this.watcherLastWidth >= breakPoint.MD && size.x < breakPoint.MD)) {\r\n this.updateOrder(this.buttons[this.buttonActiveIndex]);\r\n }\r\n }\r\n this.watcherLastWidth = size.x;\r\n }\r\n }\r\n watchViewport(this.watcher);\r\n }\r\n\r\n updateOrder(button) {\r\n if (button == null) {\r\n return;\r\n }\r\n let order = button.order;\r\n if (window.innerWidth >= breakPoint.MD) {\r\n order = (Math.ceil(order / 7) * 7);\r\n }\r\n this.dayDetail.el.style.order = order;\r\n }\r\n\r\n openDetails(button) {\r\n console.log('open details');\r\n this.updateOrder(button);\r\n getOtDetail(button.date, this.attractionID, button.resourceView).then((content) => {\r\n this.dayDetail.inner.innerHTML = content;\r\n // expand area\r\n this.dayDetail.el.setAttribute('aria-expanded', true);\r\n this.dayDetail.el.ontransitionend = (e) => {\r\n if (e.target == this.dayDetail.el) {\r\n // set focus on first link or button inside details element\r\n this.dayDetail.inner.querySelector('a, button').focus();\r\n this.dayDetail.el.ontransitionend = null;\r\n }\r\n }\r\n // animate in\r\n this.fitToContent();\r\n this.dayDetail.expanded = true;\r\n });\r\n }\r\n\r\n closeDetails(callback) {\r\n console.log('close details');\r\n this.dayDetail.expanded = false;\r\n this.dayDetail.el.setAttribute('aria-expanded', false);\r\n // animate out\r\n this.dayDetail.el.ontransitionend = (e) => {\r\n if (e.target == this.dayDetail.el && e.propertyName == 'max-height') {\r\n if (typeof callback === 'function') {\r\n callback();\r\n this.dayDetail.el.ontransitionend = null;\r\n } else {\r\n this.dayDetail.el.style.order = '100';\r\n }\r\n }\r\n };\r\n this.dayDetail.el.style.maxHeight = 0;\r\n // turn off active button\r\n this.buttons[this.buttonActiveIndex].expanded = false;\r\n this.buttons[this.buttonActiveIndex].el.setAttribute('aria-expanded', false);\r\n }\r\n\r\n fitToContent() {\r\n if (this.dayDetail.el.style.maxHeight != this.dayDetail.wrapper.offsetHeight + 'px') this.dayDetail.el.style.maxHeight = this.dayDetail.wrapper.offsetHeight + 'px';\r\n }\r\n\r\n}\r\n\r\n// export the default function to create\r\nexport function createFrom(wrappers) {\r\n wrappers.forEach((node) => {\r\n // if node is an element\r\n if (node.nodeType === 1) {\r\n new OpeningTimesCalendar(node);\r\n }\r\n });\r\n}"],"names":["i","monthDataURL","window","calendarMonthEndpoint","dayDetailDataURL","calendarDetailEndpoint","detailsCache","Map","date","id","resourceView","cacheID","has","url","fetch","text","detailHtml","set","get","OpeningTimesCalendar","el","this","attractionID","dataset","attractionId","monthContentWrapper","querySelector","monthsControls","dropdownToggle","dropdownLinks","querySelectorAll","prevBtn","nextBtn","monthOptions","monthOptionIndex","forEach","l","push","Date","classList","contains","onclick","e","preventDefault","loadMonth","updateControls","monthContent","MonthContent","removeAttribute","remove","formatISO","subMonths","representation","setAttribute","add","innerHTML","format","toggle","length","newMonthOptionIndex","_this","r","XMLHttpRequest","open","toISOString","onreadystatechange","readyState","status","style","opacity","ontransitionend","target","responseText","send","dayDetail","expanded","wrapper","inner","closeButton","buttons","buttonActiveIndex","b","button","index","order","parentElement","closeDetails","openDetails","focus","watcherLastWidth","watcher","size","changed","fitToContent","breakPoint","x","updateOrder","watchViewport","innerWidth","Math","ceil","console","log","getOtDetail","then","content","callback","propertyName","maxHeight","offsetHeight","createFrom","wrappers","node","nodeType"],"sourceRoot":""}