@nextgis/leaflet-control-container 4.0.0-alpha.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/LICENSE +22 -0
- package/README.md +40 -0
- package/index.js +7 -0
- package/lib/index.d.ts +29 -0
- package/lib/leaflet-control-container.cjs.js +158 -0
- package/lib/leaflet-control-container.cjs.js.map +1 -0
- package/lib/leaflet-control-container.cjs.prod.js +2 -0
- package/lib/leaflet-control-container.cjs.prod.js.map +1 -0
- package/lib/leaflet-control-container.css +1 -0
- package/lib/leaflet-control-container.esm-browser.js +14854 -0
- package/lib/leaflet-control-container.esm-browser.js.map +1 -0
- package/lib/leaflet-control-container.esm-browser.prod.js +6 -0
- package/lib/leaflet-control-container.esm-browser.prod.js.map +1 -0
- package/lib/leaflet-control-container.esm-bundler.js +186 -0
- package/lib/leaflet-control-container.esm-bundler.js.map +1 -0
- package/lib/leaflet-control-container.esm-bundler.prod.js +2 -0
- package/lib/leaflet-control-container.esm-bundler.prod.js.map +1 -0
- package/lib/leaflet-control-container.global.js +14864 -0
- package/lib/leaflet-control-container.global.js.map +1 -0
- package/lib/leaflet-control-container.global.prod.js +6 -0
- package/lib/leaflet-control-container.global.prod.js.map +1 -0
- package/package.json +57 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2020 NextGIS
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Leaflet Control Container
|
|
2
|
+
|
|
3
|
+
 
