timepicker-ui 4.2.2 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -805
- package/dist/index.cjs +2 -2
- package/dist/index.d.ts +7 -1
- package/dist/index.js +2 -2
- package/dist/index.umd.js +1 -1
- package/dist/plugins/range.cjs +1 -1
- package/dist/plugins/range.js +1 -1
- package/dist/plugins/range.umd.js +1 -1
- package/dist/plugins/timezone.cjs +1 -1
- package/dist/plugins/timezone.js +1 -1
- package/dist/plugins/timezone.umd.js +1 -1
- package/dist/plugins/wheel.cjs +1 -1
- package/dist/plugins/wheel.js +1 -1
- package/dist/plugins/wheel.umd.js +1 -1
- package/package.json +1 -3
package/dist/index.cjs
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
"use strict";var Ae=Object.defineProperty;var tt=Object.getOwnPropertyDescriptor;var it=Object.getOwnPropertyNames;var nt=Object.prototype.hasOwnProperty;var rt=(o,e)=>{for(var t in e)Ae(o,t,{get:e[t],enumerable:!0})},st=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of it(e))!nt.call(o,n)&&n!==t&&Ae(o,n,{get:()=>e[n],enumerable:!(i=tt(e,n))||i.enumerable});return o};var ot=o=>st(Ae({},"__esModule",{value:!0}),o);var Ht={};rt(Ht,{EventEmitter:()=>q,PluginRegistry:()=>C,TimepickerUI:()=>Se,default:()=>kt});module.exports=ot(Ht);var w=()=>typeof window>"u",v=()=>typeof document<"u";var se=class{state;constructor(e,t,i,n){this.state={degreesHours:null,degreesMinutes:null,options:t,element:e,instanceId:i,isMobileView:!1,isTouchMouseMove:!1,disabledTime:null,cloned:null,isModalRemove:!0,isOpen:!1,isInitialized:!1,customId:n,eventHandlersRegistered:!1,isDestroyed:!1}}get degreesHours(){return this.state.degreesHours}get degreesMinutes(){return this.state.degreesMinutes}get options(){return this.state.options}get element(){return this.state.element}get instanceId(){return this.state.instanceId}get isMobileView(){return this.state.isMobileView}get isTouchMouseMove(){return this.state.isTouchMouseMove}get disabledTime(){return this.state.disabledTime}get cloned(){return this.state.cloned}get isModalRemove(){return this.state.isModalRemove}get isOpen(){return this.state.isOpen}get isInitialized(){return this.state.isInitialized}get customId(){return this.state.customId}get eventHandlersRegistered(){return this.state.eventHandlersRegistered}get isDestroyed(){return this.state.isDestroyed}setDegreesHours(e){this.state={...this.state,degreesHours:e}}setDegreesMinutes(e){this.state={...this.state,degreesMinutes:e}}setOptions(e){this.state={...this.state,options:e}}setIsMobileView(e){this.state={...this.state,isMobileView:e}}setIsTouchMouseMove(e){this.state={...this.state,isTouchMouseMove:e}}setDisabledTime(e){this.state={...this.state,disabledTime:e}}setCloned(e){this.state={...this.state,cloned:e}}setIsModalRemove(e){this.state={...this.state,isModalRemove:e}}setIsOpen(e){this.state={...this.state,isOpen:e}}setIsInitialized(e){this.state={...this.state,isInitialized:e}}setEventHandlersRegistered(e){this.state={...this.state,eventHandlersRegistered:e}}setIsDestroyed(e){this.state={...this.state,isDestroyed:e}}updateOptions(e){this.state={...this.state,options:{...this.state.options,clock:{...this.state.options.clock,...e.clock||{}},ui:{...this.state.options.ui,...e.ui||{}},labels:{...this.state.options.labels,...e.labels||{}},behavior:{...this.state.options.behavior,...e.behavior||{}},callbacks:{...this.state.options.callbacks,...e.callbacks||{}}}}}reset(){this.state={...this.state,degreesHours:null,degreesMinutes:null,isTouchMouseMove:!1,disabledTime:null,cloned:null,isModalRemove:!0,isOpen:!1,isInitialized:!1,isDestroyed:!0,eventHandlersRegistered:!1}}getModalElement(){return v()===!1?null:document.querySelector(`[data-owner-id="${this.state.instanceId}"]`)}getInput(){return this.state.element?.querySelector("input")}getClockFace(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-clock-face.mobile"):e.querySelector(".tp-ui-clock-face:not(.mobile)"):null}getClockHand(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-clock-hand"):e.querySelector(".tp-ui-clock-hand:not(.mobile)"):null}getCircle(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-circle-hand"):e.querySelector(".tp-ui-circle-hand:not(.mobile)"):null}getTipsWrapper(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-tips-wrapper"):e.querySelector(".tp-ui-tips-wrapper:not(.mobile)"):null}getTipsWrapperFor24h(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-tips-wrapper-24h"):e.querySelector(".tp-ui-tips-wrapper-24h:not(.mobile)"):null}getMinutes(){return this.getModalElement()?.querySelector(".tp-ui-minutes")||null}getHour(){return this.getModalElement()?.querySelector(".tp-ui-hour")||null}getAM(){return this.getModalElement()?.querySelector(".tp-ui-am")||null}getPM(){return this.getModalElement()?.querySelector(".tp-ui-pm")||null}getHourText(){return this.getModalElement()?.querySelector(".tp-ui-hour-text")||null}getMinutesText(){return this.getModalElement()?.querySelector(".tp-ui-minute-text")||null}getHeader(){return this.getModalElement()?.querySelector(".tp-ui-header")||null}getInputWrappers(){return this.getModalElement()?.querySelectorAll(".tp-ui-input-wrapper")||null}getDots(){return this.getModalElement()?.querySelector(".tp-ui-dots")||null}getMinutesTips(){return this.getModalElement()?.querySelector(".tp-ui-minutes-time")||null}getHourTips(){return this.getModalElement()?.querySelector(".tp-ui-hour-time-12")||null}getAllValueTips(){let e=this.getModalElement();return e?[...e.querySelectorAll(".tp-ui-value-tips"),...e.querySelectorAll(".tp-ui-value-tips-24h")]:[]}getOpenElementData(){let e=this.state.element?.querySelectorAll("[data-open]");if(e?.length>0){let t=[];return e.forEach(({dataset:i})=>t.push(i.open??"")),[...new Set(t)]}return null}getOpenElement(){let e=this.getInput(),t=this.getOpenElementData();return t===null?(e?.setAttribute("data-open","tp-ui-input"),[e]):t.map(i=>this.state.element?.querySelectorAll(`[data-open='${i}']`))[0]??""}getCancelButton(){return this.getModalElement()?.querySelector(".tp-ui-cancel-btn")||null}getOkButton(){return this.getModalElement()?.querySelector(".tp-ui-ok-btn")||null}getActiveTypeMode(){return this.getModalElement()?.querySelector(".tp-ui-type-mode.active")||null}getKeyboardClockIcon(){return this.getModalElement()?.querySelector(".tp-ui-keyboard-icon-wrapper")||null}getFooter(){return this.getModalElement()?.querySelector(".tp-ui-footer")||null}getWrapper(){return this.getModalElement()?.querySelector(".tp-ui-wrapper")||null}};var T={DEFAULT_DELAY:300,MODAL_ANIMATION:150,SCROLLBAR_RESTORE:400,MODAL_REMOVE:300,CLOCK_ANIMATION:600,TIPS_ANIMATION:401,MOBILE_TOGGLE:450,CLOCK_SCALE_DELAY:150,WRAPPER_TRANSITION:400,DROPDOWN_CLICK_DELAY:10};var W=class{core;emitter;timeouts=[];constructor(e,t){this.core=e,this.emitter=t,this.setupEventListeners()}setupEventListeners(){this.emitter.on("animation:clock",()=>{this.handleAnimationSwitchTipsMode()})}runWithAnimation(e,t=T.MODAL_ANIMATION){if(this.core.options.ui.animation){let i=setTimeout(e,t);this.timeouts.push(i)}else e()}clearAllTimeouts(){this.timeouts.forEach(clearTimeout),this.timeouts=[]}setAnimationToOpen(){this.clearAllTimeouts(),this.core.getModalElement()?.classList.add("opacity"),this.runWithAnimation(()=>{this.core.getModalElement()?.classList.add("show")})}removeAnimationToClose(){this.clearAllTimeouts(),this.core.getModalElement()&&this.runWithAnimation(()=>{let t=this.core.getModalElement();t?.classList.remove("show"),t?.classList.remove("opacity")})}handleAnimationClock(){this.core.options.ui.animation&&this.runWithAnimation(()=>{this.core.getClockFace()?.classList.add("tp-ui-clock-animation");let t=setTimeout(()=>{this.core.getClockFace()?.classList.remove("tp-ui-clock-animation")},T.CLOCK_ANIMATION);this.timeouts.push(t)})}handleAnimationSwitchTipsMode(){let e=this.core.getClockHand();if(!e)return;this.emitter.emit("animation:start",{}),e.classList.add("tp-ui-tips-animation");let t=setTimeout(()=>{this.core.getClockHand()?.classList.remove("tp-ui-tips-animation"),this.emitter.emit("animation:end",{})},T.TIPS_ANIMATION);this.timeouts.push(t)}destroy(){this.clearAllTimeouts()}};var Ne=()=>{if(v()===!1)return 0;let o=document.createElement("div");o.className="tp-ui-measure",document.body.appendChild(o);let e=o.getBoundingClientRect().width-o.clientWidth;return document.body.removeChild(o),e};var Be=(o,e)=>o?o.classList.contains(e):!1,_=(o,e)=>Array.from({length:Number(e)-Number(o)+1},(t,i)=>Number(o)+i),oe=(o,e)=>Array.from({length:Number(e)-Number(o)+1},(t,i)=>Number(e)-i).reverse();var Le=(o="")=>{let e=o.replace(/(AM|PM|am|pm)/,r=>` ${r}`),t=new Date(`September 20, 2000 ${e}`),i=t.getHours().toString().padStart(2,"0"),n=t.getMinutes().toString().padStart(2,"0");return`${i}:${n}`},we=o=>{let[e,t]=o.split(":");return`${e.padStart(2,"0")}:${t.padStart(2,"0")}`},ae=(o,e)=>{if(o.length<2)return!1;let t=o.map(i=>{let[n,r]=i.trim().split("-"),s,l;if(e==="12h"){if(!/\s?(AM|PM|am|pm)\s?$/.test(n.trim())||!/\s?(AM|PM|am|pm)\s?$/.test(r.trim()))throw new Error(`Invalid 12h format: "${i}"`);s=Le(n.trim()),l=Le(r.trim())}else{if(/\s?(AM|PM|am|pm)\s?/.test(n.trim())||/\s?(AM|PM|am|pm)\s?/.test(r.trim()))throw new Error(`Invalid 24h format: "${i}"`);s=we(n.trim()),l=we(r.trim())}return{start:s,end:l,original:i}});for(let i=0;i<t.length;i++)for(let n=i+1;n<t.length;n++){let r=t[i],s=t[n];if(r.start<=s.end&&r.end>=s.start||s.start<=r.end&&s.end>=r.start)throw new Error(`Overlapping intervals: "${r.original}" and "${s.original}"`)}return!1},Fe=()=>typeof window<"u"&&window.crypto&&typeof window.crypto.randomUUID=="function"?window.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,o=>{let e=Math.random()*16|0;return(o==="x"?e:e&3|8).toString(16)});var le='<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M160-200q-33 0-56.5-23.5T80-280v-400q0-33 23.5-56.5T160-760h640q33 0 56.5 23.5T880-680v400q0 33-23.5 56.5T800-200H160Zm0-80h640v-400H160v400Zm160-40h320v-80H320v80ZM200-440h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM200-560h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM160-280v-400 400Z"/></svg>';var ce='<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z"/></svg>';var Ie=o=>String(o).padStart(2,"0"),qe=()=>Array.from({length:2}).map(()=>'<div class="tp-ui-wheel-padding"></div>').join(""),ct=(o,e,t)=>o.map(i=>`<div class="tp-ui-wheel-item" role="option" id="${t}-${i}" data-value="${i}" aria-label="${e} ${i}" aria-selected="false">${i}</div>`).join(""),De=(o,e,t,i,n)=>`<div class="tp-ui-wheel-column-wrapper at-start"><div class="tp-ui-wheel-column ${o}" role="listbox" aria-label="${e}" aria-activedescendant="" tabindex="0">${qe()}${ct(t,i,n)}${qe()}</div></div>`,ut=()=>Array.from({length:12},(o,e)=>Ie(e+1)),dt=()=>Array.from({length:24},(o,e)=>Ie(e)),mt=o=>Array.from({length:Math.ceil(60/o)},(e,t)=>Ie(t*o)),pt=["AM","PM"],ze=(o,e,t=!1,i="tp")=>{let n=o==="12h"?ut():dt(),r=mt(e),s=De("tp-ui-wheel-hours","Hours",n,"Hour",`${i}-wh`),l='<div class="tp-ui-wheel-separator" aria-hidden="true">:</div>',c=De("tp-ui-wheel-minutes","Minutes",r,"Minute",`${i}-wm`),a=t&&o==="12h"?De("tp-ui-wheel-ampm","Period",pt,"Period",`${i}-wp`):"";return`<div class="tp-ui-wheel-container">${s}${l}${c}${a}<div class="tp-ui-wheel-highlight" aria-hidden="true"></div></div>`};var xe=class{plugins=new Map;register(e){this.plugins.has(e.name)||this.plugins.set(e.name,e)}getAll(){return Array.from(this.plugins.values())}has(e){return this.plugins.has(e)}get(e){return this.plugins.get(e)}},C=new xe;var We=["00","13","14","15","16","17","18","19","20","21","22","23"],Pe=["12","1","2","3","4","5","6","7","8","9","10","11"],U=["00","05","10","15","20","25","30","35","40","45","50","55"],ht=(o,e,t)=>{let{timezone:{enabled:i,label:n}}=o;return!i||!C.has("timezone")?"":`<div class="tp-ui-timezone ${e}">
|
|
1
|
+
"use strict";var Le=Object.defineProperty;var Xe=Object.getOwnPropertyDescriptor;var Je=Object.getOwnPropertyNames;var Qe=Object.prototype.hasOwnProperty;var et=(o,e)=>{for(var t in e)Le(o,t,{get:e[t],enumerable:!0})},tt=(o,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Je(e))!Qe.call(o,n)&&n!==t&&Le(o,n,{get:()=>e[n],enumerable:!(i=Xe(e,n))||i.enumerable});return o};var it=o=>tt(Le({},"__esModule",{value:!0}),o);var ft={};et(ft,{EventEmitter:()=>q,PluginRegistry:()=>y,TimepickerUI:()=>Se,default:()=>vt});module.exports=it(ft);var w=()=>typeof window>"u",v=()=>typeof document<"u";var se=class{state;constructor(e,t,i,n){this.state={degreesHours:null,degreesMinutes:null,options:t,element:e,instanceId:i,isMobileView:!1,isTouchMouseMove:!1,disabledTime:null,cloned:null,isModalRemove:!0,isOpen:!1,isInitialized:!1,customId:n,eventHandlersRegistered:!1,isDestroyed:!1}}get degreesHours(){return this.state.degreesHours}get degreesMinutes(){return this.state.degreesMinutes}get options(){return this.state.options}get element(){return this.state.element}get instanceId(){return this.state.instanceId}get isMobileView(){return this.state.isMobileView}get isTouchMouseMove(){return this.state.isTouchMouseMove}get disabledTime(){return this.state.disabledTime}get cloned(){return this.state.cloned}get isModalRemove(){return this.state.isModalRemove}get isOpen(){return this.state.isOpen}get isInitialized(){return this.state.isInitialized}get customId(){return this.state.customId}get eventHandlersRegistered(){return this.state.eventHandlersRegistered}get isDestroyed(){return this.state.isDestroyed}setDegreesHours(e){this.state={...this.state,degreesHours:e}}setDegreesMinutes(e){this.state={...this.state,degreesMinutes:e}}setOptions(e){this.state={...this.state,options:e}}setIsMobileView(e){this.state={...this.state,isMobileView:e}}setIsTouchMouseMove(e){this.state={...this.state,isTouchMouseMove:e}}setDisabledTime(e){this.state={...this.state,disabledTime:e}}setCloned(e){this.state={...this.state,cloned:e}}setIsModalRemove(e){this.state={...this.state,isModalRemove:e}}setIsOpen(e){this.state={...this.state,isOpen:e}}setIsInitialized(e){this.state={...this.state,isInitialized:e}}setEventHandlersRegistered(e){this.state={...this.state,eventHandlersRegistered:e}}setIsDestroyed(e){this.state={...this.state,isDestroyed:e}}updateOptions(e){this.state={...this.state,options:{...this.state.options,clock:{...this.state.options.clock,...e.clock||{}},ui:{...this.state.options.ui,...e.ui||{}},labels:{...this.state.options.labels,...e.labels||{}},behavior:{...this.state.options.behavior,...e.behavior||{}},callbacks:{...this.state.options.callbacks,...e.callbacks||{}}}}}reset(){this.state={...this.state,degreesHours:null,degreesMinutes:null,isTouchMouseMove:!1,disabledTime:null,cloned:null,isModalRemove:!0,isOpen:!1,isInitialized:!1,isDestroyed:!0,eventHandlersRegistered:!1}}getModalElement(){return v()===!1?null:document.querySelector(`[data-owner-id="${this.state.instanceId}"]`)}getInput(){return this.state.element?.querySelector("input")}getClockFace(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-clock-face.mobile"):e.querySelector(".tp-ui-clock-face:not(.mobile)"):null}getClockHand(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-clock-hand"):e.querySelector(".tp-ui-clock-hand:not(.mobile)"):null}getCircle(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-circle-hand"):e.querySelector(".tp-ui-circle-hand:not(.mobile)"):null}getTipsWrapper(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-tips-wrapper"):e.querySelector(".tp-ui-tips-wrapper:not(.mobile)"):null}getTipsWrapperFor24h(){let e=this.getModalElement();return e?this.state.isMobileView?e.querySelector(".tp-ui-mobile-clock-wrapper .tp-ui-tips-wrapper-24h"):e.querySelector(".tp-ui-tips-wrapper-24h:not(.mobile)"):null}getMinutes(){return this.getModalElement()?.querySelector(".tp-ui-minutes")||null}getHour(){return this.getModalElement()?.querySelector(".tp-ui-hour")||null}getAM(){return this.getModalElement()?.querySelector(".tp-ui-am")||null}getPM(){return this.getModalElement()?.querySelector(".tp-ui-pm")||null}getHourText(){return this.getModalElement()?.querySelector(".tp-ui-hour-text")||null}getMinutesText(){return this.getModalElement()?.querySelector(".tp-ui-minute-text")||null}getHeader(){return this.getModalElement()?.querySelector(".tp-ui-header")||null}getInputWrappers(){return this.getModalElement()?.querySelectorAll(".tp-ui-input-wrapper")||null}getDots(){return this.getModalElement()?.querySelector(".tp-ui-dots")||null}getMinutesTips(){return this.getModalElement()?.querySelector(".tp-ui-minutes-time")||null}getHourTips(){return this.getModalElement()?.querySelector(".tp-ui-hour-time-12")||null}getAllValueTips(){let e=this.getModalElement();return e?[...e.querySelectorAll(".tp-ui-value-tips"),...e.querySelectorAll(".tp-ui-value-tips-24h")]:[]}getOpenElementData(){let e=this.state.element?.querySelectorAll("[data-open]");if(e?.length>0){let t=[];return e.forEach(({dataset:i})=>t.push(i.open??"")),[...new Set(t)]}return null}getOpenElement(){let e=this.getInput(),t=this.getOpenElementData();return t===null?(e?.setAttribute("data-open","tp-ui-input"),[e]):t.map(i=>this.state.element?.querySelectorAll(`[data-open='${i}']`))[0]??""}getCancelButton(){return this.getModalElement()?.querySelector(".tp-ui-cancel-btn")||null}getOkButton(){return this.getModalElement()?.querySelector(".tp-ui-ok-btn")||null}getActiveTypeMode(){return this.getModalElement()?.querySelector(".tp-ui-type-mode.active")||null}getKeyboardClockIcon(){return this.getModalElement()?.querySelector(".tp-ui-keyboard-icon-wrapper")||null}getFooter(){return this.getModalElement()?.querySelector(".tp-ui-footer")||null}getWrapper(){return this.getModalElement()?.querySelector(".tp-ui-wrapper")||null}};var M={DEFAULT_DELAY:300,MODAL_ANIMATION:150,SCROLLBAR_RESTORE:400,MODAL_REMOVE:300,CLOCK_ANIMATION:600,TIPS_ANIMATION:401,MOBILE_TOGGLE:450,CLOCK_SCALE_DELAY:150,WRAPPER_TRANSITION:400,DROPDOWN_CLICK_DELAY:10};var W=class{core;emitter;timeouts=[];constructor(e,t){this.core=e,this.emitter=t,this.setupEventListeners()}setupEventListeners(){this.emitter.on("animation:clock",()=>{this.handleAnimationSwitchTipsMode()})}runWithAnimation(e,t=M.MODAL_ANIMATION){if(this.core.options.ui.animation){let i=setTimeout(e,t);this.timeouts.push(i)}else e()}clearAllTimeouts(){this.timeouts.forEach(clearTimeout),this.timeouts=[]}setAnimationToOpen(){this.clearAllTimeouts(),this.core.getModalElement()?.classList.add("opacity"),this.runWithAnimation(()=>{this.core.getModalElement()?.classList.add("show")})}removeAnimationToClose(){this.clearAllTimeouts(),this.core.getModalElement()&&this.runWithAnimation(()=>{let t=this.core.getModalElement();t?.classList.remove("show"),t?.classList.remove("opacity")})}handleAnimationClock(){this.core.options.ui.animation&&this.runWithAnimation(()=>{this.core.getClockFace()?.classList.add("tp-ui-clock-animation");let t=setTimeout(()=>{this.core.getClockFace()?.classList.remove("tp-ui-clock-animation")},M.CLOCK_ANIMATION);this.timeouts.push(t)})}handleAnimationSwitchTipsMode(){let e=this.core.getClockHand();if(!e)return;this.emitter.emit("animation:start",{}),e.classList.add("tp-ui-tips-animation");let t=setTimeout(()=>{this.core.getClockHand()?.classList.remove("tp-ui-tips-animation"),this.emitter.emit("animation:end",{})},M.TIPS_ANIMATION);this.timeouts.push(t)}destroy(){this.clearAllTimeouts()}};var Ve=()=>{if(v()===!1)return 0;let o=document.createElement("div");o.className="tp-ui-measure",document.body.appendChild(o);let e=o.getBoundingClientRect().width-o.clientWidth;return document.body.removeChild(o),e};var Ne=(o,e)=>o?o.classList.contains(e):!1,_=(o,e)=>Array.from({length:Number(e)-Number(o)+1},(t,i)=>Number(o)+i),oe=(o,e)=>Array.from({length:Number(e)-Number(o)+1},(t,i)=>Number(e)-i).reverse();var Ae=(o="")=>{let e=o.replace(/(AM|PM|am|pm)/,r=>` ${r}`),t=new Date(`September 20, 2000 ${e}`),i=t.getHours().toString().padStart(2,"0"),n=t.getMinutes().toString().padStart(2,"0");return`${i}:${n}`},we=o=>{let[e,t]=o.split(":");return`${e.padStart(2,"0")}:${t.padStart(2,"0")}`},ae=(o,e)=>{if(o.length<2)return!1;let t=o.map(i=>{let[n,r]=i.trim().split("-"),s,l;if(e==="12h"){if(!/\s?(AM|PM|am|pm)\s?$/.test(n.trim())||!/\s?(AM|PM|am|pm)\s?$/.test(r.trim()))throw new Error(`Invalid 12h format: "${i}"`);s=Ae(n.trim()),l=Ae(r.trim())}else{if(/\s?(AM|PM|am|pm)\s?/.test(n.trim())||/\s?(AM|PM|am|pm)\s?/.test(r.trim()))throw new Error(`Invalid 24h format: "${i}"`);s=we(n.trim()),l=we(r.trim())}return{start:s,end:l,original:i}});for(let i=0;i<t.length;i++)for(let n=i+1;n<t.length;n++){let r=t[i],s=t[n];if(r.start<=s.end&&r.end>=s.start||s.start<=r.end&&s.end>=r.start)throw new Error(`Overlapping intervals: "${r.original}" and "${s.original}"`)}return!1},$e=()=>typeof window<"u"&&window.crypto&&typeof window.crypto.randomUUID=="function"?window.crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,o=>{let e=Math.random()*16|0;return(o==="x"?e:e&3|8).toString(16)});var le='<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="M160-200q-33 0-56.5-23.5T80-280v-400q0-33 23.5-56.5T160-760h640q33 0 56.5 23.5T880-680v400q0 33-23.5 56.5T800-200H160Zm0-80h640v-400H160v400Zm160-40h320v-80H320v80ZM200-440h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM200-560h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80Zm120 0h80v-80h-80v80ZM160-280v-400 400Z"/></svg>';var ce='<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 -960 960 960" width="24px" fill="#e3e3e3"><path d="m612-292 56-56-148-148v-184h-80v216l172 172ZM480-80q-83 0-156-31.5T197-197q-54-54-85.5-127T80-480q0-83 31.5-156T197-763q54-54 127-85.5T480-880q83 0 156 31.5T763-763q54 54 85.5 127T880-480q0 83-31.5 156T763-197q-54 54-127 85.5T480-80Zm0-400Zm0 320q133 0 226.5-93.5T800-480q0-133-93.5-226.5T480-800q-133 0-226.5 93.5T160-480q0 133 93.5 226.5T480-160Z"/></svg>';var Ie=class{plugins=new Map;register(e){this.plugins.has(e.name)||this.plugins.set(e.name,e)}getAll(){return Array.from(this.plugins.values())}has(e){return this.plugins.has(e)}get(e){return this.plugins.get(e)}getTemplateProvider(e){return this.plugins.get(e)?.templateProvider}getClearHandler(e){return this.plugins.get(e)?.clearHandler}},y=new Ie;var Be=["00","13","14","15","16","17","18","19","20","21","22","23"],De=["12","1","2","3","4","5","6","7","8","9","10","11"],U=["00","05","10","15","20","25","30","35","40","45","50","55"],st=(o,e,t)=>{let{timezone:{enabled:i,label:n}}=o;return!i||!y.has("timezone")?"":`<div class="tp-ui-timezone ${e}">
|
|
2
2
|
<span class="tp-ui-timezone-label" id="tp-tz-label-${t}">${n}</span>
|
|
3
3
|
<div class="tp-ui-timezone-dropdown" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-labelledby="tp-tz-label-${t}" tabindex="0" data-tz-id="${t}">
|
|
4
4
|
<div class="tp-ui-timezone-selected" data-placeholder="${n}...">${n}...</div>
|
|
5
5
|
<svg class="tp-ui-timezone-arrow" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>
|
|
6
6
|
<div class="tp-ui-timezone-menu" role="listbox" aria-labelledby="tp-tz-label-${t}"></div>
|
|
7
7
|
</div>
|
|
8
|
-
</div>`},vt=o=>{let{range:{enabled:e,fromLabel:t,toLabel:i}}=o;return!e||!C.has("range")?"":`<div class="tp-ui-range-header" role="tablist" aria-label="Range selection"><button type="button" class="tp-ui-range-tab tp-ui-range-from active" role="tab" tabindex="0" aria-selected="true"><span class="tp-ui-range-tab-label">${t}</span><span class="tp-ui-range-tab-value tp-ui-range-from-time">--:--</span></button><button type="button" class="tp-ui-range-tab tp-ui-range-to" role="tab" tabindex="-1" aria-selected="false"><span class="tp-ui-range-tab-label">${i}</span><span class="tp-ui-range-tab-value tp-ui-range-to-time">--:--</span></button></div>`},gt=(o,e)=>{let{ui:{clearButton:t},labels:{clear:i}}=o;return t?`<div class="tp-ui-clear-btn ${e} disabled" data-md3-ripple tabindex="0" role="button" aria-pressed="false" aria-label="${i}" aria-disabled="true">${i}</div>`:""},ft=(o,e)=>{if(o.isWheelMode){let t=o.isCompactWheel&&o.clockType==="12h";return`<div class="tp-ui-mobile-clock-wrapper ${o.mobileClass}">${ze(o.clockType,e,t,o.instanceId)}</div>`}return`<div class="tp-ui-mobile-clock-wrapper ${o.mobileClass}"><div class="tp-ui-body ${o.mobileClass}"><div class="tp-ui-clock-face ${o.mobileClass}" role="group" aria-label="Clock"><div class="tp-ui-dot ${o.mobileClass}" aria-hidden="true"></div><div class="tp-ui-clock-hand ${o.mobileClass}" aria-hidden="true"><div class="tp-ui-circle-hand ${o.mobileClass}"></div></div><div class="tp-ui-tips-wrapper ${o.mobileClass}" role="listbox" aria-label="Time"></div>${o.clockType==="24h"?`<div class="tp-ui-tips-wrapper-24h ${o.mobileClass}" role="listbox" aria-label="24h"></div>`:""}</div></div></div>`},bt=(o,e)=>{let{labels:{time:t,mobileTime:i,am:n,pm:r,mobileMinute:s,mobileHour:l},ui:{editable:c}}=o,{mobileClass:a,clockType:u,instanceId:d}=e,p=a?i:t,h=u!=="24h"?`<div class="tp-ui-wrapper-type-time ${a}" role="group" aria-label="Period"><div class="tp-ui-type-mode tp-ui-am ${a?"mobile":"tp-ui-ripple"}" data-md3-ripple tabindex="0" role="button" aria-label="${n}" aria-pressed="false" data-type="AM">${n}</div><div class="tp-ui-type-mode tp-ui-pm ${a?"mobile":"tp-ui-ripple"}" data-md3-ripple tabindex="0" role="button" aria-label="${r}" aria-pressed="false" data-type="PM">${r}</div></div>`:"";return`<div class="tp-ui-select-time ${a}" id="tp-ui-label-${d}">${p}</div><div class="tp-ui-header ${a}"><div class="tp-ui-wrapper-time ${a} ${u==="24h"?"tp-ui-wrapper-time-24h":""}" role="group" aria-label="${p}"><div class="tp-ui-input-wrapper ${a}"><div class="tp-ui-input-ripple-wrapper ${a}" data-md3-ripple><input name="hour" ${!c&&!a?"readonly":""} class="tp-ui-hour ${a}" tabindex="0" type="number" min="0" max="${u==="12h"?"12":"23"}" aria-label="${a?l:"Hour"}" role="spinbutton" aria-valuenow="12"></div><div class="tp-ui-hour-text ${a}">${l}</div></div><div class="tp-ui-dots ${a}" aria-hidden="true"><span></span><span></span></div><div class="tp-ui-input-wrapper ${a}"><div class="tp-ui-input-ripple-wrapper ${a}" data-md3-ripple><input name="minutes" ${!c&&!a?"readonly":""} class="tp-ui-minutes ${a}" tabindex="0" type="number" min="0" max="59" aria-label="${a?s:"Minute"}" role="spinbutton" aria-valuenow="0"></div><div class="tp-ui-minute-text ${a}">${s}</div></div></div>${h}</div>`},yt=(o,e)=>{let{ui:{enableSwitchIcon:t,iconTemplate:i,iconTemplateMobile:n},labels:{cancel:r,ok:s}}=o,l=`<button aria-label="Keyboard" type="button" class="tp-ui-keyboard-icon">${i||le}</button>`,c=n||`<button aria-label="Clock" type="button" class="tp-ui-keyboard-icon">${n||ce}</button>`,a=t?`<div class="tp-ui-keyboard-icon-wrapper ${e}" tabindex="0" role="button" aria-pressed="false" aria-label="Toggle" data-view="desktop">${e?c:l}</div>`:"",u=gt(o,e);return`<div class="tp-ui-footer ${e}" ${e?'data-view="mobile"':""}>${a}<div class="tp-ui-wrapper-btn ${e}">${u}<div class="tp-ui-cancel-btn ${e}" data-md3-ripple tabindex="0" role="button" aria-pressed="false" aria-label="${r}">${r}</div><div class="tp-ui-ok-btn ${e}" data-md3-ripple tabindex="0" role="button" aria-pressed="false" aria-label="${s}">${s}</div></div></div>`},_e=(o,e)=>{let{ui:{mode:t,animation:i,theme:n,mobile:r},clock:{incrementMinutes:s}}=o,l=r?"mobile":"",c=t==="compact-wheel"&&C.has("wheel"),a=(t==="wheel"||c)&&C.has("wheel"),u=!!o.range?.enabled&&C.has("range"),d=!!o.timezone?.enabled&&C.has("timezone"),p={mobileClass:l,clockType:o.clock.type||"12h",instanceId:e,isWheelMode:a,isCompactWheel:c,isRangeMode:u},h=vt(o),y=ht(o,l,e),S=c?"":bt(o,p),k=ft(p,s??1),H=c&&o.wheel?.hideFooter===!0?"":yt(o,l),m;return c?m=" tp-ui-compact-wheel-mode":a?m=" tp-ui-wheel-mode":m="",`<div class="tp-ui-modal normalize ${l}${u?" tp-ui-range-mode":""}${d?" tp-ui-tz-mode":""}${m}" data-theme="${n}" role="dialog" aria-modal="true" aria-labelledby="tp-ui-label-${e}" data-owner-id="${e}" style='transition:${i?"opacity 0.15s linear":"none"}'><div class="tp-ui-wrapper ${l}" tabindex="0">${h}${S}${y}${k}${H}</div><div class="timepicker-announcer sr-only" role="status" aria-live="polite" aria-atomic="true"></div></div>`};var K=class{core;emitter;timeouts=[];originalOverflow;originalPaddingRight;constructor(e,t){this.core=e,this.emitter=t}runWithTimeout(e,t=T.DEFAULT_DELAY){let i=setTimeout(e,t);this.timeouts.push(i)}clearAllTimeouts(){this.timeouts.forEach(clearTimeout),this.timeouts=[]}isPopoverMode(){return this.core.options.ui.mode==="compact-wheel"&&!!this.core.options.wheel?.placement}clearExistingModal(){if(v()===!1)return;let e=this.core.getModalElement();e&&e.remove()}setModalTemplate(){if(v()===!1)return;this.clearExistingModal();let e=_e(this.core.options,this.core.instanceId);if(this.core.options.ui.inline?.enabled){let i=document.getElementById(this.core.options.ui.inline.containerId);if(!i)return;i.innerHTML="",i.insertAdjacentHTML("beforeend",e);let n=i.querySelector(".tp-ui-modal");if(n){n.classList.add("tp-ui--inline");let{showButtons:r}=this.core.options.ui.inline;(r===!1||r===void 0)&&n.querySelectorAll(".tp-ui-wrapper-btn, .tp-ui-wrapper-btn.mobile").forEach(s=>s.style.display="none")}return}let{appendModalSelector:t}=this.core.options.ui;t?document.querySelector(t)?.insertAdjacentHTML("beforeend",e):document.body.insertAdjacentHTML("beforeend",e)}setScrollbarOrNot(){v()!==!1&&(this.core.options.ui.inline?.enabled||this.isPopoverMode()||(this.core.options.ui.enableScrollbar?this.runWithTimeout(()=>{w()||this.runWithTimeout(()=>{typeof document<"u"&&(document.body.style.overflowY=this.originalOverflow||"",document.body.style.paddingRight=this.originalPaddingRight||"")},T.SCROLLBAR_RESTORE)},400):(this.originalOverflow=document.body.style.overflowY,this.originalPaddingRight=document.body.style.paddingRight,document.body.style.paddingRight=`${Ne()}px`,document.body.style.overflowY="hidden")))}removeBackdrop(){if(this.core.options.ui.inline?.enabled||this.core.options.ui.backdrop)return;let e=this.core.getModalElement(),t=this.core.getOpenElement();e?.classList.add("removed"),t.forEach(i=>i?.classList.add("disabled"))}setNormalizeClass(){let e=this.core.getModalElement();if(!e)return;e.classList.add("tp-ui-normalize"),e.querySelectorAll(":scope > div").forEach(i=>i.classList.add("tp-ui-normalize"))}setShowClassToBackdrop(){if(this.core.options.ui.inline?.enabled||this.isPopoverMode()){this.core.getModalElement()?.classList.add("show"),this.setInitialFocus();return}this.core.options.ui.backdrop&&this.runWithTimeout(()=>{this.core.getModalElement()?.classList.add("show"),this.setInitialFocus()},T.MODAL_ANIMATION)}setInitialFocus(){if(!this.core.options.behavior.focusTrap)return;let e=this.core.getWrapper();e&&typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>{e.focus()})}setFlexEndToFooterIfNoKeyboardIcon(){let e=this.core.getFooter();!this.core.options.ui.enableSwitchIcon&&e&&(e.style.justifyContent="flex-end")}destroy(){this.clearAllTimeouts(),!w()&&!this.core.options.ui.inline?.enabled&&(document.body.style.overflowY=this.originalOverflow||"",document.body.style.paddingRight=this.originalPaddingRight||""),this.clearExistingModal()}};var A=(o,e,t,i)=>{let n={hour:"12",minutes:"00",type:e==="24h"?void 0:"PM"};if(!o)return n;let r=o.value.trim();if(!t&&!r)return n;if(typeof t=="boolean"&&t){let S=new Date,[k,H]=S.toLocaleTimeString().split(":"),m=k.padStart(2,"0");if(/[a-z]/i.test(H)&&e==="12h"){let[b,f]=H.split(" ");return{hour:m,minutes:b,type:f}}return{hour:m,minutes:H,type:void 0}}if(typeof t=="object"){let{time:S,locales:k,preventClockType:H}=t,m=S??new Date;if(H&&i){let[g,E]=new Date(m).toLocaleTimeString().split(":");if(/[a-z]/i.test(E)){let[L,O]=E.split(" ");return{hour:g,minutes:L,type:O}}return{hour:g.padStart(2,"0"),minutes:E,type:void 0}}let b=new Date(m).toLocaleTimeString(k||"en-US",{hour:"2-digit",minute:"2-digit",hour12:e==="12h"}),[f,M]=b.split(":");if(e==="12h"&&/[a-z]/i.test(M)){let g=M.trim().split(" "),E=g[0],L=g[1]||"AM";return{hour:f,minutes:E,type:L}}return{hour:f,minutes:M.replace(/\D/g,""),type:void 0}}let[s,l]=r.split(" "),[c="",a=""]=s.split(":"),u=c.replace(/\D/g,""),d=a.replace(/\D/g,""),p={hour:u.padStart(2,"0"),minutes:d.padStart(2,"0"),type:e==="12h"?l:void 0};if(u.length>2||d.length>2)return{...p,error:"Invalid input: too many digits.",currentHour:c,currentMin:a};if(/[a-z]/i.test(s))return{...p,error:"Input contains invalid letters."};if(r.includes(" ")&&(!l||r.length>8||l!=="AM"&&l!=="PM"))return{...p,error:"Invalid AM/PM format or length.",currentLength:r.length,currentType:l};let h=Number(u),y=Number(d);if(e==="12h"){if(h<1||h>12||y<0||y>59||l!=="AM"&&l!=="PM")return{...p,error:"Invalid 12h time.",currentHour:h,currentMin:y,currentType:l}}else if(h<0||h>23||y<0||y>59)return{...p,error:"Invalid 24h time.",currentHour:h,currentMin:y};return p},Oe=(o,e,t)=>{let i=Number(o);if(Number.isNaN(i))return!1;switch(e){case"hour":return t==="24h"?i>=0&&i<=23:i>0&&i<=12;case"minutes":return i>=0&&i<=59;default:return}};var Re="tp-ui",Et="mousedown mouseup mousemove mouseleave mouseover",Tt="touchstart touchmove touchend",Ue=`${Et} ${Tt}`,$="active";var ue=class{core;emitter;constructor(e,t){this.core=e,this.emitter=t}isCurrentTimeEnabled(e){let t=this.core.options.clock.currentTime;return typeof t=="boolean"?t:!!t?.[e]}preventClockTypeByCurrentTime(){if(!this.isCurrentTimeEnabled("preventClockType"))return;let e=this.core.getInput();if(!e)return;let{currentTime:t,clockType:i}={currentTime:this.core.options.clock.currentTime,clockType:this.core.options.clock.type},{type:n}=A(e,i,t,!0);this.core.updateOptions({clock:{type:n?"12h":"24h"}})}updateInputValueWithCurrentTimeOnStart(){if(!this.isCurrentTimeEnabled("updateInput"))return;let e=this.core.getInput();if(!e)return;let{hour:t,minutes:i,type:n}=A(e,this.core.options.clock.type,this.core.options.clock.currentTime);e.value=n?`${t}:${i} ${n}`:`${t}:${i}`}getInputValueOnOpenAndSet(){let e=this.core.getInput();if(!e)return;let t=A(e,this.core.options.clock.type,this.core.options.clock.currentTime),i=this.core.getHour(),n=this.core.getMinutes(),r=this.core.getActiveTypeMode(),s=this.core.getAM();if(t===void 0){i&&(i.value="12"),n&&(n.value="00");let h={hour:i?.value||"12",minutes:n?.value||"00",type:r?.dataset.type,degreesHours:this.core.degreesHours,degreesMinutes:this.core.degreesMinutes};this.emitter.emit("open",h);let y=this.core.options.range?.enabled===!0;this.core.options.clock.type!=="24h"&&s&&!y&&s.classList.add($);return}let[l,c,a]=e.value.split(":").join(" ").split(" ");e.value.length===0&&(l=t.hour,c=t.minutes,a=t.type),this.core.options.clock.type!=="24h"&&!a&&(a=t.type||"AM"),i&&(i.value=l.padStart(2,"0")),n&&(n.value=c.padStart(2,"0"));let d=this.core.getModalElement()?.querySelector(`[data-type='${a}']`);this.core.options.clock.type!=="24h"&&d&&d.classList.add($);let p={...t,type:r?.dataset.type,degreesHours:this.core.degreesHours,degreesMinutes:this.core.degreesMinutes};this.emitter.emit("open",p)}getInputValue(e,t,i){return A(e,t,i)}destroy(){}};var de=class{core;emitter;isAnimating=!1;constructor(e,t){this.core=e,this.emitter=t,this.setupEventListeners()}setupEventListeners(){this.emitter.on("switch:view",()=>{this.toggleMobileClockFace()})}checkMobileOption(){this.core.setIsMobileView(!!this.core.options.ui.mobile),this.core.options.ui.mobile&&this.core.updateOptions({ui:{editable:!0}})}toggleMobileClockFace(){if(this.isAnimating)return;let e=this.core.getModalElement();if(!e)return;let t=e.querySelector(".tp-ui-wrapper"),i=this.core.getKeyboardClockIcon(),n=e.querySelector(".tp-ui-mobile-clock-wrapper"),r=e.querySelectorAll("*"),s=e.querySelector(".tp-ui-select-time"),l=this.core.getHour(),c=this.core.getMinutes(),a=this.core.getClockFace();if(!t)return;let u=t.classList.contains("expanded"),d=this.core.isMobileView;u?this.collapseClockFace(t,n,r,i,s,l,c,a,d):this.expandClockFace(t,n,r,i,s,l,c,a)}collapseClockFace(e,t,i,n,r,s,l,c,a){if(this.isAnimating=!0,typeof requestAnimationFrame<"u"){let u=typeof window<"u"&&window.matchMedia("(orientation: landscape) and (min-width: 320px) and (max-width: 825px)").matches;requestAnimationFrame(()=>{u&&e instanceof HTMLElement?this.collapseLandscape(e,t,i,n,r,s,l,c,a):this.collapsePortrait(e,t,i,n,r,s,l,c,a)})}else this.switchView(r,n,s,l,!0),this.isAnimating=!1;n?.setAttribute("aria-label","Show clock face"),n?.setAttribute("aria-pressed","false")}collapseLandscape(e,t,i,n,r,s,l,c,a){c?.classList.remove("scale-in");let u=this.core.getModalElement(),d=this.getMobileLandscapeHeight(u);e.style.width="328px",e.style.height=d,t instanceof HTMLElement&&(t.style.height="0",t.style.opacity="0",t.style.transform="scale(0)"),setTimeout(()=>{this.applyMobileClasses(e,t,i,r,a),e.classList.add("mobile"),t&&t.classList.add("mobile"),this.switchView(r,n,s,l,!0),requestAnimationFrame(()=>{e.style.width="",e.style.height="",t instanceof HTMLElement&&(t.style.height="",t.style.opacity="",t.style.transform=""),this.isAnimating=!1})},T.WRAPPER_TRANSITION)}collapsePortrait(e,t,i,n,r,s,l,c,a){a?c?.classList.remove("scale-in"):c?.classList.add("scale-in"),t?.classList.remove("expanded"),a&&t?.classList.add("mobile"),requestAnimationFrame(()=>{this.applyMobileClasses(e,t,i,r,a),this.switchView(r,n,s,l,!0),setTimeout(()=>{this.isAnimating=!1},T.MOBILE_TOGGLE)})}applyMobileClasses(e,t,i,n,r){e.classList.remove("expanded"),t?.classList.remove("expanded"),r&&(e.classList.add("mobile"),t?.classList.add("mobile")),i.forEach(s=>{s!==t&&s!==e&&s!==n&&(s.classList.remove("expanded"),r&&s.classList.add("mobile"))}),n&&(n.classList.remove("expanded"),r&&n.classList.add("mobile"))}expandClockFace(e,t,i,n,r,s,l,c){this.isAnimating=!0,l?.classList.contains("active")&&l?this.emitter.emit("select:minute",{minutes:l.value}):s&&this.emitter.emit("select:hour",{hour:s.value}),i.forEach(u=>{u!==t&&u!==e&&u!==r&&(u.classList.remove("mobile"),u.classList.add("expanded"))}),r&&(r.classList.remove("mobile"),r.classList.add("expanded")),this.switchView(r,n,s,l,!1),typeof requestAnimationFrame<"u"?requestAnimationFrame(()=>{e.classList.remove("mobile"),e.classList.add("expanded"),requestAnimationFrame(()=>{t&&(t.classList.remove("mobile"),t.classList.add("expanded")),c&&c.classList.remove("scale-in"),setTimeout(()=>{c&&c.classList.add("scale-in")},T.CLOCK_SCALE_DELAY),setTimeout(()=>{this.isAnimating=!1},T.MOBILE_TOGGLE)})}):this.isAnimating=!1,n?.setAttribute("aria-label","Hide clock face"),n?.setAttribute("aria-pressed","true")}switchView(e,t,i,n,r){let s=this.core.getModalElement(),l=s?.querySelector(".tp-ui-hour-text"),c=s?.querySelector(".tp-ui-minute-text"),a=t?.querySelector(".tp-ui-keyboard-icon"),u=this.core.getInputWrappers(),d=this.core.getHeader(),p=s?.querySelector(".tp-ui-wrapper-type-time"),h=s?.querySelector(".tp-ui-am"),y=s?.querySelector(".tp-ui-pm"),S=s?.querySelectorAll(".tp-ui-input-ripple-wrapper"),{iconTemplate:k,iconTemplateMobile:H}=this.core.options.ui,{time:m,mobileTime:b}=this.core.options.labels;r?(e?.classList.add("mobile"),t?.classList.add("mobile"),i?.classList.add("mobile"),i?.removeAttribute("readonly"),n?.classList.add("mobile"),n?.removeAttribute("readonly"),l?.classList.add("mobile"),c?.classList.add("mobile"),d?.classList.add("mobile"),p?.classList.add("mobile"),h?.classList.add("mobile"),h?.classList.remove("tp-ui-ripple"),y?.classList.add("mobile"),y?.classList.remove("tp-ui-ripple"),u?.forEach(f=>{f.classList.add("mobile")}),S?.forEach(f=>{f.classList.add("mobile")}),e&&b&&(e.textContent=b),a&&(a.innerHTML=H||ce),this.updateClockFaceAccessibility(!0)):(e?.classList.remove("mobile"),t?.classList.remove("mobile"),i?.classList.remove("mobile"),n?.classList.remove("mobile"),this.core.options.ui.editable||(i?.setAttribute("readonly",""),n?.setAttribute("readonly","")),l?.classList.remove("mobile"),c?.classList.remove("mobile"),d?.classList.remove("mobile"),p?.classList.remove("mobile"),h?.classList.remove("mobile"),h?.classList.add("tp-ui-ripple"),y?.classList.remove("mobile"),y?.classList.add("tp-ui-ripple"),u?.forEach(f=>{f.classList.remove("mobile")}),S?.forEach(f=>{f.classList.remove("mobile")}),e&&m&&(e.textContent=m),a&&(a.innerHTML=k||le),this.updateClockFaceAccessibility(!1))}updateClockFaceAccessibility(e){let t=this.core.getClockFace();if(!t)return;let i=t.querySelector(".tp-ui-tips-wrapper"),n=t.querySelector(".tp-ui-tips-wrapper-24h"),r=t.querySelectorAll(".tp-ui-tip");e?(t.setAttribute("aria-hidden","true"),i?.setAttribute("aria-hidden","true"),n?.setAttribute("aria-hidden","true"),r.forEach(s=>{s.setAttribute("tabindex","-1"),s.setAttribute("aria-hidden","true")})):(t.removeAttribute("aria-hidden"),i?.removeAttribute("aria-hidden"),n?.removeAttribute("aria-hidden"),r.forEach(s=>{s.setAttribute("tabindex","0"),s.removeAttribute("aria-hidden")}))}getMobileLandscapeHeight(e){return e?.classList.contains("tp-ui-tz-mode")?"326px":e?.classList.contains("tp-ui-range-mode")?"287px":"258px"}destroy(){}};var Ke=o=>{if(!o)return;let{disabledTime:e,type:t}=o.clock;if(!e||!Object.keys(e).length)return;let{hours:i,minutes:n,interval:r}=e;if(r){delete e.hours,delete e.minutes;let s=Array.isArray(r)?r:[r];if(!t)throw new Error("clockType required for interval");return ae(s,t),{value:s.map(a=>{let[u,d]=a.trim().split("-"),{hour:p,minutes:h,type:y}=A({value:u.trim()},t),{hour:S,minutes:k,type:H}=A({value:d.trim()},t),m=_(p,S).map(g=>Number(g)===0?"00":String(Number(g))),b=[],f=Number(h),M=Number(k);if(H===y)return f>0&&M<=0?(b.push(m[0],m[m.length-1]),m=m.slice(1,-1)):M<59&&M>0&&f<=0?(b.push(void 0,m[m.length-1]),m=m.slice(0,-1)):M>0&&f>0?(b.push(m[0],m[m.length-1]),m=m.slice(1,-1)):M===0&&f===0&&(b.push(void 0,m[m.length-1]),m.pop()),{removedStartedHour:b[0]!==void 0&&Number(b[0])<=9?`0${b[0]}`:b[0],removedEndHour:b[1]!==void 0&&Number(b[1])<=9?`0${b[1]}`:b[1],rangeArrHour:m,startMinutes:_(h,59).map(g=>Number(g)<=9?`0${g}`:`${g}`),endMinutes:oe(0,k).map(g=>Number(g)<=9?`0${g}`:`${g}`),startType:y,endType:H};{let g=_(p,12).map(String),E=oe(1,S).map(String),L=[],O=[];return f>0&&M<=0?(O.push(E[E.length-1]),L.push(g[0]),E.pop(),g.shift()):M<59&&M>0&&f<=0?(L.push(g[0]),O.push(E[E.length-1]),E.pop()):M>0&&f>0?(O.push(E[E.length-1]),L.push(g[0]),E.pop(),g.shift()):M===0&&f===0&&(O.push(E[E.length-1]),L.push(g[0]),E.pop()),{startType:y,endType:H,amHours:g,pmHours:E,removedAmHour:L[0]&&Number(L[0])<=9?`0${L[0]}`:L[0],removedPmHour:O[0]&&Number(O[0])<=9?`0${O[0]}`:O[0],startMinutes:Number(h)===0?[]:_(h,59).map(V=>Number(V)<=9?`0${V}`:`${V}`),endMinutes:oe(0,k).map(V=>Number(V)<=9?`0${V}`:`${V}`)}}}).reduce((a,u)=>(Object.entries(u).forEach(([d,p])=>{Array.isArray(p)?a[d]=Array.isArray(a[d])?[...a[d],...p]:[...p]:a[d]=p}),a),{isInterval:!0,clockType:t,intervals:s})}}return i?.forEach(s=>{if(t==="12h"&&Number(s)>12)throw new Error("The disabled hours value has to be less than 13");if(t==="24h"&&Number(s)>23)throw new Error("The disabled hours value has to be less than 24")}),n?.forEach(s=>{if(Number(s)>59)throw new Error("The disabled minutes value has to be less than 60")}),{value:{hours:i?.map(s=>s==="00"||Number(s)===0?`0${Number(s)}`:`${Number(s)}`),minutes:n?.map(s=>Number(s)<=9?`0${s}`:`${s}`)}}},Ve=(o,e,t,i)=>{if(o){if(Array.isArray(o)&&o.length>0)return!o.map(r=>Oe(r,e,t)).some(r=>r===!1);if(typeof o=="string"||typeof o=="number"){let n=Oe(o,e,t),r=i?.map(Number).includes(Number(o));return!!(n&&!r)}}};var me=class{core;constructor(e){this.core=e}getDisableTime(){let e=Ke(this.core.options);this.core.setDisabledTime(e||null)}destroy(){}};var Y=class{inputValueHandler;mobileViewHandler;disabledTimeHandler;core;constructor(e,t){this.core=e,this.inputValueHandler=new ue(e,t),this.mobileViewHandler=new de(e,t),this.disabledTimeHandler=new me(e)}preventClockTypeByCurrentTime(){this.inputValueHandler.preventClockTypeByCurrentTime()}updateInputValueWithCurrentTimeOnStart(){this.inputValueHandler.updateInputValueWithCurrentTimeOnStart()}getInputValueOnOpenAndSet(){this.inputValueHandler.getInputValueOnOpenAndSet()}getInputValue(e,t,i){return this.inputValueHandler.getInputValue(e,t,i)}checkMobileOption(){this.mobileViewHandler.checkMobileOption()}toggleMobileClockFace(){this.mobileViewHandler.toggleMobileClockFace()}updateClockFaceAccessibility(e){this.mobileViewHandler.updateClockFaceAccessibility(e)}getDisableTime(){this.disabledTimeHandler.getDisableTime()}destroy(){this.inputValueHandler.destroy(),this.mobileViewHandler.destroy(),this.disabledTimeHandler.destroy()}};var Z=class{core;emitter;constructor(e,t){this.core=e,this.emitter=t}setTheme(){let e=this.core.getModalElement();if(!e)return;let{theme:t}=this.core.options.ui;t&&e.setAttribute("data-theme",t)}setInputClassToInputElement(){let e=this.core.getInput();e&&(Be(e,"tp-ui-input")||e.classList.add("tp-ui-input"))}setDataOpenToInputIfDoesntExistInWrapper(){let e=this.core.getOpenElementData(),t=this.core.getInput();e===null&&t&&t.setAttribute("data-open","tp-ui-input")}setClassTopOpenElement(){let e=this.core.getOpenElement();for(let t of e)t&&t.classList.add("tp-ui-open-element")}setTimepickerClassToElement(){let e=this.core.element;if(!e)return;e.classList.add(Re);let t=this.core.options.ui.cssClass;t&&t!==Re&&e.classList.add(t)}destroy(){let e=this.core.getModalElement();e&&e.removeAttribute("data-theme")}};var N=class o extends Error{constructor(t,i){super(`[TimepickerUI] ${t}`);this.code=i;this.name="TimepickerError",Object.setPrototypeOf(this,o.prototype)}},pe={ELEMENT_NOT_FOUND:"ELEMENT_NOT_FOUND",INVALID_PARAMETER:"INVALID_PARAMETER",NO_INPUT_ELEMENT:"NO_INPUT_ELEMENT",INSTANCE_DESTROYED:"INSTANCE_DESTROYED",NOT_INITIALIZED:"NOT_INITIALIZED",INVALID_TIME_FORMAT:"INVALID_TIME_FORMAT",INLINE_CONFIG_ERROR:"INLINE_CONFIG_ERROR",CONTAINER_NOT_FOUND:"CONTAINER_NOT_FOUND",SSR_ENVIRONMENT:"SSR_ENVIRONMENT"};var G=class{core;emitter;constructor(e,t){this.core=e,this.emitter=t}setErrorHandler(){let e=this.core.getInput();if(!e)return!0;let{error:t,currentHour:i,currentMin:n,currentType:r,currentLength:s}=A(e,this.core.options.clock.type);if(this.removeErrorHandler(),t){if(v()===!1)return!1;let l=document.createElement("div");l.classList.add("tp-ui-invalid-text"),l.innerHTML="<b>Invalid Time Format</b>",e.classList.add("tp-ui-invalid-format"),e.nextElementSibling?.classList.contains("tp-ui-invalid-text")||e.after(l);let c={error:t,rejectedHour:void 0,rejectedMinute:void 0,inputHour:i,inputMinute:n,inputType:r,inputLength:s};return this.emitter.emit("error",c),!1}return!0}removeErrorHandler(){let e=this.core.getInput();if(!e)return;e.classList.remove("tp-ui-invalid-format");let t=e.nextElementSibling;t?.classList.contains("tp-ui-invalid-text")&&t.remove()}checkDisabledValuesOnStart(){if(!this.core.options.clock.disabledTime)return;let{disabledTime:e,type:t}=this.core.options.clock;if(e.interval){if(!t)throw new N("clockType is required when using disabledTime.interval",pe.INVALID_PARAMETER);let l=Array.isArray(e.interval)?e.interval:[e.interval];try{ae(l,t)}catch(c){throw new N(`Invalid disabledTime.interval: ${c.message}`,pe.INVALID_PARAMETER)}return}let{hours:i,minutes:n}=e,r=i?Ve(i,"hour",t):!0,s=n?Ve(n,"minutes",t):!0;if(!r||!s)throw new N("Invalid hours or minutes in disabledTime option",pe.INVALID_PARAMETER)}destroy(){this.removeErrorHandler()}};var x=(o,e)=>{if(!o)return;let t=o.querySelector(".timepicker-announcer");t&&(t.textContent="",setTimeout(()=>{t.textContent=e},100))},j=(o,e)=>{o&&o.setAttribute("aria-pressed",String(e))};var he=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleOpenOnClick(){let e=this.core.getOpenElement();if(!e)return;let t=i=>{this.core.isDestroyed||i.currentTarget?.classList.contains("disabled")||this.emitter.emit("show",{})};e.forEach(i=>{i.addEventListener("click",t),this.cleanupHandlers.push(()=>i.removeEventListener("click",t))})}handleCancelButton(){let e=this.core.getCancelButton();if(!e)return;let t=()=>{this.core.isDestroyed||this.emitter.emit("cancel",{})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleOkButton(){let e=this.core.getOkButton();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;let i=this.core.getHour(),n=this.core.getMinutes();if(i&&n){let s=this.core.getActiveTypeMode();this.emitter.emit("confirm",{hour:i.value,minutes:n.value,type:s?.textContent||void 0});return}let r=this.core.getModalElement();if(r){let s=r.querySelector(".tp-ui-wheel-hours .tp-ui-wheel-item.is-center"),l=r.querySelector(".tp-ui-wheel-minutes .tp-ui-wheel-item.is-center"),c=r.querySelector(".tp-ui-wheel-ampm .tp-ui-wheel-item.is-center");this.emitter.emit("confirm",{hour:s?.getAttribute("data-value")??void 0,minutes:l?.getAttribute("data-value")??void 0,type:c?.getAttribute("data-value")??void 0})}};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleAmClick(){let e=this.core.getAM();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;let i=this.core.getPM();e.classList.add("active"),i?.classList.remove("active"),j(e,!0),j(i,!1);let n=this.core.getModalElement();x(n,"AM selected"),this.emitter.emit("select:am",{});let r=this.core.getHour(),s=this.core.getMinutes();this.emitter.emit("update",{hour:r?.value,minutes:s?.value,type:"AM"})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handlePmClick(){let e=this.core.getPM();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;let i=this.core.getAM();e.classList.add("active"),i?.classList.remove("active"),j(e,!0),j(i,!1);let n=this.core.getModalElement();x(n,"PM selected"),this.emitter.emit("select:pm",{});let r=this.core.getHour(),s=this.core.getMinutes();this.emitter.emit("update",{hour:r?.value,minutes:s?.value,type:"PM"})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleSwitchViewButton(){let e=this.core.getKeyboardClockIcon();if(!e)return;let t=()=>{this.core.isDestroyed||this.emitter.emit("switch:view",{})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var Ye=(o,e,t)=>Math.max(e,Math.min(t,o)),Ze=(o,e)=>{if(o==="")return"";let t=parseInt(o,10);return Number.isNaN(t)?"":Ye(t,e?1:0,e?12:23).toString().padStart(2,"0")},Ge=o=>{if(o==="")return"";let e=parseInt(o,10);return Number.isNaN(e)?"":Ye(e,0,59).toString().padStart(2,"0")};var ve=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleHourEvents(){let e=this.core.getHour();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;e.classList.add("active");let r=this.core.getMinutes();r?.classList.remove("active"),this.emitter.emit("select:hour",{hour:e.value});let s=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:e.value,minutes:r?.value,type:s?.textContent||void 0})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t));let i=e.value,n=()=>{if(this.core.isDestroyed||e.hasAttribute("readonly"))return;let r=this.core.options.clock.type==="12h",s=Ze(e.value,r);if(e.value=s,e.setAttribute("aria-valuenow",s),e.value!==i){i=e.value,this.emitter.emit("animation:clock",{}),this.emitter.emit("select:hour",{hour:e.value});let l=this.core.getMinutes(),c=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:e.value,minutes:l?.value,type:c?.textContent||void 0})}};e.addEventListener("blur",n),this.cleanupHandlers.push(()=>e.removeEventListener("blur",n))}handleMinutesEvents(){let e=this.core.getMinutes();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;e.classList.add("active");let r=this.core.getHour();r?.classList.remove("active"),this.emitter.emit("select:minute",{minutes:e.value});let s=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:r?.value,minutes:e.value,type:s?.textContent||void 0})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t));let i=e.value,n=()=>{if(this.core.isDestroyed||e.hasAttribute("readonly"))return;let r=Ge(e.value);if(e.value=r,e.setAttribute("aria-valuenow",r),e.value!==i){i=e.value,this.emitter.emit("animation:clock",{}),this.emitter.emit("select:minute",{minutes:e.value});let s=this.core.getHour(),l=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:s?.value,minutes:e.value,type:l?.textContent||void 0})}};e.addEventListener("blur",n),this.cleanupHandlers.push(()=>e.removeEventListener("blur",n))}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var ge=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleOpenOnEnterFocus(){let e=this.core.getInput();if(!e)return;let t=i=>{i.key==="Enter"&&!this.core.isDestroyed&&!this.core.isOpen&&this.emitter.emit("show",{})};e.addEventListener("keydown",t),this.cleanupHandlers.push(()=>e.removeEventListener("keydown",t))}handleEscClick(){if(v()===!1)return;let e=t=>{this.core.isDestroyed||t.key==="Escape"&&this.emitter.emit("cancel",{})};document.addEventListener("keydown",e),this.cleanupHandlers.push(()=>document.removeEventListener("keydown",e))}handleKeyboardInput(){let e=this.core.getHour(),t=this.core.getMinutes();if(e){let i=n=>{if(this.core.isDestroyed||n.key!=="ArrowUp"&&n.key!=="ArrowDown")return;n.preventDefault();let r=parseInt(e.value)||0,s=parseInt(e.getAttribute("max")||"23"),l=this.core.options.clock.type==="12h",c;n.key==="ArrowUp"?l?c=r>=12?1:r+1:c=r>=s?0:r+1:l?c=r<=1?12:r-1:c=r<=0?s:r-1,e.value=c.toString().padStart(2,"0"),e.setAttribute("aria-valuenow",e.value);let a=this.core.getModalElement();x(a,`Hour: ${e.value}`),this.emitter.emit("animation:clock",{}),this.emitter.emit("select:hour",{hour:e.value});let u=this.core.getMinutes(),d=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:e.value,minutes:u?.value,type:d?.textContent||void 0})};e.addEventListener("keydown",i),this.cleanupHandlers.push(()=>e.removeEventListener("keydown",i))}if(t){let i=n=>{if(this.core.isDestroyed||n.key!=="ArrowUp"&&n.key!=="ArrowDown")return;n.preventDefault();let r=parseInt(t.value)||0,s=59,l=0,c;n.key==="ArrowUp"?c=r>=s?l:r+1:c=r<=l?s:r-1,t.value=c.toString().padStart(2,"0"),t.setAttribute("aria-valuenow",t.value);let a=this.core.getModalElement();x(a,`Minutes: ${t.value}`),this.emitter.emit("animation:clock",{}),this.emitter.emit("select:minute",{minutes:t.value});let u=this.core.getHour(),d=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:u?.value,minutes:t.value,type:d?.textContent||void 0})};t.addEventListener("keydown",i),this.cleanupHandlers.push(()=>t.removeEventListener("keydown",i))}}focusTrapHandler(){if(v()===!1)return;let e=this.core.getWrapper();if(!e)return;let t=i=>{if(this.core.isDestroyed||i.key!=="Tab")return;let n=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),r=n[0],s=n[n.length-1];i.shiftKey&&document.activeElement===r?(s?.focus(),i.preventDefault()):!i.shiftKey&&document.activeElement===s&&(r?.focus(),i.preventDefault())};e.addEventListener("keydown",t),this.cleanupHandlers.push(()=>e.removeEventListener("keydown",t))}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var fe=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleBackdropClick(){let e=this.core.getModalElement();if(!e)return;let t=i=>{this.core.isDestroyed||i.target===e&&this.emitter.emit("cancel",{})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleMoveHand(){if(v()===!1)return;let e=t=>{this.core.isDestroyed||t.preventDefault()};document.addEventListener("mousedown",e,!1),document.addEventListener("touchstart",e,{passive:!1}),this.cleanupHandlers.push(()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)})}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var X=class{buttonHandlers;inputHandlers;keyboardHandlers;modalHandlers;constructor(e,t){this.buttonHandlers=new he(e,t),this.inputHandlers=new ve(e,t),this.keyboardHandlers=new ge(e,t),this.modalHandlers=new fe(e,t)}handleOpenOnClick(){this.buttonHandlers.handleOpenOnClick()}handleOpenOnEnterFocus(){this.keyboardHandlers.handleOpenOnEnterFocus()}handleCancelButton(){this.buttonHandlers.handleCancelButton()}handleOkButton(){this.buttonHandlers.handleOkButton()}handleBackdropClick(){this.modalHandlers.handleBackdropClick()}handleEscClick(){this.keyboardHandlers.handleEscClick()}handleAmClick(){this.buttonHandlers.handleAmClick()}handlePmClick(){this.buttonHandlers.handlePmClick()}handleHourEvents(){this.inputHandlers.handleHourEvents()}handleMinutesEvents(){this.inputHandlers.handleMinutesEvents()}handleKeyboardInput(){this.keyboardHandlers.handleKeyboardInput()}focusTrapHandler(){this.keyboardHandlers.focusTrapHandler()}handleMoveHand(){this.modalHandlers.handleMoveHand()}handleSwitchViewButton(){this.buttonHandlers.handleSwitchViewButton()}destroy(){this.buttonHandlers.destroy(),this.inputHandlers.destroy(),this.keyboardHandlers.destroy(),this.modalHandlers.destroy()}};var J=class{emitter;getClockSystem;setHoursToClock;setMinutesToClock;updateAmPm;convertDisabledTime;constructor(e,t,i,n,r,s){this.emitter=e,this.getClockSystem=t,this.setHoursToClock=i,this.setMinutesToClock=n,this.updateAmPm=r,this.convertDisabledTime=s}setup(){this.emitter.on("select:hour",({hour:e})=>{this.emitter.emit("animation:clock",{}),this.setHoursToClock(e||null)}),this.emitter.on("select:minute",({minutes:e})=>{this.emitter.emit("animation:clock",{}),this.setMinutesToClock(e||null)}),this.emitter.on("select:am",()=>{this.updateAmPm()}),this.emitter.on("select:pm",()=>{this.updateAmPm()}),this.emitter.on("animation:start",()=>{this.getClockSystem()?.blockInteractions()}),this.emitter.on("animation:end",()=>{this.getClockSystem()?.unblockInteractions()}),this.emitter.on("range:switch",e=>{this.refreshDisabledTimeForRange(e.disabledTime)})}refreshDisabledTimeForRange(e){let t=this.getClockSystem();if(!t)return;let i=this.convertDisabledTime(),n=i;if(e){let r=[...i?.hours||[],...e.hours||[]],s=[...i?.minutes||[],...e.minutes||[]];n={...i,hours:r.length>0?r:void 0,minutes:s.length>0?s:void 0,rangeFromType:e.fromType,rangeFromHour:e.fromHour}}t.updateDisabledTime(n)}};var D=class{static angleToIndex(e,t,i){let n=Math.round(e/30)%12;if(t==="24h")if(i){let r=n+12;return r===12?0:r}else return n===0?12:n;return n===0?12:n}static indexToValue(e,t){if(t==="24h")return e.toString().padStart(2,"0");let i=e;return i===0&&(i=12),i>12&&(i=i-12),i.toString().padStart(2,"0")}static indexToAngle(e,t){return t==="24h"?e>=12?(e-12)%12*30:e%12*30:(e===0?12:e)%12*30}static isDisabled(e,t,i){return i?i.isInterval&&i.intervals&&i.clockType?this.isDisabledByInterval(e,t,i):i.rangeFromType!==void 0&&i.rangeFromHour!==void 0?this.isDisabledForRange12h(e,t,i):i.hours?i.hours.some(n=>String(n)===e||Number(n)===Number(e)||n===e):!1:!1}static isDisabledForRange12h(e,t,i){let n=i.rangeFromType,r=i.rangeFromHour,s=parseInt(e,10);return n===null||r===void 0?!1:t==="AM"&&n==="PM"?!0:t==="AM"&&n==="AM"?r===12?!1:s===12?!0:s<r:t==="PM"&&n==="AM"?!1:t==="PM"&&n==="PM"?r===12?!1:s===12?!0:s<r:!1}static isDisabledByInterval(e,t,i){if(!i.intervals)return!1;for(let n=0;n<60;n++){let r=n.toString().padStart(2,"0");if(!this.isTimeInIntervals(e,r,t,i.intervals,i.clockType))return!1}return!0}static isTimeInIntervals(e,t,i,n,r){let s=r==="12h"?`${e}:${t} ${i}`:`${e}:${t}`;for(let l of n){let[c,a]=l.split("-").map(u=>u.trim());if(this.isTimeBetween(s,c,a,r))return!0}return!1}static isTimeBetween(e,t,i,n){let r=this.timeToMinutes(e,n),s=this.timeToMinutes(t,n),l=this.timeToMinutes(i,n);return r>=s&&r<=l}static timeToMinutes(e,t){if(t==="12h"){let i=e.match(/(\d{1,2}):(\d{2})\s*(AM|PM)/i);if(!i)return 0;let n=parseInt(i[1]),r=parseInt(i[2]),s=i[3].toUpperCase();return s==="PM"&&n!==12&&(n+=12),s==="AM"&&n===12&&(n=0),n*60+r}else{let[i,n]=e.split(":").map(Number);return i*60+n}}static findNearestValid(e,t,i,n){let r=t==="24h"?23:12;for(let s=0;s<=r;s++){let l=s===0?[e]:[e+s,e-s];for(let c of l){let a=c;a<0&&(a+=r+1),a>r&&(a=a%(r+1));let u=this.indexToValue(a,t);if(!this.isDisabled(u,i,n))return a}}return e}};var I=class{static angleToIndex(e){return Math.round(e/6)%60}static indexToValue(e){return e.toString().padStart(2,"0")}static indexToAngle(e){return e%60*6}static isDisabled(e,t,i,n,r){return n?n.isInterval&&n.intervals?this.isDisabledByInterval(e,t,i,n,r):n.rangeFromType!==void 0&&n.rangeFromHour!==void 0?this.isDisabledForRange12h(e,t,i,n):n.rangeFromHour!==void 0&&parseInt(t,10)!==n.rangeFromHour?!1:n.minutes?n.minutes.some(s=>String(s)===e||Number(s)===Number(e)||s===e):!1:!1}static isDisabledForRange12h(e,t,i,n){let r=n.rangeFromType,s=n.rangeFromHour,l=parseInt(t,10),c=parseInt(e,10);if(r===null||s===void 0)return!1;let a=n.minutes||[],u=a.length>0?parseInt(a[a.length-1],10)+1:0;return i==="AM"&&r==="PM"?!0:i==="PM"&&r==="AM"?!1:l===s||l===12&&s===12||i===r&&l===s?c<u:!1}static isDisabledByInterval(e,t,i,n,r){if(!n.intervals)return!1;let s=r==="12h"?`${t}:${e} ${i}`:`${t}:${e}`;for(let l of n.intervals){let[c,a]=l.split("-").map(u=>u.trim());if(this.isTimeBetween(s,c,a,r))return!0}return!1}static isTimeBetween(e,t,i,n){let r=this.timeToMinutes(e,n),s=this.timeToMinutes(t,n),l=this.timeToMinutes(i,n);return r>=s&&r<=l}static timeToMinutes(e,t){if(t==="12h"){let i=e.match(/(\d{1,2}):(\d{2})\s*(AM|PM)/i);if(!i)return 0;let n=parseInt(i[1]),r=parseInt(i[2]),s=i[3].toUpperCase();return s==="PM"&&n!==12&&(n+=12),s==="AM"&&n===12&&(n=0),n*60+r}else{let[i,n]=e.split(":").map(Number);return i*60+n}}static findNearestValid(e,t,i,n,r){for(let s=0;s<60;s++){let l=s===0?[e]:[e+s,e-s];for(let c of l){let a=c;a<0&&(a+=60),a>=60&&(a=a%60);let u=this.indexToValue(a);if(!this.isDisabled(u,t,i,n,r))return a}}return e}};var P=class{static normalizeAngle(e){let t=e%360;return t<0&&(t+=360),t}static calculateRawAngle(e,t){let i=e.x-t.x,n=e.y-t.y,s=Math.atan2(n,i)*180/Math.PI+90;return this.normalizeAngle(s)}static snapToIncrement(e,t){let i=Math.round(e/t)*t;return this.normalizeAngle(i)}static calculateDistance(e,t){let i=e.x-t.x,n=e.y-t.y;return Math.sqrt(i*i+n*n)}static isInnerCircle(e,t){return e<t*.75}static calculateShortestPath(e,t){let i=this.normalizeAngle(e),r=this.normalizeAngle(t)-i,s=r>=0?r:r+360,l=r<=0?r:r-360,c=Math.abs(s)<Math.abs(l)?s:l;return e+c}};var be=class{config;currentAngle=0;tipsCache=new Map;cachedDimensions=new Map;constructor(e){this.config=e}getCachedDimensions(e){let t=this.cachedDimensions.get(e);if(!t){let i=(e.offsetWidth-32)/2,n=(e.offsetHeight-32)/2,r=i-9;t={width:i,height:n,radius:r},this.cachedDimensions.set(e,t)}return t}setHandAngle(e){let t=P.calculateShortestPath(this.currentAngle,e);Math.abs(this.currentAngle-t)<.01||(this.currentAngle=t,this.config.clockHand.style.transform=`rotateZ(${t}deg)`)}animateToAngle(e){let t=P.calculateShortestPath(this.currentAngle,e);this.currentAngle=t,this.config.tipsWrapper.classList.add("tp-ui-tips-animation"),this.config.clockHand.style.transform=`rotateZ(${t}deg)`,setTimeout(()=>{this.config.tipsWrapper.classList.remove("tp-ui-tips-animation")},401)}setActiveValue(e){let t=[this.config.tipsWrapper];this.config.tipsWrapperFor24h&&t.push(this.config.tipsWrapperFor24h),t.forEach(i=>{i.querySelectorAll(".tp-ui-value-tips, .tp-ui-value-tips-24h").forEach(r=>{let s=r;s.textContent===e||Number(s.textContent)===Number(e)?(s.classList.add("active"),s.setAttribute("aria-selected","true")):(s.classList.remove("active"),s.setAttribute("aria-selected","false"))})})}renderTips(e,t,i,n,r,s=!0,l,c="",a="12"){if(v()===!1)return;let u=l||this.config.tipsWrapper;s&&(u.innerHTML="",this.tipsCache.clear());let{width:d,height:p,radius:h}=this.getCachedDimensions(u),y=document.createDocumentFragment(),S=`${t}-${this.config.theme||"default"}`;e.forEach((k,H)=>{let m=`${S}-${k}`,b=this.tipsCache.get(m);b||(b=this.createTip(k,t,r),this.tipsCache.set(m,b));let{wrapper:f,tip:M}=b;this.updateTipState(f,M,k,i,n,r,c,a);let g=H*(360/e.length)*(Math.PI/180);f.style.left=`${d+Math.sin(g)*h}px`,f.style.bottom=`${p+Math.cos(g)*h}px`,y.appendChild(f)}),u.appendChild(y)}createTip(e,t,i){if(v()===!1){let l={};return{wrapper:l,tip:l}}let n=document.createElement("span"),r=document.createElement("span");r.textContent=e,r.setAttribute("role","option"),r.setAttribute("aria-selected","false"),r.tabIndex=0;let s=i==="24h"&&t.includes("24")?"tp-ui-value-tips-24h":"tp-ui-value-tips";return r.classList.add(s),n.classList.add(t),this.config.theme&&(n.classList.add(this.config.theme),r.classList.add(this.config.theme)),n.appendChild(r),{wrapper:n,tip:r}}updateTipState(e,t,i,n,r,s,l,c){e.classList.remove("tp-ui-tips-disabled"),t.classList.remove("tp-ui-tips-disabled"),t.removeAttribute("aria-disabled"),t.tabIndex=0,this.checkIfDisabled(i,n,r,s,l,c)&&(e.classList.add("tp-ui-tips-disabled"),t.classList.add("tp-ui-tips-disabled"),t.setAttribute("aria-disabled","true"),t.tabIndex=-1)}checkIfDisabled(e,t,i,n,r,s){return i?t==="hours"?D.isDisabled(e,r,i):t==="minutes"?I.isDisabled(e,s,r,i,n):!1:!1}setCircleSize(e){e?this.config.circle.classList.remove("small-circle"):this.config.circle.classList.add("small-circle")}setCircle24hMode(e){e?(this.config.circle.classList.add("tp-ui-circle-hand-24h"),this.config.clockHand.classList.add("tp-ui-clock-hand-24h")):(this.config.circle.classList.remove("tp-ui-circle-hand-24h"),this.config.clockHand.classList.remove("tp-ui-clock-hand-24h"))}destroy(){this.tipsCache.clear(),this.cachedDimensions.clear(),this.config.tipsWrapper.innerHTML=""}};var B=class{static processPointerInput(e){let t=P.calculateRawAngle(e.pointerPosition,e.clockCenter);return e.mode==="hours"?this.processHours(t,e):this.processMinutes(t,e)}static processHours(e,t){let i=t.smoothHourSnap??!0,n;if(i)n=e;else{let p=t.incrementHours*30;n=P.snapToIncrement(e,p)}let r=P.calculateDistance(t.pointerPosition,t.clockCenter),s=t.clockType==="24h"&&P.isInnerCircle(r,t.clockRadius),l=D.angleToIndex(n,t.clockType,s),c=D.indexToValue(l,t.clockType),a=D.isDisabled(c,t.amPm,t.disabledTime);a&&(l=D.findNearestValid(l,t.clockType,t.amPm,t.disabledTime));let u=D.indexToValue(l,t.clockType),d;return i?d=e:d=D.indexToAngle(l,t.clockType),{angle:d,value:u,index:l,isValid:!a,isInnerCircle:t.clockType==="24h"?s:void 0}}static processMinutes(e,t){let i=t.incrementMinutes*6,n=P.snapToIncrement(e,i),r=I.angleToIndex(n),s=I.indexToValue(r),l=t.currentHour||"00",c=I.isDisabled(s,l,t.amPm,t.disabledTime,t.clockType);c&&(r=I.findNearestValid(r,l,t.amPm,t.disabledTime,t.clockType));let a=I.indexToValue(r);return{angle:I.indexToAngle(r),value:a,index:r,isValid:!c}}static valueToAngle(e,t,i){let n=parseInt(e,10);return t==="hours"?D.indexToAngle(n,i):I.indexToAngle(n)}};var ye=class{state;renderer;clockType;disabledTime;incrementHours;incrementMinutes;smoothHourSnap;isDragging=!1;callbacks;lastProcessedX=null;lastProcessedY=null;constructor(e,t,i,n,r=1,s=1,l=!0,c={}){this.renderer=e,this.state={...t},this.clockType=i,this.disabledTime=n,this.incrementHours=r,this.incrementMinutes=s,this.smoothHourSnap=l,this.callbacks=c}handlePointerMove(e,t,i){if(this.isDragging=!0,this.lastProcessedX===e.x&&this.lastProcessedY===e.y)return;this.lastProcessedX=e.x,this.lastProcessedY=e.y;let n={pointerPosition:e,clockCenter:t,clockRadius:i,mode:this.state.mode,clockType:this.clockType,amPm:this.state.amPm,disabledTime:this.disabledTime,incrementHours:this.incrementHours,incrementMinutes:this.incrementMinutes,smoothHourSnap:this.smoothHourSnap,currentHour:this.state.hour},r=B.processPointerInput(n);if(r.isValid){if(this.state.mode==="hours"){let s=this.state.hour;this.state.hour=r.value,this.state.hourAngle=r.angle,this.clockType==="24h"&&r.isInnerCircle!==void 0&&(this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(r.isInnerCircle)),this.callbacks.onHourChange&&s!==r.value&&this.callbacks.onHourChange(r.value)}else{let s=this.state.minute;this.state.minute=r.value,this.state.minuteAngle=r.angle,this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(!1),this.callbacks.onMinuteChange&&s!==r.value&&this.callbacks.onMinuteChange(r.value)}this.renderer.setHandAngle(r.angle),this.renderer.setActiveValue(r.value)}}handlePointerUp(){this.isDragging=!1,this.lastProcessedX=null,this.lastProcessedY=null}snapToNearestHour(){if(this.state.mode!=="hours")return;let e=B.valueToAngle(this.state.hour,"hours",this.clockType);this.state.hourAngle=e,this.renderer.animateToAngle(e)}switchMode(e){this.state.mode=e;let t=e==="hours"?this.state.hourAngle:this.state.minuteAngle,i=e==="hours"?this.state.hour:this.state.minute;if(e==="hours"&&this.clockType==="24h"){let n=parseInt(i,10),r=n===0||n>=13;this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(r)}else this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(!1);this.renderer.setHandAngle(t),this.renderer.setActiveValue(i)}setValue(e,t){let i=B.valueToAngle(t,e,this.clockType);if(e==="hours")if(this.state.hour=t,this.state.hourAngle=i,this.clockType==="24h"){let n=parseInt(t,10),r=n===0||n>=13;this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(r)}else this.renderer.setCircle24hMode(!1);else this.state.minute=t,this.state.minuteAngle=i,this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(!1);this.state.mode===e&&(this.renderer.setHandAngle(i),this.renderer.setActiveValue(t))}setAmPm(e){this.state.amPm=e}getState(){return{...this.state}}getHour(){return this.state.hour}getMinute(){return this.state.minute}getAmPm(){return this.state.amPm}updateDisabledTime(e){this.disabledTime=e}destroy(){this.renderer.destroy()}};var Ee=class{controller;clockFace;isActive=!1;isBlocked=!1;config;cachedRect=null;cachedCenter=null;cachedRadius=null;rafId=null;constructor(e,t,i={}){this.controller=e,this.clockFace=t,this.config=i}attach(){this.clockFace.addEventListener("mousedown",this.handlePointerDown),this.clockFace.addEventListener("touchstart",this.handlePointerDown,{passive:!1})}detach(){this.clockFace.removeEventListener("mousedown",this.handlePointerDown),this.clockFace.removeEventListener("touchstart",this.handlePointerDown),this.removeGlobalListeners()}block(){this.isBlocked=!0}unblock(){this.isBlocked=!1}handlePointerDown=e=>{if(w()||this.isBlocked)return;let t=e.target;t&&t.classList&&t.classList.contains("tp-ui-tips-disabled")||(e.preventDefault(),this.isActive=!0,this.cachedRect=this.clockFace.getBoundingClientRect(),this.cachedCenter=this.getClockCenter(),this.cachedRadius=this.getClockRadius(),this.processPointerEvent(e),document.addEventListener("mousemove",this.handlePointerMove),document.addEventListener("touchmove",this.handlePointerMove,{passive:!1}),document.addEventListener("mouseup",this.handlePointerUp),document.addEventListener("touchend",this.handlePointerUp))};handlePointerMove=e=>{if(!this.isActive||this.isBlocked)return;let t=this.getTargetElement(e);t&&t.classList&&t.classList.contains("tp-ui-tips-disabled")||(e.preventDefault(),this.rafId===null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.processPointerEvent(e)})))};handlePointerUp=()=>{if(!this.isActive)return;this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.isActive=!1,this.cachedRect=null,this.cachedCenter=null,this.cachedRadius=null,this.controller.handlePointerUp();let{autoSwitchToMinutes:e,isMobileView:t,smoothHourSnap:i,hourElement:n,minutesElement:r}=this.config;i&&n?.classList.contains("active")&&this.controller.snapToNearestHour(),this.removeGlobalListeners(),e&&n?.classList.contains("active")&&!t?(n.classList.remove("active"),r?.classList.add("active"),r?.click(),r?.focus(),n.blur()):r?.classList.contains("active")&&this.config.onMinuteCommit&&this.config.onMinuteCommit()};processPointerEvent(e){let t=this.getPointerPosition(e),i=this.cachedCenter||this.getClockCenter(),n=this.cachedRadius||this.getClockRadius();this.controller.handlePointerMove(t,i,n)}getPointerPosition(e){let t=this.cachedRect||this.clockFace.getBoundingClientRect();if("touches"in e){let i=e.touches[0]||e.changedTouches[0];return{x:i.clientX-t.left,y:i.clientY-t.top}}else return{x:e.clientX-t.left,y:e.clientY-t.top}}getTargetElement(e){if("touches"in e){let t=e.touches[0]||e.changedTouches[0];if(t&&!w())return document.elementFromPoint(t.clientX,t.clientY)}return e.target}getClockCenter(){let e=this.clockFace.offsetWidth,t=this.clockFace.offsetHeight;return{x:e/2,y:t/2}}getClockRadius(){return this.clockFace.offsetWidth/2}removeGlobalListeners(){v()!==!1&&(document.removeEventListener("mousemove",this.handlePointerMove),document.removeEventListener("touchmove",this.handlePointerMove),document.removeEventListener("mouseup",this.handlePointerUp),document.removeEventListener("touchend",this.handlePointerUp))}};var Te=class{renderer;controller;dragHandlers;clockType;disabledTime;tipsWrapper;tipsWrapperFor24h;constructor(e){this.clockType=e.clockType,this.disabledTime=e.disabledTime,this.tipsWrapper=e.tipsWrapper,this.tipsWrapperFor24h=e.tipsWrapperFor24h;let t={clockFace:e.clockFace,tipsWrapper:e.tipsWrapper,tipsWrapperFor24h:e.tipsWrapperFor24h,clockHand:e.clockHand,circle:e.circle,theme:e.theme};this.renderer=new be(t);let i={hour:e.initialHour,minute:e.initialMinute,amPm:e.initialAmPm,hourAngle:this.calculateInitialAngle("hours",e.initialHour),minuteAngle:this.calculateInitialAngle("minutes",e.initialMinute),mode:"hours"},n={onHourChange:e.onHourChange,onMinuteChange:e.onMinuteChange};this.controller=new ye(this.renderer,i,e.clockType,e.disabledTime,e.incrementHours||1,e.incrementMinutes||1,e.smoothHourSnap??!0,n),this.dragHandlers=new Ee(this.controller,e.clockFace,e.dragConfig||{})}initialize(){this.dragHandlers.attach(),this.switchToHours()}switchToHours(){this.controller.switchMode("hours"),this.clockType==="24h"&&this.tipsWrapperFor24h&&this.tipsWrapperFor24h.classList.remove("none"),this.renderHourTips();let e=this.controller.getState();this.renderer.setActiveValue(e.hour)}switchToMinutes(){this.controller.switchMode("minutes"),this.tipsWrapperFor24h&&this.tipsWrapperFor24h.classList.add("none"),this.renderMinuteTips();let e=this.controller.getState();this.renderer.setActiveValue(e.minute)}setHour(e){this.controller.setValue("hours",e)}setMinute(e){this.controller.setValue("minutes",e)}setAmPm(e){this.controller.setAmPm(e);let t=this.controller.getState();t.mode==="hours"?(this.renderHourTips(),this.renderer.setHandAngle(t.hourAngle),this.renderer.setActiveValue(t.hour)):(this.renderMinuteTips(),this.renderer.setHandAngle(t.minuteAngle),this.renderer.setActiveValue(t.minute))}getHour(){return this.controller.getHour()}getMinute(){return this.controller.getMinute()}getAmPm(){return this.controller.getAmPm()}updateDisabledTime(e){this.disabledTime=e,this.controller.updateDisabledTime(e),this.controller.getState().mode==="hours"?this.renderHourTips():this.renderMinuteTips()}renderHourTips(){let t=this.controller.getState().amPm;this.clockType==="24h"?(this.renderer.renderTips(Pe,"tp-ui-hour-time-12","hours",this.disabledTime,this.clockType,!0,this.tipsWrapper,t),this.tipsWrapperFor24h&&this.renderer.renderTips(We,"tp-ui-hour-time-24","hours",this.disabledTime,this.clockType,!0,this.tipsWrapperFor24h,t)):this.renderer.renderTips(Pe,"tp-ui-hour-time-12","hours",this.disabledTime,this.clockType,!0,void 0,t)}renderMinuteTips(){let e=this.controller.getState(),t=e.amPm,i=e.hour;this.renderer.renderTips(U,"tp-ui-minutes-time","minutes",this.disabledTime,this.clockType,!0,void 0,t,i)}calculateInitialAngle(e,t){let i=parseInt(t,10);return e==="hours"?i%12*30:i*6}destroy(){this.dragHandlers.detach(),this.controller.destroy()}blockInteractions(){this.dragHandlers.block()}unblockInteractions(){this.dragHandlers.unblock()}};var Q=class{core;emitter;clockSystem=null;constructor(e,t){this.core=e,this.emitter=t}getClockSystem(){return this.clockSystem}initialize(){let e=this.core.getClockFace(),t=this.core.getClockHand(),i=this.core.getCircle();if(!e||!t||!i)return;let n=this.core.options.clock.type==="24h",r=this.core.getTipsWrapper();if(!r)return;let s=this.core.getHour(),l=this.core.getMinutes(),c={clockFace:e,tipsWrapper:r,tipsWrapperFor24h:n&&this.core.getTipsWrapperFor24h()||void 0,clockHand:t,circle:i,clockType:this.core.options.clock.type||"12h",disabledTime:this.convertDisabledTime(),initialHour:s?.value||"12",initialMinute:l?.value||"00",initialAmPm:this.getAmPmValue(),theme:this.core.options.ui.theme,incrementHours:this.core.options.clock.incrementHours||1,incrementMinutes:this.core.options.clock.incrementMinutes||1,smoothHourSnap:this.core.options.clock.smoothHourSnap??!0,timepicker:null,dragConfig:{autoSwitchToMinutes:this.core.options.clock.autoSwitchToMinutes,isMobileView:this.core.isMobileView,smoothHourSnap:this.core.options.clock.smoothHourSnap??!0,hourElement:s,minutesElement:l,onMinuteCommit:()=>{let a=this.core.getMinutes(),u=this.core.getHour(),d=this.core.getActiveTypeMode();this.emitter.emit("range:minute:commit",{hour:u?.value??"12",minutes:a?.value??"00",type:d?.textContent??void 0})}},onHourChange:a=>{let u=this.core.getHour();u&&(u.value=a,u.setAttribute("aria-valuenow",a));let d=this.core.getModalElement();x(d,`Hour: ${a}`);let p=this.core.getMinutes(),h=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:a,minutes:p?.value,type:h?.textContent||void 0})},onMinuteChange:a=>{let u=this.core.getMinutes();u&&(u.value=a,u.setAttribute("aria-valuenow",a));let d=this.core.getModalElement();x(d,`Minutes: ${a}`);let p=this.core.getHour(),h=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:p?.value,minutes:a,type:h?.textContent||void 0})}};this.clockSystem=new Te(c),this.clockSystem.initialize()}convertDisabledTime(){let e=this.core.disabledTime?.value;if(!e)return null;let t;return e.intervals&&(t=Array.isArray(e.intervals)?e.intervals:[e.intervals]),{hours:e.hours,minutes:e.minutes,isInterval:e.isInterval,intervals:t,clockType:e.clockType}}getAmPmValue(){if(this.core.options.clock.type==="24h")return"";let e=this.core.getActiveTypeMode();if(e){let n=e.textContent?.trim();if(n==="AM"||n==="PM")return n}let t=this.core.getAM();return this.core.options.range?.enabled===!0?t?.classList.contains("active")?"AM":"":t?.classList.contains("active")?"AM":"PM"}destroy(){this.clockSystem&&(this.clockSystem.destroy(),this.clockSystem=null)}};var ee=class{core;constructor(e){this.core=e}removeCircleClockClasses24h(){let e=this.core.getCircle(),t=this.core.getClockHand();e?.classList.remove("tp-ui-circle-hand-24h"),t?.classList.remove("tp-ui-clock-hand-24h")}setCircleClockClasses24h(){let e=this.core.getCircle(),t=this.core.getClockHand();e&&e.classList.add("tp-ui-circle-hand-24h"),t&&t.classList.add("tp-ui-clock-hand-24h")}setOnStartCSSClassesIfClockType24h(){if(this.core.options.clock.type==="24h"){let e=this.core.getInput();if(!e)return;let t;e.value.length>0&&(t=e.value.split(":")[0]),t&&(Number(t)>12||Number(t)===0)&&this.setCircleClockClasses24h()}}setBgColorToCircleWithMinutesTips(){let e=this.core.getMinutes(),t=this.core.getCircle();if(!(!e||!t)&&e.value&&U.includes(e.value)){let i=getComputedStyle(t).getPropertyValue("--timepicker-primary").trim();i&&(t.style.backgroundColor=i),t.classList.remove("small-circle")}}removeBgColorToCirleWithMinutesTips(){let e=this.core.getMinutes(),t=this.core.getCircle();!e||!t||e.value&&U.includes(e.value)||(t.style.backgroundColor="",t.classList.add("small-circle"))}setClassActiveToHourOnOpen(){if(this.core.options.ui.mobile||this.core.isMobileView)return;this.core.getHour()?.classList.add($)}toggleClassActiveToValueTips(e,t){if(e)return;let i=this.core.getAllValueTips();if(!i)return;let n=i.find(r=>Number(r.innerText)===Number(t));i.forEach(r=>{r.classList.remove($),r.setAttribute("aria-selected","false")}),n!==void 0&&(n.classList.add($),n.setAttribute("aria-selected","true"))}};var te=class{getClockSystem;styleHandler;getAmPmValue;clockType;constructor(e,t,i,n){this.getClockSystem=e,this.styleHandler=t,this.getAmPmValue=i,this.clockType=n}setMinutesToClock(e){let t=this.getClockSystem();t&&(this.styleHandler.removeBgColorToCirleWithMinutesTips(),e&&t.setMinute(e),t.switchToMinutes())}setHoursToClock(e){let t=this.getClockSystem();t&&(e&&t.setHour(e),t.switchToHours())}setTransformToCircleWithSwitchesHour(e){let t=this.getClockSystem();!t||!e||t.setHour(e)}setTransformToCircleWithSwitchesMinutes(e){let t=this.getClockSystem();!t||!e||t.setMinute(e)}updateAmPm(){let e=this.getClockSystem();if(!e||this.clockType==="24h")return;let t=this.getAmPmValue();t!==""&&e.setAmPm(t)}};var ie=class{systemInitializer;styleHandler;timeHandler;eventHandler;constructor(e,t){this.systemInitializer=new Q(e,t),this.styleHandler=new ee(e);let i=e.options.clock.type||"12h";this.timeHandler=new te(()=>this.systemInitializer.getClockSystem(),this.styleHandler,()=>this.systemInitializer.getAmPmValue(),i),this.eventHandler=new J(t,()=>this.systemInitializer.getClockSystem(),n=>this.timeHandler.setHoursToClock(n),n=>this.timeHandler.setMinutesToClock(n),()=>this.timeHandler.updateAmPm(),()=>this.systemInitializer.convertDisabledTime()),this.eventHandler.setup()}initializeClockSystem(){this.systemInitializer.initialize()}destroyClockSystem(){this.systemInitializer.destroy()}removeCircleClockClasses24h(){this.styleHandler.removeCircleClockClasses24h()}setCircleClockClasses24h(){this.styleHandler.setCircleClockClasses24h()}setOnStartCSSClassesIfClockType24h(){this.styleHandler.setOnStartCSSClassesIfClockType24h()}setBgColorToCircleWithMinutesTips=()=>{this.styleHandler.setBgColorToCircleWithMinutesTips()};removeBgColorToCirleWithMinutesTips=()=>{this.styleHandler.removeBgColorToCirleWithMinutesTips()};setClassActiveToHourOnOpen=()=>{this.styleHandler.setClassActiveToHourOnOpen()};setMinutesToClock=e=>{this.timeHandler.setMinutesToClock(e)};setHoursToClock=e=>{this.timeHandler.setHoursToClock(e)};setTransformToCircleWithSwitchesHour=e=>{this.timeHandler.setTransformToCircleWithSwitchesHour(e)};setTransformToCircleWithSwitchesMinutes=e=>{this.timeHandler.setTransformToCircleWithSwitchesMinutes(e)};updateAmPm=()=>{this.timeHandler.updateAmPm()};toggleClassActiveToValueTips=e=>{let t=this.systemInitializer.getClockSystem()!==null;this.styleHandler.toggleClassActiveToValueTips(t,e)};destroy(){this.destroyClockSystem()}};var ne=class{core;emitter;cleanupHandlers=[];wasCleared=!1;constructor(e,t){this.core=e,this.emitter=t}init(){if(!this.core.options.ui.clearButton)return;let e=this.getClearButton();if(!e)return;let t=()=>{this.core.isDestroyed||e.getAttribute("aria-disabled")!=="true"&&this.handleClearClick()};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t)),this.setupInternalEventListeners()}setupInternalEventListeners(){this.emitter.on("update",()=>{this.updateClearButtonState()}),this.emitter.on("open",()=>{this.updateClearButtonState()}),this.emitter.on("select:hour",()=>{this.updateClearButtonState(),this.reenableConfirmIfCleared()}),this.emitter.on("select:minute",()=>{this.updateClearButtonState(),this.reenableConfirmIfCleared()})}handleClearClick(){let t=this.core.getInput()?.value||null;this.clearTimeValue(),this.resetClockToNeutral(),this.disableConfirmButton(),this.wasCleared=!0;let i=this.core.getModalElement();x(i,"Time cleared"),this.emitter.emit("clear",{previousValue:t}),this.emitter.emit("update",{hour:void 0,minutes:void 0,type:void 0});let{callbacks:n}=this.core.options;n.onClear&&n.onClear({previousValue:t})}clearTimeValue(){let e=this.core.options.clearBehavior?.clearInput!==!1,t=this.core.getInput();t&&e&&(t.value=""),this.core.setDegreesHours(null),this.core.setDegreesMinutes(null),this.core.options.range?.enabled&&this.clearRangeValues(),this.core.options.timezone?.enabled&&this.clearTimezoneValue()}resetClockToNeutral(){let e=this.core.options.clock.type,t="12",i="00",n=e==="12h"?"PM":void 0,r=this.core.getHour(),s=this.core.getMinutes();r&&(r.value=t,r.removeAttribute("aria-valuenow")),s&&(s.value=i,s.removeAttribute("aria-valuenow"));let l=this.core.getClockHand();if(l){let c=l.style.transition;l.style.transition="none",l.style.transform="rotateZ(0deg)",l.offsetHeight,requestAnimationFrame(()=>{l.style.transition=c})}if(this.removeActiveStates(),r&&r.click(),e==="12h"&&n){let c=this.core.getAM(),a=this.core.getPM();c?.classList.remove("active"),a?.classList.remove("active"),c?.setAttribute("aria-pressed","false"),a?.setAttribute("aria-pressed","false"),a?.classList.add("active"),a?.setAttribute("aria-pressed","true")}this.emitter.emit("animation:clock",{})}removeActiveStates(){this.core.getAllValueTips().forEach(n=>{n.classList.remove("active"),n.removeAttribute("aria-selected")});let t=this.core.getHour(),i=this.core.getMinutes();t?.removeAttribute("aria-valuenow"),i?.removeAttribute("aria-valuenow")}disableConfirmButton(){let e=this.core.getOkButton();e&&(e.classList.add("disabled"),e.setAttribute("aria-disabled","true"))}updateClearButtonState(){let e=this.getClearButton();if(!e)return;let t=this.core.getInput(),i=t?.value&&t.value.trim()!=="",n=this.core.getHour(),r=this.core.getMinutes(),s=this.core.getActiveTypeMode(),l=this.core.options.clock.type,c=n?.value||"",a=r?.value||"",u=s?.textContent||"",h=i||!(l==="12h"?c==="12"&&a==="00"&&u==="PM":c==="12"&&a==="00");e.classList.toggle("disabled",!h),e.setAttribute("aria-disabled",String(!h))}reenableConfirmIfCleared(){if(!this.wasCleared)return;let e=this.core.getOkButton();e&&(e.classList.remove("disabled"),e.setAttribute("aria-disabled","false"),this.wasCleared=!1)}clearRangeValues(){let e=this.getFromTab(),t=this.getToTab(),i=this.getFromTimeDisplay(),n=this.getToTimeDisplay();i&&(i.textContent="--:--"),n&&(n.textContent="--:--"),e?.classList.add("active"),t?.classList.remove("active"),e?.setAttribute("aria-selected","true"),t?.setAttribute("aria-selected","false"),e?.setAttribute("tabindex","0"),t?.setAttribute("tabindex","-1"),t?.classList.add("disabled"),t?.setAttribute("aria-disabled","true");let r=this.core.getHour();r&&r.focus(),this.emitter.emit("range:switch",{active:"from",disabledTime:null})}clearTimezoneValue(){let e=this.getTimezoneDropdown(),t=this.getTimezoneSelected();if(t){let i=t.getAttribute("data-placeholder")||"Timezone...";t.textContent=i}e?.setAttribute("aria-expanded","false")}getClearButton(){return this.core.getModalElement()?.querySelector(".tp-ui-clear-btn")||null}getFromTab(){return this.core.getModalElement()?.querySelector(".tp-ui-range-from")||null}getToTab(){return this.core.getModalElement()?.querySelector(".tp-ui-range-to")||null}getFromTimeDisplay(){return this.core.getModalElement()?.querySelector(".tp-ui-range-from-time")||null}getToTimeDisplay(){return this.core.getModalElement()?.querySelector(".tp-ui-range-to-time")||null}getTimezoneDropdown(){return this.core.getModalElement()?.querySelector(".tp-ui-timezone-dropdown")||null}getTimezoneSelected(){return this.core.getModalElement()?.querySelector(".tp-ui-timezone-selected")||null}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var Me=class{animation;modal;config;theme;validation;events;clock;clearButton;plugins=new Map;constructor(e,t){this.animation=new W(e,t),this.modal=new K(e,t),this.config=new Y(e,t),this.theme=new Z(e,t),this.validation=new G(e,t),this.events=new X(e,t),this.clock=new ie(e,t),this.clearButton=new ne(e,t),C.getAll().forEach(n=>{let r=n.factory(e,t);this.plugins.set(n.name,r)})}getPlugin(e){return this.plugins.get(e)}destroy(){this.animation.destroy(),this.modal.destroy(),this.config.destroy(),this.theme.destroy(),this.validation.destroy(),this.events.destroy(),this.clock.destroy(),this.clearButton.destroy(),this.plugins.forEach(e=>e.destroy()),this.plugins.clear()}};var Ce="is-rippling",ke="ripple-hold",F=null;function Mt(o){let e=o.target,t=e.hasAttribute("data-md3-ripple")?e:e.closest("[data-md3-ripple]");if(!t||o.button!==0&&o.pointerType==="mouse")return;let i=t.getBoundingClientRect(),r=Math.max(i.width,i.height)*2,s=o.clientX-i.left,l=o.clientY-i.top;t.style.setProperty("--ripple-size",`${r}px`),t.style.setProperty("--ripple-x",`${s}px`),t.style.setProperty("--ripple-y",`${l}px`),t.classList.remove(Ce,ke),t.offsetWidth,t.classList.add(Ce,ke),t._rippleHold=!0,F=t}function je(o){let e=o.target,i=(e.hasAttribute("data-md3-ripple")?e:e.closest("[data-md3-ripple]"))||F;i&&(i._rippleHold=!1,i.classList.remove(ke),setTimeout(()=>{i.classList.remove(Ce),F===i&&(F=null)},1e3))}function Ct(o){let e=o.currentTarget;!e||!e._rippleHold||(e._rippleHold=!1,e.classList.remove(ke),setTimeout(()=>{e.classList.remove(Ce),F===e&&(F=null)},1e3))}function Xe(o){if(v()===!1)return;let e=o||document;e.addEventListener("pointerdown",Mt),e.addEventListener("pointerup",je),e.addEventListener("pointercancel",je),e.querySelectorAll("[data-md3-ripple]").forEach(i=>{i.addEventListener("mouseleave",Ct)})}var Je=(o,e)=>{let t;return(...i)=>{clearTimeout(t),t=setTimeout(()=>{o(...i)},e)}};var Qe=["basic","crane-straight","crane","m2","m3-green"],He=class{core;managers;emitter;eventsClickMobileHandler=()=>{};mutliEventsMoveHandler=()=>{};unmountTimeouts=[];constructor(e,t,i){this.core=e,this.managers=t,this.emitter=i}init(){if(!this.core.isDestroyed&&!this.core.isInitialized){try{this.managers.config.updateInputValueWithCurrentTimeOnStart(),this.managers.validation.checkDisabledValuesOnStart()}catch{this.core.setIsDestroyed(!0);return}this.managers.theme.setTimepickerClassToElement(),this.managers.theme.setInputClassToInputElement(),this.managers.theme.setDataOpenToInputIfDoesntExistInWrapper(),this.managers.theme.setClassTopOpenElement(),this.managers.config.getDisableTime(),this.core.options.ui.inline?.enabled||this.managers.events.handleOpenOnClick(),this.managers.events.handleOpenOnEnterFocus(),this.setupCallbackBridge(),this.core.setIsInitialized(!0)}}setupCallbackBridge(){let{callbacks:e}=this.core.options;e.onOpen&&this.emitter.on("open",e.onOpen),e.onCancel&&this.emitter.on("cancel",e.onCancel),e.onConfirm&&this.emitter.on("confirm",e.onConfirm),e.onUpdate&&this.emitter.on("update",e.onUpdate),e.onSelectHour&&this.emitter.on("select:hour",e.onSelectHour),e.onSelectMinute&&this.emitter.on("select:minute",e.onSelectMinute),e.onSelectAM&&this.emitter.on("select:am",e.onSelectAM),e.onSelectPM&&this.emitter.on("select:pm",e.onSelectPM),e.onError&&this.emitter.on("error",e.onError),e.onTimezoneChange&&this.emitter.on("timezone:change",e.onTimezoneChange),e.onRangeConfirm&&this.emitter.on("range:confirm",e.onRangeConfirm),e.onRangeSwitch&&this.emitter.on("range:switch",e.onRangeSwitch),e.onRangeValidation&&this.emitter.on("range:validation",e.onRangeValidation),e.onClear&&this.emitter.on("clear",e.onClear)}mount(){this.core.isDestroyed||this.core.isOpen||(this.core.isInitialized||this.init(),this.eventsBundle())}unmount(e){let t=Je((...i)=>{if(i.length>2)return;let[n]=i.filter(u=>typeof u=="boolean"),[r]=i.filter(u=>typeof u=="function");this.core.setIsMobileView(!!this.core.options.ui.mobile);let s=this.core.getModalElement();n&&s&&this.core.getOkButton()?.click(),this.core.setIsTouchMouseMove(!1),this.core.setIsOpen(!1),this.removeEventListeners(),this.isPopoverMode()&&this.managers.getPlugin("wheel")?.detachPopover(),s&&this.managers.animation.removeAnimationToClose(),this.core.getOpenElement().forEach(u=>u?.classList.remove("disabled"));let c=setTimeout(()=>{v()&&(document.body.style.overflowY="",document.body.style.paddingRight="")},T.SCROLLBAR_RESTORE);this.unmountTimeouts.push(c);let a=setTimeout(()=>{let u=this.core.getInput();this.core.options.behavior.focusInputAfterClose&&u?.focus();let d=this.core.getModalElement();d&&d.remove(),this.core.setIsModalRemove(!0)},T.MODAL_REMOVE);this.unmountTimeouts.push(a),r&&r()},this.core.options.behavior.delayHandler||T.DEFAULT_DELAY);e?t(e):t()}destroy(e){if(this.core.isDestroyed)return;this.clearUnmountTimeouts();let t=typeof e=="function"?{callback:e}:e||{},{keepInputValue:i=!1,callback:n}=t,r=this.core.getInput(),s=i?r?.value:null;this.removeEventListeners(),this.core.getModalElement()?.remove(),this.core.getOpenElement()?.forEach(d=>{d&&(d.classList.remove("disabled","active","tp-ui-open-element"),d.classList.remove(...Qe))}),r&&(r.classList.remove("tp-ui-invalid-format","invalid-value","error","active","tp-ui-input"),r.removeAttribute("data-open"),r.removeAttribute("data-owner-id"),i&&s&&(r.value=s));let a=this.core.element;a&&(a.classList.remove(...Qe),a.classList.remove("error","active","disabled"),a.removeAttribute("data-owner-id"),a.removeAttribute("data-open"),this.core.options.ui.cssClass&&a.classList.remove(this.core.options.ui.cssClass)),a?.querySelectorAll(".tp-ui-invalid-text")?.forEach(d=>d.remove()),this.mutliEventsMoveHandler=()=>{},this.eventsClickMobileHandler=()=>{},this.core.reset(),this.managers.destroy(),this.emitter.clear(),w()||(document.body.style.overflowY="",document.body.style.paddingRight=""),n&&n()}eventsBundle(){if(this.core.isDestroyed||!this.core.isModalRemove)return;this.clearUnmountTimeouts(),this.core.setIsOpen(!0),this.core.setIsModalRemove(!1),this.setupValidation(),this.disableOpenElements(),this.setupModal(),this.applyExpandedState(),this.managers.modal.setFlexEndToFooterIfNoKeyboardIcon(),this.applyThemeDeferred(),this.managers.animation.setAnimationToOpen(),this.managers.config.getInputValueOnOpenAndSet();let e=this.resolveWheelMode();this.emitMissingPluginErrors(),this.initClockOrWheel(e),this.initOptionalPlugins(e),this.bindEventHandlers(e),this.finalizeModal(e),this.isPopoverMode()&&this.managers.getPlugin("wheel")?.attachPopover(),this.managers.modal.setShowClassToBackdrop()}setupValidation(){this.managers.validation.setErrorHandler(),this.managers.validation.removeErrorHandler()}disableOpenElements(){this.core.options.ui.inline?.enabled||(this.core.getOpenElement().forEach(t=>t?.classList.add("disabled")),this.isPopoverMode()||this.core.getInput()?.blur())}setupModal(){this.managers.modal.setScrollbarOrNot(),this.managers.modal.setModalTemplate(),this.managers.modal.setNormalizeClass(),this.managers.modal.removeBackdrop()}applyExpandedState(){if(this.core.isMobileView)this.managers.config.updateClockFaceAccessibility(!0);else{let e=this.core.getModalElement(),t=e?.querySelector(".tp-ui-mobile-clock-wrapper"),i=e?.querySelector(".tp-ui-wrapper"),n=e?.querySelectorAll("*");t?.classList.add("expanded"),i?.classList.add("expanded"),n?.forEach(r=>{!r.classList.contains("tp-ui-select-time")&&!r.classList.contains("tp-ui-mobile-clock-wrapper")&&!r.classList.contains("tp-ui-wrapper")&&r.classList.add("expanded")})}}applyThemeDeferred(){setTimeout(()=>{this.managers.theme.setTheme();let e=this.core.getWrapper();e&&this.core.options.ui.cssClass&&e.classList.add(this.core.options.ui.cssClass)},0)}isCompactWheelMode(){return this.core.options.ui.mode==="compact-wheel"}isPopoverMode(){return this.isCompactWheelMode()&&!!this.core.options.wheel?.placement}resolveWheelMode(){let e=this.core.options.ui.mode;return(e==="wheel"||e==="compact-wheel")&&C.has("wheel")}emitMissingPluginErrors(){let e=this.core.options.ui.mode;(e==="wheel"||e==="compact-wheel")&&!C.has("wheel")&&this.emitter.emit("error",{error:"WheelPlugin is not registered. Import and register it: PluginRegistry.register(WheelPlugin)"}),this.core.options.range?.enabled&&!C.has("range")&&this.emitter.emit("error",{error:"RangePlugin is not registered. Import and register it: PluginRegistry.register(RangePlugin)"}),this.core.options.timezone?.enabled&&!C.has("timezone")&&this.emitter.emit("error",{error:"TimezonePlugin is not registered. Import and register it: PluginRegistry.register(TimezonePlugin)"})}initClockOrWheel(e){if(e){let t=this.managers.getPlugin("wheel");t&&t.init()}else this.managers.clock.initializeClockSystem(),this.managers.clock.setOnStartCSSClassesIfClockType24h(),this.managers.clock.setClassActiveToHourOnOpen()}initOptionalPlugins(e){let t=this.managers.getPlugin("timezone");t&&t.init();let i=this.managers.getPlugin("range");i&&!e&&i.init()}bindEventHandlers(e){this.managers.events.handleCancelButton(),this.managers.events.handleOkButton(),this.managers.clearButton.init(),e||(this.managers.events.handleHourEvents(),this.managers.events.handleMinutesEvents()),this.managers.events.handleKeyboardInput(),this.core.options.ui.enableSwitchIcon&&!e&&this.managers.events.handleSwitchViewButton(),this.core.options.clock.type!=="24h"&&!this.isCompactWheelMode()&&(this.managers.events.handleAmClick(),this.managers.events.handlePmClick()),this.core.options.behavior.focusTrap&&this.managers.events.focusTrapHandler(),this.core.options.ui.inline?.enabled||(this.managers.events.handleEscClick(),this.isPopoverMode()||(this.core.options.ui.mode==="wheel"||this.core.options.ui.mode==="compact-wheel")&&this.core.options.wheel?.ignoreOutsideClick||this.managers.events.handleBackdropClick())}finalizeModal(e){let t=this.core.getModalElement();if(t&&Xe(t),!e){let i=this.core.getClockFace();i&&typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{i?.classList.add("scale-in")})})}}clearUnmountTimeouts(){this.unmountTimeouts.forEach(clearTimeout),this.unmountTimeouts=[]}removeEventListeners(){if(v()===!1)return;Ue.split(" ").forEach(t=>{document.removeEventListener(t,this.mutliEventsMoveHandler,!1)}),document.removeEventListener("mousedown",this.eventsClickMobileHandler)}};var q=class{events=new Map;on(e,t){this.events.has(e)||this.events.set(e,new Set),this.events.get(e).add(t)}once(e,t){let i=n=>{t(n),this.off(e,i)};this.on(e,i)}off(e,t){t?this.events.get(e)?.delete(t):this.events.delete(e)}emit(e,t){this.events.get(e)?.forEach(i=>{i(t)})}clear(){this.events.clear()}hasListeners(e){return(this.events.get(e)?.size??0)>0}};var R={clock:{type:"12h",incrementHours:1,incrementMinutes:1,autoSwitchToMinutes:!0,disabledTime:void 0,currentTime:void 0},ui:{mode:"clock",theme:"basic",animation:!0,backdrop:!0,mobile:!1,enableSwitchIcon:!1,editable:!1,enableScrollbar:!1,cssClass:void 0,appendModalSelector:"",iconTemplate:"",iconTemplateMobile:"",inline:void 0,clearButton:!1},labels:{am:"AM",pm:"PM",ok:"OK",cancel:"Cancel",time:"Select time",mobileTime:"Enter Time",mobileHour:"Hour",mobileMinute:"Minute",clear:"Clear"},behavior:{focusInputAfterClose:!1,focusTrap:!0,delayHandler:300,id:void 0},callbacks:{onOpen:void 0,onCancel:void 0,onConfirm:void 0,onUpdate:void 0,onSelectHour:void 0,onSelectMinute:void 0,onSelectAM:void 0,onSelectPM:void 0,onError:void 0,onTimezoneChange:void 0,onRangeConfirm:void 0,onRangeSwitch:void 0,onRangeValidation:void 0,onClear:void 0},timezone:{enabled:!1,default:void 0,whitelist:void 0,label:"Timezone"},range:{enabled:!1,minDuration:void 0,maxDuration:void 0,fromLabel:"From",toLabel:"To"},wheel:{placement:void 0,hideFooter:void 0,commitOnScroll:void 0,hideDisabled:void 0,ignoreOutsideClick:void 0},clearBehavior:{clearInput:!0}};function $e(o={}){let e={clock:{...R.clock,...o.clock},ui:{...R.ui,...o.ui},labels:{...R.labels,...o.labels},behavior:{...R.behavior,...o.behavior},callbacks:{...R.callbacks,...o.callbacks},timezone:{...R.timezone,...o.timezone},range:{...R.range,...o.range},wheel:{...R.wheel,...o.wheel},clearBehavior:{...R.clearBehavior,...o.clearBehavior}},t=e.ui.mode;return(t==="wheel"||t==="compact-wheel")&&(e.wheel={placement:t==="compact-wheel"?"auto":void 0,hideFooter:void 0,commitOnScroll:void 0,ignoreOutsideClick:void 0,...e.wheel}),e}var et=o=>o.replace(/[^0-9:APMapm\s]/g,"");var z=new Map,re=class{core;managers;lifecycle;emitter;constructor(e,t){if(w())throw new Error("TimepickerUI requires browser environment");let i=this.resolveInputElement(e);if(!i)throw new Error("Input element not found");let n=t?.behavior?.id,r=n||`tp-ui-${Fe()}`,s=this.createWrapperElement(i),l=$e(t||{});if(l.ui.inline?.enabled&&typeof t?.behavior?.focusTrap>"u"&&(l.behavior.focusTrap=!1),l.ui.inline?.enabled){if(!l.ui.inline.containerId)throw new Error("inline.containerId is required when inline mode is enabled");if(!w()&&!document.getElementById(l.ui.inline.containerId))throw new Error(`Container element with id "${l.ui.inline.containerId}" not found`)}this.emitter=new q,this.core=new se(s,l,r,n);let c=this.core.getInput();if(c){let a=A(c,l.clock.type),u=Number(a.hour)*30,d=Number(a.minutes)*6;this.core.setDegreesHours(u),this.core.setDegreesMinutes(d)}this.managers=new Me(this.core,this.emitter),this.lifecycle=new He(this.core,this.managers,this.emitter),this.managers.config.checkMobileOption(),this.managers.config.preventClockTypeByCurrentTime(),this.setupInternalEventListeners(),z.set(this.core.instanceId,this)}setupInternalEventListeners(){this.emitter.on("show",()=>{this.core.isDestroyed||this.lifecycle.mount()}),this.emitter.on("cancel",()=>{this.core.isDestroyed||this.lifecycle.unmount()}),this.emitter.on("confirm",e=>{if(!this.core.isDestroyed){if(this.core.options.range?.enabled)return;let t=this.core.getInput();if(t&&e.hour&&e.minutes){let i=e.type?` ${e.type}`:"";t.value=`${e.hour}:${e.minutes}${i}`}e.autoCommit||this.lifecycle.unmount()}}),this.emitter.on("range:confirm",e=>{if(this.core.isDestroyed)return;let t=this.core.getInput();t&&(t.value=`${e.from} - ${e.to}`),this.lifecycle.unmount()})}create(){this.lifecycle.init(),this.core.options.ui.inline?.enabled&&this.lifecycle.mount()}open(e){this.lifecycle.mount(),e&&e()}close(e,t){this.lifecycle.unmount(e?t:void 0),!e&&t&&t()}destroy(e){z.delete(this.core.instanceId),this.lifecycle.destroy(e)}update(e,t){this.core.isDestroyed||(this.core.updateOptions(e.options),this.managers.config.checkMobileOption(),this.managers.config.getDisableTime(),e.create&&this.create(),t&&t())}getValue(){if(this.core.isDestroyed)return{hour:"",minutes:"",type:void 0,time:"",degreesHours:null,degreesMinutes:null};let e=this.core.getModalElement(),t=this.core.getInput(),i="12",n="00",r=this.core.options.clock.type==="24h"?void 0:"AM",s=null,l=null;if(e){let a=this.core.getHour(),u=this.core.getMinutes(),d=this.core.getActiveTypeMode();i=a?.value||"12",n=u?.value||"00",r=this.core.options.clock.type==="24h"?void 0:d?.textContent||"AM",s=this.core.degreesHours,l=this.core.degreesMinutes}else if(t){let a=A(t,this.core.options.clock.type);i=a.hour,n=a.minutes,r=a.type,s=Number(i)*30,l=Number(n)*6}let c="";return this.core.options.clock.type==="24h"?c=`${i.padStart(2,"0")}:${n.padStart(2,"0")}`:c=`${i}:${n.padStart(2,"0")} ${r}`,{hour:i,minutes:n,type:r,time:c,degreesHours:s,degreesMinutes:l}}setValue(e,t=!0){if(this.core.isDestroyed||!e||typeof e!="string")return;this.core.isInitialized||this.create();let i=et(e.trim());try{let n=this.parseTimeString(i);if(this.applyParsedTime(n),this.syncPeriodIndicator(n.typeValue),t){let r=this.core.getInput();r&&(r.value=i)}this.syncClockVisual(n)}catch{return}}parseTimeString(e){if(this.core.options.clock.type==="24h"){let i=e.match(/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/);if(!i)throw new Error("Invalid 24h format. Expected HH:MM");return{hourValue:i[1].padStart(2,"0"),minutesValue:i[2],typeValue:"AM"}}let t=e.match(/^(1[0-2]|[1-9]):([0-5][0-9])\s*(AM|PM)$/i);if(!t)throw new Error("Invalid 12h format. Expected HH:MM AM/PM");return{hourValue:t[1],minutesValue:t[2],typeValue:t[3].toUpperCase()}}applyParsedTime(e){let t=this.core.getHour(),i=this.core.getMinutes();t&&(t.value=e.hourValue,t.setAttribute("aria-valuenow",e.hourValue),this.core.setDegreesHours(Number(e.hourValue)*30)),i&&(i.value=e.minutesValue,i.setAttribute("aria-valuenow",e.minutesValue),this.core.setDegreesMinutes(Number(e.minutesValue)*6))}syncPeriodIndicator(e){if(this.core.options.clock.type==="24h")return;let t=this.core.getAM(),i=this.core.getPM();!t||!i||(e==="AM"?(t.classList.add("active"),i.classList.remove("active")):(i.classList.add("active"),t.classList.remove("active")))}syncClockVisual(e){let t=this.core.options.ui.mode;if(t==="wheel"||t==="compact-wheel"){let i=this.managers.getPlugin("wheel");i&&i.scrollToValue(e.hourValue,e.minutesValue,e.typeValue)}else{let i=this.core.getClockHand();i&&(i.style.transform=`rotateZ(${this.core.degreesHours||0}deg)`)}}getElement(){return this.core.element}get instanceId(){return this.core.instanceId}get options(){return this.core.options}get isInitialized(){return this.core.isInitialized}get isDestroyed(){return this.core.isDestroyed}get hour(){return this.core.getHour()}get minutes(){return this.core.getMinutes()}get okButton(){return this.core.getOkButton()}get cancelButton(){return this.core.getCancelButton()}get clockHand(){return this.core.getClockHand()}on(e,t){this.core.isDestroyed||this.emitter.on(e,t)}once(e,t){this.core.isDestroyed||this.emitter.once(e,t)}off(e,t){this.core.isDestroyed||this.emitter.off(e,t)}resolveInputElement(e){if(v()===!1)return null;let t=null;if(typeof e=="string"){if(t=document.querySelector(e),!t)return null}else if(e instanceof HTMLElement)t=e;else return null;return t.tagName==="INPUT"?t:t.querySelector("input")}createWrapperElement(e){if(v()===!1)return e;let t=e.parentElement;if(e.tagName==="INPUT"&&!t?.classList.contains("tp-ui")){let i=document.createElement("div");return i.className="tp-ui",e.parentNode?.insertBefore(i,e),i.appendChild(e),i}return t&&!t.classList.contains("tp-ui")&&t.classList.add("tp-ui"),t||e}static getById(e){return z.get(e)}static getAllInstances(){return Array.from(z.values())}static isAvailable(e){return w()?!1:typeof e=="string"?document.querySelector(e)!==null:e instanceof HTMLElement?document.contains(e):!1}static destroyAll(){Array.from(z.values()).forEach(t=>t.destroy()),z.clear()}};var Se=re;var kt=Se;0&&(module.exports={EventEmitter,PluginRegistry,TimepickerUI});
|
|
8
|
+
</div>`},ot=o=>{let{range:{enabled:e,fromLabel:t,toLabel:i}}=o;return!e||!y.has("range")?"":`<div class="tp-ui-range-header" role="tablist" aria-label="Range selection"><button type="button" class="tp-ui-range-tab tp-ui-range-from active" role="tab" tabindex="0" aria-selected="true"><span class="tp-ui-range-tab-label">${t}</span><span class="tp-ui-range-tab-value tp-ui-range-from-time">--:--</span></button><button type="button" class="tp-ui-range-tab tp-ui-range-to" role="tab" tabindex="-1" aria-selected="false"><span class="tp-ui-range-tab-label">${i}</span><span class="tp-ui-range-tab-value tp-ui-range-to-time">--:--</span></button></div>`},at=(o,e)=>{let{ui:{clearButton:t},labels:{clear:i}}=o;return t?`<div class="tp-ui-clear-btn ${e} disabled" data-md3-ripple tabindex="0" role="button" aria-pressed="false" aria-label="${i}" aria-disabled="true">${i}</div>`:""},lt=(o,e,t)=>{if(o.isWheelMode){let i=y.getTemplateProvider("wheel");return i?`<div class="tp-ui-mobile-clock-wrapper ${o.mobileClass}">${i(t,o.instanceId)}</div>`:`<div class="tp-ui-mobile-clock-wrapper ${o.mobileClass}"></div>`}return`<div class="tp-ui-mobile-clock-wrapper ${o.mobileClass}"><div class="tp-ui-body ${o.mobileClass}"><div class="tp-ui-clock-face ${o.mobileClass}" role="group" aria-label="Clock"><div class="tp-ui-dot ${o.mobileClass}" aria-hidden="true"></div><div class="tp-ui-clock-hand ${o.mobileClass}" aria-hidden="true"><div class="tp-ui-circle-hand ${o.mobileClass}"></div></div><div class="tp-ui-tips-wrapper ${o.mobileClass}" role="listbox" aria-label="Time"></div>${o.clockType==="24h"?`<div class="tp-ui-tips-wrapper-24h ${o.mobileClass}" role="listbox" aria-label="24h"></div>`:""}</div></div></div>`},ct=(o,e)=>{let{labels:{time:t,mobileTime:i,am:n,pm:r,mobileMinute:s,mobileHour:l},ui:{editable:c}}=o,{mobileClass:a,clockType:u,instanceId:d}=e,p=a?i:t,h=u!=="24h"?`<div class="tp-ui-wrapper-type-time ${a}" role="group" aria-label="Period"><div class="tp-ui-type-mode tp-ui-am ${a?"mobile":"tp-ui-ripple"}" data-md3-ripple tabindex="0" role="button" aria-label="${n}" aria-pressed="false" data-type="AM">${n}</div><div class="tp-ui-type-mode tp-ui-pm ${a?"mobile":"tp-ui-ripple"}" data-md3-ripple tabindex="0" role="button" aria-label="${r}" aria-pressed="false" data-type="PM">${r}</div></div>`:"";return`<div class="tp-ui-select-time ${a}" id="tp-ui-label-${d}">${p}</div><div class="tp-ui-header ${a}"><div class="tp-ui-wrapper-time ${a} ${u==="24h"?"tp-ui-wrapper-time-24h":""}" role="group" aria-label="${p}"><div class="tp-ui-input-wrapper ${a}"><div class="tp-ui-input-ripple-wrapper ${a}" data-md3-ripple><input name="hour" ${!c&&!a?"readonly":""} class="tp-ui-hour ${a}" tabindex="0" type="number" min="0" max="${u==="12h"?"12":"23"}" aria-label="${a?l:"Hour"}" role="spinbutton" aria-valuenow="12"></div><div class="tp-ui-hour-text ${a}">${l}</div></div><div class="tp-ui-dots ${a}" aria-hidden="true"><span></span><span></span></div><div class="tp-ui-input-wrapper ${a}"><div class="tp-ui-input-ripple-wrapper ${a}" data-md3-ripple><input name="minutes" ${!c&&!a?"readonly":""} class="tp-ui-minutes ${a}" tabindex="0" type="number" min="0" max="59" aria-label="${a?s:"Minute"}" role="spinbutton" aria-valuenow="0"></div><div class="tp-ui-minute-text ${a}">${s}</div></div></div>${h}</div>`},ut=(o,e)=>{let{ui:{enableSwitchIcon:t,iconTemplate:i,iconTemplateMobile:n},labels:{cancel:r,ok:s}}=o,l=`<button aria-label="Keyboard" type="button" class="tp-ui-keyboard-icon">${i||le}</button>`,c=n||`<button aria-label="Clock" type="button" class="tp-ui-keyboard-icon">${n||ce}</button>`,a=t?`<div class="tp-ui-keyboard-icon-wrapper ${e}" tabindex="0" role="button" aria-pressed="false" aria-label="Toggle" data-view="desktop">${e?c:l}</div>`:"",u=at(o,e);return`<div class="tp-ui-footer ${e}" ${e?'data-view="mobile"':""}>${a}<div class="tp-ui-wrapper-btn ${e}">${u}<div class="tp-ui-cancel-btn ${e}" data-md3-ripple tabindex="0" role="button" aria-pressed="false" aria-label="${r}">${r}</div><div class="tp-ui-ok-btn ${e}" data-md3-ripple tabindex="0" role="button" aria-pressed="false" aria-label="${s}">${s}</div></div></div>`},Fe=(o,e)=>{let{ui:{mode:t,animation:i,theme:n,mobile:r},clock:{incrementMinutes:s}}=o,l=r?"mobile":"",c=t==="compact-wheel"&&y.has("wheel"),a=(t==="wheel"||c)&&y.has("wheel"),u=!!o.range?.enabled&&y.has("range"),d=!!o.timezone?.enabled&&y.has("timezone"),p={mobileClass:l,clockType:o.clock.type||"12h",instanceId:e,isWheelMode:a,isCompactWheel:c,isRangeMode:u},h=ot(o),b=st(o,l,e),S=c?"":ct(o,p),k=lt(p,s??1,o),H=c&&o.wheel?.hideFooter===!0?"":ut(o,l),m;return c?m=" tp-ui-compact-wheel-mode":a?m=" tp-ui-wheel-mode":m="",`<div class="tp-ui-modal normalize ${l}${u?" tp-ui-range-mode":""}${d?" tp-ui-tz-mode":""}${m}" data-theme="${n}" role="dialog" aria-modal="true" aria-labelledby="tp-ui-label-${e}" data-owner-id="${e}" style='transition:${i?"opacity 0.15s linear":"none"}'><div class="tp-ui-wrapper ${l}" tabindex="0">${h}${S}${b}${k}${H}</div><div class="timepicker-announcer sr-only" role="status" aria-live="polite" aria-atomic="true"></div></div>`};var K=class{core;emitter;timeouts=[];originalOverflow;originalPaddingRight;constructor(e,t){this.core=e,this.emitter=t}runWithTimeout(e,t=M.DEFAULT_DELAY){let i=setTimeout(e,t);this.timeouts.push(i)}clearAllTimeouts(){this.timeouts.forEach(clearTimeout),this.timeouts=[]}isPopoverMode(){return this.core.options.ui.mode==="compact-wheel"&&!!this.core.options.wheel?.placement}clearExistingModal(){if(v()===!1)return;let e=this.core.getModalElement();e&&e.remove()}setModalTemplate(){if(v()===!1)return;this.clearExistingModal();let e=Fe(this.core.options,this.core.instanceId);if(this.core.options.ui.inline?.enabled){let i=document.getElementById(this.core.options.ui.inline.containerId);if(!i)return;i.innerHTML="",i.insertAdjacentHTML("beforeend",e);let n=i.querySelector(".tp-ui-modal");if(n){n.classList.add("tp-ui--inline");let{showButtons:r}=this.core.options.ui.inline;(r===!1||r===void 0)&&n.querySelectorAll(".tp-ui-wrapper-btn, .tp-ui-wrapper-btn.mobile").forEach(s=>s.style.display="none")}return}let{appendModalSelector:t}=this.core.options.ui;t?document.querySelector(t)?.insertAdjacentHTML("beforeend",e):document.body.insertAdjacentHTML("beforeend",e)}setScrollbarOrNot(){v()!==!1&&(this.core.options.ui.inline?.enabled||this.isPopoverMode()||(this.core.options.ui.enableScrollbar?this.runWithTimeout(()=>{w()||this.runWithTimeout(()=>{typeof document<"u"&&(document.body.style.overflowY=this.originalOverflow||"",document.body.style.paddingRight=this.originalPaddingRight||"")},M.SCROLLBAR_RESTORE)},400):(this.originalOverflow=document.body.style.overflowY,this.originalPaddingRight=document.body.style.paddingRight,document.body.style.paddingRight=`${Ve()}px`,document.body.style.overflowY="hidden")))}removeBackdrop(){if(this.core.options.ui.inline?.enabled||this.core.options.ui.backdrop)return;let e=this.core.getModalElement(),t=this.core.getOpenElement();e?.classList.add("removed"),t.forEach(i=>i?.classList.add("disabled"))}setNormalizeClass(){let e=this.core.getModalElement();if(!e)return;e.classList.add("tp-ui-normalize"),e.querySelectorAll(":scope > div").forEach(i=>i.classList.add("tp-ui-normalize"))}setShowClassToBackdrop(){if(this.core.options.ui.inline?.enabled||this.isPopoverMode()){this.core.getModalElement()?.classList.add("show"),this.setInitialFocus();return}this.core.options.ui.backdrop&&this.runWithTimeout(()=>{this.core.getModalElement()?.classList.add("show"),this.setInitialFocus()},M.MODAL_ANIMATION)}setInitialFocus(){if(!this.core.options.behavior.focusTrap)return;let e=this.core.getWrapper();e&&typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>{e.focus()})}setFlexEndToFooterIfNoKeyboardIcon(){let e=this.core.getFooter();!this.core.options.ui.enableSwitchIcon&&e&&(e.style.justifyContent="flex-end")}destroy(){this.clearAllTimeouts(),!w()&&!this.core.options.ui.inline?.enabled&&(document.body.style.overflowY=this.originalOverflow||"",document.body.style.paddingRight=this.originalPaddingRight||""),this.clearExistingModal()}};var L=(o,e,t,i)=>{let n={hour:"12",minutes:"00",type:e==="24h"?void 0:"PM"};if(!o)return n;let r=o.value.trim();if(!t&&!r)return n;if(typeof t=="boolean"&&t){let S=new Date,[k,H]=S.toLocaleTimeString().split(":"),m=k.padStart(2,"0");if(/[a-z]/i.test(H)&&e==="12h"){let[E,g]=H.split(" ");return{hour:m,minutes:E,type:g}}return{hour:m,minutes:H,type:void 0}}if(typeof t=="object"){let{time:S,locales:k,preventClockType:H}=t,m=S??new Date;if(H&&i){let[f,T]=new Date(m).toLocaleTimeString().split(":");if(/[a-z]/i.test(T)){let[A,O]=T.split(" ");return{hour:f,minutes:A,type:O}}return{hour:f.padStart(2,"0"),minutes:T,type:void 0}}let E=new Date(m).toLocaleTimeString(k||"en-US",{hour:"2-digit",minute:"2-digit",hour12:e==="12h"}),[g,C]=E.split(":");if(e==="12h"&&/[a-z]/i.test(C)){let f=C.trim().split(" "),T=f[0],A=f[1]||"AM";return{hour:g,minutes:T,type:A}}return{hour:g,minutes:C.replace(/\D/g,""),type:void 0}}let[s,l]=r.split(" "),[c="",a=""]=s.split(":"),u=c.replace(/\D/g,""),d=a.replace(/\D/g,""),p={hour:u.padStart(2,"0"),minutes:d.padStart(2,"0"),type:e==="12h"?l:void 0};if(u.length>2||d.length>2)return{...p,error:"Invalid input: too many digits.",currentHour:c,currentMin:a};if(/[a-z]/i.test(s))return{...p,error:"Input contains invalid letters."};if(r.includes(" ")&&(!l||r.length>8||l!=="AM"&&l!=="PM"))return{...p,error:"Invalid AM/PM format or length.",currentLength:r.length,currentType:l};let h=Number(u),b=Number(d);if(e==="12h"){if(h<1||h>12||b<0||b>59||l!=="AM"&&l!=="PM")return{...p,error:"Invalid 12h time.",currentHour:h,currentMin:b,currentType:l}}else if(h<0||h>23||b<0||b>59)return{...p,error:"Invalid 24h time.",currentHour:h,currentMin:b};return p},xe=(o,e,t)=>{let i=Number(o);if(Number.isNaN(i))return!1;switch(e){case"hour":return t==="24h"?i>=0&&i<=23:i>0&&i<=12;case"minutes":return i>=0&&i<=59;default:return}};var Pe="tp-ui",dt="mousedown mouseup mousemove mouseleave mouseover",mt="touchstart touchmove touchend",qe=`${dt} ${mt}`,N="active";var ue=class{core;emitter;constructor(e,t){this.core=e,this.emitter=t}isCurrentTimeEnabled(e){let t=this.core.options.clock.currentTime;return typeof t=="boolean"?t:!!t?.[e]}preventClockTypeByCurrentTime(){if(!this.isCurrentTimeEnabled("preventClockType"))return;let e=this.core.getInput();if(!e)return;let{currentTime:t,clockType:i}={currentTime:this.core.options.clock.currentTime,clockType:this.core.options.clock.type},{type:n}=L(e,i,t,!0);this.core.updateOptions({clock:{type:n?"12h":"24h"}})}updateInputValueWithCurrentTimeOnStart(){if(!this.isCurrentTimeEnabled("updateInput"))return;let e=this.core.getInput();if(!e)return;let{hour:t,minutes:i,type:n}=L(e,this.core.options.clock.type,this.core.options.clock.currentTime);e.value=n?`${t}:${i} ${n}`:`${t}:${i}`}getInputValueOnOpenAndSet(){let e=this.core.getInput();if(!e)return;let t=L(e,this.core.options.clock.type,this.core.options.clock.currentTime),i=this.core.getHour(),n=this.core.getMinutes(),r=this.core.getActiveTypeMode(),s=this.core.getAM();if(t===void 0){i&&(i.value="12"),n&&(n.value="00");let h={hour:i?.value||"12",minutes:n?.value||"00",type:r?.dataset.type,degreesHours:this.core.degreesHours,degreesMinutes:this.core.degreesMinutes};this.emitter.emit("open",h);let b=this.core.options.range?.enabled===!0;this.core.options.clock.type!=="24h"&&s&&!b&&s.classList.add(N);return}let[l,c,a]=e.value.split(":").join(" ").split(" ");e.value.length===0&&(l=t.hour,c=t.minutes,a=t.type),this.core.options.clock.type!=="24h"&&!a&&(a=t.type||"AM"),i&&(i.value=l.padStart(2,"0")),n&&(n.value=c.padStart(2,"0"));let d=this.core.getModalElement()?.querySelector(`[data-type='${a}']`);this.core.options.clock.type!=="24h"&&d&&d.classList.add(N);let p={...t,type:r?.dataset.type,degreesHours:this.core.degreesHours,degreesMinutes:this.core.degreesMinutes};this.emitter.emit("open",p)}getInputValue(e,t,i){return L(e,t,i)}destroy(){}};var de=class{core;emitter;isAnimating=!1;constructor(e,t){this.core=e,this.emitter=t,this.setupEventListeners()}setupEventListeners(){this.emitter.on("switch:view",()=>{this.toggleMobileClockFace()})}checkMobileOption(){this.core.setIsMobileView(!!this.core.options.ui.mobile),this.core.options.ui.mobile&&this.core.updateOptions({ui:{editable:!0}})}toggleMobileClockFace(){if(this.isAnimating)return;let e=this.core.getModalElement();if(!e)return;let t=e.querySelector(".tp-ui-wrapper"),i=this.core.getKeyboardClockIcon(),n=e.querySelector(".tp-ui-mobile-clock-wrapper"),r=e.querySelectorAll("*"),s=e.querySelector(".tp-ui-select-time"),l=this.core.getHour(),c=this.core.getMinutes(),a=this.core.getClockFace();if(!t)return;let u=t.classList.contains("expanded"),d=this.core.isMobileView;u?this.collapseClockFace(t,n,r,i,s,l,c,a,d):this.expandClockFace(t,n,r,i,s,l,c,a)}collapseClockFace(e,t,i,n,r,s,l,c,a){if(this.isAnimating=!0,typeof requestAnimationFrame<"u"){let u=typeof window<"u"&&window.matchMedia("(orientation: landscape) and (min-width: 320px) and (max-width: 825px)").matches;requestAnimationFrame(()=>{u&&e instanceof HTMLElement?this.collapseLandscape(e,t,i,n,r,s,l,c,a):this.collapsePortrait(e,t,i,n,r,s,l,c,a)})}else this.switchView(r,n,s,l,!0),this.isAnimating=!1;n?.setAttribute("aria-label","Show clock face"),n?.setAttribute("aria-pressed","false")}collapseLandscape(e,t,i,n,r,s,l,c,a){c?.classList.remove("scale-in");let u=this.core.getModalElement(),d=this.getMobileLandscapeHeight(u);e.style.width="328px",e.style.height=d,t instanceof HTMLElement&&(t.style.height="0",t.style.opacity="0",t.style.transform="scale(0)"),setTimeout(()=>{this.applyMobileClasses(e,t,i,r,a),e.classList.add("mobile"),t&&t.classList.add("mobile"),this.switchView(r,n,s,l,!0),requestAnimationFrame(()=>{e.style.width="",e.style.height="",t instanceof HTMLElement&&(t.style.height="",t.style.opacity="",t.style.transform=""),this.isAnimating=!1})},M.WRAPPER_TRANSITION)}collapsePortrait(e,t,i,n,r,s,l,c,a){a?c?.classList.remove("scale-in"):c?.classList.add("scale-in"),t?.classList.remove("expanded"),a&&t?.classList.add("mobile"),requestAnimationFrame(()=>{this.applyMobileClasses(e,t,i,r,a),this.switchView(r,n,s,l,!0),setTimeout(()=>{this.isAnimating=!1},M.MOBILE_TOGGLE)})}applyMobileClasses(e,t,i,n,r){e.classList.remove("expanded"),t?.classList.remove("expanded"),r&&(e.classList.add("mobile"),t?.classList.add("mobile")),i.forEach(s=>{s!==t&&s!==e&&s!==n&&(s.classList.remove("expanded"),r&&s.classList.add("mobile"))}),n&&(n.classList.remove("expanded"),r&&n.classList.add("mobile"))}expandClockFace(e,t,i,n,r,s,l,c){this.isAnimating=!0,l?.classList.contains("active")&&l?this.emitter.emit("select:minute",{minutes:l.value}):s&&this.emitter.emit("select:hour",{hour:s.value}),i.forEach(u=>{u!==t&&u!==e&&u!==r&&(u.classList.remove("mobile"),u.classList.add("expanded"))}),r&&(r.classList.remove("mobile"),r.classList.add("expanded")),this.switchView(r,n,s,l,!1),typeof requestAnimationFrame<"u"?requestAnimationFrame(()=>{e.classList.remove("mobile"),e.classList.add("expanded"),requestAnimationFrame(()=>{t&&(t.classList.remove("mobile"),t.classList.add("expanded")),c&&c.classList.remove("scale-in"),setTimeout(()=>{c&&c.classList.add("scale-in")},M.CLOCK_SCALE_DELAY),setTimeout(()=>{this.isAnimating=!1},M.MOBILE_TOGGLE)})}):this.isAnimating=!1,n?.setAttribute("aria-label","Hide clock face"),n?.setAttribute("aria-pressed","true")}switchView(e,t,i,n,r){let s=this.core.getModalElement(),l=s?.querySelector(".tp-ui-hour-text"),c=s?.querySelector(".tp-ui-minute-text"),a=t?.querySelector(".tp-ui-keyboard-icon"),u=this.core.getInputWrappers(),d=this.core.getHeader(),p=s?.querySelector(".tp-ui-wrapper-type-time"),h=s?.querySelector(".tp-ui-am"),b=s?.querySelector(".tp-ui-pm"),S=s?.querySelectorAll(".tp-ui-input-ripple-wrapper"),{iconTemplate:k,iconTemplateMobile:H}=this.core.options.ui,{time:m,mobileTime:E}=this.core.options.labels;r?(e?.classList.add("mobile"),t?.classList.add("mobile"),i?.classList.add("mobile"),i?.removeAttribute("readonly"),n?.classList.add("mobile"),n?.removeAttribute("readonly"),l?.classList.add("mobile"),c?.classList.add("mobile"),d?.classList.add("mobile"),p?.classList.add("mobile"),h?.classList.add("mobile"),h?.classList.remove("tp-ui-ripple"),b?.classList.add("mobile"),b?.classList.remove("tp-ui-ripple"),u?.forEach(g=>{g.classList.add("mobile")}),S?.forEach(g=>{g.classList.add("mobile")}),e&&E&&(e.textContent=E),a&&(a.innerHTML=H||ce),this.updateClockFaceAccessibility(!0)):(e?.classList.remove("mobile"),t?.classList.remove("mobile"),i?.classList.remove("mobile"),n?.classList.remove("mobile"),this.core.options.ui.editable||(i?.setAttribute("readonly",""),n?.setAttribute("readonly","")),l?.classList.remove("mobile"),c?.classList.remove("mobile"),d?.classList.remove("mobile"),p?.classList.remove("mobile"),h?.classList.remove("mobile"),h?.classList.add("tp-ui-ripple"),b?.classList.remove("mobile"),b?.classList.add("tp-ui-ripple"),u?.forEach(g=>{g.classList.remove("mobile")}),S?.forEach(g=>{g.classList.remove("mobile")}),e&&m&&(e.textContent=m),a&&(a.innerHTML=k||le),this.updateClockFaceAccessibility(!1))}updateClockFaceAccessibility(e){let t=this.core.getClockFace();if(!t)return;let i=t.querySelector(".tp-ui-tips-wrapper"),n=t.querySelector(".tp-ui-tips-wrapper-24h"),r=t.querySelectorAll(".tp-ui-tip");e?(t.setAttribute("aria-hidden","true"),i?.setAttribute("aria-hidden","true"),n?.setAttribute("aria-hidden","true"),r.forEach(s=>{s.setAttribute("tabindex","-1"),s.setAttribute("aria-hidden","true")})):(t.removeAttribute("aria-hidden"),i?.removeAttribute("aria-hidden"),n?.removeAttribute("aria-hidden"),r.forEach(s=>{s.setAttribute("tabindex","0"),s.removeAttribute("aria-hidden")}))}getMobileLandscapeHeight(e){return e?.classList.contains("tp-ui-tz-mode")?"326px":e?.classList.contains("tp-ui-range-mode")?"287px":"258px"}destroy(){}};var ze=o=>{if(!o)return;let{disabledTime:e,type:t}=o.clock;if(!e||!Object.keys(e).length)return;let{hours:i,minutes:n,interval:r}=e;if(r){delete e.hours,delete e.minutes;let s=Array.isArray(r)?r:[r];if(!t)throw new Error("clockType required for interval");return ae(s,t),{value:s.map(a=>{let[u,d]=a.trim().split("-"),{hour:p,minutes:h,type:b}=L({value:u.trim()},t),{hour:S,minutes:k,type:H}=L({value:d.trim()},t),m=_(p,S).map(f=>Number(f)===0?"00":String(Number(f))),E=[],g=Number(h),C=Number(k);if(H===b)return g>0&&C<=0?(E.push(m[0],m[m.length-1]),m=m.slice(1,-1)):C<59&&C>0&&g<=0?(E.push(void 0,m[m.length-1]),m=m.slice(0,-1)):C>0&&g>0?(E.push(m[0],m[m.length-1]),m=m.slice(1,-1)):C===0&&g===0&&(E.push(void 0,m[m.length-1]),m.pop()),{removedStartedHour:E[0]!==void 0&&Number(E[0])<=9?`0${E[0]}`:E[0],removedEndHour:E[1]!==void 0&&Number(E[1])<=9?`0${E[1]}`:E[1],rangeArrHour:m,startMinutes:_(h,59).map(f=>Number(f)<=9?`0${f}`:`${f}`),endMinutes:oe(0,k).map(f=>Number(f)<=9?`0${f}`:`${f}`),startType:b,endType:H};{let f=_(p,12).map(String),T=oe(1,S).map(String),A=[],O=[];return g>0&&C<=0?(O.push(T[T.length-1]),A.push(f[0]),T.pop(),f.shift()):C<59&&C>0&&g<=0?(A.push(f[0]),O.push(T[T.length-1]),T.pop()):C>0&&g>0?(O.push(T[T.length-1]),A.push(f[0]),T.pop(),f.shift()):C===0&&g===0&&(O.push(T[T.length-1]),A.push(f[0]),T.pop()),{startType:b,endType:H,amHours:f,pmHours:T,removedAmHour:A[0]&&Number(A[0])<=9?`0${A[0]}`:A[0],removedPmHour:O[0]&&Number(O[0])<=9?`0${O[0]}`:O[0],startMinutes:Number(h)===0?[]:_(h,59).map(V=>Number(V)<=9?`0${V}`:`${V}`),endMinutes:oe(0,k).map(V=>Number(V)<=9?`0${V}`:`${V}`)}}}).reduce((a,u)=>(Object.entries(u).forEach(([d,p])=>{Array.isArray(p)?a[d]=Array.isArray(a[d])?[...a[d],...p]:[...p]:a[d]=p}),a),{isInterval:!0,clockType:t,intervals:s})}}return i?.forEach(s=>{if(t==="12h"&&Number(s)>12)throw new Error("The disabled hours value has to be less than 13");if(t==="24h"&&Number(s)>23)throw new Error("The disabled hours value has to be less than 24")}),n?.forEach(s=>{if(Number(s)>59)throw new Error("The disabled minutes value has to be less than 60")}),{value:{hours:i?.map(s=>s==="00"||Number(s)===0?`0${Number(s)}`:`${Number(s)}`),minutes:n?.map(s=>Number(s)<=9?`0${s}`:`${s}`)}}},Oe=(o,e,t,i)=>{if(o){if(Array.isArray(o)&&o.length>0)return!o.map(r=>xe(r,e,t)).some(r=>r===!1);if(typeof o=="string"||typeof o=="number"){let n=xe(o,e,t),r=i?.map(Number).includes(Number(o));return!!(n&&!r)}}};var me=class{core;constructor(e){this.core=e}getDisableTime(){let e=ze(this.core.options);this.core.setDisabledTime(e||null)}destroy(){}};var Y=class{inputValueHandler;mobileViewHandler;disabledTimeHandler;core;constructor(e,t){this.core=e,this.inputValueHandler=new ue(e,t),this.mobileViewHandler=new de(e,t),this.disabledTimeHandler=new me(e)}preventClockTypeByCurrentTime(){this.inputValueHandler.preventClockTypeByCurrentTime()}updateInputValueWithCurrentTimeOnStart(){this.inputValueHandler.updateInputValueWithCurrentTimeOnStart()}getInputValueOnOpenAndSet(){this.inputValueHandler.getInputValueOnOpenAndSet()}getInputValue(e,t,i){return this.inputValueHandler.getInputValue(e,t,i)}checkMobileOption(){this.mobileViewHandler.checkMobileOption()}toggleMobileClockFace(){this.mobileViewHandler.toggleMobileClockFace()}updateClockFaceAccessibility(e){this.mobileViewHandler.updateClockFaceAccessibility(e)}getDisableTime(){this.disabledTimeHandler.getDisableTime()}destroy(){this.inputValueHandler.destroy(),this.mobileViewHandler.destroy(),this.disabledTimeHandler.destroy()}};var Z=class{core;emitter;constructor(e,t){this.core=e,this.emitter=t}setTheme(){let e=this.core.getModalElement();if(!e)return;let{theme:t}=this.core.options.ui;t&&e.setAttribute("data-theme",t)}setInputClassToInputElement(){let e=this.core.getInput();e&&(Ne(e,"tp-ui-input")||e.classList.add("tp-ui-input"))}setDataOpenToInputIfDoesntExistInWrapper(){let e=this.core.getOpenElementData(),t=this.core.getInput();e===null&&t&&t.setAttribute("data-open","tp-ui-input")}setClassTopOpenElement(){let e=this.core.getOpenElement();for(let t of e)t&&t.classList.add("tp-ui-open-element")}setTimepickerClassToElement(){let e=this.core.element;if(!e)return;e.classList.add(Pe);let t=this.core.options.ui.cssClass;t&&t!==Pe&&e.classList.add(t)}destroy(){let e=this.core.getModalElement();e&&e.removeAttribute("data-theme")}};var $=class o extends Error{constructor(t,i){super(`[TimepickerUI] ${t}`);this.code=i;this.name="TimepickerError",Object.setPrototypeOf(this,o.prototype)}},pe={ELEMENT_NOT_FOUND:"ELEMENT_NOT_FOUND",INVALID_PARAMETER:"INVALID_PARAMETER",NO_INPUT_ELEMENT:"NO_INPUT_ELEMENT",INSTANCE_DESTROYED:"INSTANCE_DESTROYED",NOT_INITIALIZED:"NOT_INITIALIZED",INVALID_TIME_FORMAT:"INVALID_TIME_FORMAT",INLINE_CONFIG_ERROR:"INLINE_CONFIG_ERROR",CONTAINER_NOT_FOUND:"CONTAINER_NOT_FOUND",SSR_ENVIRONMENT:"SSR_ENVIRONMENT"};var G=class{core;emitter;constructor(e,t){this.core=e,this.emitter=t}setErrorHandler(){let e=this.core.getInput();if(!e)return!0;let{error:t,currentHour:i,currentMin:n,currentType:r,currentLength:s}=L(e,this.core.options.clock.type);if(this.removeErrorHandler(),t){if(v()===!1)return!1;let l=document.createElement("div");l.classList.add("tp-ui-invalid-text"),l.innerHTML="<b>Invalid Time Format</b>",e.classList.add("tp-ui-invalid-format"),e.nextElementSibling?.classList.contains("tp-ui-invalid-text")||e.after(l);let c={error:t,rejectedHour:void 0,rejectedMinute:void 0,inputHour:i,inputMinute:n,inputType:r,inputLength:s};return this.emitter.emit("error",c),!1}return!0}removeErrorHandler(){let e=this.core.getInput();if(!e)return;e.classList.remove("tp-ui-invalid-format");let t=e.nextElementSibling;t?.classList.contains("tp-ui-invalid-text")&&t.remove()}checkDisabledValuesOnStart(){if(!this.core.options.clock.disabledTime)return;let{disabledTime:e,type:t}=this.core.options.clock;if(e.interval){if(!t)throw new $("clockType is required when using disabledTime.interval",pe.INVALID_PARAMETER);let l=Array.isArray(e.interval)?e.interval:[e.interval];try{ae(l,t)}catch(c){throw new $(`Invalid disabledTime.interval: ${c.message}`,pe.INVALID_PARAMETER)}return}let{hours:i,minutes:n}=e,r=i?Oe(i,"hour",t):!0,s=n?Oe(n,"minutes",t):!0;if(!r||!s)throw new $("Invalid hours or minutes in disabledTime option",pe.INVALID_PARAMETER)}destroy(){this.removeErrorHandler()}};var x=(o,e)=>{if(!o)return;let t=o.querySelector(".timepicker-announcer");t&&(t.textContent="",setTimeout(()=>{t.textContent=e},100))},j=(o,e)=>{o&&o.setAttribute("aria-pressed",String(e))};var he=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleOpenOnClick(){let e=this.core.getOpenElement();if(!e)return;let t=i=>{this.core.isDestroyed||i.currentTarget?.classList.contains("disabled")||this.emitter.emit("show",{})};e.forEach(i=>{i.addEventListener("click",t),this.cleanupHandlers.push(()=>i.removeEventListener("click",t))})}handleCancelButton(){let e=this.core.getCancelButton();if(!e)return;let t=()=>{this.core.isDestroyed||this.emitter.emit("cancel",{})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleOkButton(){let e=this.core.getOkButton();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;let i=this.core.getHour(),n=this.core.getMinutes();if(i&&n){let s=this.core.getActiveTypeMode();this.emitter.emit("confirm",{hour:i.value,minutes:n.value,type:s?.textContent||void 0});return}let r=this.core.getModalElement();if(r){let s=r.querySelector(".tp-ui-wheel-hours .tp-ui-wheel-item.is-center"),l=r.querySelector(".tp-ui-wheel-minutes .tp-ui-wheel-item.is-center"),c=r.querySelector(".tp-ui-wheel-ampm .tp-ui-wheel-item.is-center");this.emitter.emit("confirm",{hour:s?.getAttribute("data-value")??void 0,minutes:l?.getAttribute("data-value")??void 0,type:c?.getAttribute("data-value")??void 0})}};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleAmClick(){let e=this.core.getAM();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;let i=this.core.getPM();e.classList.add("active"),i?.classList.remove("active"),j(e,!0),j(i,!1);let n=this.core.getModalElement();x(n,"AM selected"),this.emitter.emit("select:am",{});let r=this.core.getHour(),s=this.core.getMinutes();this.emitter.emit("update",{hour:r?.value,minutes:s?.value,type:"AM"})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handlePmClick(){let e=this.core.getPM();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;let i=this.core.getAM();e.classList.add("active"),i?.classList.remove("active"),j(e,!0),j(i,!1);let n=this.core.getModalElement();x(n,"PM selected"),this.emitter.emit("select:pm",{});let r=this.core.getHour(),s=this.core.getMinutes();this.emitter.emit("update",{hour:r?.value,minutes:s?.value,type:"PM"})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleSwitchViewButton(){let e=this.core.getKeyboardClockIcon();if(!e)return;let t=()=>{this.core.isDestroyed||this.emitter.emit("switch:view",{})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var We=(o,e,t)=>Math.max(e,Math.min(t,o)),_e=(o,e)=>{if(o==="")return"";let t=parseInt(o,10);return Number.isNaN(t)?"":We(t,e?1:0,e?12:23).toString().padStart(2,"0")},Ue=o=>{if(o==="")return"";let e=parseInt(o,10);return Number.isNaN(e)?"":We(e,0,59).toString().padStart(2,"0")};var ve=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleHourEvents(){let e=this.core.getHour();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;e.classList.add("active");let r=this.core.getMinutes();r?.classList.remove("active"),this.emitter.emit("select:hour",{hour:e.value});let s=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:e.value,minutes:r?.value,type:s?.textContent||void 0})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t));let i=e.value,n=()=>{if(this.core.isDestroyed||e.hasAttribute("readonly"))return;let r=this.core.options.clock.type==="12h",s=_e(e.value,r);if(e.value=s,e.setAttribute("aria-valuenow",s),e.value!==i){i=e.value,this.emitter.emit("animation:clock",{}),this.emitter.emit("select:hour",{hour:e.value});let l=this.core.getMinutes(),c=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:e.value,minutes:l?.value,type:c?.textContent||void 0})}};e.addEventListener("blur",n),this.cleanupHandlers.push(()=>e.removeEventListener("blur",n))}handleMinutesEvents(){let e=this.core.getMinutes();if(!e)return;let t=()=>{if(this.core.isDestroyed)return;e.classList.add("active");let r=this.core.getHour();r?.classList.remove("active"),this.emitter.emit("select:minute",{minutes:e.value});let s=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:r?.value,minutes:e.value,type:s?.textContent||void 0})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t));let i=e.value,n=()=>{if(this.core.isDestroyed||e.hasAttribute("readonly"))return;let r=Ue(e.value);if(e.value=r,e.setAttribute("aria-valuenow",r),e.value!==i){i=e.value,this.emitter.emit("animation:clock",{}),this.emitter.emit("select:minute",{minutes:e.value});let s=this.core.getHour(),l=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:s?.value,minutes:e.value,type:l?.textContent||void 0})}};e.addEventListener("blur",n),this.cleanupHandlers.push(()=>e.removeEventListener("blur",n))}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var fe=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleOpenOnEnterFocus(){let e=this.core.getInput();if(!e)return;let t=i=>{i.key==="Enter"&&!this.core.isDestroyed&&!this.core.isOpen&&this.emitter.emit("show",{})};e.addEventListener("keydown",t),this.cleanupHandlers.push(()=>e.removeEventListener("keydown",t))}handleEscClick(){if(v()===!1)return;let e=t=>{this.core.isDestroyed||t.key==="Escape"&&this.emitter.emit("cancel",{})};document.addEventListener("keydown",e),this.cleanupHandlers.push(()=>document.removeEventListener("keydown",e))}handleKeyboardInput(){let e=this.core.getHour(),t=this.core.getMinutes();if(e){let i=n=>{if(this.core.isDestroyed||n.key!=="ArrowUp"&&n.key!=="ArrowDown")return;n.preventDefault();let r=parseInt(e.value)||0,s=parseInt(e.getAttribute("max")||"23"),l=this.core.options.clock.type==="12h",c;n.key==="ArrowUp"?l?c=r>=12?1:r+1:c=r>=s?0:r+1:l?c=r<=1?12:r-1:c=r<=0?s:r-1,e.value=c.toString().padStart(2,"0"),e.setAttribute("aria-valuenow",e.value);let a=this.core.getModalElement();x(a,`Hour: ${e.value}`),this.emitter.emit("animation:clock",{}),this.emitter.emit("select:hour",{hour:e.value});let u=this.core.getMinutes(),d=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:e.value,minutes:u?.value,type:d?.textContent||void 0})};e.addEventListener("keydown",i),this.cleanupHandlers.push(()=>e.removeEventListener("keydown",i))}if(t){let i=n=>{if(this.core.isDestroyed||n.key!=="ArrowUp"&&n.key!=="ArrowDown")return;n.preventDefault();let r=parseInt(t.value)||0,s=59,l=0,c;n.key==="ArrowUp"?c=r>=s?l:r+1:c=r<=l?s:r-1,t.value=c.toString().padStart(2,"0"),t.setAttribute("aria-valuenow",t.value);let a=this.core.getModalElement();x(a,`Minutes: ${t.value}`),this.emitter.emit("animation:clock",{}),this.emitter.emit("select:minute",{minutes:t.value});let u=this.core.getHour(),d=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:u?.value,minutes:t.value,type:d?.textContent||void 0})};t.addEventListener("keydown",i),this.cleanupHandlers.push(()=>t.removeEventListener("keydown",i))}}focusTrapHandler(){if(v()===!1)return;let e=this.core.getWrapper();if(!e)return;let t=i=>{if(this.core.isDestroyed||i.key!=="Tab")return;let n=e.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'),r=n[0],s=n[n.length-1];i.shiftKey&&document.activeElement===r?(s?.focus(),i.preventDefault()):!i.shiftKey&&document.activeElement===s&&(r?.focus(),i.preventDefault())};e.addEventListener("keydown",t),this.cleanupHandlers.push(()=>e.removeEventListener("keydown",t))}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var ge=class{core;emitter;cleanupHandlers=[];constructor(e,t){this.core=e,this.emitter=t}handleBackdropClick(){let e=this.core.getModalElement();if(!e)return;let t=i=>{this.core.isDestroyed||i.target===e&&this.emitter.emit("cancel",{})};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t))}handleMoveHand(){if(v()===!1)return;let e=t=>{this.core.isDestroyed||t.preventDefault()};document.addEventListener("mousedown",e,!1),document.addEventListener("touchstart",e,{passive:!1}),this.cleanupHandlers.push(()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)})}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var X=class{buttonHandlers;inputHandlers;keyboardHandlers;modalHandlers;constructor(e,t){this.buttonHandlers=new he(e,t),this.inputHandlers=new ve(e,t),this.keyboardHandlers=new fe(e,t),this.modalHandlers=new ge(e,t)}handleOpenOnClick(){this.buttonHandlers.handleOpenOnClick()}handleOpenOnEnterFocus(){this.keyboardHandlers.handleOpenOnEnterFocus()}handleCancelButton(){this.buttonHandlers.handleCancelButton()}handleOkButton(){this.buttonHandlers.handleOkButton()}handleBackdropClick(){this.modalHandlers.handleBackdropClick()}handleEscClick(){this.keyboardHandlers.handleEscClick()}handleAmClick(){this.buttonHandlers.handleAmClick()}handlePmClick(){this.buttonHandlers.handlePmClick()}handleHourEvents(){this.inputHandlers.handleHourEvents()}handleMinutesEvents(){this.inputHandlers.handleMinutesEvents()}handleKeyboardInput(){this.keyboardHandlers.handleKeyboardInput()}focusTrapHandler(){this.keyboardHandlers.focusTrapHandler()}handleMoveHand(){this.modalHandlers.handleMoveHand()}handleSwitchViewButton(){this.buttonHandlers.handleSwitchViewButton()}destroy(){this.buttonHandlers.destroy(),this.inputHandlers.destroy(),this.keyboardHandlers.destroy(),this.modalHandlers.destroy()}};var J=class{emitter;getClockSystem;setHoursToClock;setMinutesToClock;updateAmPm;convertDisabledTime;constructor(e,t,i,n,r,s){this.emitter=e,this.getClockSystem=t,this.setHoursToClock=i,this.setMinutesToClock=n,this.updateAmPm=r,this.convertDisabledTime=s}setup(){this.emitter.on("select:hour",({hour:e})=>{this.emitter.emit("animation:clock",{}),this.setHoursToClock(e||null)}),this.emitter.on("select:minute",({minutes:e})=>{this.emitter.emit("animation:clock",{}),this.setMinutesToClock(e||null)}),this.emitter.on("select:am",()=>{this.updateAmPm()}),this.emitter.on("select:pm",()=>{this.updateAmPm()}),this.emitter.on("animation:start",()=>{this.getClockSystem()?.blockInteractions()}),this.emitter.on("animation:end",()=>{this.getClockSystem()?.unblockInteractions()}),this.emitter.on("range:switch",e=>{this.refreshDisabledTimeForRange(e.disabledTime)})}refreshDisabledTimeForRange(e){let t=this.getClockSystem();if(!t)return;let i=this.convertDisabledTime(),n=i;if(e){let r=[...i?.hours||[],...e.hours||[]],s=[...i?.minutes||[],...e.minutes||[]];n={...i,hours:r.length>0?r:void 0,minutes:s.length>0?s:void 0,rangeFromType:e.fromType,rangeFromHour:e.fromHour}}t.updateDisabledTime(n)}};var I=class{static angleToIndex(e,t,i){let n=Math.round(e/30)%12;if(t==="24h")if(i){let r=n+12;return r===12?0:r}else return n===0?12:n;return n===0?12:n}static indexToValue(e,t){if(t==="24h")return e.toString().padStart(2,"0");let i=e;return i===0&&(i=12),i>12&&(i=i-12),i.toString().padStart(2,"0")}static indexToAngle(e,t){return t==="24h"?e>=12?(e-12)%12*30:e%12*30:(e===0?12:e)%12*30}static isDisabled(e,t,i){return i?i.isInterval&&i.intervals&&i.clockType?this.isDisabledByInterval(e,t,i):i.rangeFromType!==void 0&&i.rangeFromHour!==void 0?this.isDisabledForRange12h(e,t,i):i.hours?i.hours.some(n=>String(n)===e||Number(n)===Number(e)||n===e):!1:!1}static isDisabledForRange12h(e,t,i){let n=i.rangeFromType,r=i.rangeFromHour,s=parseInt(e,10);return n===null||r===void 0?!1:t==="AM"&&n==="PM"?!0:t==="AM"&&n==="AM"?r===12?!1:s===12?!0:s<r:t==="PM"&&n==="AM"?!1:t==="PM"&&n==="PM"?r===12?!1:s===12?!0:s<r:!1}static isDisabledByInterval(e,t,i){if(!i.intervals)return!1;for(let n=0;n<60;n++){let r=n.toString().padStart(2,"0");if(!this.isTimeInIntervals(e,r,t,i.intervals,i.clockType))return!1}return!0}static isTimeInIntervals(e,t,i,n,r){let s=r==="12h"?`${e}:${t} ${i}`:`${e}:${t}`;for(let l of n){let[c,a]=l.split("-").map(u=>u.trim());if(this.isTimeBetween(s,c,a,r))return!0}return!1}static isTimeBetween(e,t,i,n){let r=this.timeToMinutes(e,n),s=this.timeToMinutes(t,n),l=this.timeToMinutes(i,n);return r>=s&&r<=l}static timeToMinutes(e,t){if(t==="12h"){let i=e.match(/(\d{1,2}):(\d{2})\s*(AM|PM)/i);if(!i)return 0;let n=parseInt(i[1]),r=parseInt(i[2]),s=i[3].toUpperCase();return s==="PM"&&n!==12&&(n+=12),s==="AM"&&n===12&&(n=0),n*60+r}else{let[i,n]=e.split(":").map(Number);return i*60+n}}static findNearestValid(e,t,i,n){let r=t==="24h"?23:12;for(let s=0;s<=r;s++){let l=s===0?[e]:[e+s,e-s];for(let c of l){let a=c;a<0&&(a+=r+1),a>r&&(a=a%(r+1));let u=this.indexToValue(a,t);if(!this.isDisabled(u,i,n))return a}}return e}};var D=class{static angleToIndex(e){return Math.round(e/6)%60}static indexToValue(e){return e.toString().padStart(2,"0")}static indexToAngle(e){return e%60*6}static isDisabled(e,t,i,n,r){return n?n.isInterval&&n.intervals?this.isDisabledByInterval(e,t,i,n,r):n.rangeFromType!==void 0&&n.rangeFromHour!==void 0?this.isDisabledForRange12h(e,t,i,n):n.rangeFromHour!==void 0&&parseInt(t,10)!==n.rangeFromHour?!1:n.minutes?n.minutes.some(s=>String(s)===e||Number(s)===Number(e)||s===e):!1:!1}static isDisabledForRange12h(e,t,i,n){let r=n.rangeFromType,s=n.rangeFromHour,l=parseInt(t,10),c=parseInt(e,10);if(r===null||s===void 0)return!1;let a=n.minutes||[],u=a.length>0?parseInt(a[a.length-1],10)+1:0;return i==="AM"&&r==="PM"?!0:i==="PM"&&r==="AM"?!1:l===s||l===12&&s===12||i===r&&l===s?c<u:!1}static isDisabledByInterval(e,t,i,n,r){if(!n.intervals)return!1;let s=r==="12h"?`${t}:${e} ${i}`:`${t}:${e}`;for(let l of n.intervals){let[c,a]=l.split("-").map(u=>u.trim());if(this.isTimeBetween(s,c,a,r))return!0}return!1}static isTimeBetween(e,t,i,n){let r=this.timeToMinutes(e,n),s=this.timeToMinutes(t,n),l=this.timeToMinutes(i,n);return r>=s&&r<=l}static timeToMinutes(e,t){if(t==="12h"){let i=e.match(/(\d{1,2}):(\d{2})\s*(AM|PM)/i);if(!i)return 0;let n=parseInt(i[1]),r=parseInt(i[2]),s=i[3].toUpperCase();return s==="PM"&&n!==12&&(n+=12),s==="AM"&&n===12&&(n=0),n*60+r}else{let[i,n]=e.split(":").map(Number);return i*60+n}}static findNearestValid(e,t,i,n,r){for(let s=0;s<60;s++){let l=s===0?[e]:[e+s,e-s];for(let c of l){let a=c;a<0&&(a+=60),a>=60&&(a=a%60);let u=this.indexToValue(a);if(!this.isDisabled(u,t,i,n,r))return a}}return e}};var P=class{static normalizeAngle(e){let t=e%360;return t<0&&(t+=360),t}static calculateRawAngle(e,t){let i=e.x-t.x,n=e.y-t.y,s=Math.atan2(n,i)*180/Math.PI+90;return this.normalizeAngle(s)}static snapToIncrement(e,t){let i=Math.round(e/t)*t;return this.normalizeAngle(i)}static calculateDistance(e,t){let i=e.x-t.x,n=e.y-t.y;return Math.sqrt(i*i+n*n)}static isInnerCircle(e,t){return e<t*.75}static calculateShortestPath(e,t){let i=this.normalizeAngle(e),r=this.normalizeAngle(t)-i,s=r>=0?r:r+360,l=r<=0?r:r-360,c=Math.abs(s)<Math.abs(l)?s:l;return e+c}};var Ee=class{config;currentAngle=0;tipsCache=new Map;cachedDimensions=new Map;constructor(e){this.config=e}getCachedDimensions(e){let t=this.cachedDimensions.get(e);if(!t){let i=(e.offsetWidth-32)/2,n=(e.offsetHeight-32)/2,r=i-9;t={width:i,height:n,radius:r},this.cachedDimensions.set(e,t)}return t}setHandAngle(e){let t=P.calculateShortestPath(this.currentAngle,e);Math.abs(this.currentAngle-t)<.01||(this.currentAngle=t,this.config.clockHand.style.transform=`rotateZ(${t}deg)`)}animateToAngle(e){let t=P.calculateShortestPath(this.currentAngle,e);this.currentAngle=t,this.config.tipsWrapper.classList.add("tp-ui-tips-animation"),this.config.clockHand.style.transform=`rotateZ(${t}deg)`,setTimeout(()=>{this.config.tipsWrapper.classList.remove("tp-ui-tips-animation")},401)}setActiveValue(e){let t=[this.config.tipsWrapper];this.config.tipsWrapperFor24h&&t.push(this.config.tipsWrapperFor24h),t.forEach(i=>{i.querySelectorAll(".tp-ui-value-tips, .tp-ui-value-tips-24h").forEach(r=>{let s=r;s.textContent===e||Number(s.textContent)===Number(e)?(s.classList.add("active"),s.setAttribute("aria-selected","true")):(s.classList.remove("active"),s.setAttribute("aria-selected","false"))})})}renderTips(e,t,i,n,r,s=!0,l,c="",a="12"){if(v()===!1)return;let u=l||this.config.tipsWrapper;s&&(u.innerHTML="",this.tipsCache.clear());let{width:d,height:p,radius:h}=this.getCachedDimensions(u),b=document.createDocumentFragment(),S=`${t}-${this.config.theme||"default"}`;e.forEach((k,H)=>{let m=`${S}-${k}`,E=this.tipsCache.get(m);E||(E=this.createTip(k,t,r),this.tipsCache.set(m,E));let{wrapper:g,tip:C}=E;this.updateTipState(g,C,k,i,n,r,c,a);let f=H*(360/e.length)*(Math.PI/180);g.style.left=`${d+Math.sin(f)*h}px`,g.style.bottom=`${p+Math.cos(f)*h}px`,b.appendChild(g)}),u.appendChild(b)}createTip(e,t,i){if(v()===!1){let l={};return{wrapper:l,tip:l}}let n=document.createElement("span"),r=document.createElement("span");r.textContent=e,r.setAttribute("role","option"),r.setAttribute("aria-selected","false"),r.tabIndex=0;let s=i==="24h"&&t.includes("24")?"tp-ui-value-tips-24h":"tp-ui-value-tips";return r.classList.add(s),n.classList.add(t),this.config.theme&&(n.classList.add(this.config.theme),r.classList.add(this.config.theme)),n.appendChild(r),{wrapper:n,tip:r}}updateTipState(e,t,i,n,r,s,l,c){e.classList.remove("tp-ui-tips-disabled"),t.classList.remove("tp-ui-tips-disabled"),t.removeAttribute("aria-disabled"),t.tabIndex=0,this.checkIfDisabled(i,n,r,s,l,c)&&(e.classList.add("tp-ui-tips-disabled"),t.classList.add("tp-ui-tips-disabled"),t.setAttribute("aria-disabled","true"),t.tabIndex=-1)}checkIfDisabled(e,t,i,n,r,s){return i?t==="hours"?I.isDisabled(e,r,i):t==="minutes"?D.isDisabled(e,s,r,i,n):!1:!1}setCircleSize(e){e?this.config.circle.classList.remove("small-circle"):this.config.circle.classList.add("small-circle")}setCircle24hMode(e){e?(this.config.circle.classList.add("tp-ui-circle-hand-24h"),this.config.clockHand.classList.add("tp-ui-clock-hand-24h")):(this.config.circle.classList.remove("tp-ui-circle-hand-24h"),this.config.clockHand.classList.remove("tp-ui-clock-hand-24h"))}destroy(){this.tipsCache.clear(),this.cachedDimensions.clear(),this.config.tipsWrapper.innerHTML=""}};var B=class{static processPointerInput(e){let t=P.calculateRawAngle(e.pointerPosition,e.clockCenter);return e.mode==="hours"?this.processHours(t,e):this.processMinutes(t,e)}static processHours(e,t){let i=t.smoothHourSnap??!0,n;if(i)n=e;else{let p=t.incrementHours*30;n=P.snapToIncrement(e,p)}let r=P.calculateDistance(t.pointerPosition,t.clockCenter),s=t.clockType==="24h"&&P.isInnerCircle(r,t.clockRadius),l=I.angleToIndex(n,t.clockType,s),c=I.indexToValue(l,t.clockType),a=I.isDisabled(c,t.amPm,t.disabledTime);a&&(l=I.findNearestValid(l,t.clockType,t.amPm,t.disabledTime));let u=I.indexToValue(l,t.clockType),d;return i?d=e:d=I.indexToAngle(l,t.clockType),{angle:d,value:u,index:l,isValid:!a,isInnerCircle:t.clockType==="24h"?s:void 0}}static processMinutes(e,t){let i=t.incrementMinutes*6,n=P.snapToIncrement(e,i),r=D.angleToIndex(n),s=D.indexToValue(r),l=t.currentHour||"00",c=D.isDisabled(s,l,t.amPm,t.disabledTime,t.clockType);c&&(r=D.findNearestValid(r,l,t.amPm,t.disabledTime,t.clockType));let a=D.indexToValue(r);return{angle:D.indexToAngle(r),value:a,index:r,isValid:!c}}static valueToAngle(e,t,i){let n=parseInt(e,10);return t==="hours"?I.indexToAngle(n,i):D.indexToAngle(n)}};var be=class{state;renderer;clockType;disabledTime;incrementHours;incrementMinutes;smoothHourSnap;isDragging=!1;callbacks;lastProcessedX=null;lastProcessedY=null;constructor(e,t,i,n,r=1,s=1,l=!0,c={}){this.renderer=e,this.state={...t},this.clockType=i,this.disabledTime=n,this.incrementHours=r,this.incrementMinutes=s,this.smoothHourSnap=l,this.callbacks=c}handlePointerMove(e,t,i){if(this.isDragging=!0,this.lastProcessedX===e.x&&this.lastProcessedY===e.y)return;this.lastProcessedX=e.x,this.lastProcessedY=e.y;let n={pointerPosition:e,clockCenter:t,clockRadius:i,mode:this.state.mode,clockType:this.clockType,amPm:this.state.amPm,disabledTime:this.disabledTime,incrementHours:this.incrementHours,incrementMinutes:this.incrementMinutes,smoothHourSnap:this.smoothHourSnap,currentHour:this.state.hour},r=B.processPointerInput(n);if(r.isValid){if(this.state.mode==="hours"){let s=this.state.hour;this.state.hour=r.value,this.state.hourAngle=r.angle,this.clockType==="24h"&&r.isInnerCircle!==void 0&&(this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(r.isInnerCircle)),this.callbacks.onHourChange&&s!==r.value&&this.callbacks.onHourChange(r.value)}else{let s=this.state.minute;this.state.minute=r.value,this.state.minuteAngle=r.angle,this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(!1),this.callbacks.onMinuteChange&&s!==r.value&&this.callbacks.onMinuteChange(r.value)}this.renderer.setHandAngle(r.angle),this.renderer.setActiveValue(r.value)}}handlePointerUp(){this.isDragging=!1,this.lastProcessedX=null,this.lastProcessedY=null}snapToNearestHour(){if(this.state.mode!=="hours")return;let e=B.valueToAngle(this.state.hour,"hours",this.clockType);this.state.hourAngle=e,this.renderer.animateToAngle(e)}switchMode(e){this.state.mode=e;let t=e==="hours"?this.state.hourAngle:this.state.minuteAngle,i=e==="hours"?this.state.hour:this.state.minute;if(e==="hours"&&this.clockType==="24h"){let n=parseInt(i,10),r=n===0||n>=13;this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(r)}else this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(!1);this.renderer.setHandAngle(t),this.renderer.setActiveValue(i)}setValue(e,t){let i=B.valueToAngle(t,e,this.clockType);if(e==="hours")if(this.state.hour=t,this.state.hourAngle=i,this.clockType==="24h"){let n=parseInt(t,10),r=n===0||n>=13;this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(r)}else this.renderer.setCircle24hMode(!1);else this.state.minute=t,this.state.minuteAngle=i,this.renderer.setCircleSize(!0),this.renderer.setCircle24hMode(!1);this.state.mode===e&&(this.renderer.setHandAngle(i),this.renderer.setActiveValue(t))}setAmPm(e){this.state.amPm=e}getState(){return{...this.state}}getHour(){return this.state.hour}getMinute(){return this.state.minute}getAmPm(){return this.state.amPm}updateDisabledTime(e){this.disabledTime=e}destroy(){this.renderer.destroy()}};var ye=class{controller;clockFace;isActive=!1;isBlocked=!1;config;cachedRect=null;cachedCenter=null;cachedRadius=null;rafId=null;constructor(e,t,i={}){this.controller=e,this.clockFace=t,this.config=i}attach(){this.clockFace.addEventListener("mousedown",this.handlePointerDown),this.clockFace.addEventListener("touchstart",this.handlePointerDown,{passive:!1})}detach(){this.clockFace.removeEventListener("mousedown",this.handlePointerDown),this.clockFace.removeEventListener("touchstart",this.handlePointerDown),this.removeGlobalListeners()}block(){this.isBlocked=!0}unblock(){this.isBlocked=!1}handlePointerDown=e=>{if(w()||this.isBlocked)return;let t=e.target;t&&t.classList&&t.classList.contains("tp-ui-tips-disabled")||(e.preventDefault(),this.isActive=!0,this.cachedRect=this.clockFace.getBoundingClientRect(),this.cachedCenter=this.getClockCenter(),this.cachedRadius=this.getClockRadius(),this.processPointerEvent(e),document.addEventListener("mousemove",this.handlePointerMove),document.addEventListener("touchmove",this.handlePointerMove,{passive:!1}),document.addEventListener("mouseup",this.handlePointerUp),document.addEventListener("touchend",this.handlePointerUp))};handlePointerMove=e=>{if(!this.isActive||this.isBlocked)return;let t=this.getTargetElement(e);t&&t.classList&&t.classList.contains("tp-ui-tips-disabled")||(e.preventDefault(),this.rafId===null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.processPointerEvent(e)})))};handlePointerUp=()=>{if(!this.isActive)return;this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.isActive=!1,this.cachedRect=null,this.cachedCenter=null,this.cachedRadius=null,this.controller.handlePointerUp();let{autoSwitchToMinutes:e,isMobileView:t,smoothHourSnap:i,hourElement:n,minutesElement:r}=this.config;i&&n?.classList.contains("active")&&this.controller.snapToNearestHour(),this.removeGlobalListeners(),e&&n?.classList.contains("active")&&!t?(n.classList.remove("active"),r?.classList.add("active"),r?.click(),r?.focus(),n.blur()):r?.classList.contains("active")&&this.config.onMinuteCommit&&this.config.onMinuteCommit()};processPointerEvent(e){let t=this.getPointerPosition(e),i=this.cachedCenter||this.getClockCenter(),n=this.cachedRadius||this.getClockRadius();this.controller.handlePointerMove(t,i,n)}getPointerPosition(e){let t=this.cachedRect||this.clockFace.getBoundingClientRect();if("touches"in e){let i=e.touches[0]||e.changedTouches[0];return{x:i.clientX-t.left,y:i.clientY-t.top}}else return{x:e.clientX-t.left,y:e.clientY-t.top}}getTargetElement(e){if("touches"in e){let t=e.touches[0]||e.changedTouches[0];if(t&&!w())return document.elementFromPoint(t.clientX,t.clientY)}return e.target}getClockCenter(){let e=this.clockFace.offsetWidth,t=this.clockFace.offsetHeight;return{x:e/2,y:t/2}}getClockRadius(){return this.clockFace.offsetWidth/2}removeGlobalListeners(){v()!==!1&&(document.removeEventListener("mousemove",this.handlePointerMove),document.removeEventListener("touchmove",this.handlePointerMove),document.removeEventListener("mouseup",this.handlePointerUp),document.removeEventListener("touchend",this.handlePointerUp))}};var Te=class{renderer;controller;dragHandlers;clockType;disabledTime;tipsWrapper;tipsWrapperFor24h;constructor(e){this.clockType=e.clockType,this.disabledTime=e.disabledTime,this.tipsWrapper=e.tipsWrapper,this.tipsWrapperFor24h=e.tipsWrapperFor24h;let t={clockFace:e.clockFace,tipsWrapper:e.tipsWrapper,tipsWrapperFor24h:e.tipsWrapperFor24h,clockHand:e.clockHand,circle:e.circle,theme:e.theme};this.renderer=new Ee(t);let i={hour:e.initialHour,minute:e.initialMinute,amPm:e.initialAmPm,hourAngle:this.calculateInitialAngle("hours",e.initialHour),minuteAngle:this.calculateInitialAngle("minutes",e.initialMinute),mode:"hours"},n={onHourChange:e.onHourChange,onMinuteChange:e.onMinuteChange};this.controller=new be(this.renderer,i,e.clockType,e.disabledTime,e.incrementHours||1,e.incrementMinutes||1,e.smoothHourSnap??!0,n),this.dragHandlers=new ye(this.controller,e.clockFace,e.dragConfig||{})}initialize(){this.dragHandlers.attach(),this.switchToHours()}switchToHours(){this.controller.switchMode("hours"),this.clockType==="24h"&&this.tipsWrapperFor24h&&this.tipsWrapperFor24h.classList.remove("none"),this.renderHourTips();let e=this.controller.getState();this.renderer.setActiveValue(e.hour)}switchToMinutes(){this.controller.switchMode("minutes"),this.tipsWrapperFor24h&&this.tipsWrapperFor24h.classList.add("none"),this.renderMinuteTips();let e=this.controller.getState();this.renderer.setActiveValue(e.minute)}setHour(e){this.controller.setValue("hours",e)}setMinute(e){this.controller.setValue("minutes",e)}setAmPm(e){this.controller.setAmPm(e);let t=this.controller.getState();t.mode==="hours"?(this.renderHourTips(),this.renderer.setHandAngle(t.hourAngle),this.renderer.setActiveValue(t.hour)):(this.renderMinuteTips(),this.renderer.setHandAngle(t.minuteAngle),this.renderer.setActiveValue(t.minute))}getHour(){return this.controller.getHour()}getMinute(){return this.controller.getMinute()}getAmPm(){return this.controller.getAmPm()}updateDisabledTime(e){this.disabledTime=e,this.controller.updateDisabledTime(e),this.controller.getState().mode==="hours"?this.renderHourTips():this.renderMinuteTips()}renderHourTips(){let t=this.controller.getState().amPm;this.clockType==="24h"?(this.renderer.renderTips(De,"tp-ui-hour-time-12","hours",this.disabledTime,this.clockType,!0,this.tipsWrapper,t),this.tipsWrapperFor24h&&this.renderer.renderTips(Be,"tp-ui-hour-time-24","hours",this.disabledTime,this.clockType,!0,this.tipsWrapperFor24h,t)):this.renderer.renderTips(De,"tp-ui-hour-time-12","hours",this.disabledTime,this.clockType,!0,void 0,t)}renderMinuteTips(){let e=this.controller.getState(),t=e.amPm,i=e.hour;this.renderer.renderTips(U,"tp-ui-minutes-time","minutes",this.disabledTime,this.clockType,!0,void 0,t,i)}calculateInitialAngle(e,t){let i=parseInt(t,10);return e==="hours"?i%12*30:i*6}destroy(){this.dragHandlers.detach(),this.controller.destroy()}blockInteractions(){this.dragHandlers.block()}unblockInteractions(){this.dragHandlers.unblock()}};var Q=class{core;emitter;clockSystem=null;constructor(e,t){this.core=e,this.emitter=t}getClockSystem(){return this.clockSystem}initialize(){let e=this.core.getClockFace(),t=this.core.getClockHand(),i=this.core.getCircle();if(!e||!t||!i)return;let n=this.core.options.clock.type==="24h",r=this.core.getTipsWrapper();if(!r)return;let s=this.core.getHour(),l=this.core.getMinutes(),c={clockFace:e,tipsWrapper:r,tipsWrapperFor24h:n&&this.core.getTipsWrapperFor24h()||void 0,clockHand:t,circle:i,clockType:this.core.options.clock.type||"12h",disabledTime:this.convertDisabledTime(),initialHour:s?.value||"12",initialMinute:l?.value||"00",initialAmPm:this.getAmPmValue(),theme:this.core.options.ui.theme,incrementHours:this.core.options.clock.incrementHours||1,incrementMinutes:this.core.options.clock.incrementMinutes||1,smoothHourSnap:this.core.options.clock.smoothHourSnap??!0,timepicker:null,dragConfig:{autoSwitchToMinutes:this.core.options.clock.autoSwitchToMinutes,isMobileView:this.core.isMobileView,smoothHourSnap:this.core.options.clock.smoothHourSnap??!0,hourElement:s,minutesElement:l,onMinuteCommit:()=>{let a=this.core.getMinutes(),u=this.core.getHour(),d=this.core.getActiveTypeMode();this.emitter.emit("range:minute:commit",{hour:u?.value??"12",minutes:a?.value??"00",type:d?.textContent??void 0})}},onHourChange:a=>{let u=this.core.getHour();u&&(u.value=a,u.setAttribute("aria-valuenow",a));let d=this.core.getModalElement();x(d,`Hour: ${a}`);let p=this.core.getMinutes(),h=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:a,minutes:p?.value,type:h?.textContent||void 0})},onMinuteChange:a=>{let u=this.core.getMinutes();u&&(u.value=a,u.setAttribute("aria-valuenow",a));let d=this.core.getModalElement();x(d,`Minutes: ${a}`);let p=this.core.getHour(),h=this.core.getActiveTypeMode();this.emitter.emit("update",{hour:p?.value,minutes:a,type:h?.textContent||void 0})}};this.clockSystem=new Te(c),this.clockSystem.initialize()}convertDisabledTime(){let e=this.core.disabledTime?.value;if(!e)return null;let t;return e.intervals&&(t=Array.isArray(e.intervals)?e.intervals:[e.intervals]),{hours:e.hours,minutes:e.minutes,isInterval:e.isInterval,intervals:t,clockType:e.clockType}}getAmPmValue(){if(this.core.options.clock.type==="24h")return"";let e=this.core.getActiveTypeMode();if(e){let n=e.textContent?.trim();if(n==="AM"||n==="PM")return n}let t=this.core.getAM();return this.core.options.range?.enabled===!0?t?.classList.contains("active")?"AM":"":t?.classList.contains("active")?"AM":"PM"}destroy(){this.clockSystem&&(this.clockSystem.destroy(),this.clockSystem=null)}};var ee=class{core;constructor(e){this.core=e}removeCircleClockClasses24h(){let e=this.core.getCircle(),t=this.core.getClockHand();e?.classList.remove("tp-ui-circle-hand-24h"),t?.classList.remove("tp-ui-clock-hand-24h")}setCircleClockClasses24h(){let e=this.core.getCircle(),t=this.core.getClockHand();e&&e.classList.add("tp-ui-circle-hand-24h"),t&&t.classList.add("tp-ui-clock-hand-24h")}setOnStartCSSClassesIfClockType24h(){if(this.core.options.clock.type==="24h"){let e=this.core.getInput();if(!e)return;let t;e.value.length>0&&(t=e.value.split(":")[0]),t&&(Number(t)>12||Number(t)===0)&&this.setCircleClockClasses24h()}}setBgColorToCircleWithMinutesTips(){let e=this.core.getMinutes(),t=this.core.getCircle();if(!(!e||!t)&&e.value&&U.includes(e.value)){let i=getComputedStyle(t).getPropertyValue("--timepicker-primary").trim();i&&(t.style.backgroundColor=i),t.classList.remove("small-circle")}}removeBgColorToCirleWithMinutesTips(){let e=this.core.getMinutes(),t=this.core.getCircle();!e||!t||e.value&&U.includes(e.value)||(t.style.backgroundColor="",t.classList.add("small-circle"))}setClassActiveToHourOnOpen(){if(this.core.options.ui.mobile||this.core.isMobileView)return;this.core.getHour()?.classList.add(N)}toggleClassActiveToValueTips(e,t){if(e)return;let i=this.core.getAllValueTips();if(!i)return;let n=i.find(r=>Number(r.innerText)===Number(t));i.forEach(r=>{r.classList.remove(N),r.setAttribute("aria-selected","false")}),n!==void 0&&(n.classList.add(N),n.setAttribute("aria-selected","true"))}};var te=class{getClockSystem;styleHandler;getAmPmValue;clockType;constructor(e,t,i,n){this.getClockSystem=e,this.styleHandler=t,this.getAmPmValue=i,this.clockType=n}setMinutesToClock(e){let t=this.getClockSystem();t&&(this.styleHandler.removeBgColorToCirleWithMinutesTips(),e&&t.setMinute(e),t.switchToMinutes())}setHoursToClock(e){let t=this.getClockSystem();t&&(e&&t.setHour(e),t.switchToHours())}setTransformToCircleWithSwitchesHour(e){let t=this.getClockSystem();!t||!e||t.setHour(e)}setTransformToCircleWithSwitchesMinutes(e){let t=this.getClockSystem();!t||!e||t.setMinute(e)}updateAmPm(){let e=this.getClockSystem();if(!e||this.clockType==="24h")return;let t=this.getAmPmValue();t!==""&&e.setAmPm(t)}};var ie=class{systemInitializer;styleHandler;timeHandler;eventHandler;constructor(e,t){this.systemInitializer=new Q(e,t),this.styleHandler=new ee(e);let i=e.options.clock.type||"12h";this.timeHandler=new te(()=>this.systemInitializer.getClockSystem(),this.styleHandler,()=>this.systemInitializer.getAmPmValue(),i),this.eventHandler=new J(t,()=>this.systemInitializer.getClockSystem(),n=>this.timeHandler.setHoursToClock(n),n=>this.timeHandler.setMinutesToClock(n),()=>this.timeHandler.updateAmPm(),()=>this.systemInitializer.convertDisabledTime()),this.eventHandler.setup()}initializeClockSystem(){this.systemInitializer.initialize()}destroyClockSystem(){this.systemInitializer.destroy()}removeCircleClockClasses24h(){this.styleHandler.removeCircleClockClasses24h()}setCircleClockClasses24h(){this.styleHandler.setCircleClockClasses24h()}setOnStartCSSClassesIfClockType24h(){this.styleHandler.setOnStartCSSClassesIfClockType24h()}setBgColorToCircleWithMinutesTips=()=>{this.styleHandler.setBgColorToCircleWithMinutesTips()};removeBgColorToCirleWithMinutesTips=()=>{this.styleHandler.removeBgColorToCirleWithMinutesTips()};setClassActiveToHourOnOpen=()=>{this.styleHandler.setClassActiveToHourOnOpen()};setMinutesToClock=e=>{this.timeHandler.setMinutesToClock(e)};setHoursToClock=e=>{this.timeHandler.setHoursToClock(e)};setTransformToCircleWithSwitchesHour=e=>{this.timeHandler.setTransformToCircleWithSwitchesHour(e)};setTransformToCircleWithSwitchesMinutes=e=>{this.timeHandler.setTransformToCircleWithSwitchesMinutes(e)};updateAmPm=()=>{this.timeHandler.updateAmPm()};toggleClassActiveToValueTips=e=>{let t=this.systemInitializer.getClockSystem()!==null;this.styleHandler.toggleClassActiveToValueTips(t,e)};destroy(){this.destroyClockSystem()}};var ne=class{core;emitter;cleanupHandlers=[];wasCleared=!1;constructor(e,t){this.core=e,this.emitter=t}init(){if(!this.core.options.ui.clearButton)return;let e=this.getClearButton();if(!e)return;let t=()=>{this.core.isDestroyed||e.getAttribute("aria-disabled")!=="true"&&this.handleClearClick()};e.addEventListener("click",t),this.cleanupHandlers.push(()=>e.removeEventListener("click",t)),this.setupInternalEventListeners()}setupInternalEventListeners(){this.emitter.on("update",()=>{this.updateClearButtonState()}),this.emitter.on("open",()=>{this.updateClearButtonState()}),this.emitter.on("select:hour",()=>{this.updateClearButtonState(),this.reenableConfirmIfCleared()}),this.emitter.on("select:minute",()=>{this.updateClearButtonState(),this.reenableConfirmIfCleared()})}handleClearClick(){let t=this.core.getInput()?.value||null;this.clearTimeValue(),this.resetClockToNeutral(),this.disableConfirmButton(),this.wasCleared=!0;let i=this.core.getModalElement();x(i,"Time cleared"),this.emitter.emit("clear",{previousValue:t}),this.emitter.emit("update",{hour:void 0,minutes:void 0,type:void 0});let{callbacks:n}=this.core.options;n.onClear&&n.onClear({previousValue:t})}clearTimeValue(){let e=this.core.options.clearBehavior?.clearInput!==!1,t=this.core.getInput();t&&e&&(t.value=""),this.core.setDegreesHours(null),this.core.setDegreesMinutes(null);let i=y.getClearHandler("range");i&&i(this.core,this.emitter);let n=y.getClearHandler("timezone");n&&n(this.core,this.emitter)}resetClockToNeutral(){let e=this.core.options.clock.type,t="12",i="00",n=e==="12h"?"PM":void 0,r=this.core.getHour(),s=this.core.getMinutes();r&&(r.value=t,r.removeAttribute("aria-valuenow")),s&&(s.value=i,s.removeAttribute("aria-valuenow"));let l=this.core.getClockHand();if(l){let c=l.style.transition;l.style.transition="none",l.style.transform="rotateZ(0deg)",l.offsetHeight,requestAnimationFrame(()=>{l.style.transition=c})}if(this.removeActiveStates(),r&&r.click(),e==="12h"&&n){let c=this.core.getAM(),a=this.core.getPM();c?.classList.remove("active"),a?.classList.remove("active"),c?.setAttribute("aria-pressed","false"),a?.setAttribute("aria-pressed","false"),a?.classList.add("active"),a?.setAttribute("aria-pressed","true")}this.emitter.emit("animation:clock",{})}removeActiveStates(){this.core.getAllValueTips().forEach(n=>{n.classList.remove("active"),n.removeAttribute("aria-selected")});let t=this.core.getHour(),i=this.core.getMinutes();t?.removeAttribute("aria-valuenow"),i?.removeAttribute("aria-valuenow")}disableConfirmButton(){let e=this.core.getOkButton();e&&(e.classList.add("disabled"),e.setAttribute("aria-disabled","true"))}updateClearButtonState(){let e=this.getClearButton();if(!e)return;let t=this.core.getInput(),i=t?.value&&t.value.trim()!=="",n=this.core.getHour(),r=this.core.getMinutes(),s=this.core.getActiveTypeMode(),l=this.core.options.clock.type,c=n?.value||"",a=r?.value||"",u=s?.textContent||"",h=i||!(l==="12h"?c==="12"&&a==="00"&&u==="PM":c==="12"&&a==="00");e.classList.toggle("disabled",!h),e.setAttribute("aria-disabled",String(!h))}reenableConfirmIfCleared(){if(!this.wasCleared)return;let e=this.core.getOkButton();e&&(e.classList.remove("disabled"),e.setAttribute("aria-disabled","false"),this.wasCleared=!1)}getClearButton(){return this.core.getModalElement()?.querySelector(".tp-ui-clear-btn")||null}destroy(){this.cleanupHandlers.forEach(e=>e()),this.cleanupHandlers=[]}};var Me=class{animation;modal;config;theme;validation;events;clock;clearButton;plugins=new Map;constructor(e,t){this.animation=new W(e,t),this.modal=new K(e,t),this.config=new Y(e,t),this.theme=new Z(e,t),this.validation=new G(e,t),this.events=new X(e,t),this.clock=new ie(e,t),this.clearButton=new ne(e,t),y.getAll().forEach(n=>{let r=n.factory(e,t);this.plugins.set(n.name,r)})}getPlugin(e){return this.plugins.get(e)}destroy(){this.animation.destroy(),this.modal.destroy(),this.config.destroy(),this.theme.destroy(),this.validation.destroy(),this.events.destroy(),this.clock.destroy(),this.clearButton.destroy(),this.plugins.forEach(e=>e.destroy()),this.plugins.clear()}};var Ce="is-rippling",ke="ripple-hold",F=null;function pt(o){let e=o.target,t=e.hasAttribute("data-md3-ripple")?e:e.closest("[data-md3-ripple]");if(!t||o.button!==0&&o.pointerType==="mouse")return;let i=t.getBoundingClientRect(),r=Math.max(i.width,i.height)*2,s=o.clientX-i.left,l=o.clientY-i.top;t.style.setProperty("--ripple-size",`${r}px`),t.style.setProperty("--ripple-x",`${s}px`),t.style.setProperty("--ripple-y",`${l}px`),t.classList.remove(Ce,ke),t.offsetWidth,t.classList.add(Ce,ke),t._rippleHold=!0,F=t}function Ke(o){let e=o.target,i=(e.hasAttribute("data-md3-ripple")?e:e.closest("[data-md3-ripple]"))||F;i&&(i._rippleHold=!1,i.classList.remove(ke),setTimeout(()=>{i.classList.remove(Ce),F===i&&(F=null)},1e3))}function ht(o){let e=o.currentTarget;!e||!e._rippleHold||(e._rippleHold=!1,e.classList.remove(ke),setTimeout(()=>{e.classList.remove(Ce),F===e&&(F=null)},1e3))}function Ye(o){if(v()===!1)return;let e=o||document;e.addEventListener("pointerdown",pt),e.addEventListener("pointerup",Ke),e.addEventListener("pointercancel",Ke),e.querySelectorAll("[data-md3-ripple]").forEach(i=>{i.addEventListener("mouseleave",ht)})}var Ze=(o,e)=>{let t;return(...i)=>{clearTimeout(t),t=setTimeout(()=>{o(...i)},e)}};var Ge=["basic","crane-straight","crane","m2","m3-green"],He=class{core;managers;emitter;eventsClickMobileHandler=()=>{};mutliEventsMoveHandler=()=>{};unmountTimeouts=[];constructor(e,t,i){this.core=e,this.managers=t,this.emitter=i}init(){if(!this.core.isDestroyed&&!this.core.isInitialized){try{this.managers.config.updateInputValueWithCurrentTimeOnStart(),this.managers.validation.checkDisabledValuesOnStart()}catch{this.core.setIsDestroyed(!0);return}this.managers.theme.setTimepickerClassToElement(),this.managers.theme.setInputClassToInputElement(),this.managers.theme.setDataOpenToInputIfDoesntExistInWrapper(),this.managers.theme.setClassTopOpenElement(),this.managers.config.getDisableTime(),this.core.options.ui.inline?.enabled||this.managers.events.handleOpenOnClick(),this.managers.events.handleOpenOnEnterFocus(),this.setupCallbackBridge(),this.core.setIsInitialized(!0)}}setupCallbackBridge(){let{callbacks:e}=this.core.options;e.onOpen&&this.emitter.on("open",e.onOpen),e.onCancel&&this.emitter.on("cancel",e.onCancel),e.onConfirm&&this.emitter.on("confirm",e.onConfirm),e.onUpdate&&this.emitter.on("update",e.onUpdate),e.onSelectHour&&this.emitter.on("select:hour",e.onSelectHour),e.onSelectMinute&&this.emitter.on("select:minute",e.onSelectMinute),e.onSelectAM&&this.emitter.on("select:am",e.onSelectAM),e.onSelectPM&&this.emitter.on("select:pm",e.onSelectPM),e.onError&&this.emitter.on("error",e.onError),e.onTimezoneChange&&this.emitter.on("timezone:change",e.onTimezoneChange),e.onRangeConfirm&&this.emitter.on("range:confirm",e.onRangeConfirm),e.onRangeSwitch&&this.emitter.on("range:switch",e.onRangeSwitch),e.onRangeValidation&&this.emitter.on("range:validation",e.onRangeValidation),e.onClear&&this.emitter.on("clear",e.onClear)}mount(){this.core.isDestroyed||this.core.isOpen||(this.core.isInitialized||this.init(),this.eventsBundle())}unmount(e){let t=Ze((...i)=>{if(i.length>2)return;let[n]=i.filter(u=>typeof u=="boolean"),[r]=i.filter(u=>typeof u=="function");this.core.setIsMobileView(!!this.core.options.ui.mobile);let s=this.core.getModalElement();if(n&&s&&this.core.getOkButton()?.click(),this.core.setIsTouchMouseMove(!1),this.core.setIsOpen(!1),this.removeEventListeners(),this.isPopoverMode()){let u=this.managers.getPlugin("wheel");u&&"detachPopover"in u&&u.detachPopover()}s&&this.managers.animation.removeAnimationToClose(),this.core.getOpenElement().forEach(u=>u?.classList.remove("disabled"));let c=setTimeout(()=>{v()&&(document.body.style.overflowY="",document.body.style.paddingRight="")},M.SCROLLBAR_RESTORE);this.unmountTimeouts.push(c);let a=setTimeout(()=>{let u=this.core.getInput();this.core.options.behavior.focusInputAfterClose&&u?.focus();let d=this.core.getModalElement();d&&d.remove(),this.core.setIsModalRemove(!0)},M.MODAL_REMOVE);this.unmountTimeouts.push(a),r&&r()},this.core.options.behavior.delayHandler||M.DEFAULT_DELAY);e?t(e):t()}destroy(e){if(this.core.isDestroyed)return;this.clearUnmountTimeouts();let t=typeof e=="function"?{callback:e}:e||{},{keepInputValue:i=!1,callback:n}=t,r=this.core.getInput(),s=i?r?.value:null;this.removeEventListeners(),this.core.getModalElement()?.remove(),this.core.getOpenElement()?.forEach(d=>{d&&(d.classList.remove("disabled","active","tp-ui-open-element"),d.classList.remove(...Ge))}),r&&(r.classList.remove("tp-ui-invalid-format","invalid-value","error","active","tp-ui-input"),r.removeAttribute("data-open"),r.removeAttribute("data-owner-id"),i&&s&&(r.value=s));let a=this.core.element;a&&(a.classList.remove(...Ge),a.classList.remove("error","active","disabled"),a.removeAttribute("data-owner-id"),a.removeAttribute("data-open"),this.core.options.ui.cssClass&&a.classList.remove(this.core.options.ui.cssClass)),a?.querySelectorAll(".tp-ui-invalid-text")?.forEach(d=>d.remove()),this.mutliEventsMoveHandler=()=>{},this.eventsClickMobileHandler=()=>{},this.core.reset(),this.managers.destroy(),this.emitter.clear(),w()||(document.body.style.overflowY="",document.body.style.paddingRight=""),n&&n()}eventsBundle(){if(this.core.isDestroyed||!this.core.isModalRemove)return;this.clearUnmountTimeouts(),this.core.setIsOpen(!0),this.core.setIsModalRemove(!1),this.setupValidation(),this.disableOpenElements(),this.setupModal(),this.applyExpandedState(),this.managers.modal.setFlexEndToFooterIfNoKeyboardIcon(),this.applyThemeDeferred(),this.managers.animation.setAnimationToOpen(),this.managers.config.getInputValueOnOpenAndSet();let e=this.resolveWheelMode();if(this.emitMissingPluginErrors(),this.initClockOrWheel(e),this.initOptionalPlugins(e),this.bindEventHandlers(e),this.finalizeModal(e),this.isPopoverMode()){let t=this.managers.getPlugin("wheel");t&&"attachPopover"in t&&t.attachPopover()}this.managers.modal.setShowClassToBackdrop()}setupValidation(){this.managers.validation.setErrorHandler(),this.managers.validation.removeErrorHandler()}disableOpenElements(){this.core.options.ui.inline?.enabled||(this.core.getOpenElement().forEach(t=>t?.classList.add("disabled")),this.isPopoverMode()||this.core.getInput()?.blur())}setupModal(){this.managers.modal.setScrollbarOrNot(),this.managers.modal.setModalTemplate(),this.managers.modal.setNormalizeClass(),this.managers.modal.removeBackdrop()}applyExpandedState(){if(this.core.isMobileView)this.managers.config.updateClockFaceAccessibility(!0);else{let e=this.core.getModalElement(),t=e?.querySelector(".tp-ui-mobile-clock-wrapper"),i=e?.querySelector(".tp-ui-wrapper"),n=e?.querySelectorAll("*");t?.classList.add("expanded"),i?.classList.add("expanded"),n?.forEach(r=>{!r.classList.contains("tp-ui-select-time")&&!r.classList.contains("tp-ui-mobile-clock-wrapper")&&!r.classList.contains("tp-ui-wrapper")&&r.classList.add("expanded")})}}applyThemeDeferred(){setTimeout(()=>{this.managers.theme.setTheme();let e=this.core.getWrapper();e&&this.core.options.ui.cssClass&&e.classList.add(this.core.options.ui.cssClass)},0)}isCompactWheelMode(){return this.core.options.ui.mode==="compact-wheel"}isPopoverMode(){return this.isCompactWheelMode()&&!!this.core.options.wheel?.placement}resolveWheelMode(){let e=this.core.options.ui.mode;return(e==="wheel"||e==="compact-wheel")&&y.has("wheel")}emitMissingPluginErrors(){let e=this.core.options.ui.mode;(e==="wheel"||e==="compact-wheel")&&!y.has("wheel")&&this.emitter.emit("error",{error:"WheelPlugin is not registered. Import and register it: PluginRegistry.register(WheelPlugin)"}),this.core.options.range?.enabled&&!y.has("range")&&this.emitter.emit("error",{error:"RangePlugin is not registered. Import and register it: PluginRegistry.register(RangePlugin)"}),this.core.options.timezone?.enabled&&!y.has("timezone")&&this.emitter.emit("error",{error:"TimezonePlugin is not registered. Import and register it: PluginRegistry.register(TimezonePlugin)"})}initClockOrWheel(e){if(e){let t=this.managers.getPlugin("wheel");t&&t.init()}else this.managers.clock.initializeClockSystem(),this.managers.clock.setOnStartCSSClassesIfClockType24h(),this.managers.clock.setClassActiveToHourOnOpen()}initOptionalPlugins(e){let t=this.managers.getPlugin("timezone");t&&t.init();let i=this.managers.getPlugin("range");i&&!e&&i.init()}bindEventHandlers(e){this.managers.events.handleCancelButton(),this.managers.events.handleOkButton(),this.managers.clearButton.init(),e||(this.managers.events.handleHourEvents(),this.managers.events.handleMinutesEvents()),this.managers.events.handleKeyboardInput(),this.core.options.ui.enableSwitchIcon&&!e&&this.managers.events.handleSwitchViewButton(),this.core.options.clock.type!=="24h"&&!this.isCompactWheelMode()&&(this.managers.events.handleAmClick(),this.managers.events.handlePmClick()),this.core.options.behavior.focusTrap&&this.managers.events.focusTrapHandler(),this.core.options.ui.inline?.enabled||(this.managers.events.handleEscClick(),this.isPopoverMode()||(this.core.options.ui.mode==="wheel"||this.core.options.ui.mode==="compact-wheel")&&this.core.options.wheel?.ignoreOutsideClick||this.managers.events.handleBackdropClick())}finalizeModal(e){let t=this.core.getModalElement();if(t&&Ye(t),!e){let i=this.core.getClockFace();i&&typeof requestAnimationFrame<"u"&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{i?.classList.add("scale-in")})})}}clearUnmountTimeouts(){this.unmountTimeouts.forEach(clearTimeout),this.unmountTimeouts=[]}removeEventListeners(){if(v()===!1)return;qe.split(" ").forEach(t=>{document.removeEventListener(t,this.mutliEventsMoveHandler,!1)}),document.removeEventListener("mousedown",this.eventsClickMobileHandler)}};var q=class{events=new Map;on(e,t){this.events.has(e)||this.events.set(e,new Set),this.events.get(e).add(t)}once(e,t){let i=n=>{t(n),this.off(e,i)};this.on(e,i)}off(e,t){t?this.events.get(e)?.delete(t):this.events.delete(e)}emit(e,t){this.events.get(e)?.forEach(i=>{i(t)})}clear(){this.events.clear()}hasListeners(e){return(this.events.get(e)?.size??0)>0}};var R={clock:{type:"12h",incrementHours:1,incrementMinutes:1,autoSwitchToMinutes:!0,disabledTime:void 0,currentTime:void 0},ui:{mode:"clock",theme:"basic",animation:!0,backdrop:!0,mobile:!1,enableSwitchIcon:!1,editable:!1,enableScrollbar:!1,cssClass:void 0,appendModalSelector:"",iconTemplate:"",iconTemplateMobile:"",inline:void 0,clearButton:!1},labels:{am:"AM",pm:"PM",ok:"OK",cancel:"Cancel",time:"Select time",mobileTime:"Enter Time",mobileHour:"Hour",mobileMinute:"Minute",clear:"Clear"},behavior:{focusInputAfterClose:!1,focusTrap:!0,delayHandler:300,id:void 0},callbacks:{onOpen:void 0,onCancel:void 0,onConfirm:void 0,onUpdate:void 0,onSelectHour:void 0,onSelectMinute:void 0,onSelectAM:void 0,onSelectPM:void 0,onError:void 0,onTimezoneChange:void 0,onRangeConfirm:void 0,onRangeSwitch:void 0,onRangeValidation:void 0,onClear:void 0},timezone:{enabled:!1,default:void 0,whitelist:void 0,label:"Timezone"},range:{enabled:!1,minDuration:void 0,maxDuration:void 0,fromLabel:"From",toLabel:"To"},wheel:{placement:void 0,hideFooter:void 0,commitOnScroll:void 0,hideDisabled:void 0,ignoreOutsideClick:void 0},clearBehavior:{clearInput:!0}};function Re(o={}){let e={clock:{...R.clock,...o.clock},ui:{...R.ui,...o.ui},labels:{...R.labels,...o.labels},behavior:{...R.behavior,...o.behavior},callbacks:{...R.callbacks,...o.callbacks},timezone:{...R.timezone,...o.timezone},range:{...R.range,...o.range},wheel:{...R.wheel,...o.wheel},clearBehavior:{...R.clearBehavior,...o.clearBehavior}},t=e.ui.mode;return(t==="wheel"||t==="compact-wheel")&&(e.wheel={placement:t==="compact-wheel"?"auto":void 0,hideFooter:void 0,commitOnScroll:void 0,ignoreOutsideClick:void 0,...e.wheel}),e}var je=o=>o.replace(/[^0-9:APMapm\s]/g,"");var z=new Map,re=class{core;managers;lifecycle;emitter;constructor(e,t){if(w())throw new Error("TimepickerUI requires browser environment");let i=this.resolveInputElement(e);if(!i)throw new Error("Input element not found");let n=t?.behavior?.id,r=n||`tp-ui-${$e()}`,s=this.createWrapperElement(i),l=Re(t||{});if(l.ui.inline?.enabled&&typeof t?.behavior?.focusTrap>"u"&&(l.behavior.focusTrap=!1),l.ui.inline?.enabled){if(!l.ui.inline.containerId)throw new Error("inline.containerId is required when inline mode is enabled");if(!w()&&!document.getElementById(l.ui.inline.containerId))throw new Error(`Container element with id "${l.ui.inline.containerId}" not found`)}this.emitter=new q,this.core=new se(s,l,r,n);let c=this.core.getInput();if(c){let a=L(c,l.clock.type),u=Number(a.hour)*30,d=Number(a.minutes)*6;this.core.setDegreesHours(u),this.core.setDegreesMinutes(d)}this.managers=new Me(this.core,this.emitter),this.lifecycle=new He(this.core,this.managers,this.emitter),this.managers.config.checkMobileOption(),this.managers.config.preventClockTypeByCurrentTime(),this.setupInternalEventListeners(),z.set(this.core.instanceId,this)}setupInternalEventListeners(){this.emitter.on("show",()=>{this.core.isDestroyed||this.lifecycle.mount()}),this.emitter.on("cancel",()=>{this.core.isDestroyed||this.lifecycle.unmount()}),this.emitter.on("confirm",e=>{if(!this.core.isDestroyed){if(this.core.options.range?.enabled)return;let t=this.core.getInput();if(t&&e.hour&&e.minutes){let i=e.type?` ${e.type}`:"";t.value=`${e.hour}:${e.minutes}${i}`}e.autoCommit||this.lifecycle.unmount()}}),this.emitter.on("range:confirm",e=>{if(this.core.isDestroyed)return;let t=this.core.getInput();t&&(t.value=`${e.from} - ${e.to}`),this.lifecycle.unmount()})}create(){this.lifecycle.init(),this.core.options.ui.inline?.enabled&&this.lifecycle.mount()}open(e){this.lifecycle.mount(),e&&e()}close(e,t){this.lifecycle.unmount(e?t:void 0),!e&&t&&t()}destroy(e){z.delete(this.core.instanceId),this.lifecycle.destroy(e)}update(e,t){this.core.isDestroyed||(this.core.updateOptions(e.options),this.managers.config.checkMobileOption(),this.managers.config.getDisableTime(),e.create&&this.create(),t&&t())}getValue(){if(this.core.isDestroyed)return{hour:"",minutes:"",type:void 0,time:"",degreesHours:null,degreesMinutes:null};let e=this.core.getModalElement(),t=this.core.getInput(),i="12",n="00",r=this.core.options.clock.type==="24h"?void 0:"AM",s=null,l=null;if(e){let a=this.core.getHour(),u=this.core.getMinutes(),d=this.core.getActiveTypeMode();i=a?.value||"12",n=u?.value||"00",r=this.core.options.clock.type==="24h"?void 0:d?.textContent||"AM",s=this.core.degreesHours,l=this.core.degreesMinutes}else if(t){let a=L(t,this.core.options.clock.type);i=a.hour,n=a.minutes,r=a.type,s=Number(i)*30,l=Number(n)*6}let c="";return this.core.options.clock.type==="24h"?c=`${i.padStart(2,"0")}:${n.padStart(2,"0")}`:c=`${i}:${n.padStart(2,"0")} ${r}`,{hour:i,minutes:n,type:r,time:c,degreesHours:s,degreesMinutes:l}}setValue(e,t=!0){if(this.core.isDestroyed||!e||typeof e!="string")return;this.core.isInitialized||this.create();let i=je(e.trim());try{let n=this.parseTimeString(i);if(this.applyParsedTime(n),this.syncPeriodIndicator(n.typeValue),t){let r=this.core.getInput();r&&(r.value=i)}this.syncClockVisual(n)}catch{return}}parseTimeString(e){if(this.core.options.clock.type==="24h"){let i=e.match(/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])$/);if(!i)throw new Error("Invalid 24h format. Expected HH:MM");return{hourValue:i[1].padStart(2,"0"),minutesValue:i[2],typeValue:"AM"}}let t=e.match(/^(1[0-2]|[1-9]):([0-5][0-9])\s*(AM|PM)$/i);if(!t)throw new Error("Invalid 12h format. Expected HH:MM AM/PM");return{hourValue:t[1],minutesValue:t[2],typeValue:t[3].toUpperCase()}}applyParsedTime(e){let t=this.core.getHour(),i=this.core.getMinutes();t&&(t.value=e.hourValue,t.setAttribute("aria-valuenow",e.hourValue),this.core.setDegreesHours(Number(e.hourValue)*30)),i&&(i.value=e.minutesValue,i.setAttribute("aria-valuenow",e.minutesValue),this.core.setDegreesMinutes(Number(e.minutesValue)*6))}syncPeriodIndicator(e){if(this.core.options.clock.type==="24h")return;let t=this.core.getAM(),i=this.core.getPM();!t||!i||(e==="AM"?(t.classList.add("active"),i.classList.remove("active")):(i.classList.add("active"),t.classList.remove("active")))}syncClockVisual(e){let t=this.core.options.ui.mode;if(t==="wheel"||t==="compact-wheel"){let i=this.managers.getPlugin("wheel");i&&"scrollToValue"in i&&i.scrollToValue(e.hourValue,e.minutesValue,e.typeValue)}else{let i=this.core.getClockHand();i&&(i.style.transform=`rotateZ(${this.core.degreesHours||0}deg)`)}}getElement(){return this.core.element}get instanceId(){return this.core.instanceId}get options(){return this.core.options}get isInitialized(){return this.core.isInitialized}get isDestroyed(){return this.core.isDestroyed}get hour(){return this.core.getHour()}get minutes(){return this.core.getMinutes()}get okButton(){return this.core.getOkButton()}get cancelButton(){return this.core.getCancelButton()}get clockHand(){return this.core.getClockHand()}on(e,t){this.core.isDestroyed||this.emitter.on(e,t)}once(e,t){this.core.isDestroyed||this.emitter.once(e,t)}off(e,t){this.core.isDestroyed||this.emitter.off(e,t)}resolveInputElement(e){if(v()===!1)return null;let t=null;if(typeof e=="string"){if(t=document.querySelector(e),!t)return null}else if(e instanceof HTMLElement)t=e;else return null;return t.tagName==="INPUT"?t:t.querySelector("input")}createWrapperElement(e){if(v()===!1)return e;let t=e.parentElement;if(e.tagName==="INPUT"&&!t?.classList.contains("tp-ui")){let i=document.createElement("div");return i.className="tp-ui",e.parentNode?.insertBefore(i,e),i.appendChild(e),i}return t&&!t.classList.contains("tp-ui")&&t.classList.add("tp-ui"),t||e}static getById(e){return z.get(e)}static getAllInstances(){return Array.from(z.values())}static isAvailable(e){return w()?!1:typeof e=="string"?document.querySelector(e)!==null:e instanceof HTMLElement?document.contains(e):!1}static destroyAll(){Array.from(z.values()).forEach(t=>t.destroy()),z.clear()}};var Se=re;var vt=Se;0&&(module.exports={EventEmitter,PluginRegistry,TimepickerUI});
|
package/dist/index.d.ts
CHANGED
|
@@ -1039,10 +1039,14 @@ interface PluginManager {
|
|
|
1039
1039
|
destroy(): void;
|
|
1040
1040
|
}
|
|
1041
1041
|
type PluginFactory = (core: CoreState, emitter: EventEmitter<TimepickerEventMap>) => PluginManager;
|
|
1042
|
+
type TemplateProvider = (options: Required<TimepickerOptions>, instanceId: string) => string;
|
|
1043
|
+
type ClearHandler = (core: CoreState, emitter: EventEmitter<TimepickerEventMap>) => void;
|
|
1042
1044
|
interface Plugin {
|
|
1043
1045
|
name: string;
|
|
1044
1046
|
factory: PluginFactory;
|
|
1045
1047
|
optionsExtender?: (options: Record<string, unknown>) => void;
|
|
1048
|
+
templateProvider?: TemplateProvider;
|
|
1049
|
+
clearHandler?: ClearHandler;
|
|
1046
1050
|
}
|
|
1047
1051
|
declare class PluginRegistryClass {
|
|
1048
1052
|
private plugins;
|
|
@@ -1050,8 +1054,10 @@ declare class PluginRegistryClass {
|
|
|
1050
1054
|
getAll(): Plugin[];
|
|
1051
1055
|
has(name: string): boolean;
|
|
1052
1056
|
get(name: string): Plugin | undefined;
|
|
1057
|
+
getTemplateProvider(name: string): TemplateProvider | undefined;
|
|
1058
|
+
getClearHandler(name: string): ClearHandler | undefined;
|
|
1053
1059
|
}
|
|
1054
1060
|
declare const PluginRegistry: PluginRegistryClass;
|
|
1055
1061
|
|
|
1056
1062
|
export { CoreState, EventEmitter, PluginRegistry, TimepickerUI, TimepickerUI as default };
|
|
1057
|
-
export type { BehaviorOptions, CallbacksOptions, CancelEventData, ClearBehaviorOptions, ClearEventData, ClockOptions, ConfirmEventData, ErrorEventData, HideEventData, LabelsOptions, OpenEventData, OptionTypes, Plugin, PluginFactory, PluginManager, RangeConfirmEventData, RangeOptions, RangeSwitchEventData, RangeValidationEventData, SelectAMEventData, SelectHourEventData, SelectMinuteEventData, SelectPMEventData, ShowEventData, SwitchViewEventData, TimepickerEventMap, TimepickerOptions, TimezoneChangeEventData, TimezoneOptions, UIOptions, UpdateEventData, WheelOptions, WheelScrollEndEventData, WheelScrollStartEventData };
|
|
1063
|
+
export type { BehaviorOptions, CallbacksOptions, CancelEventData, ClearBehaviorOptions, ClearEventData, ClearHandler, ClockOptions, ConfirmEventData, ErrorEventData, HideEventData, LabelsOptions, OpenEventData, OptionTypes, Plugin, PluginFactory, PluginManager, RangeConfirmEventData, RangeOptions, RangeSwitchEventData, RangeValidationEventData, SelectAMEventData, SelectHourEventData, SelectMinuteEventData, SelectPMEventData, ShowEventData, SwitchViewEventData, TemplateProvider, TimepickerEventMap, TimepickerOptions, TimezoneChangeEventData, TimezoneOptions, UIOptions, UpdateEventData, WheelOptions, WheelScrollEndEventData, WheelScrollStartEventData };
|