UNPKG

@arcgis/core

Version:

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

6 lines (5 loc) 8.65 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.33/esri/copyright.txt for details. */ import{getCustoms as t,format as e,parse as i}from"../../../core/number.js";import{getLocale as n}from"../../../intl/locale.js";import a from"./Format.js";const s=t().decimal,r={N:"north",S:"south",E:"east",W:"west"},o=${"‎"}`,u=new RegExp(`-?\\d+[\\.|\\${s}]?\\d*`),d=/^[\\0]+(?=\d)/;function c(e,i){const a="ar"===n(),s=e.abbreviatedDirections.north,u=e.abbreviatedDirections.south,d=e.abbreviatedDirections.east,c=e.abbreviatedDirections.west,p=t().decimal,h={[s]:"N",[u]:"S",[d]:"E",[c]:"W"},g=new RegExp(`-?\\d+[\\.|\\${p}]?\\d*`),P=new RegExp(`N|S|${s}|${u}`,"i"),$=new RegExp(`E|W|${d}|${c}`,"i"),m={ddm:`Y${o} A'${e.abbreviatedDirections.north}, X${o} B'${e.abbreviatedDirections.east}`,dms:`Y${o} A' B"${e.abbreviatedDirections.north}, X${o} C' D"${e.abbreviatedDirections.east}`,dd:`Y${o}${e.abbreviatedDirections.north}, X${o}${e.abbreviatedDirections.east}`,xy:`X${o}, Y${o}`,basemap:"X, Y"},w={ddm:`${e.abbreviatedDirections.north}${o}Y 'A ,${e.abbreviatedDirections.east}${o}X 'B`,dms:`${e.abbreviatedDirections.north}${o}Y 'A "B ,${e.abbreviatedDirections.east}${o}X 'C "D`,dd:`${e.abbreviatedDirections.north}${o}Y ,${e.abbreviatedDirections.east}${o}X`,xy:`X${o} ,Y${o}`,basemap:"X ,Y"},D=t=>null!=t&&Object.keys(m).includes(t),E=new RegExp(`\\d{1,2}[\\.|\\${p}]?\\d*`,"i"),v=new RegExp(`\\d{1,3}[\\.|\\${p}]?\\d*`,"i");i.forEach((t=>{const{name:i}=t;if("dd"===i?t.coordinateSegments=[{alias:"Y",description:"degrees latitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:e.abbreviatedDirections.north,description:"north/south indicator",searchPattern:P,substitution:{input:t=>h[t],output:t=>e.abbreviatedDirections[r[t]]}},{alias:"X",description:"degrees longitude",searchPattern:v,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:e.abbreviatedDirections.east,description:"east/west indicator",searchPattern:$,substitution:{input:t=>h[t],output:t=>e.abbreviatedDirections[r[t]]}}]:"ddm"===i?t.coordinateSegments=[{alias:"Y",description:"degrees latitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"A",description:"minutes latitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:e.abbreviatedDirections.north,description:"north/south indicator",searchPattern:P,substitution:{input:t=>h[t],output:t=>e.abbreviatedDirections[r[t]]}},{alias:"X",description:"degrees longitude",searchPattern:v,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"B",description:"minutes longitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:e.abbreviatedDirections.east,description:"east/west indicator",searchPattern:$,substitution:{input:t=>h[t],output:t=>e.abbreviatedDirections[r[t]]}}]:"dms"===i?t.coordinateSegments=[{alias:"Y",description:"degrees latitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"A",description:"minutes latitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"B",description:"seconds latitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:e.abbreviatedDirections.north,description:"north/south indicator",searchPattern:P,substitution:{input:t=>h[t],output:t=>e.abbreviatedDirections[r[t]]}},{alias:"X",description:"degrees longitude",searchPattern:v,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"C",description:"minutes longitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"D",description:"seconds longitude",searchPattern:E,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:e.abbreviatedDirections.east,description:"east/west indicator",searchPattern:$,substitution:{input:t=>h[t],output:t=>e.abbreviatedDirections[r[t]]}}]:("xy"===t.name||"basemap"===t.name)&&(t.coordinateSegments=[{alias:"X",description:"easting",searchPattern:g,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"Y",description:"northing",searchPattern:g,substitution:{input:t=>b(t),output:t=>l(t)}}]),D(i)){const e=a?w[i]:m[i];t.defaultPattern=e,t.currentPattern=e}}))}function p(){const t=new RegExp("N|S","i"),e=new RegExp("E|W","i");return[new a({name:"basemap",coordinateSegments:[{alias:"X",description:"easting",searchPattern:u,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"Y",description:"northing",searchPattern:u,substitution:{input:t=>b(t),output:t=>l(t)}}],defaultPattern:"X, Y",viewModel:null}),new a({name:"dd",coordinateSegments:[{alias:"Y",description:"degrees latitude",searchPattern:new RegExp(`\\d{1,2}[\\.|\\${s}]?\\d*(?=\\D*?[N|S])`,"i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"N",description:"north/south indicator",searchPattern:t},{alias:"X",description:"degrees longitude",searchPattern:new RegExp(`\\d{1,3}[\\.|\\${s}]?\\d*(?=\\D*?[E|W|])`,"i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"E",description:"east/west indicator",searchPattern:e}],defaultPattern:`Y${o}N, X${o}E`,viewModel:null}),new a({name:"ddm",coordinateSegments:[{alias:"Y",description:"degrees latitude",searchPattern:new RegExp("\\d{1,2}(?=.*?\\s+.*?[N|S])","i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"A",description:"minutes latitude",searchPattern:new RegExp(`\\d{1,2}[\\.\\${s}]?\\d*(?=.*?[N|S])`,"i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"N",description:"north/south indicator",searchPattern:t},{alias:"X",description:"degrees longitude",searchPattern:new RegExp("\\d{1,3}(?=\\D*?\\s+.*?[E|W])","i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"B",description:"minutes longitude",searchPattern:new RegExp(`\\d{1,2}[\\.|\\|${s}]?\\d*(?=.*?[E|W])`,"i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"E",description:"east/west indicator",searchPattern:e}],defaultPattern:`Y${o} A'N, X${o} B'E`,viewModel:null}),new a({name:"dms",coordinateSegments:[{alias:"Y",description:"degrees latitude",searchPattern:new RegExp("\\d{1,2}(?=.*?\\s+.*?[N|S])","i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"A",description:"minutes latitude",searchPattern:new RegExp("\\d{1,2}(?=.*?[N|S])","i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"B",description:"seconds latitude",searchPattern:new RegExp(`\\d{1,2}[\\.|\\${s}]?\\d*(?=.*?[N|S])`,"i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"N",description:"north/south indicator",searchPattern:t},{alias:"X",description:"degrees longitude",searchPattern:new RegExp("\\d{1,3}(?=.*?\\s+.*?[E|W])","i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"C",description:"minutes longitude",searchPattern:new RegExp("\\d{1,2}(?=.*?[E|W])","i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"D",description:"seconds longitude",searchPattern:new RegExp(`\\d{1,2}[\\.|\\${s}]?\\d*(?=.*?[E|W])`,"i"),substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"E",description:"east/west indicator",searchPattern:e}],defaultPattern:`Y${o} A' B"N, X${o} C' D"E`,viewModel:null}),new a({name:"xy",coordinateSegments:[{alias:"X",description:"longitude",searchPattern:u,substitution:{input:t=>b(t),output:t=>l(t)}},{alias:"Y",description:"latitude",searchPattern:u,substitution:{input:t=>b(t),output:t=>l(t)}}],defaultPattern:`X${o}, Y${o}`,viewModel:null}),new a({name:"mgrs",coordinateSegments:[{alias:"Z",description:"grid zone",searchPattern:/\d{1,2}\w|[abyz]/i},{alias:"S",description:"grid square",searchPattern:/\w{2}/},{alias:"X",description:"easting",searchPattern:/^\d{5}(?=.?\d{5}$)|^\d{4}(?=.?\d{4}$)|^\d{3}(?=.?\d{3}$)|^\d{2}(?=.?\d{2}$)|^\d(?=.?\d$)/},{alias:"Y",description:"northing",searchPattern:/^\d{1,5}/}],defaultPattern:"Z S X Y",viewModel:null}),new a({name:"usng",coordinateSegments:[{alias:"Z",description:"grid zone",searchPattern:/\d{1,2}\w|[abyz]/i},{alias:"S",description:"grid square",searchPattern:/\w{2}/},{alias:"X",description:"easting",searchPattern:/^\d{5}(?=.?\d{5}$)|^\d{4}(?=.?\d{4}$)|^\d{3}(?=.?\d{3}$)|^\d{2}(?=.?\d{2}$)|^\d(?=.?\d$)/},{alias:"Y",description:"northing",searchPattern:/^\d{1,5}/}],defaultPattern:"Z S X Y",viewModel:null}),new a({name:"utm",coordinateSegments:[{alias:"Z",description:"zone number",searchPattern:/\d{1,2}|[abyz]/i},{alias:"B",description:"latitude band",searchPattern:/^\D/},{alias:"X",description:"easting",searchPattern:/\d{1,7}(?=\s*\d{7}$)/},{alias:"Y",description:"northing",searchPattern:/\d{1,7}/}],defaultPattern:"ZB X Y",viewModel:null})]}function l(t){const i=t.match(d),n=i?i[0]:"",a=t.includes(".")?t.split(".")[1].length:0;return n+e(Number(t),{pattern:"###0.###",places:a,round:-1})}function b(t){return i(t)}export{o as degreeSymbol,p as generateDefaultFormats,c as setDefaultPatterns};