@open-pioneer/coordinate-viewer 1.5.0-dev.20260911123645 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -25
- package/CoordinateViewer.js.map +1 -1
- package/_virtual/hooks.js.map +1 -1
- package/formatCoordinates.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
# @open-pioneer/coordinate-viewer
|
|
2
2
|
|
|
3
|
-
## 1.5.0
|
|
3
|
+
## 1.5.0
|
|
4
4
|
|
|
5
5
|
### Minor Changes
|
|
6
6
|
|
|
7
7
|
- f790fda: Update to Chakra 3.37.0
|
|
8
|
+
- a186f5d: Update core packages to 4.8.0.
|
|
8
9
|
|
|
9
10
|
### Patch Changes
|
|
10
11
|
|
|
@@ -76,17 +77,17 @@
|
|
|
76
77
|
- 193068a: Deprecate the `mapId` property on React components.
|
|
77
78
|
Use the `MapModel` directly instead to pass a reference to the map.
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
Example:
|
|
80
81
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
```tsx
|
|
83
|
+
// Default map for entire component tree
|
|
84
|
+
<DefaultMapProvider map={mapModel}>
|
|
85
|
+
<Toc />
|
|
86
|
+
</DefaultMapProvider>
|
|
86
87
|
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
// Map for specific component
|
|
89
|
+
<Toc map={mapModel} />
|
|
90
|
+
```
|
|
90
91
|
|
|
91
92
|
### Patch Changes
|
|
92
93
|
|
|
@@ -105,9 +106,9 @@
|
|
|
105
106
|
### Minor Changes
|
|
106
107
|
|
|
107
108
|
- 2fa8020: Update trails core package dependencies.
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
109
|
+
- Also updates Chakra UI to the latest 2.x version and Chakra React Select to version 5.
|
|
110
|
+
- Removes any obsolete references to `@chakra-ui/system`.
|
|
111
|
+
This dependency seems to be no longer required and may lead to duplicate packages in your dependency tree.
|
|
111
112
|
|
|
112
113
|
### Patch Changes
|
|
113
114
|
|
|
@@ -126,16 +127,16 @@
|
|
|
126
127
|
- 583f1d6: The `mapId` or `map` properties are now optional on individual components.
|
|
127
128
|
You can use the `DefaultMapProvider` to configure an implicit default value.
|
|
128
129
|
|
|
129
|
-
|
|
130
|
+
Note that configuring _neither_ a default _nor_ an explicit `map` or `mapId` will trigger a runtime error.
|
|
130
131
|
|
|
131
132
|
- 583f1d6: All UI components in this project now accept the `mapId` (a `string`) _or_ the `map` (a `MapModel`) directly.
|
|
132
133
|
- a8b3449: Switch to a new versioning strategy.
|
|
133
134
|
From now on, packages released by this repository share a common version number.
|
|
134
135
|
- 6b59779: Added option to display geographic coordinates in angle format (DMS) in CoordinateViewer:
|
|
135
136
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
```jsx
|
|
138
|
+
<CoordinateViewer mapId="map_id" format="degree" />
|
|
139
|
+
```
|
|
139
140
|
|
|
140
141
|
- 900eb11: Update dependencies.
|
|
141
142
|
|
|
@@ -179,15 +180,11 @@
|
|
|
179
180
|
|
|
180
181
|
- 66f5733: add optional property for display coordinate projection
|
|
181
182
|
|
|
182
|
-
|
|
183
|
+
example (show WGS84 coordinates on display):
|
|
183
184
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
precision={2}
|
|
188
|
-
displayProjectionCode="EPSG:4326"
|
|
189
|
-
/>
|
|
190
|
-
```
|
|
185
|
+
```jsx
|
|
186
|
+
<CoordinateViewer mapId={MAP_ID} precision={2} displayProjectionCode="EPSG:4326" />
|
|
187
|
+
```
|
|
191
188
|
|
|
192
189
|
## 0.3.0
|
|
193
190
|
|
package/CoordinateViewer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoordinateViewer.js","sources":["CoordinateViewer.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Box, Text } from \"@chakra-ui/react\";\nimport { MapModel, MapModelProps, useMapModelValue } from \"@open-pioneer/map\";\nimport { CommonComponentProps, useCommonComponentProps } from \"@open-pioneer/react-utils\";\nimport { useReactiveSnapshot } from \"@open-pioneer/reactivity\";\nimport { Coordinate } from \"ol/coordinate\";\nimport { EventsKey } from \"ol/events\";\nimport { unByKey } from \"ol/Observable\";\nimport { transform } from \"ol/proj\";\nimport { useIntl } from \"open-pioneer:react-hooks\";\nimport { FC, useEffect, useMemo, useState } from \"react\";\nimport { formatCoordinates } from \"./formatCoordinates\";\n\n/**\n * These are special properties for the CoordinateViewer.\n */\nexport interface CoordinateViewerProps extends CommonComponentProps, MapModelProps {\n /**\n * Number of decimal places shown for coordinates.\n */\n precision?: number;\n\n /**\n * Projection of the coordinates shown in the rendered HTML, does not affect the map projection\n */\n displayProjectionCode?: string;\n\n /**\n * Configures the display format.\n * By default, the current coordinates are shown as decimal numbers (format: \"decimal\").\n *\n * If the format is set to \"degree\", the coordinates are shown in angular degrees (DMS).\n * This can only be used meaningfully (at this time) if the underlying projection provides lat/lon coordinates.\n */\n format?: \"decimal\" | \"degree\";\n}\n\n/**\n * The `CoordinateViewer` component can be used in an app to render the coordinates at the current mouse position.\n */\nexport const CoordinateViewer: FC<CoordinateViewerProps> = (props) => {\n const { precision, displayProjectionCode, format } = props;\n const { containerProps } = useCommonComponentProps(\"coordinate-viewer\", props);\n const map = useMapModelValue(props);\n const intl = useIntl();\n const { coordinates, projectionCode } = useCoordinates(map, displayProjectionCode);\n\n const coordinatesString = useMemo(() => {\n if (!coordinates) {\n return \"\";\n }\n return formatCoordinates(coordinates, precision, intl, format);\n }, [coordinates, precision, format, intl]);\n\n let displayString = \"\";\n if (coordinatesString) {\n displayString = `${coordinatesString} ${projectionCode}`;\n }\n\n return (\n <Box {...containerProps}>\n <Text className=\"coordinate-viewer-text\">{displayString}</Text>\n </Box>\n );\n};\n\nfunction useCoordinates(map: MapModel, displayProjectionCode: string | undefined) {\n const [coordinates, setCoordinates] = useState<Coordinate | undefined>();\n const mapProjectionCode = useReactiveSnapshot(() => {\n return map?.projection.getCode() ?? \"\";\n }, [map]);\n\n useEffect(() => {\n const eventsKey: EventsKey = map.olMap.on(\"pointermove\", (evt) => {\n setCoordinates(evt.coordinate);\n });\n return () => unByKey(eventsKey);\n }, [map]);\n\n const finalCoordinates = useMemo(() => {\n if (coordinates && displayProjectionCode) {\n return transformCoordinates(coordinates, mapProjectionCode, displayProjectionCode);\n }\n return coordinates;\n }, [coordinates, mapProjectionCode, displayProjectionCode]);\n const projectionCode = displayProjectionCode ? displayProjectionCode : mapProjectionCode;\n return { coordinates: finalCoordinates, projectionCode };\n}\n\nfunction transformCoordinates(\n coordinates: number[],\n source: string,\n destination: string\n): number[] {\n const transformed = transform(coordinates, source, destination);\n return transformed;\n}\n"],"names":[],"mappings":";;;;;;;;;;;AA0CO,MAAM,gBAAA,GAA8C,CAAC,KAAA,KAAU;AAClE,EAAA,MAAM,EAAE,SAAA,EAAW,qBAAA,EAAuB,MAAA,EAAO,GAAI,KAAA;AACrD,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,uBAAA,CAAwB,qBAAqB,KAAK,CAAA;AAC7E,EAAA,MAAM,GAAA,GAAM,iBAAiB,KAAK,CAAA;AAClC,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAe,GAAI,cAAA,CAAe,KAAK,qBAAqB,CAAA;AAEjF,EAAA,MAAM,iBAAA,GAAoB,QAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,WAAA,EAAa;AACd,MAAA,OAAO,EAAA;AAAA,IACX;AACA,IAAA,OAAO,iBAAA,CAAkB,WAAA,EAAa,SAAA,EAAW,IAAA,EAAM,MAAM,CAAA;AAAA,EACjE,GAAG,CAAC,WAAA,EAAa,SAAA,EAAW,MAAA,EAAQ,IAAI,CAAC,CAAA;AAEzC,EAAA,IAAI,aAAA,GAAgB,EAAA;AACpB,EAAA,IAAI,iBAAA,EAAmB;AACnB,IAAA,aAAA,GAAgB,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA;AAAA,EAC1D;AAEA,EAAA,uBACI,GAAA,CAAC,OAAK,GAAG,cAAA,EACL,8BAAC,IAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,aAAA,EAAc,CAAA,EAC5D,CAAA;AAER;AAEA,SAAS,cAAA,CAAe,KAAe,qBAAA,EAA2C;AAC9E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA,EAAiC;AACvE,EAAA,MAAM,iBAAA,GAAoB,oBAAoB,MAAM;AAChD,IAAA,OAAO,GAAA,EAAK,UAAA,CAAW,OAAA,EAAQ,IAAK,EAAA;AAAA,EACxC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,MAAM,YAAuB,GAAA,CAAI,KAAA,CAAM,EAAA,CAAG,aAAA,EAAe,CAAC,GAAA,KAAQ;AAC9D,MAAA,cAAA,CAAe,IAAI,UAAU,CAAA;AAAA,IACjC,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,QAAQ,SAAS,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACnC,IAAA,IAAI,eAAe,qBAAA,EAAuB;AACtC,MAAA,OAAO,oBAAA,CAAqB,WAAA,EAAa,iBAAA,EAAmB,qBAAqB,CAAA;AAAA,IACrF;AACA,IAAA,OAAO,WAAA;AAAA,EACX,CAAA,EAAG,CAAC,WAAA,EAAa,iBAAA,EAAmB,qBAAqB,CAAC,CAAA;AAC1D,EAAA,MAAM,cAAA,GAAiB,wBAAwB,qBAAA,GAAwB,iBAAA;AACvE,EAAA,OAAO,EAAE,WAAA,EAAa,gBAAA,EAAkB,cAAA,EAAe;AAC3D;AAEA,SAAS,oBAAA,CACL,WAAA,EACA,MAAA,EACA,WAAA,EACQ;AACR,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,WAAA,EAAa,MAAA,EAAQ,WAAW,CAAA;AAC9D,EAAA,OAAO,WAAA;AACX
|
|
1
|
+
{"version":3,"file":"CoordinateViewer.js","sources":["CoordinateViewer.tsx"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Box, Text } from \"@chakra-ui/react\";\nimport { MapModel, MapModelProps, useMapModelValue } from \"@open-pioneer/map\";\nimport { CommonComponentProps, useCommonComponentProps } from \"@open-pioneer/react-utils\";\nimport { useReactiveSnapshot } from \"@open-pioneer/reactivity\";\nimport { Coordinate } from \"ol/coordinate\";\nimport { EventsKey } from \"ol/events\";\nimport { unByKey } from \"ol/Observable\";\nimport { transform } from \"ol/proj\";\nimport { useIntl } from \"open-pioneer:react-hooks\";\nimport { FC, useEffect, useMemo, useState } from \"react\";\nimport { formatCoordinates } from \"./formatCoordinates\";\n\n/**\n * These are special properties for the CoordinateViewer.\n */\nexport interface CoordinateViewerProps extends CommonComponentProps, MapModelProps {\n /**\n * Number of decimal places shown for coordinates.\n */\n precision?: number;\n\n /**\n * Projection of the coordinates shown in the rendered HTML, does not affect the map projection\n */\n displayProjectionCode?: string;\n\n /**\n * Configures the display format.\n * By default, the current coordinates are shown as decimal numbers (format: \"decimal\").\n *\n * If the format is set to \"degree\", the coordinates are shown in angular degrees (DMS).\n * This can only be used meaningfully (at this time) if the underlying projection provides lat/lon coordinates.\n */\n format?: \"decimal\" | \"degree\";\n}\n\n/**\n * The `CoordinateViewer` component can be used in an app to render the coordinates at the current mouse position.\n */\nexport const CoordinateViewer: FC<CoordinateViewerProps> = (props) => {\n const { precision, displayProjectionCode, format } = props;\n const { containerProps } = useCommonComponentProps(\"coordinate-viewer\", props);\n const map = useMapModelValue(props);\n const intl = useIntl();\n const { coordinates, projectionCode } = useCoordinates(map, displayProjectionCode);\n\n const coordinatesString = useMemo(() => {\n if (!coordinates) {\n return \"\";\n }\n return formatCoordinates(coordinates, precision, intl, format);\n }, [coordinates, precision, format, intl]);\n\n let displayString = \"\";\n if (coordinatesString) {\n displayString = `${coordinatesString} ${projectionCode}`;\n }\n\n return (\n <Box {...containerProps}>\n <Text className=\"coordinate-viewer-text\">{displayString}</Text>\n </Box>\n );\n};\n\nfunction useCoordinates(map: MapModel, displayProjectionCode: string | undefined) {\n const [coordinates, setCoordinates] = useState<Coordinate | undefined>();\n const mapProjectionCode = useReactiveSnapshot(() => {\n return map?.projection.getCode() ?? \"\";\n }, [map]);\n\n useEffect(() => {\n const eventsKey: EventsKey = map.olMap.on(\"pointermove\", (evt) => {\n setCoordinates(evt.coordinate);\n });\n return () => unByKey(eventsKey);\n }, [map]);\n\n const finalCoordinates = useMemo(() => {\n if (coordinates && displayProjectionCode) {\n return transformCoordinates(coordinates, mapProjectionCode, displayProjectionCode);\n }\n return coordinates;\n }, [coordinates, mapProjectionCode, displayProjectionCode]);\n const projectionCode = displayProjectionCode ? displayProjectionCode : mapProjectionCode;\n return { coordinates: finalCoordinates, projectionCode };\n}\n\nfunction transformCoordinates(\n coordinates: number[],\n source: string,\n destination: string\n): number[] {\n const transformed = transform(coordinates, source, destination);\n return transformed;\n}\n"],"names":[],"mappings":";;;;;;;;;;;AA0CO,MAAM,gBAAA,GAA8C,CAAC,KAAA,KAAU;AAClE,EAAA,MAAM,EAAE,SAAA,EAAW,qBAAA,EAAuB,MAAA,EAAO,GAAI,KAAA;AACrD,EAAA,MAAM,EAAE,cAAA,EAAe,GAAI,uBAAA,CAAwB,qBAAqB,KAAK,CAAA;AAC7E,EAAA,MAAM,GAAA,GAAM,iBAAiB,KAAK,CAAA;AAClC,EAAA,MAAM,OAAO,OAAA,EAAQ;AACrB,EAAA,MAAM,EAAE,WAAA,EAAa,cAAA,EAAe,GAAI,cAAA,CAAe,KAAK,qBAAqB,CAAA;AAEjF,EAAA,MAAM,iBAAA,GAAoB,QAAQ,MAAM;AACpC,IAAA,IAAI,CAAC,WAAA,EAAa;AACd,MAAA,OAAO,EAAA;AAAA,IACX;AACA,IAAA,OAAO,iBAAA,CAAkB,WAAA,EAAa,SAAA,EAAW,IAAA,EAAM,MAAM,CAAA;AAAA,EACjE,GAAG,CAAC,WAAA,EAAa,SAAA,EAAW,MAAA,EAAQ,IAAI,CAAC,CAAA;AAEzC,EAAA,IAAI,aAAA,GAAgB,EAAA;AACpB,EAAA,IAAI,iBAAA,EAAmB;AACnB,IAAA,aAAA,GAAgB,CAAA,EAAG,iBAAiB,CAAA,CAAA,EAAI,cAAc,CAAA,CAAA;AAAA,EAC1D;AAEA,EAAA,uBACI,GAAA,CAAC,OAAK,GAAG,cAAA,EACL,8BAAC,IAAA,EAAA,EAAK,SAAA,EAAU,wBAAA,EAA0B,QAAA,EAAA,aAAA,EAAc,CAAA,EAC5D,CAAA;AAER;AAEA,SAAS,cAAA,CAAe,KAAe,qBAAA,EAA2C;AAC9E,EAAA,MAAM,CAAC,WAAA,EAAa,cAAc,CAAA,GAAI,QAAA,EAAiC;AACvE,EAAA,MAAM,iBAAA,GAAoB,oBAAoB,MAAM;AAChD,IAAA,OAAO,GAAA,EAAK,UAAA,CAAW,OAAA,EAAQ,IAAK,EAAA;AAAA,EACxC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,SAAA,CAAU,MAAM;AACZ,IAAA,MAAM,YAAuB,GAAA,CAAI,KAAA,CAAM,EAAA,CAAG,aAAA,EAAe,CAAC,GAAA,KAAQ;AAC9D,MAAA,cAAA,CAAe,IAAI,UAAU,CAAA;AAAA,IACjC,CAAC,CAAA;AACD,IAAA,OAAO,MAAM,QAAQ,SAAS,CAAA;AAAA,EAClC,CAAA,EAAG,CAAC,GAAG,CAAC,CAAA;AAER,EAAA,MAAM,gBAAA,GAAmB,QAAQ,MAAM;AACnC,IAAA,IAAI,eAAe,qBAAA,EAAuB;AACtC,MAAA,OAAO,oBAAA,CAAqB,WAAA,EAAa,iBAAA,EAAmB,qBAAqB,CAAA;AAAA,IACrF;AACA,IAAA,OAAO,WAAA;AAAA,EACX,CAAA,EAAG,CAAC,WAAA,EAAa,iBAAA,EAAmB,qBAAqB,CAAC,CAAA;AAC1D,EAAA,MAAM,cAAA,GAAiB,wBAAwB,qBAAA,GAAwB,iBAAA;AACvE,EAAA,OAAO,EAAE,WAAA,EAAa,gBAAA,EAAkB,cAAA,EAAe;AAC3D;AAEA,SAAS,oBAAA,CACL,WAAA,EACA,MAAA,EACA,WAAA,EACQ;AACR,EAAA,MAAM,WAAA,GAAc,SAAA,CAAU,WAAA,EAAa,MAAA,EAAQ,WAAW,CAAA;AAC9D,EAAA,OAAO,WAAA;AACX;;"}
|
package/_virtual/hooks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hooks.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/formatCoordinates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatCoordinates.js","sources":["formatCoordinates.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PackageIntl } from \"@open-pioneer/runtime\";\nimport type { CoordinateViewerProps } from \"./CoordinateViewer\";\n\nconst DEFAULT_PRECISION = 4;\nconst DEFAULT_DISPLAY_FORMAT = \"decimal\";\n\nexport function formatCoordinates(\n coordinates: number[],\n configuredPrecision: number | undefined,\n intl: PackageIntl,\n configuredFormat: CoordinateViewerProps[\"format\"]\n) {\n if (coordinates[0] == null || coordinates[1] == null) {\n return \"\";\n }\n\n const precision = configuredPrecision ?? DEFAULT_PRECISION;\n const format = configuredFormat ?? DEFAULT_DISPLAY_FORMAT;\n const [x, y] = coordinates;\n\n let str;\n // oxlint-disable-next-line oxc/branches-sharing-code\n if (format === \"degree\" && isFinite(x) && isFinite(y)) {\n const [xHour, xMin, xSek] = toDegree(x, intl, precision);\n const [yHour, yMin, ySek] = toDegree(y, intl, precision);\n\n const xString = `${Math.abs(xHour)}°${xMin}'${xSek}\"${0 <= xHour ? \"(E)\" : \"(W)\"}`;\n const yString = `${Math.abs(yHour)}°${yMin}'${ySek}\"${0 <= yHour ? \"(N)\" : \"(S)\"}`;\n\n str = xString + \" \" + yString;\n } else {\n const xString = intl.formatNumber(x, {\n maximumFractionDigits: precision,\n minimumFractionDigits: precision\n });\n const yString = intl.formatNumber(y, {\n maximumFractionDigits: precision,\n minimumFractionDigits: precision\n });\n str = xString + \" \" + yString;\n }\n return str;\n}\n\nfunction toDegree(\n coordPart: number,\n intl: PackageIntl,\n precision: number\n): [number, number, string] {\n const cHour = Math.floor(coordPart);\n const cNach = coordPart - cHour;\n\n const cMin = Math.floor(60 * cNach);\n const cMinNach = 60 * cNach - cMin;\n\n const cSek = 60 * cMinNach;\n const cSekRounded = intl.formatNumber(cSek, {\n maximumFractionDigits: precision,\n minimumFractionDigits: precision\n });\n\n return [cHour, cMin, cSekRounded];\n}\n"],"names":[],"mappings":"AAMA,MAAM,iBAAA,GAAoB,CAAA;AAC1B,MAAM,sBAAA,GAAyB,SAAA;AAExB,SAAS,iBAAA,CACZ,WAAA,EACA,mBAAA,EACA,IAAA,EACA,gBAAA,EACF;AACE,EAAA,IAAI,YAAY,CAAC,CAAA,IAAK,QAAQ,WAAA,CAAY,CAAC,KAAK,IAAA,EAAM;AAClD,IAAA,OAAO,EAAA;AAAA,EACX;AAEA,EAAA,MAAM,YAAY,mBAAA,IAAuB,iBAAA;AACzC,EAAA,MAAM,SAAS,gBAAA,IAAoB,sBAAA;AACnC,EAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,WAAA;AAEf,EAAA,IAAI,GAAA;AAEJ,EAAA,IAAI,WAAW,QAAA,IAAY,QAAA,CAAS,CAAC,CAAA,IAAK,QAAA,CAAS,CAAC,CAAA,EAAG;AACnD,IAAA,MAAM,CAAC,OAAO,IAAA,EAAM,IAAI,IAAI,QAAA,CAAS,CAAA,EAAG,MAAM,SAAS,CAAA;AACvD,IAAA,MAAM,CAAC,OAAO,IAAA,EAAM,IAAI,IAAI,QAAA,CAAS,CAAA,EAAG,MAAM,SAAS,CAAA;AAEvD,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA,IAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,CAAA,IAAK,KAAA,GAAQ,QAAQ,KAAK,CAAA,CAAA;AAChF,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA,IAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,CAAA,IAAK,KAAA,GAAQ,QAAQ,KAAK,CAAA,CAAA;AAEhF,IAAA,GAAA,GAAM,UAAU,GAAA,GAAM,OAAA;AAAA,EAC1B,CAAA,MAAO;AACH,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,CAAA,EAAG;AAAA,MACjC,qBAAA,EAAuB,SAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,KAC1B,CAAA;AACD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,CAAA,EAAG;AAAA,MACjC,qBAAA,EAAuB,SAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,KAC1B,CAAA;AACD,IAAA,GAAA,GAAM,UAAU,GAAA,GAAM,OAAA;AAAA,EAC1B;AACA,EAAA,OAAO,GAAA;AACX;AAEA,SAAS,QAAA,CACL,SAAA,EACA,IAAA,EACA,SAAA,EACwB;AACxB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAClC,EAAA,MAAM,QAAQ,SAAA,GAAY,KAAA;AAE1B,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,KAAK,CAAA;AAClC,EAAA,MAAM,QAAA,GAAW,KAAK,KAAA,GAAQ,IAAA;AAE9B,EAAA,MAAM,OAAO,EAAA,GAAK,QAAA;AAClB,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM;AAAA,IACxC,qBAAA,EAAuB,SAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GAC1B,CAAA;AAED,EAAA,OAAO,CAAC,KAAA,EAAO,IAAA,EAAM,WAAW,CAAA;AACpC
|
|
1
|
+
{"version":3,"file":"formatCoordinates.js","sources":["formatCoordinates.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PackageIntl } from \"@open-pioneer/runtime\";\nimport type { CoordinateViewerProps } from \"./CoordinateViewer\";\n\nconst DEFAULT_PRECISION = 4;\nconst DEFAULT_DISPLAY_FORMAT = \"decimal\";\n\nexport function formatCoordinates(\n coordinates: number[],\n configuredPrecision: number | undefined,\n intl: PackageIntl,\n configuredFormat: CoordinateViewerProps[\"format\"]\n) {\n if (coordinates[0] == null || coordinates[1] == null) {\n return \"\";\n }\n\n const precision = configuredPrecision ?? DEFAULT_PRECISION;\n const format = configuredFormat ?? DEFAULT_DISPLAY_FORMAT;\n const [x, y] = coordinates;\n\n let str;\n // oxlint-disable-next-line oxc/branches-sharing-code\n if (format === \"degree\" && isFinite(x) && isFinite(y)) {\n const [xHour, xMin, xSek] = toDegree(x, intl, precision);\n const [yHour, yMin, ySek] = toDegree(y, intl, precision);\n\n const xString = `${Math.abs(xHour)}°${xMin}'${xSek}\"${0 <= xHour ? \"(E)\" : \"(W)\"}`;\n const yString = `${Math.abs(yHour)}°${yMin}'${ySek}\"${0 <= yHour ? \"(N)\" : \"(S)\"}`;\n\n str = xString + \" \" + yString;\n } else {\n const xString = intl.formatNumber(x, {\n maximumFractionDigits: precision,\n minimumFractionDigits: precision\n });\n const yString = intl.formatNumber(y, {\n maximumFractionDigits: precision,\n minimumFractionDigits: precision\n });\n str = xString + \" \" + yString;\n }\n return str;\n}\n\nfunction toDegree(\n coordPart: number,\n intl: PackageIntl,\n precision: number\n): [number, number, string] {\n const cHour = Math.floor(coordPart);\n const cNach = coordPart - cHour;\n\n const cMin = Math.floor(60 * cNach);\n const cMinNach = 60 * cNach - cMin;\n\n const cSek = 60 * cMinNach;\n const cSekRounded = intl.formatNumber(cSek, {\n maximumFractionDigits: precision,\n minimumFractionDigits: precision\n });\n\n return [cHour, cMin, cSekRounded];\n}\n"],"names":[],"mappings":"AAMA,MAAM,iBAAA,GAAoB,CAAA;AAC1B,MAAM,sBAAA,GAAyB,SAAA;AAExB,SAAS,iBAAA,CACZ,WAAA,EACA,mBAAA,EACA,IAAA,EACA,gBAAA,EACF;AACE,EAAA,IAAI,YAAY,CAAC,CAAA,IAAK,QAAQ,WAAA,CAAY,CAAC,KAAK,IAAA,EAAM;AAClD,IAAA,OAAO,EAAA;AAAA,EACX;AAEA,EAAA,MAAM,YAAY,mBAAA,IAAuB,iBAAA;AACzC,EAAA,MAAM,SAAS,gBAAA,IAAoB,sBAAA;AACnC,EAAA,MAAM,CAAC,CAAA,EAAG,CAAC,CAAA,GAAI,WAAA;AAEf,EAAA,IAAI,GAAA;AAEJ,EAAA,IAAI,WAAW,QAAA,IAAY,QAAA,CAAS,CAAC,CAAA,IAAK,QAAA,CAAS,CAAC,CAAA,EAAG;AACnD,IAAA,MAAM,CAAC,OAAO,IAAA,EAAM,IAAI,IAAI,QAAA,CAAS,CAAA,EAAG,MAAM,SAAS,CAAA;AACvD,IAAA,MAAM,CAAC,OAAO,IAAA,EAAM,IAAI,IAAI,QAAA,CAAS,CAAA,EAAG,MAAM,SAAS,CAAA;AAEvD,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA,IAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,CAAA,IAAK,KAAA,GAAQ,QAAQ,KAAK,CAAA,CAAA;AAChF,IAAA,MAAM,OAAA,GAAU,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,KAAK,CAAC,CAAA,IAAA,EAAI,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,EAAI,CAAA,IAAK,KAAA,GAAQ,QAAQ,KAAK,CAAA,CAAA;AAEhF,IAAA,GAAA,GAAM,UAAU,GAAA,GAAM,OAAA;AAAA,EAC1B,CAAA,MAAO;AACH,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,CAAA,EAAG;AAAA,MACjC,qBAAA,EAAuB,SAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,KAC1B,CAAA;AACD,IAAA,MAAM,OAAA,GAAU,IAAA,CAAK,YAAA,CAAa,CAAA,EAAG;AAAA,MACjC,qBAAA,EAAuB,SAAA;AAAA,MACvB,qBAAA,EAAuB;AAAA,KAC1B,CAAA;AACD,IAAA,GAAA,GAAM,UAAU,GAAA,GAAM,OAAA;AAAA,EAC1B;AACA,EAAA,OAAO,GAAA;AACX;AAEA,SAAS,QAAA,CACL,SAAA,EACA,IAAA,EACA,SAAA,EACwB;AACxB,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,KAAA,CAAM,SAAS,CAAA;AAClC,EAAA,MAAM,QAAQ,SAAA,GAAY,KAAA;AAE1B,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,KAAK,CAAA;AAClC,EAAA,MAAM,QAAA,GAAW,KAAK,KAAA,GAAQ,IAAA;AAE9B,EAAA,MAAM,OAAO,EAAA,GAAK,QAAA;AAClB,EAAA,MAAM,WAAA,GAAc,IAAA,CAAK,YAAA,CAAa,IAAA,EAAM;AAAA,IACxC,qBAAA,EAAuB,SAAA;AAAA,IACvB,qBAAA,EAAuB;AAAA,GAC1B,CAAA;AAED,EAAA,OAAO,CAAC,KAAA,EAAO,IAAA,EAAM,WAAW,CAAA;AACpC;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/coordinate-viewer",
|
|
4
|
-
"version": "1.5.0
|
|
4
|
+
"version": "1.5.0",
|
|
5
5
|
"description": "This package provides a UI component to show the current coordinates at the users current mouse position.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"open-pioneer-trails"
|
|
@@ -15,12 +15,12 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@chakra-ui/react": "^3.37.0",
|
|
18
|
-
"@open-pioneer/map": "1.5.0
|
|
19
|
-
"@open-pioneer/react-utils": "4.8.0
|
|
20
|
-
"@open-pioneer/reactivity": "4.8.0
|
|
21
|
-
"@open-pioneer/runtime": "4.8.0
|
|
18
|
+
"@open-pioneer/map": "1.5.0",
|
|
19
|
+
"@open-pioneer/react-utils": "^4.8.0",
|
|
20
|
+
"@open-pioneer/reactivity": "^4.8.0",
|
|
21
|
+
"@open-pioneer/runtime": "^4.8.0",
|
|
22
22
|
"ol": "^10.10.0",
|
|
23
|
-
"react": "^19.
|
|
23
|
+
"react": "^19.3.0"
|
|
24
24
|
},
|
|
25
25
|
"publishConfig": {
|
|
26
26
|
"directory": "dist",
|