From e6898ee5ec2ad37b1de89ef8fe5c79707172f91e Mon Sep 17 00:00:00 2001 From: Nick Mann Date: Tue, 5 May 2020 15:23:05 +0100 Subject: [PATCH 1/4] set an interim paint in style_layer --- src/source/tile.js | 2 +- src/style/style_layer.js | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/source/tile.js b/src/source/tile.js index dcb8120bf2b..25164718dee 100644 --- a/src/source/tile.js +++ b/src/source/tile.js @@ -405,7 +405,7 @@ class Tile { bucket.update(sourceLayerStates, sourceLayer, this.imageAtlas && this.imageAtlas.patternPositions || {}); const layer = painter && painter.style && painter.style.getLayer(id); - if (layer && layer.paint) { + if (layer) { this.queryPadding = Math.max(this.queryPadding, layer.queryRadius(bucket)); } } diff --git a/src/style/style_layer.js b/src/style/style_layer.js index ce06dcb9ace..b5ba92b0b4e 100644 --- a/src/style/style_layer.js +++ b/src/style/style_layer.js @@ -10,7 +10,7 @@ import { emitValidationErrors } from './validate_style'; import {Evented} from '../util/evented'; -import {Layout, Transitionable, Transitioning, Properties, PossiblyEvaluatedPropertyValue} from './properties'; +import {Layout, Transitionable, Transitioning, Properties, PossiblyEvaluated, PossiblyEvaluatedPropertyValue} from './properties'; import {supportsPropertyExpression} from '../style-spec/util/properties'; import type {FeatureState} from '../style-spec/expression'; @@ -90,6 +90,7 @@ class StyleLayer extends Evented { } if (properties.paint) { + this._transitionablePaint = new Transitionable(properties.paint); for (const property in layer.paint) { @@ -101,6 +102,13 @@ class StyleLayer extends Evented { this._transitioningPaint = this._transitionablePaint.untransitioned(); } + + if (properties.paint) { + // init default paint to cover until recalculate is called + // see https://github.com/mapbox/ibm-cognos-collab/issues/154 + // also flow needs a separate undefined check?? + this.paint = new PossiblyEvaluated(properties.paint); + } } getCrossfadeParameters() { From aa657d03c5be22f0181233067eadaf6aba416a30 Mon Sep 17 00:00:00 2001 From: Nick Mann Date: Thu, 7 May 2020 11:48:37 +0100 Subject: [PATCH 2/4] add a simple test for undefined paint --- test/unit/style/style_layer.test.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/unit/style/style_layer.test.js b/test/unit/style/style_layer.test.js index 9152dc82f34..8d682f164ad 100644 --- a/test/unit/style/style_layer.test.js +++ b/test/unit/style/style_layer.test.js @@ -403,5 +403,12 @@ test('StyleLayer#serialize', (t) => { t.end(); }); + t.test('layer.paint is never undefined', (t) => { + const layer = createStyleLayer({type: 'fill'}); + // paint is never undefined + t.ok(layer.paint); + t.end(); + }); + t.end(); }); From 34651692d8bb777ecaa63d7b67a3520bd2b00366 Mon Sep 17 00:00:00 2001 From: Karim Naaji Date: Thu, 14 May 2020 13:16:48 -0700 Subject: [PATCH 3/4] Address review nits --- src/style/style_layer.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/style/style_layer.js b/src/style/style_layer.js index b5ba92b0b4e..4203632a888 100644 --- a/src/style/style_layer.js +++ b/src/style/style_layer.js @@ -101,12 +101,6 @@ class StyleLayer extends Evented { } this._transitioningPaint = this._transitionablePaint.untransitioned(); - } - - if (properties.paint) { - // init default paint to cover until recalculate is called - // see https://github.com/mapbox/ibm-cognos-collab/issues/154 - // also flow needs a separate undefined check?? this.paint = new PossiblyEvaluated(properties.paint); } } From d8e3fe5fbc4d37c9f7f0afa45010eb36f3620212 Mon Sep 17 00:00:00 2001 From: Karim Naaji Date: Thu, 14 May 2020 13:55:19 -0700 Subject: [PATCH 4/4] Silence inconsistent flow error --- src/style/style_layer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/style/style_layer.js b/src/style/style_layer.js index 4203632a888..c2a7d6cb0cb 100644 --- a/src/style/style_layer.js +++ b/src/style/style_layer.js @@ -90,7 +90,6 @@ class StyleLayer extends Evented { } if (properties.paint) { - this._transitionablePaint = new Transitionable(properties.paint); for (const property in layer.paint) { @@ -101,6 +100,7 @@ class StyleLayer extends Evented { } this._transitioningPaint = this._transitionablePaint.untransitioned(); + //$FlowFixMe this.paint = new PossiblyEvaluated(properties.paint); } }