@nextgis/leaflet-control-container 4.0.0-alpha.8 → 4.0.0-rc.1
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/lib/leaflet-control-container.cjs.js +1 -1
- package/lib/leaflet-control-container.cjs.js.map +1 -1
- package/lib/leaflet-control-container.cjs.prod.js.map +1 -1
- package/lib/leaflet-control-container.css +2 -1
- package/lib/leaflet-control-container.esm-browser.js +1 -1
- package/lib/leaflet-control-container.esm-browser.js.map +1 -1
- package/lib/leaflet-control-container.esm-browser.prod.js.map +1 -1
- package/lib/leaflet-control-container.esm-bundler.js +1 -1
- package/lib/leaflet-control-container.esm-bundler.js.map +1 -1
- package/lib/leaflet-control-container.esm-bundler.prod.js.map +1 -1
- package/lib/leaflet-control-container.global.js +1 -1
- package/lib/leaflet-control-container.global.js.map +1 -1
- package/lib/leaflet-control-container.global.prod.js.map +1 -1
- package/package.json +4 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** Bundle of @nextgis/leaflet-control-container; version: 4.0.0-
|
|
1
|
+
/** Bundle of @nextgis/leaflet-control-container; version: 4.0.0-rc.1; author: NextGIS */
|
|
2
2
|
import ControlContainer, { resolveControlOptions, createControlElement, setControlOptions, createButtonControlContent, createToggleControlContent } from '@nextgis/control-container';
|
|
3
3
|
import { Control } from 'leaflet';
|
|
4
4
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-control-container.esm-bundler.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":["__spreadProps","__spreadValues"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-control-container.esm-bundler.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\nimport './LeafletControlContainer.css';\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":["__spreadProps","__spreadValues"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leaflet-control-container.esm-bundler.prod.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":["createControl","control","options","map","resolvedOptions","resolveControlOptions","instance","Control","extend","onAdd","leafletMap","addClass","bar","filter","Boolean","join","element","createControlElement","__spreadValues","margin","style","onRemove","setControlOptions","createButtonControl","createButtonControlContent","createToggleControl","toggleContent","createToggleControlContent","onClick","changeStatus","getStatus","switch","Object","defineProperty","configurable","get","disableOnSecondClick","set","value","onStatusChange","LeafletControlContainer","constructor","__publicField","this","WeakMap","controlContainer","createControlContainer","addTo","getContainer","addControl","position","replace","container","append","order","targets","id","registerIDContainer","ids","removeControl","unregisterIDContainer","delete","target","removeTarget","controlRoot","detach","getControlContainer","mapAny","controlCorners","_controlCorners","getCorner","key","selector","querySelector","ControlContainer","_controlContainer","positionContainers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"leaflet-control-container.esm-bundler.prod.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\nimport './LeafletControlContainer.css';\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":["createControl","control","options","map","resolvedOptions","resolveControlOptions","instance","Control","extend","onAdd","leafletMap","addClass","bar","filter","Boolean","join","element","createControlElement","__spreadValues","margin","style","onRemove","setControlOptions","createButtonControl","createButtonControlContent","createToggleControl","toggleContent","createToggleControlContent","onClick","changeStatus","getStatus","switch","Object","defineProperty","configurable","get","disableOnSecondClick","set","value","onStatusChange","LeafletControlContainer","constructor","__publicField","this","WeakMap","controlContainer","createControlContainer","addTo","getContainer","addControl","position","replace","container","append","order","targets","id","registerIDContainer","ids","removeControl","unregisterIDContainer","delete","target","removeTarget","controlRoot","detach","getControlContainer","mapAny","controlCorners","_controlCorners","getCorner","key","selector","querySelector","ControlContainer","_controlContainer","positionContainers"],"mappings":"+eAaO,SAASA,EACdC,EACAC,EAAgC,CAAA,EAChCC,GAEA,MAAMC,EAAkBC,EAAsBH,GAyBxCI,EAAW,IAxBPC,EAAQC,OAAO,CACvB,KAAAC,CAAMC,GACJ,MAAMC,EAAW,CACf,kBACAP,EAAgBQ,IAAM,cAAgB,GACtCR,EAAgBO,UAEfE,OAAOC,SACPC,KAAK,KACFC,EAAUC,EACdhB,wHACAiB,CAAA,CAAA,EAAKd,SAAL,CAAsBO,eACtB,MAAAR,EAAAA,EAAOO,SAMT,OAJKN,EAAgBe,SACnBH,EAAQI,MAAMD,OAAS,OAGlBH,CACT,EACA,QAAAK,CAASX,GACPT,EAAQoB,eAASlB,IAAOO,EAC1B,KAIF,OADAY,EAAkBhB,EAAUF,GACrBE,CACT,CCvCO,SAASiB,EACdrB,EACAC,GAEA,OAAOH,EACLwB,EAA2BtB,GAC3B,CAAEU,KAAK,EAAMO,OAAQjB,EAAQiB,QAC7BhB,EAEJ,CCNO,SAASsB,EACdvB,EACAC,GAEA,MAAMuB,EAAgBC,EAA2BzB,GAC3CD,EAAUD,EACd0B,EACA,CAAEd,KAAK,EAAMO,OAAQjB,EAAQiB,QAC7BhB,GAcF,OAZAF,EAAQ2B,QAAUF,EAAcE,QAChC3B,EAAQ4B,aAAeH,EAAcG,aACrC5B,EAAQ6B,UAAYJ,EAAcI,UAClC7B,EAAQ8B,OAASL,EAAcK,OAC/BC,OAAOC,eAAehC,EAAS,uBAAwB,CACrDiC,cAAc,EACdC,IAAK,IAAMT,EAAcU,qBACzBC,IAAMC,IACJZ,EAAcU,qBAAuBE,KAGzCrC,EAAQsC,eAAiBb,EAAca,eAChCtC,CACT,mUCbO,MAAMuC,EAMX,WAAAC,CAAYtC,EAAiBD,EAA0C,IALvEwC,EAAAC,KAAiB,OACjBD,EAAAC,KAAiB,oBACjBD,EAAAC,KAAiB,cAAcC,SAC/BF,EAAAC,KAAiB,UAAUC,SAGzBD,KAAKxC,IAAMA,EACXwC,KAAKE,iBAAmBF,KAAKG,uBAAuB5C,GACpDyC,KAAKE,iBAAiBE,MAAM5C,EAAI6C,eAClC,CAEA,UAAAC,CACEhD,EACAiD,EACAhD,EAA6B,CAAA,GAG7BD,EAAQC,QAAQgD,UAD2B,iBAAbA,EAAwBA,EAAW,YACvBC,QACxC,IACA,IAEFR,KAAKxC,IAAI8C,WAAWhD,GAEpB,MAAMmD,EAAYnD,EAAQ+C,eAc1B,OAbII,IACFT,KAAKE,iBAAiBQ,OAAOD,EAAWF,EAAUhD,EAAQoD,MAAOrD,GACjE0C,KAAKY,QAAQlB,IAAIpC,EAASmD,GACtBlD,EAAQsD,KACVb,KAAKE,iBAAiBY,oBACpBvD,EAAQsD,GACRJ,EACAnD,GAEF0C,KAAKe,IAAIrB,IAAIpC,EAASC,EAAQsD,MAI3BvD,CACT,CAEA,aAAA0D,CAAc1D,GACZ0C,KAAKxC,IAAIwD,cAAc1D,GAEvB,MAAMuD,EAAKb,KAAKe,IAAIvB,IAAIlC,GACpBuD,IACFb,KAAKE,iBAAiBe,sBAAsBJ,GAC5Cb,KAAKe,IAAIG,OAAO5D,IAGlB,MAAM6D,EAASnB,KAAKY,QAAQpB,IAAIlC,GAC5B6D,IACFnB,KAAKE,iBAAiBkB,aAAaD,GACnCnB,KAAKY,QAAQM,OAAO5D,GAExB,CAEA,MAAAoD,CACErC,EACAkC,EACAI,EAAQ,GAERX,KAAKE,iBAAiBQ,OAAOrC,EAASkC,EAAUI,EAClD,CAEA,mBAAAG,CACED,EACAQ,EACA/D,GAEA0C,KAAKE,iBAAiBY,oBAAoBD,EAAIQ,EAAa/D,EAC7D,CAEA,qBAAA2D,CAAsBJ,GACpBb,KAAKE,iBAAiBe,sBAAsBJ,EAC9C,CAEA,MAAAS,GACEtB,KAAKE,iBAAiBoB,QACxB,CAEA,YAAAjB,GACE,OAAOL,KAAKE,iBAAiBG,cAC/B,CAEA,mBAAAkB,GACE,OAAOvB,KAAKE,gBACd,CAEQ,sBAAAC,CACN5C,GAEA,MAAMiE,EAASxB,KAAKxC,IACdiE,EAAiBD,EAAOE,iBAAmB,CAAA,EAC3CC,EAAY,CAACC,EAAaC,IAC7BJ,EAAeG,IACf5B,KAAKxC,IAAI6C,eAAeyB,cAAcD,SACvC,EAEF,OAAO,IAAIE,wHAAiBxD,CAAA,CAAA,EACvBhB,KADuB,CAE1BC,IAAKwC,KAAKxC,IACViD,UAAWe,EAAOQ,kBAClBC,mBAAoB,CAClB,WAAYN,EAAU,UAAW,6BACjC,YAAaA,EAAU,WAAY,8BACnC,cAAeA,EAAU,aAAc,gCACvC,eAAgBA,EACd,cACA,sDAIR"}
|