@open-pioneer/selection 0.9.0 → 0.10.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 +32 -0
- package/DragController.js +2 -5
- package/DragController.js.map +1 -1
- package/README.md +7 -4
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# @open-pioneer/selection
|
|
2
2
|
|
|
3
|
+
## 0.10.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 193068a: Deprecate the `mapId` property on React components.
|
|
8
|
+
Use the `MapModel` directly instead to pass a reference to the map.
|
|
9
|
+
|
|
10
|
+
Example:
|
|
11
|
+
|
|
12
|
+
```tsx
|
|
13
|
+
// Default map for entire component tree
|
|
14
|
+
<DefaultMapProvider map={mapModel}>
|
|
15
|
+
<Toc />
|
|
16
|
+
</DefaultMapProvider>
|
|
17
|
+
|
|
18
|
+
// Map for specific component
|
|
19
|
+
<Toc map={mapModel} />
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- cd1435b: Update ol to 10.5.0
|
|
25
|
+
- 032eed7: Bump dependencies.
|
|
26
|
+
- cd1435b: Update to react 19.1.0
|
|
27
|
+
- Updated dependencies [2bafdad]
|
|
28
|
+
- Updated dependencies [cd1435b]
|
|
29
|
+
- Updated dependencies [193068a]
|
|
30
|
+
- Updated dependencies [032eed7]
|
|
31
|
+
- Updated dependencies [cd1435b]
|
|
32
|
+
- Updated dependencies [7558df4]
|
|
33
|
+
- @open-pioneer/map@0.10.0
|
|
34
|
+
|
|
3
35
|
## 0.9.0
|
|
4
36
|
|
|
5
37
|
### Minor Changes
|
package/DragController.js
CHANGED
|
@@ -92,11 +92,8 @@ class DragController {
|
|
|
92
92
|
*/
|
|
93
93
|
createDrag(olMap, viewPort, interactionResources) {
|
|
94
94
|
const condition = function(mapBrowserEvent) {
|
|
95
|
-
const originalEvent =
|
|
96
|
-
|
|
97
|
-
mapBrowserEvent.originalEvent
|
|
98
|
-
);
|
|
99
|
-
return originalEvent.button == 2;
|
|
95
|
+
const originalEvent = mapBrowserEvent.originalEvent;
|
|
96
|
+
return "button" in originalEvent && originalEvent.button == 2;
|
|
100
97
|
};
|
|
101
98
|
const drag = new DragPan({
|
|
102
99
|
condition
|
package/DragController.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DragController.js","sources":["DragController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Resource } from \"@open-pioneer/core\";\nimport OlMap from \"ol/Map\";\nimport { unByKey } from \"ol/Observable\";\nimport Overlay from \"ol/Overlay\";\nimport { mouseActionButton } from \"ol/events/condition\";\nimport Geometry from \"ol/geom/Geometry\";\nimport { DragBox, DragPan } from \"ol/interaction\";\nimport PointerInteraction from \"ol/interaction/Pointer\";\n\ninterface InteractionResource extends Resource {\n interaction: PointerInteraction;\n}\n/** Represents a tooltip rendered on the OpenLayers map. */\ninterface Tooltip extends Resource {\n overlay: Overlay;\n element: HTMLDivElement;\n setText(value: string): void;\n}\n\nconst ACTIVE_CLASS = \"selection-active\";\nconst INACTIVE_CLASS = \"selection-inactive\";\n\nexport class DragController {\n private tooltip: Tooltip;\n private interactionResources: InteractionResource[] = [];\n private olMap: OlMap;\n private isActive: boolean = true;\n private tooltipMessage: string;\n private tooltipDisabledMessage: string;\n\n constructor(\n olMap: OlMap,\n tooltipMessage: string,\n tooltipDisabledMessage: string,\n onExtentSelected: (geometry: Geometry) => void\n ) {\n const viewPort = this.initViewport(olMap);\n this.interactionResources.push(\n this.createDragBox(olMap, onExtentSelected, viewPort, this.interactionResources)\n );\n this.interactionResources.push(this.createDrag(olMap, viewPort, this.interactionResources));\n\n this.tooltip = this.createHelpTooltip(olMap, tooltipMessage);\n this.olMap = olMap;\n this.tooltipMessage = tooltipMessage;\n this.tooltipDisabledMessage = tooltipDisabledMessage;\n }\n\n initViewport(olMap: OlMap) {\n const viewPort = olMap.getViewport();\n viewPort.classList.add(ACTIVE_CLASS);\n\n viewPort.oncontextmenu = (e) => {\n e.preventDefault();\n return false;\n };\n return viewPort;\n }\n\n /**\n * Method for destroying the controller when it is no longer needed\n */\n destroy() {\n this.tooltip.destroy();\n this.interactionResources.forEach((interaction) => {\n interaction.destroy();\n });\n }\n\n setActive(isActive: boolean) {\n if (this.isActive === isActive) return;\n const viewPort = this.olMap.getViewport();\n if (isActive) {\n this.interactionResources.forEach((interaction) =>\n this.olMap.addInteraction(interaction.interaction)\n );\n this.tooltip.setText(this.tooltipMessage);\n viewPort.classList.remove(INACTIVE_CLASS);\n viewPort.classList.add(ACTIVE_CLASS);\n this.isActive = true;\n } else {\n this.interactionResources.forEach((interaction) =>\n this.olMap.removeInteraction(interaction.interaction)\n );\n this.tooltip.setText(this.tooltipDisabledMessage);\n viewPort.classList.remove(ACTIVE_CLASS);\n viewPort.classList.add(INACTIVE_CLASS);\n this.isActive = false;\n }\n }\n\n /**\n * Method to create a simple extent-selection\n */\n private createDragBox(\n olMap: OlMap,\n onExtentSelected: (geometry: Geometry) => void,\n viewPort: HTMLElement,\n interactionResources: InteractionResource[]\n ): InteractionResource {\n const dragBox = new DragBox({\n className: \"selection-drag-box\",\n condition: mouseActionButton\n });\n\n olMap.addInteraction(dragBox);\n dragBox.on(\"boxend\", function () {\n onExtentSelected(dragBox.getGeometry());\n });\n\n const interactionResource: InteractionResource = {\n interaction: dragBox,\n destroy() {\n olMap.removeInteraction(dragBox);\n interactionResources.splice(interactionResources.indexOf(this));\n dragBox.dispose();\n viewPort.classList.remove(ACTIVE_CLASS);\n viewPort.classList.remove(INACTIVE_CLASS);\n viewPort.oncontextmenu = null;\n }\n };\n return interactionResource;\n }\n\n /**\n * Method to activate pan with right-mouse-click\n */\n private createDrag(\n olMap: OlMap,\n viewPort: HTMLElement,\n interactionResources: InteractionResource[]\n ): InteractionResource {\n const condition = function (mapBrowserEvent: {\n originalEvent: MouseEvent;\n dragging: unknown;\n }) {\n const originalEvent = /** @type {MouseEvent} */ mapBrowserEvent.originalEvent;\n return originalEvent.button == 2;\n };\n const drag = new DragPan({\n condition: condition\n });\n\n olMap.addInteraction(drag);\n\n const interactionResource: InteractionResource = {\n interaction: drag,\n destroy() {\n olMap.removeInteraction(drag);\n interactionResources.splice(interactionResources.indexOf(this));\n drag.dispose();\n viewPort.classList.remove(ACTIVE_CLASS);\n viewPort.classList.remove(INACTIVE_CLASS);\n viewPort.oncontextmenu = null;\n }\n };\n\n return interactionResource;\n }\n\n /**\n * Method to generate a tooltip on the mouse cursor\n */\n private createHelpTooltip(olMap: OlMap, message: string): Tooltip {\n const element = document.createElement(\"div\");\n element.className = \"selection-tooltip printing-hide\";\n element.role = \"tooltip\";\n\n const content = document.createElement(\"span\");\n content.textContent = message;\n element.appendChild(content);\n\n const overlay = new Overlay({\n element: element,\n offset: [15, 0],\n positioning: \"center-left\"\n });\n\n const pointHandler = olMap.on(\"pointermove\", (evt) => {\n overlay.setPosition(evt.coordinate);\n });\n\n olMap.addOverlay(overlay);\n return {\n overlay,\n element,\n destroy() {\n olMap.removeOverlay(overlay);\n overlay.dispose();\n unByKey(pointHandler);\n },\n setText(value) {\n content.textContent = value;\n }\n };\n }\n\n /**\n * Method for testing purposes only\n * @returns InteractionResource of class DragBox\n */\n getDragboxInteraction() {\n return this.interactionResources.find(\n (interactionResource) => interactionResource.interaction instanceof DragBox\n );\n }\n\n /**\n * Method for testing purposes only\n * @returns InteractionResource of class DragPan\n */\n getDragPanInteraction() {\n return this.interactionResources.find(\n (interactionResource) => interactionResource.interaction instanceof DragPan\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DragController.js","sources":["DragController.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2023-2025 Open Pioneer project (https://github.com/open-pioneer)\n// SPDX-License-Identifier: Apache-2.0\nimport { Resource } from \"@open-pioneer/core\";\nimport { MapBrowserEvent } from \"ol\";\nimport OlMap from \"ol/Map\";\nimport { unByKey } from \"ol/Observable\";\nimport Overlay from \"ol/Overlay\";\nimport { mouseActionButton } from \"ol/events/condition\";\nimport Geometry from \"ol/geom/Geometry\";\nimport { DragBox, DragPan } from \"ol/interaction\";\nimport PointerInteraction from \"ol/interaction/Pointer\";\n\ninterface InteractionResource extends Resource {\n interaction: PointerInteraction;\n}\n/** Represents a tooltip rendered on the OpenLayers map. */\ninterface Tooltip extends Resource {\n overlay: Overlay;\n element: HTMLDivElement;\n setText(value: string): void;\n}\n\nconst ACTIVE_CLASS = \"selection-active\";\nconst INACTIVE_CLASS = \"selection-inactive\";\n\nexport class DragController {\n private tooltip: Tooltip;\n private interactionResources: InteractionResource[] = [];\n private olMap: OlMap;\n private isActive: boolean = true;\n private tooltipMessage: string;\n private tooltipDisabledMessage: string;\n\n constructor(\n olMap: OlMap,\n tooltipMessage: string,\n tooltipDisabledMessage: string,\n onExtentSelected: (geometry: Geometry) => void\n ) {\n const viewPort = this.initViewport(olMap);\n this.interactionResources.push(\n this.createDragBox(olMap, onExtentSelected, viewPort, this.interactionResources)\n );\n this.interactionResources.push(this.createDrag(olMap, viewPort, this.interactionResources));\n\n this.tooltip = this.createHelpTooltip(olMap, tooltipMessage);\n this.olMap = olMap;\n this.tooltipMessage = tooltipMessage;\n this.tooltipDisabledMessage = tooltipDisabledMessage;\n }\n\n initViewport(olMap: OlMap) {\n const viewPort = olMap.getViewport();\n viewPort.classList.add(ACTIVE_CLASS);\n\n viewPort.oncontextmenu = (e) => {\n e.preventDefault();\n return false;\n };\n return viewPort;\n }\n\n /**\n * Method for destroying the controller when it is no longer needed\n */\n destroy() {\n this.tooltip.destroy();\n this.interactionResources.forEach((interaction) => {\n interaction.destroy();\n });\n }\n\n setActive(isActive: boolean) {\n if (this.isActive === isActive) return;\n const viewPort = this.olMap.getViewport();\n if (isActive) {\n this.interactionResources.forEach((interaction) =>\n this.olMap.addInteraction(interaction.interaction)\n );\n this.tooltip.setText(this.tooltipMessage);\n viewPort.classList.remove(INACTIVE_CLASS);\n viewPort.classList.add(ACTIVE_CLASS);\n this.isActive = true;\n } else {\n this.interactionResources.forEach((interaction) =>\n this.olMap.removeInteraction(interaction.interaction)\n );\n this.tooltip.setText(this.tooltipDisabledMessage);\n viewPort.classList.remove(ACTIVE_CLASS);\n viewPort.classList.add(INACTIVE_CLASS);\n this.isActive = false;\n }\n }\n\n /**\n * Method to create a simple extent-selection\n */\n private createDragBox(\n olMap: OlMap,\n onExtentSelected: (geometry: Geometry) => void,\n viewPort: HTMLElement,\n interactionResources: InteractionResource[]\n ): InteractionResource {\n const dragBox = new DragBox({\n className: \"selection-drag-box\",\n condition: mouseActionButton\n });\n\n olMap.addInteraction(dragBox);\n dragBox.on(\"boxend\", function () {\n onExtentSelected(dragBox.getGeometry());\n });\n\n const interactionResource: InteractionResource = {\n interaction: dragBox,\n destroy() {\n olMap.removeInteraction(dragBox);\n interactionResources.splice(interactionResources.indexOf(this));\n dragBox.dispose();\n viewPort.classList.remove(ACTIVE_CLASS);\n viewPort.classList.remove(INACTIVE_CLASS);\n viewPort.oncontextmenu = null;\n }\n };\n return interactionResource;\n }\n\n /**\n * Method to activate pan with right-mouse-click\n */\n private createDrag(\n olMap: OlMap,\n viewPort: HTMLElement,\n interactionResources: InteractionResource[]\n ): InteractionResource {\n const condition = function (mapBrowserEvent: MapBrowserEvent) {\n const originalEvent = mapBrowserEvent.originalEvent;\n return \"button\" in originalEvent && originalEvent.button == 2;\n };\n const drag = new DragPan({\n condition: condition\n });\n\n olMap.addInteraction(drag);\n\n const interactionResource: InteractionResource = {\n interaction: drag,\n destroy() {\n olMap.removeInteraction(drag);\n interactionResources.splice(interactionResources.indexOf(this));\n drag.dispose();\n viewPort.classList.remove(ACTIVE_CLASS);\n viewPort.classList.remove(INACTIVE_CLASS);\n viewPort.oncontextmenu = null;\n }\n };\n\n return interactionResource;\n }\n\n /**\n * Method to generate a tooltip on the mouse cursor\n */\n private createHelpTooltip(olMap: OlMap, message: string): Tooltip {\n const element = document.createElement(\"div\");\n element.className = \"selection-tooltip printing-hide\";\n element.role = \"tooltip\";\n\n const content = document.createElement(\"span\");\n content.textContent = message;\n element.appendChild(content);\n\n const overlay = new Overlay({\n element: element,\n offset: [15, 0],\n positioning: \"center-left\"\n });\n\n const pointHandler = olMap.on(\"pointermove\", (evt) => {\n overlay.setPosition(evt.coordinate);\n });\n\n olMap.addOverlay(overlay);\n return {\n overlay,\n element,\n destroy() {\n olMap.removeOverlay(overlay);\n overlay.dispose();\n unByKey(pointHandler);\n },\n setText(value) {\n content.textContent = value;\n }\n };\n }\n\n /**\n * Method for testing purposes only\n * @returns InteractionResource of class DragBox\n */\n getDragboxInteraction() {\n return this.interactionResources.find(\n (interactionResource) => interactionResource.interaction instanceof DragBox\n );\n }\n\n /**\n * Method for testing purposes only\n * @returns InteractionResource of class DragPan\n */\n getDragPanInteraction() {\n return this.interactionResources.find(\n (interactionResource) => interactionResource.interaction instanceof DragPan\n );\n }\n}\n"],"names":[],"mappings":"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"}
|
package/README.md
CHANGED
|
@@ -6,11 +6,14 @@ This package provides a UI component to perform a selection on given selection s
|
|
|
6
6
|
|
|
7
7
|
To add the component to your app, import `Selection` from `@open-pioneer/selection`. The `@open-pioneer/notifier` package is required too.
|
|
8
8
|
|
|
9
|
-
The mandatory properties are `
|
|
9
|
+
The mandatory properties are `map` (unless the `DefaultMapProvider`is used) and `sources` (layer source to be selected on).
|
|
10
10
|
The limit per selection is 10.000 items.
|
|
11
11
|
|
|
12
12
|
```tsx
|
|
13
|
-
<Selection
|
|
13
|
+
<Selection
|
|
14
|
+
map={map}
|
|
15
|
+
sources={selectionsources}
|
|
16
|
+
/> /* instead of passing the map, the `DefaultMapProvider` can alternatively be used */
|
|
14
17
|
```
|
|
15
18
|
|
|
16
19
|
### Listening to events
|
|
@@ -23,7 +26,7 @@ In case of the `onSelectionSourceChanged` event, you can access the selected sel
|
|
|
23
26
|
```tsx
|
|
24
27
|
import { Search, SearchSelectEvent } from "@open-pioneer/search";
|
|
25
28
|
<Selection
|
|
26
|
-
|
|
29
|
+
map={map}
|
|
27
30
|
sources={datasources}
|
|
28
31
|
onSelectionComplete={(event: SelectionCompleteEvent) => {
|
|
29
32
|
// do something
|
|
@@ -65,7 +68,7 @@ class MySelectionSource implements SelectionSource {
|
|
|
65
68
|
const selectionsources: SelectionSource[] = [new MySelectionSource()];
|
|
66
69
|
|
|
67
70
|
// In your JSX template:
|
|
68
|
-
<Selection
|
|
71
|
+
<Selection map={map} sources={selectionsources} />;
|
|
69
72
|
```
|
|
70
73
|
|
|
71
74
|
### VectorLayer as selection source
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@open-pioneer/selection",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.10.0",
|
|
5
5
|
"description": "This package provides a UI component to perform a selection on given selection sources from the map.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"open-pioneer-trails"
|
|
@@ -15,20 +15,20 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@chakra-ui/icons": "^2.2.4",
|
|
18
|
-
"@open-pioneer/chakra-integration": "^3.
|
|
19
|
-
"@open-pioneer/core": "^3.
|
|
20
|
-
"@open-pioneer/notifier": "^3.
|
|
21
|
-
"@open-pioneer/react-utils": "^3.
|
|
22
|
-
"@open-pioneer/runtime": "^3.
|
|
18
|
+
"@open-pioneer/chakra-integration": "^3.1.0",
|
|
19
|
+
"@open-pioneer/core": "^3.1.0",
|
|
20
|
+
"@open-pioneer/notifier": "^3.1.0",
|
|
21
|
+
"@open-pioneer/react-utils": "^3.1.0",
|
|
22
|
+
"@open-pioneer/runtime": "^3.1.0",
|
|
23
23
|
"classnames": "^2.3.2",
|
|
24
24
|
"chakra-react-select": "^5.0.4",
|
|
25
|
-
"ol": "^10.
|
|
26
|
-
"react": "^19.
|
|
25
|
+
"ol": "^10.5.0",
|
|
26
|
+
"react": "^19.1.0",
|
|
27
27
|
"react-icons": "^5.3.0",
|
|
28
28
|
"uuid": "^11.1.0",
|
|
29
|
-
"@conterra/reactivity-core": "^0.
|
|
30
|
-
"@open-pioneer/reactivity": "^3.
|
|
31
|
-
"@open-pioneer/map": "^0.
|
|
29
|
+
"@conterra/reactivity-core": "^0.5.0",
|
|
30
|
+
"@open-pioneer/reactivity": "^3.1.0",
|
|
31
|
+
"@open-pioneer/map": "^0.10.0"
|
|
32
32
|
},
|
|
33
33
|
"exports": {
|
|
34
34
|
"./package.json": "./package.json",
|