UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

3 lines (2 loc) 5.25 kB
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */ import{getLocale as t}from"../../intl.js";import e from"../../core/Error.js";import{clamp as n}from"../../core/mathUtils.js";import{formatTimestamp as o,formatTimeOnly as l,formatDateOnly as r,formatDate as i,convertDateFormatToIntlOptions as u}from"../../intl/date.js";import{timestampOffsetToDateTime as a,timeOnlyToDateTime as s,dateOnlyToDateTime as m,TimeStampOffsetPattern as f,defaultDatePattern as c,defaultTimePattern as d}from"../../support/dateUtils.js";import{isString as p,isNumber as y}from"../../support/guards.js";import{utc as h}from"../../time/constants.js";import{DateTime as v,FixedOffsetZone as O}from"luxon";const S=h,w={date:null,time:null,timeZoneOffset:null},g=new Map([["hours",3600],["minutes",60],["seconds",1],["deciseconds",.1],["centiseconds",.01],["milliseconds",.001]]),x="latn",Z=new Set(["date-only","time-only","timestamp-offset"]),j=t=>"valueAsDate"in t;function I(e){return{locale:t(),numberingSystem:x,zone:e??S}}function M(t){return t?.isValid?t.toMillis():null}function D(t,e){return null==t?null:v.fromMillis(t,I(e))}function V(t,e){if(null==t||!p(t)||""===t){if(e){const t=v.local({zone:e});return{date:null,time:null,timeZoneOffset:t.isValid?t.offset.toString():null}}return w}const n=v.fromISO(t,{setZone:!0});return{date:n.toFormat(c,I()),time:n.toFormat(f.HMS_MS,I()),timeZoneOffset:n.offset.toString()}}function C(t,e){if(null==t||!y(t)||isNaN(t))return w;const n=D(t,e);return n?{date:n.toFormat(c,I(e)),time:n.toFormat(d,I(e))}:w}function F(t){switch(t.type){case"date":default:return u("short-date-short-time");case"date-only":return u("short-date");case"time-only":return u("short-time");case"timestamp-offset":return{...u("short-date-short-time"),timeZone:void 0,timeZoneName:"short"}}}function T(t,e,n){if(!t||null==e)return null;switch(t.type){case"date":return i(e,n);case"date-only":return r(e,n);case"time-only":return l(e,n);case"timestamp-offset":return o(e,n);default:return null}}function b(t){const{dateComponent:e,defaultTimeZone:n,timeComponent:o,timeZoneComponent:l,oldValue:r}=t;if(!e?.value)return null;const{year:i,month:u,day:a}=v.fromFormat(e.value,c),{hour:s,minute:m,second:f,millisecond:d}=A(o,h)??v.now(),p=V(r,n),y=""===l?.value?null:l?.value,S=y?parseInt(y,10):null!=p.timeZoneOffset?parseInt(p.timeZoneOffset,10):(new Date).getTimezoneOffset(),w=O.instance(S),g=v.fromObject({year:i,month:u,day:a,hour:s,minute:m,second:f,millisecond:d},{zone:w});return g.isValid?g.toISO({includeOffset:!0}):null}function z(t,e="system"){return v.fromJSDate(t,{zone:e}).isInDST}function N(t){const{dateComponent:e,timeComponent:n,timeZone:o,max:l,min:r,oldValue:i}=t,u=A(e,o);let a=!!t.applyRange;if(!u)return null;let s=null;if(null!=n?.value){const t=A(n,o),e=Date.now(),r=null!=l&&l<e?l:e,i=v.fromMillis(r,I(o)),a=u||i,{year:m,month:f,day:c}=a,{hour:d,minute:p,second:y,millisecond:h}=t||i;s=a.set({year:m,month:f,day:c,hour:d,minute:p,second:y,millisecond:h})}else{const t=D(U({value:i??Date.now(),max:l,min:r}),o),{year:e,month:n,day:m}=u,{hour:f,minute:c,second:d,millisecond:p}=t;a=!0,s=u.set({year:e,month:n,day:m,hour:f,minute:c,second:d,millisecond:p})}if(!s.isValid)return null;const m=s.toMillis();return a?U({value:m,max:l,min:r}):m}function A(t,e){if(null==t?.value||Array.isArray(t.value))return null;let n=null;return n=j(t)?v.fromFormat(t.value,c,I(e)):s(t.value),n?.isValid?n:null}function k(t){const{max:e,min:n,value:o}=t;return!isNaN(o)&&(!(null!=e&&o>e)&&!(null!=n&&o<n))}function U(t){const{max:e,min:o,value:l}=t;return null!=e&&null!=o?n(l,o,e):null!=e&&l>e?e:null!=o&&l<o?o:l}function E(t){if(!t)return"";const n=t.split(".").at(0);if(!n||n.length<1)throw new e("invalid time-only field",`Cannot parse valid time-only field value from ${t}`);const o=n.split(":"),l=new Array(3);for(let e=0;e<3;e++){const t=o.at(e)??"";l[e]=t.padStart(2,"0")}return l.join(":")}function H(t,e){switch(e){case"date":return t.getTime();case"date-only":return t.toISODate();case"time-only":return E(t.toISOTime(!0,!1));case"timestamp-offset":return t.toISOString(!1);default:return null}}function J(t){return!!t&&"object"==typeof t&&"getTime"in t&&"toISOString"in t&&"timeZone"in t}function R(t){const{type:e,range:n,value:o}=t;if(null==o||!n||o===n.min||o===n.max)return!0;if("date"===e)return k({value:o,min:n.min,max:n.max});const{rawMax:l,rawMin:r}=n;let i=null,u=null,f=null;switch(e){case"date-only":i=m(l),u=m(r),f=m(o);break;case"time-only":i=s(l),u=s(r),f=s(o);break;case"timestamp-offset":i=a(l),u=a(r),f=a(o)}return!f||k({value:f.valueOf(),min:u?.valueOf(),max:i?.valueOf()})}export{H as arcadeDateToFieldValue,U as clampValueToRange,D as createDateTimeFromFieldValue,Z as dateFieldsWithStringFieldValue,R as dateTimeIsInRange,M as dateTimeToFieldValue,I as getDefaultLocaleOptions,b as getISOFieldValueFromDateComponents,F as getIntlOptionsForField,T as getLabelForDateFieldValue,A as getLocalDateTimeFromComponent,N as getUnixFieldValueFromDateComponents,J as isArcadeDate,j as isCalciteDateComponent,z as isInDST,E as normalizeTimeOnlyString,x as numberingSystem,V as prepareISOFieldValueForDateComponents,C as prepareUnixFieldValueForDateComponents,g as timeResolutionToStepMap,k as valueIsInRange};