@esri/calcite-components
Version:
Web Components for Esri's Calcite Design System.
3 lines (2 loc) • 12.9 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0/LICENSE.txt */
import{b as g,c as F}from"./53QSHFZE.js";import{b as m,f as z,g as N,j as w,k as U}from"./4PBM4ZLG.js";import{a as C}from"./5OKRPEGU.js";import{b as P}from"./K7LRDT5O.js";import{d as $}from"./QUTTHRH3.js";import{p as y,r as O}from"./G7AHLVJ5.js";var B=5;function x({locale:r,numberingSystem:e,includeSeconds:i,fractionalSecondDigits:t,hour12:n}){let o={hour:"2-digit",minute:"2-digit",timeZone:"UTC",numberingSystem:N(e)};return typeof n=="boolean"&&(o.hour12=n),i&&(o.second="2-digit",t&&(o.fractionalSecondDigits=t)),U(r,o)}function W(r,e){return parseFloat(`0.${r}`).toFixed(g(e)).replace("0.","")}function M(r,e){if(r==null)return;let i=r.toString(),t=g(r);if(r<1&&t>0&&t<4){let n=i.replace("0.","");return!e||n.length===e?n:n.length<e?n.padEnd(e,"0"):n}if(r>=0&&r<10)return i.padStart(2,"0");if(r>=10)return i}function J(r){return parseInt((parseFloat(`0.${r}`)/.001).toFixed(3))}function Q(r){let e={locale:r};return r==="mk"?e.hour12=!1:r.toLowerCase()==="es-mx"&&(e.hour12=!0),x(e).formatToParts(new Date(Date.UTC(0,0,0,0,0,0))).find(({type:n})=>n==="dayPeriod")?.value?"12":"24"}function K({locale:r,meridiem:e,parts:i}){let t=["he","bs","mk"],n;if(i){if(n=i.find(({type:o})=>o==="dayPeriod")?.value||null,r&&t.includes(r)){let o=z.get(r);n==="PM"&&(n=o.pm),n==="AM"&&(n=o.am)}}else if(e)if(t.includes(r)){let o=z.get(r);n=e==="PM"?o.pm:o.am}else{let o=x({locale:r,hour12:!0}),s=6,a=18,l=new Date(Date.UTC(0,0,0,e==="AM"?s:a,0));n=o.formatToParts(l).find(({type:d})=>d==="dayPeriod")?.value||null}return n}function k(r,e){return w.numberFormatOptions={locale:r,numberingSystem:e},w.localize("1.1").split("")[1]}function I({hour12:r,locale:e,numberingSystem:i="latn",part:t,step:n}){let s=x({hour12:r,includeSeconds:n<60,locale:e,numberingSystem:i}).formatToParts(new Date(Date.UTC(0,0,0,0,0,0)));return p(`${t}Suffix`,s,e)}function p(r,e,i="en"){if(!r||!e)return null;if(r==="hourSuffix"){let t=e.indexOf(e.find(({type:s})=>s==="hour")),n=e.indexOf(e.find(({type:s})=>s==="minute")),o=e[t+1];return o?.type==="literal"&&n-t===2&&o.value||null}if(r==="minuteSuffix"){let t=e.indexOf(e.find(({type:o})=>o==="minute")),n=e[t+1];return n?.type==="literal"&&n.value||null}if(r==="secondSuffix"){let t,n=e.indexOf(e.find(({type:o})=>o==="fractionalSecond"));if(n!==-1)t=e[n+1];else{let o=e.indexOf(e.find(({type:s})=>s==="second"));t=e[o+1]}return t?.type==="literal"&&t.value||null}return r==="meridiem"&&(e.find(({type:n})=>n==="dayPeriod")?.value||null)?K({locale:i,parts:e}):e.find(({type:t})=>t===r)?.value||null}function E(r){if(!m(r))return null;let e=parseInt(r);return e>=0&&e<=11?"AM":"PM"}function X(r){return new Intl.DateTimeFormat(r,{hour:"2-digit",hour12:!0,minute:"2-digit",timeZone:"UTC"}).formatToParts(new Date(Date.UTC(0,0,0,0,0))).findIndex(t=>t.type==="dayPeriod")}function V(r){let e=typeof r=="string";if(!r||e&&(r.startsWith(":")||r.endsWith(":"))||!e&&(!r.hour||!r.minute))return!1;let i,t,n;if(e?[i,t,n]=r.split(":"):{hour:i,minute:t,second:n}=r,!i||!t)return!1;let o=parseInt(i),s=parseInt(t),a=parseInt(n),l=m(i)&&o>=0&&o<24,u=m(t)&&s>=0&&s<60,d=m(n)&&a>=0&&a<60;return!!(l&&u&&!n||l&&u&&d)}function Y(r,e){if(e==="meridiem")return r==="AM"||r==="PM";if(!m(r))return!1;let i=Number(r),t=i>=0,n=i<24,o=i<60,s=i<=999;return e==="hour"?t&&n:e==="fractionalSecond"?t&&s:t&&o}function A({value:r,part:e,locale:i,numberingSystem:t="latn",hour12:n}){if(!Y(r,e))return;if(e==="fractionalSecond"){let d=k(i,t),f=null;if(r){w.numberFormatOptions={locale:i,numberingSystem:t};let h=w.localize("0");parseInt(r)===0?f="".padStart(r.length,h):(f=w.localize(`0.${r}`).replace(`${h}${d}`,""),f.length<r.length&&(f=f.padEnd(r.length,h)))}return f}let o=parseInt(r),s=new Date(Date.UTC(0,0,0,e==="hour"?o:e==="meridiem"?r==="AM"?0:12:0,e==="minute"?o:0,e==="second"?o:0));if(!s)return;let a=["second","fractionalSecond"].includes(e),u=x({hour12:n,includeSeconds:a,locale:i,numberingSystem:t}).formatToParts(s);return p(e,u,i)}function v({hour12:r,locale:e,numberingSystem:i="latn",parts:t=!1,step:n,value:o}){if(!V(o))return null;let{hour:s,minute:a,second:l="0",fractionalSecond:u}=_(o,n),d=n<60,f=new Date(Date.UTC(0,0,0,parseInt(s),parseInt(a),d&&parseInt(l),d&&u&&J(u))),h=x({fractionalSecondDigits:g(n),hour12:r,includeSeconds:d,locale:e,numberingSystem:i});if(t){let c=h.formatToParts(f);return{hour:p("hour",c),hourSuffix:p("hourSuffix",c),minute:p("minute",c),minuteSuffix:p("minuteSuffix",c),second:p("second",c),decimalSeparator:k(e,i),fractionalSecond:p("fractionalSecond",c),secondSuffix:e!=="bg"&&p("secondSuffix",c),meridiem:p("meridiem",c,e)}}else{let c=h.format(f)||null;if(!t&&typeof c=="string"&&e==="bg"&&c&&c.includes(" \u0447.")&&(c=c.replaceAll(" \u0447.","")),["he","bs","mk"].includes(e)){let D=z.get(e);c.includes("AM")?c=c.replaceAll("AM",D.am):c.includes("PM")&&(c=c.replaceAll("PM",D.pm)),e!=="he"&&c.indexOf(".")!==c.length-1&&(c=c.replace(".",","))}return c}}function _(r,e){if(V(r)){let[i,t,n]=r.split(":"),o=n,s=null;return n?.includes(".")&&([o,s]=n.split(".")),e&&(s=W(s,e)),{fractionalSecond:s,hour:i,minute:t,second:o}}return{fractionalSecond:null,hour:null,minute:null,second:null}}function L(r,e=60){if(!V(r))return null;let i,t,n,o,s,a=null;return typeof r=="string"?([i,t,o]=r.split(":"),[n,s]=o?.split(".")||["0"]):(i=r.hour,t=r.minute,n=r.second,s=r.fractionalSecond),i&&t&&(a=`${M(parseInt(i))}:${M(parseInt(t))}`,e<60&&(a+=`:${M(parseInt(n||"0"))}`,e<1&&(a+=`.${W(s||"0",e)}`))),a}var T=class extends O{constructor(){super(...arguments),this.localizedDecimalSeparator=".",this.userChangedValue=!1,this.handleHourKeyDownEvent=e=>{let i=e.key;if(P.includes(i)){let t=parseInt(i),n;if(m(this.hour))switch(this.hourFormat){case"12":n=this.hour==="01"&&t>=0&&t<=2?`1${t}`:t;break;case"24":this.hour==="01"?n=`1${t}`:this.hour==="02"&&t>=0&&t<=3?n=`2${t}`:n=t;break}else n=t;this.setValuePart("hour",n)}else switch(i){case"Backspace":case"Delete":e.preventDefault(),this.setValuePart("hour",null);break;case"ArrowDown":e.preventDefault(),this.decrementHour();break;case"ArrowUp":e.preventDefault(),this.incrementHour();break;case" ":case"Spacebar":e.preventDefault();break}},this.handleMinuteKeyDownEvent=e=>{let i=e.key;if(P.includes(i)){let t=parseInt(i),n;if(m(this.minute)&&this.minute.startsWith("0")){let o=parseInt(this.minute);n=o>B?t:`${o}${t}`}else n=t;this.setValuePart("minute",n)}else switch(i){case"Backspace":case"Delete":e.preventDefault(),this.setValuePart("minute",null);break;case"ArrowDown":e.preventDefault(),this.decrementMinute();break;case"ArrowUp":e.preventDefault(),this.incrementMinute();break;case" ":case"Spacebar":e.preventDefault();break}},this.handleSecondKeyDownEvent=e=>{let i=e.key;if(P.includes(i)){let t=parseInt(i),n;if(m(this.second)&&this.second.startsWith("0")){let o=parseInt(this.second);n=o>B?t:`${o}${t}`}else n=t;this.setValuePart("second",n)}else switch(i){case"Backspace":case"Delete":e.preventDefault(),this.setValuePart("second",null);break;case"ArrowDown":e.preventDefault(),this.decrementSecond();break;case"ArrowUp":e.preventDefault(),this.incrementSecond();break;case" ":case"Spacebar":e.preventDefault();break}},this.handleFractionalSecondKeyDownEvent=e=>{let{key:i}=e;if(P.includes(i)){let t=g(this.component.step),n=parseInt(this.fractionalSecond),o=n.toString().length,s;o>=t?s=i.padStart(t,"0"):o<t&&(s=`${n}${i}`.padStart(t,"0")),this.setValuePart("fractionalSecond",parseFloat(`0.${s}`))}else switch(i){case"Backspace":case"Delete":e.preventDefault(),this.setValuePart("fractionalSecond",null);break;case"ArrowDown":e.preventDefault(),this.nudgeFractionalSecond("down");break;case"ArrowUp":e.preventDefault(),this.nudgeFractionalSecond("up");break;case" ":e.preventDefault();break}},this.handleMeridiemKeyDownEvent=e=>{switch(e.key){case"a":this.setValuePart("meridiem","AM");break;case"p":this.setValuePart("meridiem","PM");break;case"Backspace":case"Delete":e.preventDefault(),this.setValuePart("meridiem");break;case"ArrowUp":e.preventDefault(),this.toggleMeridiem("up");break;case"ArrowDown":e.preventDefault(),this.toggleMeridiem("down");break;case" ":case"Spacebar":e.preventDefault();break}},this.calciteTimeChange=y()}decrementHour(){let e=this.hour?this.hour==="00"?23:parseInt(this.hour)-1:0;this.setValuePart("hour",e)}decrementMinute(){this.decrementMinuteOrSecond("minute")}decrementSecond(){this.decrementMinuteOrSecond("second")}incrementHour(){let e=m(this.hour)?this.hour==="23"?0:parseInt(this.hour)+1:1;this.setValuePart("hour",e)}incrementMinute(){this.incrementMinuteOrSecond("minute")}incrementSecond(){this.incrementMinuteOrSecond("second")}nudgeFractionalSecond(e){let i=F(this.component.step),t=g(this.component.step),n=parseInt(this.fractionalSecond),o=parseFloat(`0.${this.fractionalSecond}`),s,a,l,u;e==="up"&&(s=isNaN(n)?0:o+i,a=parseFloat(s.toFixed(t)),l=F(a),u=a<1&&g(l)>0?M(l,t):"".padStart(t,"0")),e==="down"&&(s=isNaN(n)||n===0?1-i:o-i,a=parseFloat(s.toFixed(t)),l=F(a),u=a<1&&g(l)>0&&Math.sign(l)===1?M(l,t):"".padStart(t,"0")),this.setValuePart("fractionalSecond",u)}toggleMeridiem(e){let i;this.meridiem?i=this.meridiem==="AM"?"PM":"AM":i=e==="down"?"PM":"AM",this.setValuePart("meridiem",i)}hostConnected(){this.setHourFormat(),this.setMeridiemOrder(),this.setValue(this.component.value)}hostUpdate(e){let i=!1,t=!1,n=!1;if(e.has("hourFormat")&&(i=!0,n=!0),e.has("messages")&&e.get("messages")?._lang!==this.component.messages._lang&&(i=!0,t=!0,n=!0),e.has("numberingSystem")&&(n=!0),e.has("step")){let o=this.component.step,s=e.get("step");(o>=60&&s>0&&s<60||s>=60&&o>0&&o<60)&&(n=!0)}i&&this.setHourFormat(),t&&this.setMeridiemOrder(),n&&this.setValue(this.component.value),this.userChangedValue=!1}decrementMinuteOrSecond(e){let i;if(m(this[e])){let t=parseInt(this[e]);i=t===0?59:t-1}else i=59;this.setValuePart(e,i)}incrementMinuteOrSecond(e){let i=m(this[e])?this[e]==="59"?0:parseInt(this[e])+1:0;this.setValuePart(e,i)}setHourFormat(){let{hourFormat:e,messages:i}=this.component;this.hourFormat=e==="user"?Q(i._lang):e}setMeridiemOrder(){let{messages:e}=this.component;this.meridiemOrder=X(e._lang)}setValue(e,i=!1){let{messages:t,numberingSystem:n,step:o,value:s}=this.component,a=t._lang,l=this.hourFormat==="12",u=L(e,o);if(V(e)){let{hour:d,minute:f,second:h,fractionalSecond:c}=_(u,o),{hour:D,hourSuffix:b,minute:S,minuteSuffix:q,second:Z,secondSuffix:G,decimalSeparator:R,fractionalSecond:j,meridiem:H}=v({hour12:l,locale:a,numberingSystem:n,parts:!0,step:o,value:u});this.hour=d,this.minute=f,this.second=h,this.fractionalSecond=c,this.localizedHour=D,this.localizedHourSuffix=b,this.localizedMinute=S,this.localizedMinuteSuffix=q,this.localizedSecond=Z,this.localizedDecimalSeparator=R,this.localizedFractionalSecond=j,this.localizedSecondSuffix=G,H&&(this.meridiem=E(this.hour),this.localizedMeridiem=H)}else this.hour=null,this.minute=null,this.second=null,this.fractionalSecond=null,this.meridiem=null,this.localizedHour=null,this.localizedHourSuffix=I({hour12:l,part:"hour",locale:a,numberingSystem:n,step:o}),this.localizedMinute=null,this.localizedMinuteSuffix=I({hour12:l,part:"minute",locale:a,numberingSystem:n,step:o}),this.localizedSecond=null,this.localizedDecimalSeparator=k(a,n),this.localizedFractionalSecond=null,this.localizedSecondSuffix=I({hour12:l,part:"second",locale:a,numberingSystem:n,step:o}),this.localizedMeridiem=null;u!==s?(this.userChangedValue=i,this.component.value=u??""):this.component.requestUpdate()}setValuePart(e,i){let{hourFormat:t}=this,{messages:n,numberingSystem:o,step:s}=this.component,a=n._lang,l=t==="12",u=this.component.value;if(e==="meridiem"){let b=this.meridiem;if(this.meridiem=i,this.localizedMeridiem=A({hour12:l,locale:a,numberingSystem:o,part:"meridiem",value:this.meridiem}),m(this.hour)){let S=parseInt(this.hour);switch(i){case"AM":S>=12&&(this.hour=M(S-12));break;case"PM":S<12&&(this.hour=M(S+12));break;default:this.userChangedValue=!0,this.component.value="";break}this.localizedHour=A({hour12:l,locale:a,numberingSystem:o,part:"hour",value:this.hour})}b!==this.meridiem&&this.component.requestUpdate()}else if(e==="fractionalSecond"){let b=this.fractionalSecond,S=g(s);typeof i=="number"?this.fractionalSecond=i===0?"".padStart(S,"0"):M(i,S):this.fractionalSecond=i,this.localizedFractionalSecond=A({value:this.fractionalSecond,part:"fractionalSecond",locale:a,numberingSystem:o,hour12:l}),b!==this.fractionalSecond&&this.component.requestUpdate()}else{let b=this[e];this[e]=typeof i=="number"?M(i):i,this[`localized${C(e)}`]=A({value:this[e],part:e,locale:a,numberingSystem:o,hour12:l}),b!==this[e]&&this.component.requestUpdate()}let{hour:d,minute:f,second:h,fractionalSecond:c}=this,D=L({hour:d,minute:f,second:h,fractionalSecond:c},s);u!==D&&(e==="hour"&&t==="12"&&(this.meridiem=E(d),this.localizedMeridiem=K({locale:a,meridiem:this.meridiem})),this.userChangedValue=!0,this.calciteTimeChange.emit(D??""))}},se=$(T);export{se as a};