UNPKG

@progress/kendo-vue-dateinputs

Version:
9 lines (8 loc) 2.5 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("@progress/kendo-date-math");require("@progress/kendo-vue-intl");const x=require("../../utils.js"),r=require("../utils.js"),u=24,H=n=>t=>t%n,g=H(u),l=(n,t)=>s=>g(n+s*t),c=(n,t)=>g(u+n-t),m=n=>(t,s)=>!s||o.getDate(t).getTime()===o.getDate(s).getTime()?t:r.setHours(t,n),I=m(0),f=m(u-1);class L{constructor(t){this.intl=t,this.boundRange=!1,this.insertUndividedMax=!1}apply(t,s){return r.setHours(t,s.getHours())}configure(t){const{boundRange:s=this.boundRange,insertUndividedMax:i=this.insertUndividedMax,min:h=this.min,max:e=this.max,part:a,step:M=this.step}=t;this.boundRange=s,this.insertUndividedMax=i,this.toListItem=p=>{const d=r.setHours(x.MIDNIGHT_DATE,p);return{text:this.intl.formatDate(d,a.pattern),value:d}},this.min=h,this.max=e,this.step=M}data(t){const[s]=this.range(t),i=l(s,this.step),h=a=>this.toListItem(i(a)),e=r.range(0,this.countFromMin(t)).map(h);return this.addLast(e),t&&this.addMissing(e,t),e}isRangeChanged(t,s){return!o.isEqual(this.min,t)||!o.isEqual(this.max,s)}limitRange(t,s,i){return this.boundRange?[I(t,i),f(s,i)]:[t,s]}total(t){const s=this.insertUndividedMax&&this.isLastMissing(t)?1:0,i=this.isMissing(t)?1:0;return this.countFromMin(t)+i+s}selectedIndex(t){return Math.ceil(this.divideByStep(t))}valueInList(t){return t?this.insertUndividedMax&&this.lastHour(t)===t.getHours()||!this.isMissing(t):!0}addLast(t,s){return this.insertUndividedMax&&this.isLastMissing(s)&&t.push(this.toListItem(this.lastHour(s))),t}addMissing(t,s){if(this.valueInList(s))return t;const i=this.toListItem(s.getHours());return t.splice(this.selectedIndex(s),0,i),t}countFromMin(t){const[s,i]=this.range(t);return Math.floor(c(i,s)/this.step)+1}isMissing(t){return t?this.selectedIndex(t)!==this.divideByStep(t):!1}isLastMissing(t){return this.isMissing(r.setHours(this.max,this.lastHour(t)))}divideByStep(t){return c(t.getHours(),this.min.getHours())/this.step}lastHour(t){return this.range(t)[1]}range(t){const[s,i]=this.limitRange(this.min,this.max,t);return[s.getHours(),i.getHours()]}}exports.HoursService=L;