From 7dce4bb161b9c57375c8b8fd4bf11e263d1208a5 Mon Sep 17 00:00:00 2001 From: Bryan Housel Date: Mon, 22 Apr 2019 22:12:42 -0400 Subject: [PATCH] Avoid asking DOM if layers are classed `disabled` in `map.editable` `map.editable` is hot code because it's called frequently by the `isHiddenX` tests in `features.js`. It's much more efficient to just ask the osm layer whether it is enabled, than to use D3 to find that layer in the DOM and check whether it's classed `disabled` --- modules/renderer/map.js | 8 ++++---- modules/svg/osm.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/renderer/map.js b/modules/renderer/map.js index 4de095adb..df2f58edc 100644 --- a/modules/renderer/map.js +++ b/modules/renderer/map.js @@ -887,16 +887,16 @@ export function rendererMap(context) { map.editable = function() { - var osmLayer = surface.selectAll('.data-layer.osm'); - if (!osmLayer.empty() && osmLayer.classed('disabled')) return false; + var layer = context.layers().layer('osm'); + if (!layer || !layer.enabled()) return false; return map.zoom() >= context.minEditableZoom(); }; map.notesEditable = function() { - var noteLayer = surface.selectAll('.data-layer.notes'); - if (!noteLayer.empty() && noteLayer.classed('disabled')) return false; + var layer = context.layers().layer('notes'); + if (!layer || !layer.enabled()) return false; return map.zoom() >= context.minEditableZoom(); }; diff --git a/modules/svg/osm.js b/modules/svg/osm.js index 7eee64afe..c585d8c20 100644 --- a/modules/svg/osm.js +++ b/modules/svg/osm.js @@ -48,9 +48,9 @@ export function svgOsm(projection, context, dispatch) { } - drawOsm.enabled = function(_) { + drawOsm.enabled = function(val) { if (!arguments.length) return enabled; - enabled = _; + enabled = val; if (enabled) { showLayer();