@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.53 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{union as e}from"../../core/SetUtils.js";import{dateOnlyToDateTime as n,timeOnlyToDateTime as i,timestampOffsetToDateTime as t}from"../../support/dateUtils.js";var r;!function(e){e.VALUE_OUT_OF_RANGE="domain-validation-error::value-out-of-range",e.INVALID_CODED_VALUE="domain-validation-error::invalid-coded-value"}(r||(r={}));const l=new Set(["integer","small-integer","long","big-integer","esriFieldTypeInteger","esriFieldTypeSmallInteger","esriFieldTypeLong","esriFieldTypeBigInteger"]);function u(e){return null!=e&&l.has(e.type)}function a(e){return null!=e&&("date-only"===e.type||"esriFieldTypeDateOnly"===e.type)}function o(e){return null!=e&&("timestamp-offset"===e.type||"esriFieldTypeTimestampOffset"===e.type)}function s(e){return null!=e&&("time-only"===e.type||"esriFieldTypeTimeOnly"===e.type)}const m=new Set([...["single","double"],...["esriFieldTypeSingle","esriFieldTypeDouble"]]),c=e(l,m);function d(e){return null!=e&&c.has(e.type)}function p(e){return null!=e&&("string"===e.type||"esriFieldTypeString"===e.type)}function y(e,n,i){const t=i??e?.domain;if(!t)return null;switch(t.type){case"range":{const{min:i,max:l}=f(e,t);if(null!=i&&+n<i||null!=l&&+n>l)return r.VALUE_OUT_OF_RANGE;break}case"coded-value":case"codedValue":if(null==t.codedValues||t.codedValues.every((e=>null==e||e.code!==n)))return r.INVALID_CODED_VALUE}return null}function f(e,n){const i=n??e?.domain;if(!i||"range"!==i.type)return;const t="range"in i?i.range[0]:i.minValue,r="range"in i?i.range[1]:i.maxValue,l=u(e);return a(e)||s(e)||o(e)?{...F(e,r,t),isInteger:l}:{min:null!=t&&"number"==typeof t?t:null,max:null!=r&&"number"==typeof r?r:null,rawMin:t,rawMax:r,isInteger:l}}function g(e,n){switch(n.type){case"range":{const{min:i,max:t}=f(e,n);return a(e)||s(e)||o(e)?!!i&&!!t:"number"==typeof i&&Number.isFinite(i)&&"number"==typeof t&&Number.isFinite(t)}case"codedValue":case"coded-value":{const i=typeof n.codedValues[0].code;if("string"===i&&p(e)||"number"===i&&d(e))return!0}}return!1}function F(e,r,l){return a(e)?{min:n(l)?.toMillis(),max:n(r)?.toMillis(),rawMin:l,rawMax:r}:s(e)?{min:i(l)?.toMillis(),max:i(r)?.toMillis(),rawMin:l,rawMax:r}:o(e)?{min:t(l)?.toMillis(),max:t(r)?.toMillis(),rawMin:l,rawMax:r}:{max:null,min:null}}export{r as DomainValidationError,F as dateTimeFieldValuesToNumericRange,f as getDomainRange,g as isDomainValidForField,y as validateDomainValue};