{"version":3,"file":"grudus-timepicker.es5.js","sources":["../src/js/timeExtractor.js","../src/js/meta/utils.js","../src/js/colorStylists.js","../src/js/timepickerCreator.js","../src/js/timeFormatter.js","../src/js/meta/clockHtml.js","../src/js/meta/config.js","../src/js/clockHeader.js","../src/js/face/minutesFace.js","../src/js/face/hoursFace.js","../src/js/face/clockFaceCreator.js","../src/js/face/clockFace.js","../src/js/clock.js","../src/js/index.js"],"sourcesContent":["const hoursRegex = /^([0-1]?[0-9]|2[0-3])$/;\r\nconst minutesRegex = /^([0-5]?[0-9])$/;\r\nconst regex = /^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/;\r\n\r\nexport default function extractTime(date) {\r\n if (!date)\r\n return fromDate(new Date());\r\n else if (date instanceof Date)\r\n return fromDate(date);\r\n else if (hoursRegex.test(date.hours) && minutesRegex.test(date.minutes))\r\n return {hours: parseInt(date.hours), minutes: parseInt(date.minutes)};\r\n else if (regex.test(date))\r\n return fromRegex(date);\r\n else\r\n throw new TypeError(`INVALID FORMAT: {${JSON.stringify(date)}}.\r\n Time must be a Date or 'hh:MM' string or object with 'hours' and 'minutes' fields`);\r\n}\r\n\r\nfunction fromRegex(date) {\r\n const parsed = regex.exec(date);\r\n return {hours: parseInt(parsed[1]), minutes: parseInt(parsed[2])};\r\n}\r\n\r\nfunction fromDate(date) {\r\n return {hours: date.getHours(), minutes: date.getMinutes()};\r\n}","function toRadians(angle) {\r\n return angle * (Math.PI / 180);\r\n}\r\n\r\nfunction toDegrees(angle) {\r\n return angle * (180 / Math.PI);\r\n}\r\n\r\nfunction findMousePosition(event, object) {\r\n const rect = object.getBoundingClientRect();\r\n return {\r\n x: event.clientX - rect.left,\r\n y: event.clientY - rect.top\r\n };\r\n}\r\n\r\nfunction delay(t) {\r\n return new Promise(function (resolve) {\r\n setTimeout(resolve, t);\r\n });\r\n}\r\n\r\nPromise.delay = function (fn, t) {\r\n if (!t) {\r\n t = fn;\r\n fn = function () {\r\n };\r\n }\r\n return delay(t).then(fn);\r\n};\r\n\r\nPromise.prototype.delay = function (fn, t) {\r\n return this.then(function () {\r\n return Promise.delay(fn, t);\r\n });\r\n};\r\n\r\nexport default {toRadians, toDegrees, findMousePosition};","import {css, DOM} from \"./meta/config\";\r\n\r\nexport default function styleColors(options) {\r\n document.getElementById(DOM.headerId).style.background = options.headerBackground;\r\n document.getElementById(DOM.headerId).style.color = options.headerColor;\r\n document.getElementById(DOM.wrapperId).style.background = options.wrapperBackground;\r\n document.getElementById(DOM.clockId).style.background = options.clockBackground;\r\n document.getElementById(DOM.handId).style.background = options.handColor;\r\n document.getElementById(DOM.dotId).style.background = options.handColor;\r\n document.getElementById(DOM.buttonsId).style.background = options.footerBackground;\r\n document.getElementById(DOM.submitId).style.color = options.submitColor;\r\n document.getElementById(DOM.cancelId).style.color = options.cancelColor;\r\n\r\n changeColor(css.clockItem, options.clockItemColor);\r\n changeColor(css.inner, options.clockItemInnerColor);\r\n changeColor(css.outer, options.handColor, \"borderColor\");\r\n}\r\n\r\nfunction changeColor(className, color, property = \"color\") {\r\n const items = Array.from(document.getElementsByClassName(className));\r\n for (const item of items)\r\n item.style[property] = color;\r\n}\r\n","import clockHtml from \"./meta/clockHtml\";\r\nimport Config from \"./meta/config\";\r\nimport Clock from \"./clock\";\r\nimport styleColors from \"./colorStylists\";\r\nimport getTime from \"./timeExtractor\";\r\n\r\n\r\nexport default function showPicker(config = {}) {\r\n createDom();\r\n\r\n const options = Object.assign({}, Config.clockConfig, config);\r\n const time = getTime(options.time);\r\n\r\n const clock = new Clock(options, time);\r\n styleColors(options);\r\n clock.onStart();\r\n}\r\n\r\n\r\nfunction createDom() {\r\n if (document.getElementById(Config.clockId))\r\n throw Error(\"There is already one running grudus-timepicker instance!\");\r\n\r\n const clockDiv = document.createElement(\"div\");\r\n clockDiv.id = Config.clockId;\r\n clockDiv.innerHTML = clockHtml;\r\n document.body.appendChild(clockDiv);\r\n}\r\n","import extractTime from \"./timeExtractor\";\r\n\r\nexport default function (time) {\r\n const extractedTime = extractTime(time);\r\n return (extractedTime.hours < 10 ? \"0\" + extractedTime.hours : extractedTime.hours)\r\n + \":\" + (extractedTime.minutes < 10 ? \"0\" + extractedTime.minutes : extractedTime.minutes);\r\n}","export default \"
\\n\" +\r\n\"
\\n\" +\r\n\"
\\n\" +\r\n\" 21\\n\" +\r\n\" :\\n\" +\r\n\" 37\\n\" +\r\n\"
\\n\" +\r\n\"
\\n\" +\r\n\"\\n\" +\r\n\"\\n\" +\r\n\"
\\n\" +\r\n\"
\" +\r\n\" \\n\" +\r\n\"
\\n\" +\r\n\"
\\n\" +\r\n\"
\\n\" +\r\n\"
\\n\" +\r\n\"\\n\" +\r\n\"\\n\" +\r\n\" \\n\" +\r\n\"\\n\" +\r\n\"
\";","const clockId = \"grudus-clock\";\r\n\r\nconst defaultConfig = {\r\n onSubmit: () => {\r\n },\r\n onCancel: () => {\r\n },\r\n headerBackground: \"#1976D2\",\r\n headerColor: \"#c7d6e1\",\r\n headerSelected: \"#ffffff\",\r\n wrapperBackground: \"#f0fff0\",\r\n footerBackground: \"#f0fff0\",\r\n submitColor: \"#1976D2\",\r\n cancelColor: \"#1976D2\",\r\n clockBackground: \"#CFD8DC\",\r\n clockItemColor: \"#212121\",\r\n clockItemInnerColor: \"#212121\",\r\n handColor: \"#1976D2\"\r\n};\r\n\r\nconst FaceType = {HOURS: \"hours\", MINUTES: \"minutes\"};\r\n\r\nconst css = {\r\n clock: \"g-clock\",\r\n clockItem: \"g-clock-item\",\r\n inner: \"g-clock-inner\",\r\n outer: \"g-clock-outer\",\r\n item: \"g-clock-item\",\r\n hand: \"g-hand-of-a-clock\",\r\n fadeOut: \"g-fade-out\",\r\n selected: \"g-selected\",\r\n active: \"g-active\",\r\n submit: \"g-submit\",\r\n cancel: \"g-cancel\",\r\n hour: \"g-hour\",\r\n minute: \"g-minute\"\r\n};\r\n\r\nconst DOM = {\r\n headerId: \"g-head\",\r\n hoursId: \"g-hours\",\r\n minutesId: \"g-minutes\",\r\n clockId: \"g-clock\",\r\n innerId: \"g-clock-inner\",\r\n wrapperId: \"g-clock-wrapper\",\r\n dotId: \"g-middle-dot\",\r\n handId: \"g-hand-of-a-clock\",\r\n buttonsId: \"g-buttons\",\r\n submitId: \"g-time-submit\",\r\n cancelId: \"g-time-cancel\"\r\n};\r\n\r\nexport default {clockId, clockConfig: defaultConfig, FaceType};\r\nexport {css, DOM};","import {DOM} from \"./meta/config\";\r\n\r\nexport default class ClockHeader {\r\n\r\n constructor(config) {\r\n this.options = config.options;\r\n this.time = config.time;\r\n this.onHourClicked = config.onHourClicked;\r\n this.onMinutesClicked = config.onMinutesClicked;\r\n\r\n this.initView();\r\n }\r\n\r\n initView() {\r\n this.headerHours = document.getElementById(DOM.hoursId);\r\n this.headerHours.onclick = () => {\r\n this.toggleActiveToHours();\r\n this.onHourClicked();\r\n };\r\n\r\n this.headerMinutes = document.getElementById(DOM.minutesId);\r\n this.headerMinutes.onclick = () => {\r\n this.toggleActiveToMinutes();\r\n this.onMinutesClicked();\r\n };\r\n\r\n this.updateDisplayedTime();\r\n this.toggleActiveToHours();\r\n }\r\n\r\n toggleActiveToMinutes() {\r\n this.toggleActive(this.headerHours, this.headerMinutes);\r\n }\r\n\r\n toggleActiveToHours() {\r\n this.toggleActive(this.headerMinutes, this.headerHours);\r\n }\r\n\r\n toggleActive(objectToRemoveClass, objectToAddClass) {\r\n objectToRemoveClass.style.color = this.options.headerColor;\r\n objectToAddClass.style.color = this.options.headerSelected;\r\n }\r\n\r\n updateDisplayedTime() {\r\n ClockHeader.doUpdateDisplayedTime(this.headerHours, this.time.hours);\r\n ClockHeader.doUpdateDisplayedTime(this.headerMinutes, this.time.minutes);\r\n }\r\n\r\n static doUpdateDisplayedTime(node, value) {\r\n if (value < 10)\r\n node.innerText = \"0\" + value;\r\n else node.innerText = value;\r\n }\r\n}","import Config, {css} from \"../meta/config\";\r\n\r\nexport default class MinutesFace {\r\n\r\n constructor(items, initialMinutes, updateMinutes) {\r\n this.displayed = [\"00\", \"05\", \"10\", \"15\", \"20\", \"25\", \"30\", \"35\", \"40\", \"45\", \"50\", \"55\"];\r\n this.options = items.options;\r\n this.type = Config.FaceType.MINUTES;\r\n this.selected = undefined;\r\n this.items = items;\r\n this.minutes = initialMinutes;\r\n this.updateMinutes = updateMinutes;\r\n }\r\n\r\n onEnter() {\r\n this.selected = this.findSelected(this.minutes);\r\n this.colorSelected();\r\n this.updateMinutes(this.minutes, this.minutes * 6);\r\n }\r\n\r\n onLeave() {\r\n if (this.selected) {\r\n this.removeSelected();\r\n this.selected = undefined;\r\n }\r\n }\r\n\r\n selectTime(angle) {\r\n if (this.selected)\r\n this.removeSelected();\r\n\r\n const minute = Math.round(angle / 6) % 60;\r\n this.selected = this.findSelected(minute);\r\n this.colorSelected();\r\n this.minutes = minute;\r\n this.updateMinutes(this.minutes, angle);\r\n }\r\n\r\n findSelected(minute) {\r\n return (minute % 5 === 0) ? this.items.clockItems[minute / 5] : this.items.outerClockItems[minute];\r\n }\r\n\r\n colorSelected() {\r\n if (this.isOuter()) {\r\n this.selected.classList.add(css.selected);\r\n return;\r\n }\r\n this.selected.style.background = this.options.handColor;\r\n this.selected.style.color = \"whitesmoke\";\r\n }\r\n\r\n removeSelected() {\r\n if (this.isOuter()) {\r\n this.selected.classList.remove(css.selected);\r\n return;\r\n }\r\n this.selected.style.background = \"transparent\";\r\n this.selected.style.color = this.options.clockItemColor;\r\n }\r\n\r\n isOuter() {\r\n return this.items.outerClockItems.indexOf(this.selected) > -1;\r\n }\r\n}","import Config from \"../meta/config\";\r\n\r\nexport default class HoursFace {\r\n\r\n constructor(items, initialHours, updateHours) {\r\n this.displayed = [\"12\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"10\", \"11\"];\r\n this.displayedInner = [\"00\", \"13\", \"14\", \"15\", \"16\", \"17\", \"18\", \"19\", \"20\", \"21\", \"22\", \"23\"];\r\n this.type = Config.FaceType.MINUTES;\r\n this.selected = undefined;\r\n this.options = items.options;\r\n\r\n this.items = items;\r\n this.hours = initialHours;\r\n this.updateHours = updateHours;\r\n }\r\n\r\n onEnter() {\r\n this.items.innerClockElem.style.display = \"block\";\r\n const isInnerClock = this.hours < 13 && this.hours !== 0;\r\n const hoursIndex = this.hours % 12;\r\n this.selected = isInnerClock ? this.items.clockItems[hoursIndex] : this.items.innerClockItems[hoursIndex];\r\n this.colorSelected();\r\n\r\n this.updateHours(this.hours, hoursIndex * 30, isInnerClock ? this.items.radius : this.items.radius - 50);\r\n }\r\n\r\n onLeave() {\r\n this.items.innerClockElem.style.display = \"none\";\r\n if (this.selected) {\r\n this.removeSelected();\r\n this.selected = undefined;\r\n }\r\n }\r\n\r\n selectTime(angle, elem) {\r\n if (this.selected)\r\n this.removeSelected();\r\n\r\n const index = Math.round(angle / 30) % 12;\r\n this.selected = (elem === this.items.innerClockElem\r\n ? this.items.innerClockItems\r\n : this.items.clockItems)[index];\r\n\r\n this.colorSelected();\r\n this.hours = parseInt(this.selected.innerText);\r\n const selectedAngle = Math.round(angle / 30) * 30;\r\n\r\n this.updateHours(this.hours, selectedAngle,\r\n elem === this.items.innerClockElem ? this.items.radius - 50 : this.items.radius);\r\n }\r\n\r\n colorSelected() {\r\n this.selected.style.background = this.options.handColor;\r\n this.selected.style.color = \"#ffffff\";\r\n }\r\n\r\n removeSelected() {\r\n this.selected.style.background = \"transparent\";\r\n this.selected.style.color = this.isInner()\r\n ? this.options.clockItemInnerColor\r\n : this.options.clockItemColor;\r\n }\r\n\r\n isInner() {\r\n return Array.from(this.items.innerClockItems).indexOf(this.selected) > -1;\r\n }\r\n}","import Utils from \"../meta/utils\";\r\nimport {css} from \"../meta/config\";\r\n\r\nexport default class ClockFaceCreator {\r\n\r\n constructor(clockElem, innerClockElem) {\r\n this.clockElem = clockElem;\r\n this.innerClockElem = innerClockElem;\r\n this.size = {};\r\n this.middle = {};\r\n }\r\n\r\n create(clockItems, innerClockItems, outerClockItems, face) {\r\n ClockFaceCreator.doCreate(clockItems, this.clockElem, span => span.classList.add(css.item));\r\n ClockFaceCreator.doCreate(innerClockItems, this.innerClockElem, (span, i) => {\r\n span.classList.add(css.item, css.inner);\r\n span.innerText = face.displayedInner[i];\r\n });\r\n\r\n for (let i = 0; i < 60; i++) {\r\n const span = document.createElement(\"span\");\r\n span.classList.add(css.outer);\r\n outerClockItems.push(span);\r\n this.clockElem.appendChild(span);\r\n }\r\n }\r\n\r\n static doCreate(clockItems, clockElem, fun) {\r\n for (let i = 0; i < 12; i++) {\r\n const span = document.createElement(\"span\");\r\n fun(span, i);\r\n clockItems.push(span);\r\n clockElem.appendChild(span);\r\n }\r\n }\r\n\r\n calculateSize(clockItems, innerClockItems, outerClockItems) {\r\n this.size.width = this.clockElem.offsetWidth;\r\n this.size.height = this.clockElem.offsetHeight;\r\n this.middle.x = this.size.width / 2;\r\n this.middle.y = this.size.height / 2;\r\n this.itemsRadius = this.size.width / 2 - 20;\r\n\r\n const innerWidth = this.innerClockElem.offsetWidth;\r\n const innerHeight = this.innerClockElem.offsetHeight;\r\n const middleX = innerWidth / 2;\r\n const middleY = innerHeight / 2;\r\n\r\n ClockFaceCreator.doCalculateSize(this.middle.x, this.middle.y, this.itemsRadius, clockItems);\r\n ClockFaceCreator.doCalculateSize(middleX, middleY, this.itemsRadius - 40, innerClockItems);\r\n ClockFaceCreator.doCalculateSize(this.middle.x, this.middle.y, this.itemsRadius, outerClockItems);\r\n }\r\n\r\n static doCalculateSize(middleX, middleY, radius, items) {\r\n const angleQuantum = 360 / items.length;\r\n for (let i = 0; i < items.length; i++) {\r\n\r\n const angle = Utils.toRadians(i * angleQuantum);\r\n const item = items[i];\r\n const itemWidth = item.offsetWidth;\r\n const itemHeight = item.offsetHeight;\r\n\r\n item.style.left = ((middleX + Math.sin(angle) * radius) - itemWidth / 2) + \"px\";\r\n item.style.bottom = ((middleY + Math.cos(angle) * radius) - itemHeight / 2) + \"px\";\r\n }\r\n }\r\n}","import MinutesFace from \"./minutesFace\";\r\nimport HoursFace from \"./hoursFace\";\r\nimport Utils from \"../meta/utils\";\r\nimport Config, {css, DOM} from \"../meta/config\";\r\nimport ClockFaceCreator from \"./clockFaceCreator\";\r\n\r\nexport default class ClockFace {\r\n\r\n constructor(options, initialTime, onTimeUpdate) {\r\n this.options = options;\r\n this.time = initialTime;\r\n this.onTimeUpdate = onTimeUpdate;\r\n this.isMouseDown = false;\r\n this.clockItems = [];\r\n this.innerClockItems = [];\r\n this.outerClockItems = [];\r\n this.size = {};\r\n this.middle = {};\r\n\r\n this.initViews();\r\n this.initTimeFaces(initialTime);\r\n this.createFace();\r\n\r\n this.hoursFace.items.radius = this.itemsRadius;\r\n\r\n this.currentFace = this.hoursFace;\r\n this.changeDisplayed(this.currentFace.displayed);\r\n }\r\n\r\n initViews() {\r\n this.clockElem = document.getElementById(DOM.clockId);\r\n this.innerClockElem = document.getElementById(DOM.innerId);\r\n this.handOfAClock = document.getElementById(DOM.handId);\r\n\r\n this.clockElem.onmousedown = () => this.isMouseDown = true;\r\n this.clockElem.onmouseup = () => {this.isMouseDown = false;\r\n this.toggleToMinutes();\r\n };\r\n\r\n this.handOfAClock.onmouseup = (e) => e.stopPropagation();\r\n this.handOfAClock.onmousemove = (e) => e.stopPropagation();\r\n this.handOfAClock.onclick = (e) => e.stopPropagation();\r\n\r\n this.clockElem.onmousemove = (e) => this.selectTime(e, false, this.clockElem);\r\n this.clockElem.onclick = (e) => this.selectTime(e, true, this.clockElem);\r\n\r\n this.innerClockElem.onmousemove = (e) => this.selectTime(e, false, this.innerClockElem);\r\n this.innerClockElem.onclick = (e) => this.selectTime(e, true, this.innerClockElem);\r\n }\r\n\r\n initTimeFaces(initialTime) {\r\n this.minutesFace = new MinutesFace({\r\n options: this.options,\r\n clockItems: this.clockItems,\r\n outerClockItems: this.outerClockItems\r\n }, initialTime.minutes, (minutes, angle) => this.updateMinutes(minutes, angle));\r\n\r\n this.hoursFace = new HoursFace({\r\n options: this.options,\r\n innerClockItems: this.innerClockItems,\r\n clockItems: this.clockItems,\r\n innerClockElem: this.innerClockElem\r\n }, initialTime.hours, (hours, angle, radius) => this.updateHours(hours, angle, radius));\r\n }\r\n\r\n onStart() {\r\n this.currentFace.onEnter();\r\n }\r\n\r\n createFace() {\r\n const clockFaceCreator = new ClockFaceCreator(this.clockElem, this.innerClockElem);\r\n clockFaceCreator.create(this.clockItems, this.innerClockItems, this.outerClockItems, this.hoursFace);\r\n clockFaceCreator.calculateSize(this.clockItems, this.innerClockItems, this.outerClockItems);\r\n\r\n this.size = clockFaceCreator.size;\r\n this.middle = clockFaceCreator.middle;\r\n this.itemsRadius = clockFaceCreator.itemsRadius;\r\n }\r\n\r\n selectTime(event, isMouseDown, elem) {\r\n if (!(isMouseDown || this.isMouseDown))\r\n return;\r\n const mouse = Utils.findMousePosition(event, this.clockElem);\r\n const x = mouse.x - this.middle.x;\r\n const y = this.middle.y - mouse.y;\r\n let angle = 90 - Utils.toDegrees(Math.atan(y / x));\r\n if (x < 0) angle += 180;\r\n\r\n this.currentFace.selectTime(angle, elem);\r\n event.stopPropagation();\r\n }\r\n\r\n changeDisplayed(array) {\r\n for (let i = 0; i < this.clockItems.length; i++)\r\n this.clockItems[i].innerText = array[i];\r\n }\r\n\r\n onEachClockElement(fun) {\r\n [].forEach.call(this.clockItems, c => fun(c));\r\n }\r\n\r\n updateMinutes(minutes, angle) {\r\n this.time.minutes = minutes;\r\n this.calculateHandOfTheClock(angle, this.itemsRadius);\r\n this.onTimeUpdate(this.time, Config.FaceType.MINUTES);\r\n }\r\n\r\n updateHours(hours, angle, radius) {\r\n this.time.hours = hours;\r\n this.calculateHandOfTheClock(angle, radius);\r\n this.onTimeUpdate(this.time, Config.FaceType.HOURS);\r\n }\r\n\r\n calculateHandOfTheClock(angle, size = this.itemsRadius) {\r\n this.handOfAClock.style.transform = `rotate(${angle - 90}deg)`;\r\n this.handOfAClock.style.width = size + \"px\";\r\n }\r\n\r\n toggleToHours() {\r\n this.minutesFace.onLeave();\r\n this.toggleTime(this.hoursFace);\r\n }\r\n\r\n toggleToMinutes() {\r\n this.hoursFace.onLeave();\r\n this.toggleTime(this.minutesFace);\r\n }\r\n\r\n toggleTime(face) {\r\n if (this.currentFace !== face) {\r\n this.onEachClockElement(c => c.classList.add(css.fadeOut));\r\n this.handOfAClock.classList.add(css.fadeOut);\r\n Promise.delay(() => {\r\n this.onEachClockElement(c => c.classList.remove(css.fadeOut));\r\n this.handOfAClock.classList.remove(css.fadeOut);\r\n this.changeDisplayed(face.displayed);\r\n this.currentFace = face;\r\n this.onEachClockElement(c => this.removeSelected(c));\r\n face.onEnter();\r\n }, 300);\r\n }\r\n }\r\n\r\n removeSelected(c) {\r\n c.classList.remove(css.selected);\r\n c.style.background = \"transparent\";\r\n c.style.color = this.options.clockItemColor;\r\n }\r\n}","import ClockHeader from \"./clockHeader\";\r\nimport ClockFace from \"./face/clockFace\";\r\nimport Config, {DOM} from \"./meta/config\";\r\nimport formatTime from \"./timeFormatter\";\r\n\r\nexport default class Clock {\r\n\r\n constructor(options, time) {\r\n this.options = options;\r\n\r\n this.initView();\r\n this.time = time;\r\n this.initElements();\r\n }\r\n\r\n initView() {\r\n this.submitButton = document.getElementById(DOM.submitId);\r\n this.submitButton.onclick = () => {\r\n const time = this.time;\r\n time.formatted = () => formatTime(time);\r\n this.options.onSubmit(time);\r\n Clock.dispose();\r\n };\r\n\r\n this.cancelButton = document.getElementById(DOM.cancelId);\r\n this.cancelButton.onclick = () => {\r\n this.options.onCancel();\r\n Clock.dispose();\r\n };\r\n }\r\n\r\n initElements() {\r\n this.header = new ClockHeader({\r\n options: this.options,\r\n time: this.time,\r\n onHourClicked: () => this.toggleToHours(),\r\n onMinutesClicked: () => this.toggleToMinutes()\r\n });\r\n this.clockFace = new ClockFace(this.options, this.time, (time, type) => this.onTimeUpdate(time, type));\r\n }\r\n\r\n onStart() {\r\n this.clockFace.onStart();\r\n }\r\n\r\n toggleToHours() {\r\n this.clockFace.toggleToHours();\r\n }\r\n\r\n toggleToMinutes() {\r\n this.clockFace.toggleToMinutes();\r\n }\r\n\r\n onTimeUpdate(time, type) {\r\n this.time = time;\r\n this.header.time = time;\r\n this.header.updateDisplayedTime();\r\n if (type === Config.FaceType.MINUTES)\r\n this.header.toggleActiveToMinutes();\r\n\r\n }\r\n\r\n static dispose() {\r\n document.body.removeChild(document.getElementById(Config.clockId));\r\n }\r\n}","import formatTime from \"./timeFormatter\";\r\nimport showPicker from \"./timepickerCreator\";\r\n\r\nexport default {\r\n showPicker: (config) => showPicker(config),\r\n format: (time) => formatTime(time)\r\n};\r\n\r\n"],"names":["extractTime","date","Date","fromDate","hoursRegex","test","hours","minutesRegex","minutes","parseInt","regex","fromRegex","TypeError","JSON","stringify","parsed","exec","getHours","getMinutes","delay","t","Promise","resolve","styleColors","options","getElementById","DOM","headerId","style","background","headerBackground","color","headerColor","wrapperId","wrapperBackground","clockId","clockBackground","handId","handColor","dotId","buttonsId","footerBackground","submitId","submitColor","cancelId","cancelColor","css","clockItem","clockItemColor","inner","clockItemInnerColor","outer","changeColor","className","property","items","Array","from","document","getElementsByClassName","showPicker","config","Object","assign","Config","clockConfig","time","getTime","clock","Clock","onStart","createDom","Error","clockDiv","createElement","id","innerHTML","clockHtml","body","appendChild","extractedTime","FaceType","HOURS","MINUTES","ClockHeader","onHourClicked","onMinutesClicked","initView","headerHours","hoursId","onclick","toggleActiveToHours","headerMinutes","minutesId","toggleActiveToMinutes","updateDisplayedTime","toggleActive","this","objectToRemoveClass","objectToAddClass","headerSelected","doUpdateDisplayedTime","node","value","innerText","MinutesFace","initialMinutes","updateMinutes","displayed","type","selected","undefined","findSelected","colorSelected","removeSelected","angle","minute","Math","round","clockItems","outerClockItems","isOuter","classList","add","remove","indexOf","HoursFace","initialHours","updateHours","displayedInner","innerClockElem","display","isInnerClock","hoursIndex","innerClockItems","radius","elem","index","selectedAngle","isInner","fn","then","prototype","toRadians","PI","toDegrees","findMousePosition","event","object","rect","getBoundingClientRect","clientX","left","clientY","top","clockElem","size","middle","face","doCreate","span","item","i","push","width","offsetWidth","height","offsetHeight","x","y","itemsRadius","middleX","middleY","doCalculateSize","fun","angleQuantum","length","Utils","itemWidth","itemHeight","sin","bottom","cos","ClockFace","initialTime","onTimeUpdate","isMouseDown","initViews","initTimeFaces","createFace","hoursFace","currentFace","changeDisplayed","innerId","handOfAClock","onmousedown","_this","onmouseup","toggleToMinutes","e","stopPropagation","onmousemove","selectTime","minutesFace","_this2","onEnter","clockFaceCreator","ClockFaceCreator","create","calculateSize","mouse","atan","array","forEach","call","c","calculateHandOfTheClock","transform","onLeave","toggleTime","onEachClockElement","fadeOut","_this3","initElements","submitButton","formatted","formatTime","onSubmit","dispose","cancelButton","onCancel","header","toggleToHours","clockFace","removeChild"],"mappings":"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"}