nakarte

Source code of https://map.sikmir.ru (fork)
git clone git://git.sikmir.ru/nakarte
Log | Files | Refs | LICENSE

commit 919d51a744b451468b108cf285bb49a26bda6a4a
parent 3536f26007f4cab034536a375d751cbf64d88ed2
Author: Sergej Orlov <wladimirych@gmail.com>
Date:   Thu,  4 Dec 2025 18:30:24 +0100

layers control: refactor extensions, call inits from `onAdd`

Diffstat:
Msrc/App.js | 4++--
Msrc/lib/leaflet.control.layers.adaptive-height/index.js | 5-----
Msrc/lib/leaflet.control.layers.configure/index.js | 13++++++-------
Msrc/lib/leaflet.control.layers.hotkeys/index.js | 8++++----
Msrc/lib/leaflet.control.layers.minimize/index.js | 9++++-----
Msrc/lib/leaflet.control.layers.top-row/index.js | 8+++-----
6 files changed, 19 insertions(+), 28 deletions(-)

diff --git a/src/App.js b/src/App.js @@ -182,12 +182,12 @@ function setUp() { // eslint-disable-line complexity /* controls top-right corner */ - const layersControl = L.control.layers(null, null, {collapsed: false}) - .addTo(map); + const layersControl = L.control.layers(null, null, {collapsed: false}); enableLayersControlHotkeys(layersControl); enableLayersControlAdaptiveHeight(layersControl); enableLayersMinimize(layersControl); enableLayersConfig(layersControl, getLayers()); + layersControl.addTo(map); layersControl.enableHashState('l'); /* controls bottom-left corner */ diff --git a/src/lib/leaflet.control.layers.adaptive-height/index.js b/src/lib/leaflet.control.layers.adaptive-height/index.js @@ -33,11 +33,6 @@ function enableAdaptiveHeight(control) { } } ); - - if (control._map) { - control.__setupResizeEventsHandler(); - setTimeout(() => control.__setAdaptiveHeight(), 0); - } } export default enableAdaptiveHeight; diff --git a/src/lib/leaflet.control.layers.configure/index.js b/src/lib/leaflet.control.layers.configure/index.js @@ -8,14 +8,16 @@ import safeLocalStorage from '~/lib/safe-localstorage'; import './customLayer'; function enableConfig(control, {layers, customLayersOrder}) { - const originalOnAdd = control.onAdd; - const originalUnserializeState = control.unserializeState; - const originalAddItem = control._addItem; if (control._configEnabled) { return; } + enableTopRow(control); + const originalOnAdd = control.onAdd; + const originalUnserializeState = control.unserializeState; + const originalAddItem = control._addItem; + L.Util.extend(control, { _configEnabled: true, _allLayersGroups: layers, @@ -25,6 +27,7 @@ function enableConfig(control, {layers, customLayersOrder}) { onAdd: function(map) { const container = originalOnAdd.call(this, map); this.__injectConfigButton(); + this._initializeLayersState(); return container; }, @@ -525,10 +528,6 @@ function enableConfig(control, {layers, customLayersOrder}) { } ); - if (control._map) { - control.__injectConfigButton(); - } - control._initializeLayersState(); } export default enableConfig; diff --git a/src/lib/leaflet.control.layers.hotkeys/index.js b/src/lib/leaflet.control.layers.hotkeys/index.js @@ -27,14 +27,14 @@ function extendLayerName(name, layer) { } function enableHotkeys(control) { - const originalOnAdd = control.onAdd; - const originalOnRemove = control.onRemove; - const originalAddItem = control._addItem; - if (control._hotkeysEnabled) { return control; } + const originalOnAdd = control.onAdd; + const originalOnRemove = control.onRemove; + const originalAddItem = control._addItem; + L.Util.extend(control, { _hotkeysEnabled: true, diff --git a/src/lib/leaflet.control.layers.minimize/index.js b/src/lib/leaflet.control.layers.minimize/index.js @@ -4,18 +4,20 @@ import '~/lib/controls-styles/controls-styles.css'; import enableTopRow from '~/lib/leaflet.control.layers.top-row'; function enableMinimize(control) { - const originalOnAdd = control.onAdd; if (control._minimizeEnabled) { return; } + enableTopRow(control); + const originalOnAdd = control.onAdd; + L.Util.extend(control, { _minimizeEnabled: true, onAdd: function(map) { const container = originalOnAdd.call(this, map); - setTimeout(() => this.__injectMinimizeButtons(), 0); + this.__injectMinimizeButtons(); return container; }, @@ -43,9 +45,6 @@ function enableMinimize(control) { } } ); - if (control._map) { - control.__injectMinimizeButtons(); - } } export default enableMinimize; diff --git a/src/lib/leaflet.control.layers.top-row/index.js b/src/lib/leaflet.control.layers.top-row/index.js @@ -2,17 +2,18 @@ import L from 'leaflet'; import './style.css'; function enableTopRow(control) { - const originalOnAdd = control.onAdd; if (control._topRowEnabled) { return; } + const originalOnAdd = control.onAdd; + L.Util.extend(control, { _topRowEnabled: true, onAdd: function(map) { const container = originalOnAdd.call(this, map); - setTimeout(() => this.__injectTopRow(), 0); + this.__injectTopRow(); return container; }, @@ -22,9 +23,6 @@ function enableTopRow(control) { } }); - if (control._map) { - control.__injectTopRow(); - } } export default enableTopRow;