UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 5.38 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import"../../intl.js";import"../../core/has.js";import t from"../../core/Error.js";import{clamp as e}from"../../core/mathUtils.js";import{formatTimestamp as n,formatTimeOnly as o,formatDateOnly as l,formatDate as r,convertDateFormatToIntlOptions as i}from"../../intl/date.js";import{timestampOffsetToDateTime as u,timeOnlyToDateTime as a,dateOnlyToDateTime as s,TimeStampOffsetPattern as m,defaultDatePattern as f,defaultTimePattern as c}from"../../support/dateUtils.js";import{isString as d,isNumber as p}from"../../support/guards.js";import{utc as y}from"../../time/constants.js";import{DateTime as h,FixedOffsetZone as v}from"luxon";import{getLocale as O}from"../../intl/locale.js";const S=y,w={date:null,time:null,timeZoneOffset:null},g=new Map([["hours",3600],["minutes",60],["seconds",1],["deciseconds",.1],["centiseconds",.01],["milliseconds",.001]]),j="latn",x=new Set(["date-only","time-only","timestamp-offset"]),Z=t=>"valueAsDate"in t;function I(t){return{locale:O(),numberingSystem:j,zone:t??S}}function M(t){return t?.isValid?t.toMillis():null}function D(t,e){return null==t?null:h.fromMillis(t,I(e))}function V(t,e){if(null==t||!d(t)||""===t){if(e){const t=h.local({zone:e});return{date:null,time:null,timeZoneOffset:t.isValid?t.offset.toString():null}}return w}const n=h.fromISO(t,{setZone:!0});return{date:n.toFormat(f,I()),time:n.toFormat(m.HMS_MS,I()),timeZoneOffset:n.offset.toString()}}function C(t,e){if(null==t||!p(t)||isNaN(t))return w;const n=D(t,e);return n?{date:n.toFormat(f,I(e)),time:n.toFormat(c,I(e))}:w}function F(t){switch(t.type){case"date":default:return i("short-date-short-time");case"date-only":return i("short-date");case"time-only":return i("short-time");case"timestamp-offset":return{...i("short-date-short-time"),timeZone:void 0,timeZoneName:"short"}}}function T(t,e,i){if(!t||null==e)return null;switch(t.type){case"date":return r(e,i);case"date-only":return l(e,i);case"time-only":return o(e,i);case"timestamp-offset":return n(e,i);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}=h.fromFormat(e.value,f),{hour:s,minute:m,second:c,millisecond:d}=A(o,y)??h.now(),p=V(r,n),O=""===l?.value?null:l?.value,S=O?parseInt(O,10):null!=p.timeZoneOffset?parseInt(p.timeZoneOffset,10):(new Date).getTimezoneOffset(),w=v.instance(S),g=h.fromObject({year:i,month:u,day:a,hour:s,minute:m,second:c,millisecond:d},{zone:w});return g.isValid?g.toISO({includeOffset:!0}):null}function z(t,e="system"){return h.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=h.fromMillis(r,I(o)),a=u||i,{year:m,month:f,day:c}=a,{hour:d,minute:p,second:y,millisecond:v}=t||i;s=a.set({year:m,month:f,day:c,hour:d,minute:p,second:y,millisecond:v})}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=Z(t)?h.fromFormat(t.value,f,I(e)):a(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:n,min:o,value:l}=t;return null!=n&&null!=o?e(l,o,n):null!=n&&l>n?n:null!=o&&l<o?o:l}function E(e){if(!e)return"";const n=e.split(".").at(0);if(!n||n.length<1)throw new t("invalid time-only field",`Cannot parse valid time-only field value from ${e}`);const o=n.split(":"),l=new Array(3);for(let t=0;t<3;t++){const e=o.at(t)??"";l[t]=e.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,m=null,f=null;switch(e){case"date-only":i=s(l),m=s(r),f=s(o);break;case"time-only":i=a(l),m=a(r),f=a(o);break;case"timestamp-offset":i=u(l),m=u(r),f=u(o)}return!f||k({value:f.valueOf(),min:m?.valueOf(),max:i?.valueOf()})}export{H as arcadeDateToFieldValue,U as clampValueToRange,D as createDateTimeFromFieldValue,x 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,Z as isCalciteDateComponent,z as isInDST,E as normalizeTimeOnlyString,j as numberingSystem,V as prepareISOFieldValueForDateComponents,C as prepareUnixFieldValueForDateComponents,g as timeResolutionToStepMap,k as valueIsInRange};