|
|
4
|
+
|
|
5
|
+
Leaflet integration for `@nextgis/control-container`.
|
|
6
|
+
|
|
7
|
+
The package exposes Leaflet-compatible control factories and a control container
|
|
8
|
+
that integrates with native Leaflet control corners.
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install @nextgis/leaflet-control-container
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Usage
|
|
17
|
+
|
|
18
|
+
```javascript
|
|
19
|
+
import {
|
|
20
|
+
LeafletControlContainer,
|
|
21
|
+
createButtonControl,
|
|
22
|
+
} from '@nextgis/leaflet-control-container';
|
|
23
|
+
|
|
24
|
+
const controls = new LeafletControlContainer(map);
|
|
25
|
+
const button = createButtonControl({
|
|
26
|
+
html: '+',
|
|
27
|
+
title: 'Action',
|
|
28
|
+
onClick: () => {},
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
controls.addControl(button, 'top-right');
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Commercial support
|
|
35
|
+
|
|
36
|
+
Need to fix a bug or add a feature to `@nextgis/leaflet-control-container`?
|
|
37
|
+
We provide custom development and support for this software.
|
|
38
|
+
[Contact us](http://nextgis.com/contact/) to discuss options!
|
|
39
|
+
|
|
40
|
+
[](http://nextgis.com)
|
package/index.js
ADDED
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import ControlContainer, { ButtonControlOptions, MapControl, CreateControlOptions, ToggleControlOptions, ToggleControl, ControlContainerOptions, ControlTargetPosition, AddControlOptions } from '@nextgis/control-container';
|
|
2
|
+
import { Map, Control } from 'leaflet';
|
|
3
|
+
|
|
4
|
+
declare function createButtonControl<M = Map>(options: ButtonControlOptions, map?: M): Control;
|
|
5
|
+
|
|
6
|
+
declare function createControl<M = Map>(control: MapControl<M | Map>, options?: CreateControlOptions, map?: M): Control;
|
|
7
|
+
|
|
8
|
+
declare function createToggleControl<M = Map>(options: ToggleControlOptions, map?: M): Control & ToggleControl;
|
|
9
|
+
|
|
10
|
+
type LeafletControlContainerOptions = Omit<ControlContainerOptions<Map>, 'container' | 'positionContainers' | 'map'>;
|
|
11
|
+
declare class LeafletControlContainer {
|
|
12
|
+
private readonly map;
|
|
13
|
+
private readonly controlContainer;
|
|
14
|
+
private readonly targets;
|
|
15
|
+
private readonly ids;
|
|
16
|
+
constructor(map: Map, options?: LeafletControlContainerOptions);
|
|
17
|
+
addControl(control: Control, position: ControlTargetPosition, options?: AddControlOptions): Control;
|
|
18
|
+
removeControl(control: Control): void;
|
|
19
|
+
append(element: HTMLElement | string, position: ControlTargetPosition, order?: number): void;
|
|
20
|
+
registerIDContainer(id: string, controlRoot: HTMLElement, control?: Control): void;
|
|
21
|
+
unregisterIDContainer(id: string): void;
|
|
22
|
+
detach(): void;
|
|
23
|
+
getContainer(): HTMLElement;
|
|
24
|
+
getControlContainer(): ControlContainer;
|
|
25
|
+
private createControlContainer;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export { LeafletControlContainer, createButtonControl, createControl, createToggleControl };
|
|
29
|
+
export type { LeafletControlContainerOptions };
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/** Bundle of @nextgis/leaflet-control-container; version: 4.0.0-alpha.0; author: NextGIS */
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var ControlContainer = require('@nextgis/control-container');
|
|
7
|
+
var leaflet = require('leaflet');
|
|
8
|
+
|
|
9
|
+
function createControl(control, options = {}, map) {
|
|
10
|
+
const resolvedOptions = ControlContainer.resolveControlOptions(options);
|
|
11
|
+
const C = leaflet.Control.extend({
|
|
12
|
+
onAdd(leafletMap) {
|
|
13
|
+
const addClass = [
|
|
14
|
+
"leaflet-control",
|
|
15
|
+
resolvedOptions.bar ? "leaflet-bar" : "",
|
|
16
|
+
resolvedOptions.addClass
|
|
17
|
+
].filter(Boolean).join(" ");
|
|
18
|
+
const element = ControlContainer.createControlElement(
|
|
19
|
+
control,
|
|
20
|
+
{ ...resolvedOptions, addClass },
|
|
21
|
+
map != null ? map : leafletMap
|
|
22
|
+
);
|
|
23
|
+
if (!resolvedOptions.margin) {
|
|
24
|
+
element.style.margin = "0px";
|
|
25
|
+
}
|
|
26
|
+
return element;
|
|
27
|
+
},
|
|
28
|
+
onRemove(leafletMap) {
|
|
29
|
+
control.onRemove(map != null ? map : leafletMap);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
const instance = new C();
|
|
33
|
+
ControlContainer.setControlOptions(instance, resolvedOptions);
|
|
34
|
+
return instance;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function createButtonControl(options, map) {
|
|
38
|
+
return createControl(
|
|
39
|
+
ControlContainer.createButtonControlContent(options),
|
|
40
|
+
{ bar: true, margin: options.margin },
|
|
41
|
+
map
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function createToggleControl(options, map) {
|
|
46
|
+
const toggleContent = ControlContainer.createToggleControlContent(options);
|
|
47
|
+
const control = createControl(
|
|
48
|
+
toggleContent,
|
|
49
|
+
{ bar: true, margin: options.margin },
|
|
50
|
+
map
|
|
51
|
+
);
|
|
52
|
+
control.onClick = toggleContent.onClick;
|
|
53
|
+
control.changeStatus = toggleContent.changeStatus;
|
|
54
|
+
control.getStatus = toggleContent.getStatus;
|
|
55
|
+
control.switch = toggleContent.switch;
|
|
56
|
+
Object.defineProperty(control, "disableOnSecondClick", {
|
|
57
|
+
configurable: true,
|
|
58
|
+
get: () => toggleContent.disableOnSecondClick,
|
|
59
|
+
set: (value) => {
|
|
60
|
+
toggleContent.disableOnSecondClick = value;
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
control.onStatusChange = toggleContent.onStatusChange;
|
|
64
|
+
return control;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
var __defProp = Object.defineProperty;
|
|
68
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
69
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
70
|
+
class LeafletControlContainer {
|
|
71
|
+
constructor(map, options = {}) {
|
|
72
|
+
__publicField(this, "map");
|
|
73
|
+
__publicField(this, "controlContainer");
|
|
74
|
+
__publicField(this, "targets", /* @__PURE__ */ new WeakMap());
|
|
75
|
+
__publicField(this, "ids", /* @__PURE__ */ new WeakMap());
|
|
76
|
+
this.map = map;
|
|
77
|
+
this.controlContainer = this.createControlContainer(options);
|
|
78
|
+
this.controlContainer.addTo(map.getContainer());
|
|
79
|
+
}
|
|
80
|
+
addControl(control, position, options = {}) {
|
|
81
|
+
const targetPosition = typeof position === "string" ? position : "top-left";
|
|
82
|
+
control.options.position = targetPosition.replace(
|
|
83
|
+
"-",
|
|
84
|
+
""
|
|
85
|
+
);
|
|
86
|
+
this.map.addControl(control);
|
|
87
|
+
const container = control.getContainer();
|
|
88
|
+
if (container) {
|
|
89
|
+
this.controlContainer.append(container, position, options.order, control);
|
|
90
|
+
this.targets.set(control, container);
|
|
91
|
+
if (options.id) {
|
|
92
|
+
this.controlContainer.registerIDContainer(
|
|
93
|
+
options.id,
|
|
94
|
+
container,
|
|
95
|
+
control
|
|
96
|
+
);
|
|
97
|
+
this.ids.set(control, options.id);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return control;
|
|
101
|
+
}
|
|
102
|
+
removeControl(control) {
|
|
103
|
+
this.map.removeControl(control);
|
|
104
|
+
const id = this.ids.get(control);
|
|
105
|
+
if (id) {
|
|
106
|
+
this.controlContainer.unregisterIDContainer(id);
|
|
107
|
+
this.ids.delete(control);
|
|
108
|
+
}
|
|
109
|
+
const target = this.targets.get(control);
|
|
110
|
+
if (target) {
|
|
111
|
+
this.controlContainer.removeTarget(target);
|
|
112
|
+
this.targets.delete(control);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
append(element, position, order = 0) {
|
|
116
|
+
this.controlContainer.append(element, position, order);
|
|
117
|
+
}
|
|
118
|
+
registerIDContainer(id, controlRoot, control) {
|
|
119
|
+
this.controlContainer.registerIDContainer(id, controlRoot, control);
|
|
120
|
+
}
|
|
121
|
+
unregisterIDContainer(id) {
|
|
122
|
+
this.controlContainer.unregisterIDContainer(id);
|
|
123
|
+
}
|
|
124
|
+
detach() {
|
|
125
|
+
this.controlContainer.detach();
|
|
126
|
+
}
|
|
127
|
+
getContainer() {
|
|
128
|
+
return this.controlContainer.getContainer();
|
|
129
|
+
}
|
|
130
|
+
getControlContainer() {
|
|
131
|
+
return this.controlContainer;
|
|
132
|
+
}
|
|
133
|
+
createControlContainer(options) {
|
|
134
|
+
const mapAny = this.map;
|
|
135
|
+
const controlCorners = mapAny._controlCorners || {};
|
|
136
|
+
const getCorner = (key, selector) => controlCorners[key] || this.map.getContainer().querySelector(selector) || void 0;
|
|
137
|
+
return new ControlContainer({
|
|
138
|
+
...options,
|
|
139
|
+
map: this.map,
|
|
140
|
+
container: mapAny._controlContainer,
|
|
141
|
+
positionContainers: {
|
|
142
|
+
"top-left": getCorner("topleft", ".leaflet-top.leaflet-left"),
|
|
143
|
+
"top-right": getCorner("topright", ".leaflet-top.leaflet-right"),
|
|
144
|
+
"bottom-left": getCorner("bottomleft", ".leaflet-bottom.leaflet-left"),
|
|
145
|
+
"bottom-right": getCorner(
|
|
146
|
+
"bottomright",
|
|
147
|
+
".leaflet-bottom.leaflet-right"
|
|
148
|
+
)
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
exports.LeafletControlContainer = LeafletControlContainer;
|
|
155
|
+
exports.createButtonControl = createButtonControl;
|
|
156
|
+
exports.createControl = createControl;
|
|
157
|
+
exports.createToggleControl = createToggleControl;
|
|
158
|
+
//# sourceMappingURL=leaflet-control-container.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaflet-control-container.cjs.js","sources":["../src/createControl.ts","../src/createButtonControl.ts","../src/createToggleControl.ts","../src/LeafletControlContainer.ts"],"sourcesContent":["import {\n createControlElement,\n resolveControlOptions,\n setControlOptions,\n} from '@nextgis/control-container';\nimport { Control } from 'leaflet';\n\nimport type {\n CreateControlOptions,\n MapControl,\n} from '@nextgis/control-container';\nimport type { Map as LeafletMap } from 'leaflet';\n\nexport function createControl<M = LeafletMap>(\n control: MapControl<M | LeafletMap>,\n options: CreateControlOptions = {},\n map?: M,\n): Control {\n const resolvedOptions = resolveControlOptions(options);\n const C = Control.extend({\n onAdd(leafletMap: LeafletMap) {\n const addClass = [\n 'leaflet-control',\n resolvedOptions.bar ? 'leaflet-bar' : '',\n resolvedOptions.addClass,\n ]\n .filter(Boolean)\n .join(' ');\n const element = createControlElement(\n control,\n { ...resolvedOptions, addClass },\n map ?? leafletMap,\n );\n if (!resolvedOptions.margin) {\n element.style.margin = '0px';\n }\n\n return element;\n },\n onRemove(leafletMap: LeafletMap) {\n control.onRemove(map ?? leafletMap);\n },\n });\n const instance = new C();\n setControlOptions(instance, resolvedOptions);\n return instance;\n}\n","import { createButtonControlContent } from '@nextgis/control-container';\n\nimport { createControl } from './createControl';\n\nimport type { ButtonControlOptions } from '@nextgis/control-container';\nimport type { Control, Map as LeafletMap } from 'leaflet';\n\nexport function createButtonControl<M = LeafletMap>(\n options: ButtonControlOptions,\n map?: M,\n): Control {\n return createControl<M>(\n createButtonControlContent(options),\n { bar: true, margin: options.margin },\n map,\n );\n}\n","import { createToggleControlContent } from '@nextgis/control-container';\n\nimport { createControl } from './createControl';\n\nimport type {\n ToggleControl,\n ToggleControlOptions,\n} from '@nextgis/control-container';\nimport type { Control, Map as LeafletMap } from 'leaflet';\n\nexport function createToggleControl<M = LeafletMap>(\n options: ToggleControlOptions,\n map?: M,\n): Control & ToggleControl {\n const toggleContent = createToggleControlContent(options);\n const control = createControl<M>(\n toggleContent,\n { bar: true, margin: options.margin },\n map,\n ) as Control & ToggleControl;\n control.onClick = toggleContent.onClick;\n control.changeStatus = toggleContent.changeStatus;\n control.getStatus = toggleContent.getStatus;\n control.switch = toggleContent.switch;\n Object.defineProperty(control, 'disableOnSecondClick', {\n configurable: true,\n get: () => toggleContent.disableOnSecondClick,\n set: (value) => {\n toggleContent.disableOnSecondClick = value;\n },\n });\n control.onStatusChange = toggleContent.onStatusChange;\n return control;\n}\n","import ControlContainer from '@nextgis/control-container';\n\nimport type {\n AddControlOptions,\n ControlContainerOptions,\n ControlTargetPosition,\n} from '@nextgis/control-container';\nimport type {\n Control as LeafletControl,\n ControlPosition,\n Map as LeafletMap,\n} from 'leaflet';\n\nexport type LeafletControlContainerOptions = Omit<\n ControlContainerOptions<LeafletMap>,\n 'container' | 'positionContainers' | 'map'\n>;\n\nexport class LeafletControlContainer {\n private readonly map: LeafletMap;\n private readonly controlContainer: ControlContainer;\n private readonly targets = new WeakMap<LeafletControl, HTMLElement>();\n private readonly ids = new WeakMap<LeafletControl, string>();\n\n constructor(map: LeafletMap, options: LeafletControlContainerOptions = {}) {\n this.map = map;\n this.controlContainer = this.createControlContainer(options);\n this.controlContainer.addTo(map.getContainer());\n }\n\n addControl(\n control: LeafletControl,\n position: ControlTargetPosition,\n options: AddControlOptions = {},\n ): LeafletControl {\n const targetPosition = typeof position === 'string' ? position : 'top-left';\n control.options.position = targetPosition.replace(\n '-',\n '',\n ) as ControlPosition;\n this.map.addControl(control);\n\n const container = control.getContainer();\n if (container) {\n this.controlContainer.append(container, position, options.order, control);\n this.targets.set(control, container);\n if (options.id) {\n this.controlContainer.registerIDContainer(\n options.id,\n container,\n control,\n );\n this.ids.set(control, options.id);\n }\n }\n\n return control;\n }\n\n removeControl(control: LeafletControl): void {\n this.map.removeControl(control);\n\n const id = this.ids.get(control);\n if (id) {\n this.controlContainer.unregisterIDContainer(id);\n this.ids.delete(control);\n }\n\n const target = this.targets.get(control);\n if (target) {\n this.controlContainer.removeTarget(target);\n this.targets.delete(control);\n }\n }\n\n append(\n element: HTMLElement | string,\n position: ControlTargetPosition,\n order = 0,\n ): void {\n this.controlContainer.append(element, position, order);\n }\n\n registerIDContainer(\n id: string,\n controlRoot: HTMLElement,\n control?: LeafletControl,\n ): void {\n this.controlContainer.registerIDContainer(id, controlRoot, control);\n }\n\n unregisterIDContainer(id: string): void {\n this.controlContainer.unregisterIDContainer(id);\n }\n\n detach(): void {\n this.controlContainer.detach();\n }\n\n getContainer(): HTMLElement {\n return this.controlContainer.getContainer();\n }\n\n getControlContainer(): ControlContainer {\n return this.controlContainer;\n }\n\n private createControlContainer(\n options: LeafletControlContainerOptions,\n ): ControlContainer {\n const mapAny = this.map as any;\n const controlCorners = mapAny._controlCorners || {};\n const getCorner = (key: string, selector: string) =>\n (controlCorners[key] as HTMLElement | undefined) ||\n (this.map.getContainer().querySelector(selector) as HTMLElement | null) ||\n undefined;\n\n return new ControlContainer({\n ...options,\n map: this.map,\n container: mapAny._controlContainer as HTMLElement | undefined,\n positionContainers: {\n 'top-left': getCorner('topleft', '.leaflet-top.leaflet-left'),\n 'top-right': getCorner('topright', '.leaflet-top.leaflet-right'),\n 'bottom-left': getCorner('bottomleft', '.leaflet-bottom.leaflet-left'),\n 'bottom-right': getCorner(\n 'bottomright',\n '.leaflet-bottom.leaflet-right',\n ),\n },\n });\n }\n}\n"],"names":["resolveControlOptions","Control","createControlElement","setControlOptions","createButtonControlContent","createToggleControlContent"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("@nextgis/control-container"),e=require("leaflet");function o(o,n={},r){const i=t.resolveControlOptions(n),a=new(e.Control.extend({onAdd(e){const n=["leaflet-control",i.bar?"leaflet-bar":"",i.addClass].filter(Boolean).join(" "),a=t.createControlElement(o,{...i,addClass:n},null!=r?r:e);return i.margin||(a.style.margin="0px"),a},onRemove(t){o.onRemove(null!=r?r:t)}}));return t.setControlOptions(a,i),a}var n=Object.defineProperty,r=(t,e,o)=>((t,e,o)=>e in t?n(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o)(t,"symbol"!=typeof e?e+"":e,o);exports.LeafletControlContainer=class{constructor(t,e={}){r(this,"map"),r(this,"controlContainer"),r(this,"targets",new WeakMap),r(this,"ids",new WeakMap),this.map=t,this.controlContainer=this.createControlContainer(e),this.controlContainer.addTo(t.getContainer())}addControl(t,e,o={}){t.options.position=("string"==typeof e?e:"top-left").replace("-",""),this.map.addControl(t);const n=t.getContainer();return n&&(this.controlContainer.append(n,e,o.order,t),this.targets.set(t,n),o.id&&(this.controlContainer.registerIDContainer(o.id,n,t),this.ids.set(t,o.id))),t}removeControl(t){this.map.removeControl(t);const e=this.ids.get(t);e&&(this.controlContainer.unregisterIDContainer(e),this.ids.delete(t));const o=this.targets.get(t);o&&(this.controlContainer.removeTarget(o),this.targets.delete(t))}append(t,e,o=0){this.controlContainer.append(t,e,o)}registerIDContainer(t,e,o){this.controlContainer.registerIDContainer(t,e,o)}unregisterIDContainer(t){this.controlContainer.unregisterIDContainer(t)}detach(){this.controlContainer.detach()}getContainer(){return this.controlContainer.getContainer()}getControlContainer(){return this.controlContainer}createControlContainer(e){const o=this.map,n=o._controlCorners||{},r=(t,e)=>n[t]||this.map.getContainer().querySelector(e)||void 0;return new t({...e,map:this.map,container:o._controlContainer,positionContainers:{"top-left":r("topleft",".leaflet-top.leaflet-left"),"top-right":r("topright",".leaflet-top.leaflet-right"),"bottom-left":r("bottomleft",".leaflet-bottom.leaflet-left"),"bottom-right":r("bottomright",".leaflet-bottom.leaflet-right")}})}},exports.createButtonControl=function(e,n){return o(t.createButtonControlContent(e),{bar:!0,margin:e.margin},n)},exports.createControl=o,exports.createToggleControl=function(e,n){const r=t.createToggleControlContent(e),i=o(r,{bar:!0,margin:e.margin},n);return i.onClick=r.onClick,i.changeStatus=r.changeStatus,i.getStatus=r.getStatus,i.switch=r.switch,Object.defineProperty(i,"disableOnSecondClick",{configurable:!0,get:()=>r.disableOnSecondClick,set:t=>{r.disableOnSecondClick=t}}),i.onStatusChange=r.onStatusChange,i};
|
|
2
|
+
//# sourceMappingURL=leaflet-control-container.cjs.prod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"leaflet-control-container.cjs.prod.js","sources":["../src/createControl.ts","../src/LeafletControlContainer.ts","../src/createButtonControl.ts","../src/createToggleControl.ts"],"sourcesContent":["import {\n createControlElement,\n resolveControlOptions,\n setControlOptions,\n} from '@nextgis/control-container';\nimport { Control } from 'leaflet';\n\nimport type {\n CreateControlOptions,\n MapControl,\n} from '@nextgis/control-container';\nimport type { Map as LeafletMap } from 'leaflet';\n\nexport function createControl<M = LeafletMap>(\n control: MapControl<M | LeafletMap>,\n options: CreateControlOptions = {},\n map?: M,\n): Control {\n const resolvedOptions = resolveControlOptions(options);\n const C = Control.extend({\n onAdd(leafletMap: LeafletMap) {\n const addClass = [\n 'leaflet-control',\n resolvedOptions.bar ? 'leaflet-bar' : '',\n resolvedOptions.addClass,\n ]\n .filter(Boolean)\n .join(' ');\n const element = createControlElement(\n control,\n { ...resolvedOptions, addClass },\n map ?? leafletMap,\n );\n if (!resolvedOptions.margin) {\n element.style.margin = '0px';\n }\n\n return element;\n },\n onRemove(leafletMap: LeafletMap) {\n control.onRemove(map ?? leafletMap);\n },\n });\n const instance = new C();\n setControlOptions(instance, resolvedOptions);\n return instance;\n}\n","import ControlContainer from '@nextgis/control-container';\n\nimport type {\n AddControlOptions,\n ControlContainerOptions,\n ControlTargetPosition,\n} from '@nextgis/control-container';\nimport type {\n Control as LeafletControl,\n ControlPosition,\n Map as LeafletMap,\n} from 'leaflet';\n\nexport type LeafletControlContainerOptions = Omit<\n ControlContainerOptions<LeafletMap>,\n 'container' | 'positionContainers' | 'map'\n>;\n\nexport class LeafletControlContainer {\n private readonly map: LeafletMap;\n private readonly controlContainer: ControlContainer;\n private readonly targets = new WeakMap<LeafletControl, HTMLElement>();\n private readonly ids = new WeakMap<LeafletControl, string>();\n\n constructor(map: LeafletMap, options: LeafletControlContainerOptions = {}) {\n this.map = map;\n this.controlContainer = this.createControlContainer(options);\n this.controlContainer.addTo(map.getContainer());\n }\n\n addControl(\n control: LeafletControl,\n position: ControlTargetPosition,\n options: AddControlOptions = {},\n ): LeafletControl {\n const targetPosition = typeof position === 'string' ? position : 'top-left';\n control.options.position = targetPosition.replace(\n '-',\n '',\n ) as ControlPosition;\n this.map.addControl(control);\n\n const container = control.getContainer();\n if (container) {\n this.controlContainer.append(container, position, options.order, control);\n this.targets.set(control, container);\n if (options.id) {\n this.controlContainer.registerIDContainer(\n options.id,\n container,\n control,\n );\n this.ids.set(control, options.id);\n }\n }\n\n return control;\n }\n\n removeControl(control: LeafletControl): void {\n this.map.removeControl(control);\n\n const id = this.ids.get(control);\n if (id) {\n this.controlContainer.unregisterIDContainer(id);\n this.ids.delete(control);\n }\n\n const target = this.targets.get(control);\n if (target) {\n this.controlContainer.removeTarget(target);\n this.targets.delete(control);\n }\n }\n\n append(\n element: HTMLElement | string,\n position: ControlTargetPosition,\n order = 0,\n ): void {\n this.controlContainer.append(element, position, order);\n }\n\n registerIDContainer(\n id: string,\n controlRoot: HTMLElement,\n control?: LeafletControl,\n ): void {\n this.controlContainer.registerIDContainer(id, controlRoot, control);\n }\n\n unregisterIDContainer(id: string): void {\n this.controlContainer.unregisterIDContainer(id);\n }\n\n detach(): void {\n this.controlContainer.detach();\n }\n\n getContainer(): HTMLElement {\n return this.controlContainer.getContainer();\n }\n\n getControlContainer(): ControlContainer {\n return this.controlContainer;\n }\n\n private createControlContainer(\n options: LeafletControlContainerOptions,\n ): ControlContainer {\n const mapAny = this.map as any;\n const controlCorners = mapAny._controlCorners || {};\n const getCorner = (key: string, selector: string) =>\n (controlCorners[key] as HTMLElement | undefined) ||\n (this.map.getContainer().querySelector(selector) as HTMLElement | null) ||\n undefined;\n\n return new ControlContainer({\n ...options,\n map: this.map,\n container: mapAny._controlContainer as HTMLElement | undefined,\n positionContainers: {\n 'top-left': getCorner('topleft', '.leaflet-top.leaflet-left'),\n 'top-right': getCorner('topright', '.leaflet-top.leaflet-right'),\n 'bottom-left': getCorner('bottomleft', '.leaflet-bottom.leaflet-left'),\n 'bottom-right': getCorner(\n 'bottomright',\n '.leaflet-bottom.leaflet-right',\n ),\n },\n });\n }\n}\n","import { createButtonControlContent } from '@nextgis/control-container';\n\nimport { createControl } from './createControl';\n\nimport type { ButtonControlOptions } from '@nextgis/control-container';\nimport type { Control, Map as LeafletMap } from 'leaflet';\n\nexport function createButtonControl<M = LeafletMap>(\n options: ButtonControlOptions,\n map?: M,\n): Control {\n return createControl<M>(\n createButtonControlContent(options),\n { bar: true, margin: options.margin },\n map,\n );\n}\n","import { createToggleControlContent } from '@nextgis/control-container';\n\nimport { createControl } from './createControl';\n\nimport type {\n ToggleControl,\n ToggleControlOptions,\n} from '@nextgis/control-container';\nimport type { Control, Map as LeafletMap } from 'leaflet';\n\nexport function createToggleControl<M = LeafletMap>(\n options: ToggleControlOptions,\n map?: M,\n): Control & ToggleControl {\n const toggleContent = createToggleControlContent(options);\n const control = createControl<M>(\n toggleContent,\n { bar: true, margin: options.margin },\n map,\n ) as Control & ToggleControl;\n control.onClick = toggleContent.onClick;\n control.changeStatus = toggleContent.changeStatus;\n control.getStatus = toggleContent.getStatus;\n control.switch = toggleContent.switch;\n Object.defineProperty(control, 'disableOnSecondClick', {\n configurable: true,\n get: () => toggleContent.disableOnSecondClick,\n set: (value) => {\n toggleContent.disableOnSecondClick = value;\n },\n });\n control.onStatusChange = toggleContent.onStatusChange;\n return control;\n}\n"],"names":["createControl","control","options","map","resolvedOptions","resolveControlOptions","instance","Control","extend","onAdd","leafletMap","addClass","bar","filter","Boolean","join","element","createControlElement","margin","style","onRemove","setControlOptions","constructor","__publicField","this","WeakMap","controlContainer","createControlContainer","addTo","getContainer","addControl","position","replace","container","append","order","targets","set","id","registerIDContainer","ids","removeControl","get","unregisterIDContainer","delete","target","removeTarget","controlRoot","detach","getControlContainer","mapAny","controlCorners","_controlCorners","getCorner","key","selector","querySelector","ControlContainer","_controlContainer","positionContainers","createButtonControlContent","toggleContent","createToggleControlContent","onClick","changeStatus","getStatus","switch","Object","defineProperty","configurable","disableOnSecondClick","value","onStatusChange"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.webmap-ctrl-bottom-left,.webmap-ctrl-bottom-right,.webmap-ctrl-left,.webmap-ctrl-right,.webmap-ctrl-top-left,.webmap-ctrl-top-right{pointer-events:none;position:absolute;z-index:9999}.webmap-ctrl-left,.webmap-ctrl-right{height:100%}.webmap-ctrl-left{padding-right:0}.webmap-ctrl-right{padding-left:0}.webmap-ctrl-top-left{left:0;top:0}.webmap-ctrl-top-right{right:0;top:0}.webmap-ctrl-bottom-left{bottom:0;left:0}.webmap-ctrl-bottom-right{bottom:0;right:0}.webmap-ctrl,.webmap-ctrl-wrapper{clear:both;pointer-events:auto;transform:translate(0)}.webmap-ctrl-top-left>.webmap-ctrl,.webmap-ctrl-top-left>.webmap-ctrl-wrapper{float:left}.webmap-ctrl-top-right>.webmap-ctrl,.webmap-ctrl-top-right>.webmap-ctrl-wrapper{float:right}.webmap-ctrl-bottom-left>.webmap-ctrl,.webmap-ctrl-bottom-left>.webmap-ctrl-wrapper{float:left}.webmap-ctrl-bottom-right>.webmap-ctrl,.webmap-ctrl-bottom-right>.webmap-ctrl-wrapper{float:right}.webmap-ctrl-top-left>.webmap-ctrl-margin{margin:10px 0 0 10px}.webmap-ctrl-top-right>.webmap-ctrl-margin{margin:10px 10px 0 0}.webmap-ctrl-bottom-left>.webmap-ctrl-margin{margin:0 0 10px 10px}.webmap-ctrl-bottom-right>.webmap-ctrl-margin{margin:0 10px 10px 0}.webmap-ctrl-group{background:#fff;border-radius:4px}.webmap-ctrl .webmap-ctrl-wrapper{clear:none;float:none;margin:0}.webmap-ctrl .webmap-ctrl-wrapper>.webmap-ctrl,.webmap-ctrl>.webmap-ctrl{clear:none;float:none;margin:0!important}.webmap-ctrl-horizontal,.webmap-ctrl-vertical{display:flex}.webmap-ctrl-vertical{align-items:var(--webmap-ctrl-align,flex-start);flex-direction:column}.webmap-ctrl-horizontal{align-items:var(--webmap-ctrl-align,stretch);flex-direction:row}.webmap-ctrl:not(.webmap-ctrl-group).webmap-ctrl-horizontal,.webmap-ctrl:not(.webmap-ctrl-group).webmap-ctrl-vertical{gap:var(--webmap-ctrl-gap,0)}.webmap-ctrl-gapless:not(.webmap-ctrl-group){background:#fff;border:2px solid rgba(0,0,0,.1);border-radius:4px;box-sizing:border-box;overflow:hidden}.webmap-ctrl-gapless:not(.webmap-ctrl-group):not(:empty){box-shadow:none}.webmap-ctrl-gapless>.webmap-ctrl-group,.webmap-ctrl-gapless>.webmap-ctrl-wrapper>.webmap-ctrl-group{border:0!important;border-radius:0;box-shadow:none!important}.webmap-ctrl-gapless>.leaflet-bar,.webmap-ctrl-gapless>.maplibregl-ctrl-group,.webmap-ctrl-gapless>.ol-control,.webmap-ctrl-gapless>.webmap-ctrl,.webmap-ctrl-gapless>.webmap-ctrl-wrapper>.leaflet-bar,.webmap-ctrl-gapless>.webmap-ctrl-wrapper>.maplibregl-ctrl-group,.webmap-ctrl-gapless>.webmap-ctrl-wrapper>.ol-control,.webmap-ctrl-gapless>.webmap-ctrl-wrapper>.webmap-ctrl{border:0!important;box-shadow:none!important}.webmap-ctrl-gapless.webmap-ctrl-horizontal>.webmap-ctrl-group:first-child,.webmap-ctrl-gapless.webmap-ctrl-horizontal>.webmap-ctrl-wrapper:first-child>.webmap-ctrl-group{border-radius:4px 0 0 4px}.webmap-ctrl-gapless.webmap-ctrl-horizontal>.webmap-ctrl-group:last-child,.webmap-ctrl-gapless.webmap-ctrl-horizontal>.webmap-ctrl-wrapper:last-child>.webmap-ctrl-group{border-radius:0 4px 4px 0}.webmap-ctrl-gapless.webmap-ctrl-vertical>.webmap-ctrl-group:first-child,.webmap-ctrl-gapless.webmap-ctrl-vertical>.webmap-ctrl-wrapper:first-child>.webmap-ctrl-group{border-radius:4px 4px 0 0}.webmap-ctrl-gapless.webmap-ctrl-vertical>.webmap-ctrl-group:last-child,.webmap-ctrl-gapless.webmap-ctrl-vertical>.webmap-ctrl-wrapper:last-child>.webmap-ctrl-group{border-radius:0 0 4px 4px}.webmap-ctrl-gapless>.webmap-ctrl-group:only-child,.webmap-ctrl-gapless>.webmap-ctrl-wrapper:only-child>.webmap-ctrl-group{border-radius:4px}.webmap-ctrl-horizontal>.webmap-ctrl-wrapper,.webmap-ctrl-vertical>.webmap-ctrl-wrapper{display:flex}.webmap-ctrl-group:not(:empty){box-shadow:0 0 0 2px rgba(0,0,0,.1)}@media (-ms-high-contrast:active){.webmap-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}.webmap-ctrl-gapless:not(.webmap-ctrl-group){border-color:ButtonText}}.webmap-ctrl-gapless>.webmap-ctrl-group:not(:empty),.webmap-ctrl-gapless>.webmap-ctrl-wrapper>.webmap-ctrl-group:not(:empty){border:0!important;box-shadow:none!important}.webmap-ctrl-group button{background-color:transparent;border:0;box-sizing:border-box;cursor:pointer;display:block;height:29px;outline:none;padding:0;width:29px}.webmap-ctrl-button{font-weight:400!important;line-height:inherit!important}.webmap-ctrl-group button+button{border-top:1px solid #ddd}.webmap-ctrl-group.webmap-ctrl-horizontal>button+button{border-left:1px solid #ddd;border-top:0}.webmap-ctrl-gapless .webmap-ctrl-group button+button,.webmap-ctrl-group.webmap-ctrl-gapless button+button{border-left:0!important;border-top:0!important}.webmap-ctrl-gapless .webmap-ctrl-group button{border:0!important;border-radius:0!important;box-shadow:none!important}.webmap-ctrl button .webmap-ctrl-icon{background-position:50%;background-repeat:no-repeat;display:block;height:100%;width:100%}@media (-ms-high-contrast:active){.webmap-ctrl-icon{background-color:transparent}.webmap-ctrl-group button+button{border-top:1px solid ButtonText}}.webmap-ctrl button::-moz-focus-inner{border:0;padding:0}.webmap-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.webmap-ctrl button:disabled{cursor:not-allowed}.webmap-ctrl button:disabled .webmap-ctrl-icon{opacity:.25}.webmap-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}.webmap-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.webmap-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.webmap-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.webmap-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.webmap-ctrl-group button:focus:only-child{border-radius:inherit}.webmap-ctrl button.webmap-ctrl-zoom-out .webmap-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.webmap-ctrl button.webmap-ctrl-zoom-in .webmap-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}@media (-ms-high-contrast:active){.webmap-ctrl button.webmap-ctrl-zoom-out .webmap-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.webmap-ctrl button.webmap-ctrl-zoom-in .webmap-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.webmap-ctrl button.webmap-ctrl-zoom-out .webmap-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E")}.webmap-ctrl button.webmap-ctrl-zoom-in .webmap-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E")}}
|