@deck.gl/mapbox 8.10.0-alpha.4 → 8.10.0-alpha.5
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/dist/dist.dev.js +7 -628
- package/dist/es5/mapbox-layer.js +35 -42
- package/dist/es5/mapbox-layer.js.map +1 -1
- package/dist/es5/mapbox-overlay.js +145 -154
- package/dist/es5/mapbox-overlay.js.map +1 -1
- package/dist/esm/mapbox-layer.js +6 -12
- package/dist/esm/mapbox-layer.js.map +1 -1
- package/dist/esm/mapbox-overlay.js +17 -23
- package/dist/esm/mapbox-overlay.js.map +1 -1
- package/dist.min.js +6 -4
- package/package.json +2 -2
package/dist/es5/mapbox-layer.js
CHANGED
|
@@ -9,21 +9,17 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
11
|
|
|
12
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
-
|
|
14
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
-
|
|
16
12
|
var _deckUtils = require("./deck-utils");
|
|
17
13
|
|
|
18
14
|
var MapboxLayer = function () {
|
|
19
15
|
function MapboxLayer(props) {
|
|
20
16
|
(0, _classCallCheck2.default)(this, MapboxLayer);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
17
|
+
this.id = void 0;
|
|
18
|
+
this.type = void 0;
|
|
19
|
+
this.renderingMode = void 0;
|
|
20
|
+
this.map = void 0;
|
|
21
|
+
this.deck = void 0;
|
|
22
|
+
this.props = void 0;
|
|
27
23
|
|
|
28
24
|
if (!props.id) {
|
|
29
25
|
throw new Error('Layer must have an unique id');
|
|
@@ -37,41 +33,38 @@ var MapboxLayer = function () {
|
|
|
37
33
|
this.props = props;
|
|
38
34
|
}
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}, {
|
|
52
|
-
key: "onRemove",
|
|
53
|
-
value: function onRemove() {
|
|
54
|
-
if (this.deck) {
|
|
55
|
-
(0, _deckUtils.removeLayer)(this.deck, this);
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}, {
|
|
59
|
-
key: "setProps",
|
|
60
|
-
value: function setProps(props) {
|
|
61
|
-
Object.assign(this.props, props, {
|
|
62
|
-
id: this.id
|
|
63
|
-
});
|
|
36
|
+
var _proto = MapboxLayer.prototype;
|
|
37
|
+
|
|
38
|
+
_proto.onAdd = function onAdd(map, gl) {
|
|
39
|
+
this.map = map;
|
|
40
|
+
this.deck = (0, _deckUtils.getDeckInstance)({
|
|
41
|
+
map: map,
|
|
42
|
+
gl: gl,
|
|
43
|
+
deck: this.props.deck
|
|
44
|
+
});
|
|
45
|
+
(0, _deckUtils.addLayer)(this.deck, this);
|
|
46
|
+
};
|
|
64
47
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
48
|
+
_proto.onRemove = function onRemove() {
|
|
49
|
+
if (this.deck) {
|
|
50
|
+
(0, _deckUtils.removeLayer)(this.deck, this);
|
|
68
51
|
}
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
_proto.setProps = function setProps(props) {
|
|
55
|
+
Object.assign(this.props, props, {
|
|
56
|
+
id: this.id
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
if (this.deck) {
|
|
60
|
+
(0, _deckUtils.updateLayer)(this.deck, this);
|
|
73
61
|
}
|
|
74
|
-
}
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
_proto.render = function render() {
|
|
65
|
+
(0, _deckUtils.drawLayer)(this.deck, this.map, this);
|
|
66
|
+
};
|
|
67
|
+
|
|
75
68
|
return MapboxLayer;
|
|
76
69
|
}();
|
|
77
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["MapboxLayer","props","id","
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["MapboxLayer","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":";;;;;;;;;;;AAAA;;IAUqBA,W;AASnB,uBAAYC,KAAZ,EAA6C;AAAA;AAAA,SAR7CC,EAQ6C;AAAA,SAP7CC,IAO6C;AAAA,SAN7CC,aAM6C;AAAA,SAL7CC,GAK6C;AAAA,SAJ7CC,IAI6C;AAAA,SAH7CL,KAG6C;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIK,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKL,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKC,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBH,KAAK,CAACG,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKL,KAAL,GAAaA,KAAb;AACD;;;;SAIDO,K,GAAA,eAAMH,GAAN,EAAgBI,EAAhB,EAAiD;AAC/C,SAAKJ,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAY,gCAAgB;AAACD,MAAAA,GAAG,EAAHA,GAAD;AAAMI,MAAAA,EAAE,EAAFA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAhB,CAAZ;AACA,6BAAS,KAAKA,IAAd,EAAoB,IAApB;AACD,G;;SAEDI,Q,GAAA,oBAAiB;AACf,QAAI,KAAKJ,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDK,Q,GAAA,kBAASV,KAAT,EAA0C;AAExCW,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKZ,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACb,kCAAY,KAAKA,IAAjB,EAAuB,IAAvB;AACD;AACF,G;;SAEDQ,M,GAAA,kBAAS;AACP,8BAAU,KAAKR,IAAf,EAAsB,KAAKD,GAA3B,EAAiC,IAAjC;AACD,G","sourcesContent":["import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from 'mapbox-gl';\nimport type {Deck, Layer} from '@deck.gl/core';\n\nexport type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {\n id: string;\n renderingMode?: '2d' | '3d';\n deck?: Deck;\n};\n\nexport default class MapboxLayer<LayerT extends Layer> implements CustomLayerInterface {\n id: string;\n type: 'custom';\n renderingMode: '2d' | '3d';\n map: Map | null;\n deck: Deck | null;\n props: MapboxLayerProps<LayerT>;\n\n /* eslint-disable no-this-before-super */\n constructor(props: MapboxLayerProps<LayerT>) {\n if (!props.id) {\n throw new Error('Layer must have an unique id');\n }\n\n this.id = props.id;\n this.type = 'custom';\n this.renderingMode = props.renderingMode || '3d';\n this.map = null;\n this.deck = null;\n this.props = props;\n }\n\n /* Mapbox custom layer methods */\n\n onAdd(map: Map, gl: WebGLRenderingContext): void {\n this.map = map;\n this.deck = getDeckInstance({map, gl, deck: this.props.deck});\n addLayer(this.deck, this);\n }\n\n onRemove(): void {\n if (this.deck) {\n removeLayer(this.deck, this);\n }\n }\n\n setProps(props: MapboxLayerProps<LayerT>) {\n // id cannot be changed\n Object.assign(this.props, props, {id: this.id});\n // safe guard in case setProps is called before onAdd\n if (this.deck) {\n updateLayer(this.deck, this);\n }\n }\n\n render() {\n drawLayer(this.deck!, this.map!, this);\n }\n}\n"],"file":"mapbox-layer.js"}
|
|
@@ -9,12 +9,10 @@ exports.default = void 0;
|
|
|
9
9
|
|
|
10
10
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
11
11
|
|
|
12
|
-
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
-
|
|
14
|
-
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
-
|
|
16
12
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
13
|
|
|
14
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
|
+
|
|
18
16
|
var _core = require("@deck.gl/core");
|
|
19
17
|
|
|
20
18
|
var _deckUtils = require("./deck-utils");
|
|
@@ -32,16 +30,18 @@ var MapboxOverlay = function () {
|
|
|
32
30
|
var _this = this;
|
|
33
31
|
|
|
34
32
|
(0, _classCallCheck2.default)(this, MapboxOverlay);
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
33
|
+
this._props = void 0;
|
|
34
|
+
this._deck = void 0;
|
|
35
|
+
this._map = void 0;
|
|
36
|
+
this._container = void 0;
|
|
37
|
+
this._interleaved = void 0;
|
|
38
|
+
this._lastMouseDownPoint = void 0;
|
|
39
|
+
|
|
40
|
+
this._handleStyleChange = function () {
|
|
42
41
|
(0, _resolveLayers.resolveLayers)(_this._map, _this._deck, _this._props.layers, _this._props.layers);
|
|
43
|
-
}
|
|
44
|
-
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
this._updateContainerSize = function () {
|
|
45
45
|
if (_this._map && _this._container) {
|
|
46
46
|
var _this$_map$getContain = _this._map.getContainer(),
|
|
47
47
|
clientWidth = _this$_map$getContain.clientWidth,
|
|
@@ -52,8 +52,9 @@ var MapboxOverlay = function () {
|
|
|
52
52
|
height: "".concat(clientHeight, "px")
|
|
53
53
|
});
|
|
54
54
|
}
|
|
55
|
-
}
|
|
56
|
-
|
|
55
|
+
};
|
|
56
|
+
|
|
57
|
+
this._updateViewState = function () {
|
|
57
58
|
var deck = _this._deck;
|
|
58
59
|
|
|
59
60
|
if (deck) {
|
|
@@ -65,8 +66,9 @@ var MapboxOverlay = function () {
|
|
|
65
66
|
deck.redraw();
|
|
66
67
|
}
|
|
67
68
|
}
|
|
68
|
-
}
|
|
69
|
-
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
this._handleMouseEvent = function (event) {
|
|
70
72
|
var deck = _this._deck;
|
|
71
73
|
|
|
72
74
|
if (!deck || !deck.isInitialized) {
|
|
@@ -152,7 +154,8 @@ var MapboxOverlay = function () {
|
|
|
152
154
|
default:
|
|
153
155
|
return;
|
|
154
156
|
}
|
|
155
|
-
}
|
|
157
|
+
};
|
|
158
|
+
|
|
156
159
|
var _props$interleaved = props.interleaved,
|
|
157
160
|
interleaved = _props$interleaved === void 0 ? false : _props$interleaved,
|
|
158
161
|
otherProps = (0, _objectWithoutProperties2.default)(props, _excluded);
|
|
@@ -160,150 +163,138 @@ var MapboxOverlay = function () {
|
|
|
160
163
|
this._props = otherProps;
|
|
161
164
|
}
|
|
162
165
|
|
|
163
|
-
|
|
164
|
-
key: "setProps",
|
|
165
|
-
value: function setProps(props) {
|
|
166
|
-
if (this._interleaved && props.layers) {
|
|
167
|
-
(0, _resolveLayers.resolveLayers)(this._map, this._deck, this._props.layers, props.layers);
|
|
168
|
-
}
|
|
166
|
+
var _proto = MapboxOverlay.prototype;
|
|
169
167
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
this._deck.setProps(this._interleaved ? (0, _deckUtils.getInterleavedProps)(this._props) : this._props);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
}, {
|
|
177
|
-
key: "onAdd",
|
|
178
|
-
value: function onAdd(map) {
|
|
179
|
-
this._map = map;
|
|
180
|
-
return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);
|
|
181
|
-
}
|
|
182
|
-
}, {
|
|
183
|
-
key: "_onAddOverlaid",
|
|
184
|
-
value: function _onAddOverlaid(map) {
|
|
185
|
-
var container = document.createElement('div');
|
|
186
|
-
Object.assign(container.style, {
|
|
187
|
-
position: 'absolute',
|
|
188
|
-
left: 0,
|
|
189
|
-
top: 0,
|
|
190
|
-
pointerEvents: 'none'
|
|
191
|
-
});
|
|
192
|
-
this._container = container;
|
|
193
|
-
this._deck = new _core.Deck(_objectSpread(_objectSpread({}, this._props), {}, {
|
|
194
|
-
parent: container,
|
|
195
|
-
viewState: (0, _deckUtils.getViewState)(map)
|
|
196
|
-
}));
|
|
197
|
-
map.on('resize', this._updateContainerSize);
|
|
198
|
-
map.on('render', this._updateViewState);
|
|
199
|
-
map.on('mousedown', this._handleMouseEvent);
|
|
200
|
-
map.on('dragstart', this._handleMouseEvent);
|
|
201
|
-
map.on('drag', this._handleMouseEvent);
|
|
202
|
-
map.on('dragend', this._handleMouseEvent);
|
|
203
|
-
map.on('mousemove', this._handleMouseEvent);
|
|
204
|
-
map.on('mouseout', this._handleMouseEvent);
|
|
205
|
-
map.on('click', this._handleMouseEvent);
|
|
206
|
-
map.on('dblclick', this._handleMouseEvent);
|
|
207
|
-
|
|
208
|
-
this._updateContainerSize();
|
|
209
|
-
|
|
210
|
-
return container;
|
|
168
|
+
_proto.setProps = function setProps(props) {
|
|
169
|
+
if (this._interleaved && props.layers) {
|
|
170
|
+
(0, _resolveLayers.resolveLayers)(this._map, this._deck, this._props.layers, props.layers);
|
|
211
171
|
}
|
|
212
|
-
}, {
|
|
213
|
-
key: "_onAddInterleaved",
|
|
214
|
-
value: function _onAddInterleaved(map) {
|
|
215
|
-
this._deck = (0, _deckUtils.getDeckInstance)({
|
|
216
|
-
map: map,
|
|
217
|
-
gl: map.painter.context.gl,
|
|
218
|
-
deck: new _core.Deck(_objectSpread(_objectSpread({}, this._props), {}, {
|
|
219
|
-
gl: map.painter.context.gl
|
|
220
|
-
}))
|
|
221
|
-
});
|
|
222
|
-
map.on('styledata', this._handleStyleChange);
|
|
223
|
-
(0, _resolveLayers.resolveLayers)(map, this._deck, [], this._props.layers);
|
|
224
|
-
return document.createElement('div');
|
|
225
|
-
}
|
|
226
|
-
}, {
|
|
227
|
-
key: "onRemove",
|
|
228
|
-
value: function onRemove() {
|
|
229
|
-
var map = this._map;
|
|
230
|
-
|
|
231
|
-
if (map) {
|
|
232
|
-
if (this._interleaved) {
|
|
233
|
-
this._onRemoveInterleaved(map);
|
|
234
|
-
} else {
|
|
235
|
-
this._onRemoveOverlaid(map);
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
172
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}, {
|
|
244
|
-
key: "_onRemoveOverlaid",
|
|
245
|
-
value: function _onRemoveOverlaid(map) {
|
|
246
|
-
var _this$_deck;
|
|
247
|
-
|
|
248
|
-
map.off('resize', this._updateContainerSize);
|
|
249
|
-
map.off('render', this._updateViewState);
|
|
250
|
-
map.off('mousedown', this._handleMouseEvent);
|
|
251
|
-
map.off('dragstart', this._handleMouseEvent);
|
|
252
|
-
map.off('drag', this._handleMouseEvent);
|
|
253
|
-
map.off('dragend', this._handleMouseEvent);
|
|
254
|
-
map.off('mousemove', this._handleMouseEvent);
|
|
255
|
-
map.off('mouseout', this._handleMouseEvent);
|
|
256
|
-
map.off('click', this._handleMouseEvent);
|
|
257
|
-
map.off('dblclick', this._handleMouseEvent);
|
|
258
|
-
(_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
|
|
259
|
-
}
|
|
260
|
-
}, {
|
|
261
|
-
key: "_onRemoveInterleaved",
|
|
262
|
-
value: function _onRemoveInterleaved(map) {
|
|
263
|
-
map.off('styledata', this._handleStyleChange);
|
|
264
|
-
(0, _resolveLayers.resolveLayers)(map, this._deck, this._props.layers, []);
|
|
265
|
-
(0, _deckUtils.removeDeckInstance)(map);
|
|
266
|
-
}
|
|
267
|
-
}, {
|
|
268
|
-
key: "getDefaultPosition",
|
|
269
|
-
value: function getDefaultPosition() {
|
|
270
|
-
return 'top-left';
|
|
271
|
-
}
|
|
272
|
-
}, {
|
|
273
|
-
key: "pickObject",
|
|
274
|
-
value: function pickObject(params) {
|
|
275
|
-
(0, _core.assert)(this._deck);
|
|
276
|
-
return this._deck.pickObject(params);
|
|
277
|
-
}
|
|
278
|
-
}, {
|
|
279
|
-
key: "pickMultipleObjects",
|
|
280
|
-
value: function pickMultipleObjects(params) {
|
|
281
|
-
(0, _core.assert)(this._deck);
|
|
282
|
-
return this._deck.pickMultipleObjects(params);
|
|
283
|
-
}
|
|
284
|
-
}, {
|
|
285
|
-
key: "pickObjects",
|
|
286
|
-
value: function pickObjects(params) {
|
|
287
|
-
(0, _core.assert)(this._deck);
|
|
288
|
-
return this._deck.pickObjects(params);
|
|
173
|
+
Object.assign(this._props, props);
|
|
174
|
+
|
|
175
|
+
if (this._deck) {
|
|
176
|
+
this._deck.setProps(this._interleaved ? (0, _deckUtils.getInterleavedProps)(this._props) : this._props);
|
|
289
177
|
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
178
|
+
};
|
|
179
|
+
|
|
180
|
+
_proto.onAdd = function onAdd(map) {
|
|
181
|
+
this._map = map;
|
|
182
|
+
return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
_proto._onAddOverlaid = function _onAddOverlaid(map) {
|
|
186
|
+
var container = document.createElement('div');
|
|
187
|
+
Object.assign(container.style, {
|
|
188
|
+
position: 'absolute',
|
|
189
|
+
left: 0,
|
|
190
|
+
top: 0,
|
|
191
|
+
pointerEvents: 'none'
|
|
192
|
+
});
|
|
193
|
+
this._container = container;
|
|
194
|
+
this._deck = new _core.Deck(_objectSpread(_objectSpread({}, this._props), {}, {
|
|
195
|
+
parent: container,
|
|
196
|
+
viewState: (0, _deckUtils.getViewState)(map)
|
|
197
|
+
}));
|
|
198
|
+
map.on('resize', this._updateContainerSize);
|
|
199
|
+
map.on('render', this._updateViewState);
|
|
200
|
+
map.on('mousedown', this._handleMouseEvent);
|
|
201
|
+
map.on('dragstart', this._handleMouseEvent);
|
|
202
|
+
map.on('drag', this._handleMouseEvent);
|
|
203
|
+
map.on('dragend', this._handleMouseEvent);
|
|
204
|
+
map.on('mousemove', this._handleMouseEvent);
|
|
205
|
+
map.on('mouseout', this._handleMouseEvent);
|
|
206
|
+
map.on('click', this._handleMouseEvent);
|
|
207
|
+
map.on('dblclick', this._handleMouseEvent);
|
|
208
|
+
|
|
209
|
+
this._updateContainerSize();
|
|
210
|
+
|
|
211
|
+
return container;
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
_proto._onAddInterleaved = function _onAddInterleaved(map) {
|
|
215
|
+
this._deck = (0, _deckUtils.getDeckInstance)({
|
|
216
|
+
map: map,
|
|
217
|
+
gl: map.painter.context.gl,
|
|
218
|
+
deck: new _core.Deck(_objectSpread(_objectSpread({}, this._props), {}, {
|
|
219
|
+
gl: map.painter.context.gl
|
|
220
|
+
}))
|
|
221
|
+
});
|
|
222
|
+
map.on('styledata', this._handleStyleChange);
|
|
223
|
+
(0, _resolveLayers.resolveLayers)(map, this._deck, [], this._props.layers);
|
|
224
|
+
return document.createElement('div');
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
_proto.onRemove = function onRemove() {
|
|
228
|
+
var map = this._map;
|
|
229
|
+
|
|
230
|
+
if (map) {
|
|
231
|
+
if (this._interleaved) {
|
|
232
|
+
this._onRemoveInterleaved(map);
|
|
233
|
+
} else {
|
|
234
|
+
this._onRemoveOverlaid(map);
|
|
295
235
|
}
|
|
296
236
|
}
|
|
297
|
-
}, {
|
|
298
|
-
key: "getCanvas",
|
|
299
|
-
value: function getCanvas() {
|
|
300
|
-
if (!this._map) {
|
|
301
|
-
return null;
|
|
302
|
-
}
|
|
303
237
|
|
|
304
|
-
|
|
238
|
+
this._deck = undefined;
|
|
239
|
+
this._map = undefined;
|
|
240
|
+
this._container = undefined;
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
_proto._onRemoveOverlaid = function _onRemoveOverlaid(map) {
|
|
244
|
+
var _this$_deck;
|
|
245
|
+
|
|
246
|
+
map.off('resize', this._updateContainerSize);
|
|
247
|
+
map.off('render', this._updateViewState);
|
|
248
|
+
map.off('mousedown', this._handleMouseEvent);
|
|
249
|
+
map.off('dragstart', this._handleMouseEvent);
|
|
250
|
+
map.off('drag', this._handleMouseEvent);
|
|
251
|
+
map.off('dragend', this._handleMouseEvent);
|
|
252
|
+
map.off('mousemove', this._handleMouseEvent);
|
|
253
|
+
map.off('mouseout', this._handleMouseEvent);
|
|
254
|
+
map.off('click', this._handleMouseEvent);
|
|
255
|
+
map.off('dblclick', this._handleMouseEvent);
|
|
256
|
+
(_this$_deck = this._deck) === null || _this$_deck === void 0 ? void 0 : _this$_deck.finalize();
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
_proto._onRemoveInterleaved = function _onRemoveInterleaved(map) {
|
|
260
|
+
map.off('styledata', this._handleStyleChange);
|
|
261
|
+
(0, _resolveLayers.resolveLayers)(map, this._deck, this._props.layers, []);
|
|
262
|
+
(0, _deckUtils.removeDeckInstance)(map);
|
|
263
|
+
};
|
|
264
|
+
|
|
265
|
+
_proto.getDefaultPosition = function getDefaultPosition() {
|
|
266
|
+
return 'top-left';
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
_proto.pickObject = function pickObject(params) {
|
|
270
|
+
(0, _core.assert)(this._deck);
|
|
271
|
+
return this._deck.pickObject(params);
|
|
272
|
+
};
|
|
273
|
+
|
|
274
|
+
_proto.pickMultipleObjects = function pickMultipleObjects(params) {
|
|
275
|
+
(0, _core.assert)(this._deck);
|
|
276
|
+
return this._deck.pickMultipleObjects(params);
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
_proto.pickObjects = function pickObjects(params) {
|
|
280
|
+
(0, _core.assert)(this._deck);
|
|
281
|
+
return this._deck.pickObjects(params);
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
_proto.finalize = function finalize() {
|
|
285
|
+
if (this._map) {
|
|
286
|
+
this._map.removeControl(this);
|
|
305
287
|
}
|
|
306
|
-
}
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
_proto.getCanvas = function getCanvas() {
|
|
291
|
+
if (!this._map) {
|
|
292
|
+
return null;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
return this._interleaved ? this._map.getCanvas() : this._deck.getCanvas();
|
|
296
|
+
};
|
|
297
|
+
|
|
307
298
|
return MapboxOverlay;
|
|
308
299
|
}();
|
|
309
300
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_map","_deck","_props","layers","_container","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","deck","setProps","viewState","isInitialized","redraw","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","_lastMouseDownPoint","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","_interleaved","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","_updateContainerSize","_updateViewState","_handleMouseEvent","gl","painter","context","_handleStyleChange","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","params","pickObject","pickMultipleObjects","pickObjects","removeControl","getCanvas"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n this._deck?.finalize();\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n removeDeckInstance(map);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n getCanvas(): HTMLCanvasElement | null {\n if (!this._map) {\n return null;\n }\n return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-overlay.ts"],"names":["MapboxOverlay","props","_props","_deck","_map","_container","_interleaved","_lastMouseDownPoint","_handleStyleChange","layers","_updateContainerSize","getContainer","clientWidth","clientHeight","Object","assign","style","width","height","_updateViewState","deck","setProps","viewState","isInitialized","redraw","_handleMouseEvent","event","mockEvent","type","offsetCenter","point","srcEvent","lastDown","deltaX","originalEvent","clientX","deltaY","clientY","x","y","_onPointerDown","_onEvent","tapCount","_onPointerMove","interleaved","otherProps","onAdd","map","_onAddInterleaved","_onAddOverlaid","container","document","createElement","position","left","top","pointerEvents","Deck","parent","on","gl","painter","context","onRemove","_onRemoveInterleaved","_onRemoveOverlaid","undefined","off","finalize","getDefaultPosition","pickObject","params","pickMultipleObjects","pickObjects","removeControl","getCanvas"],"mappings":"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","sourcesContent":["import {Deck, assert} from '@deck.gl/core';\nimport {getViewState, getDeckInstance, removeDeckInstance, getInterleavedProps} from './deck-utils';\n\nimport type {Map, IControl, MapMouseEvent} from 'mapbox-gl';\nimport type {MjolnirGestureEvent, MjolnirPointerEvent} from 'mjolnir.js';\nimport type {DeckProps} from '@deck.gl/core';\n\nimport {resolveLayers} from './resolve-layers';\n\nexport type MapboxOverlayProps = Omit<\n DeckProps,\n | 'width'\n | 'height'\n | 'gl'\n | 'parent'\n | 'canvas'\n | '_customRender'\n | 'viewState'\n | 'initialViewState'\n | 'controller'\n> & {\n interleaved?: boolean;\n};\n\n/**\n * Implements Mapbox [IControl](https://docs.mapbox.com/mapbox-gl-js/api/markers/#icontrol) interface\n * Renders deck.gl layers over the base map and automatically synchronizes with the map's camera\n */\nexport default class MapboxOverlay implements IControl {\n private _props: MapboxOverlayProps;\n private _deck?: Deck;\n private _map?: Map;\n private _container?: HTMLDivElement;\n private _interleaved: boolean;\n private _lastMouseDownPoint?: {x: number; y: number; clientX: number; clientY: number};\n\n constructor(props: MapboxOverlayProps) {\n const {interleaved = false, ...otherProps} = props;\n this._interleaved = interleaved;\n this._props = otherProps;\n }\n\n /** Update (partial) props of the underlying Deck instance. */\n setProps(props: MapboxOverlayProps): void {\n if (this._interleaved && props.layers) {\n resolveLayers(this._map, this._deck, this._props.layers, props.layers);\n }\n\n Object.assign(this._props, props);\n\n if (this._deck) {\n this._deck.setProps(this._interleaved ? getInterleavedProps(this._props) : this._props);\n }\n }\n\n /** Called when the control is added to a map */\n onAdd(map: Map): HTMLDivElement {\n this._map = map;\n return this._interleaved ? this._onAddInterleaved(map) : this._onAddOverlaid(map);\n }\n\n private _onAddOverlaid(map: Map): HTMLDivElement {\n /* global document */\n const container = document.createElement('div');\n Object.assign(container.style, {\n position: 'absolute',\n left: 0,\n top: 0,\n pointerEvents: 'none'\n });\n this._container = container;\n\n this._deck = new Deck({\n ...this._props,\n parent: container,\n viewState: getViewState(map)\n });\n\n map.on('resize', this._updateContainerSize);\n map.on('render', this._updateViewState);\n map.on('mousedown', this._handleMouseEvent);\n map.on('dragstart', this._handleMouseEvent);\n map.on('drag', this._handleMouseEvent);\n map.on('dragend', this._handleMouseEvent);\n map.on('mousemove', this._handleMouseEvent);\n map.on('mouseout', this._handleMouseEvent);\n map.on('click', this._handleMouseEvent);\n map.on('dblclick', this._handleMouseEvent);\n\n this._updateContainerSize();\n return container;\n }\n\n private _onAddInterleaved(map: Map): HTMLDivElement {\n this._deck = getDeckInstance({\n map,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl,\n deck: new Deck({\n ...this._props,\n // @ts-ignore non-public map property\n gl: map.painter.context.gl\n })\n });\n\n map.on('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, [], this._props.layers);\n\n return document.createElement('div');\n }\n\n /** Called when the control is removed from a map */\n onRemove(): void {\n const map = this._map;\n\n if (map) {\n if (this._interleaved) {\n this._onRemoveInterleaved(map);\n } else {\n this._onRemoveOverlaid(map);\n }\n }\n\n this._deck = undefined;\n this._map = undefined;\n this._container = undefined;\n }\n\n private _onRemoveOverlaid(map: Map): void {\n map.off('resize', this._updateContainerSize);\n map.off('render', this._updateViewState);\n map.off('mousedown', this._handleMouseEvent);\n map.off('dragstart', this._handleMouseEvent);\n map.off('drag', this._handleMouseEvent);\n map.off('dragend', this._handleMouseEvent);\n map.off('mousemove', this._handleMouseEvent);\n map.off('mouseout', this._handleMouseEvent);\n map.off('click', this._handleMouseEvent);\n map.off('dblclick', this._handleMouseEvent);\n this._deck?.finalize();\n }\n\n private _onRemoveInterleaved(map: Map): void {\n map.off('styledata', this._handleStyleChange);\n resolveLayers(map, this._deck, this._props.layers, []);\n removeDeckInstance(map);\n }\n\n getDefaultPosition() {\n return 'top-left';\n }\n\n /** Forwards the Deck.pickObject method */\n pickObject(params: Parameters<Deck['pickObject']>[0]): ReturnType<Deck['pickObject']> {\n assert(this._deck);\n return this._deck.pickObject(params);\n }\n\n /** Forwards the Deck.pickMultipleObjects method */\n pickMultipleObjects(\n params: Parameters<Deck['pickMultipleObjects']>[0]\n ): ReturnType<Deck['pickMultipleObjects']> {\n assert(this._deck);\n return this._deck.pickMultipleObjects(params);\n }\n\n /** Forwards the Deck.pickObjects method */\n pickObjects(params: Parameters<Deck['pickObjects']>[0]): ReturnType<Deck['pickObjects']> {\n assert(this._deck);\n return this._deck.pickObjects(params);\n }\n\n /** Remove from map and releases all resources */\n finalize() {\n if (this._map) {\n this._map.removeControl(this);\n }\n }\n\n /** If interleaved: true, returns base map's canvas, otherwise forwards the Deck.getCanvas method. */\n getCanvas(): HTMLCanvasElement | null {\n if (!this._map) {\n return null;\n }\n return this._interleaved ? this._map.getCanvas() : this._deck!.getCanvas();\n }\n\n private _handleStyleChange = () => {\n resolveLayers(this._map, this._deck, this._props.layers, this._props.layers);\n };\n\n private _updateContainerSize = () => {\n if (this._map && this._container) {\n const {clientWidth, clientHeight} = this._map.getContainer();\n Object.assign(this._container.style, {\n width: `${clientWidth}px`,\n height: `${clientHeight}px`\n });\n }\n };\n\n private _updateViewState = () => {\n const deck = this._deck;\n if (deck) {\n // @ts-ignore (2345) map is always defined if deck is\n deck.setProps({viewState: getViewState(this._map)});\n // Redraw immediately if view state has changed\n if (deck.isInitialized) {\n deck.redraw();\n }\n }\n };\n\n private _handleMouseEvent = (event: MapMouseEvent) => {\n const deck = this._deck;\n if (!deck || !deck.isInitialized) {\n return;\n }\n\n const mockEvent: {\n type: string;\n deltaX?: number;\n deltaY?: number;\n offsetCenter: {x: number; y: number};\n srcEvent: MapMouseEvent;\n tapCount?: number;\n } = {\n type: event.type,\n offsetCenter: event.point,\n srcEvent: event\n };\n\n const lastDown = this._lastMouseDownPoint;\n if (!event.point && lastDown) {\n // drag* events do not contain a `point` field\n mockEvent.deltaX = event.originalEvent.clientX - lastDown.clientX;\n mockEvent.deltaY = event.originalEvent.clientY - lastDown.clientY;\n mockEvent.offsetCenter = {\n x: lastDown.x + mockEvent.deltaX,\n y: lastDown.y + mockEvent.deltaY\n };\n }\n\n switch (mockEvent.type) {\n case 'mousedown':\n deck._onPointerDown(mockEvent as MjolnirGestureEvent);\n this._lastMouseDownPoint = {\n ...event.point,\n clientX: event.originalEvent.clientX,\n clientY: event.originalEvent.clientY\n };\n break;\n\n case 'dragstart':\n mockEvent.type = 'panstart';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'drag':\n mockEvent.type = 'panmove';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dragend':\n mockEvent.type = 'panend';\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'click':\n mockEvent.tapCount = 1;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'dblclick':\n mockEvent.type = 'click';\n mockEvent.tapCount = 2;\n deck._onEvent(mockEvent as MjolnirGestureEvent);\n break;\n\n case 'mousemove':\n mockEvent.type = 'pointermove';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n case 'mouseout':\n mockEvent.type = 'pointerleave';\n deck._onPointerMove(mockEvent as MjolnirPointerEvent);\n break;\n\n default:\n return;\n }\n };\n}\n"],"file":"mapbox-overlay.js"}
|
package/dist/esm/mapbox-layer.js
CHANGED
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
|
|
2
1
|
import { getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer } from './deck-utils';
|
|
3
2
|
export default class MapboxLayer {
|
|
4
3
|
constructor(props) {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
_defineProperty(this, "map", void 0);
|
|
12
|
-
|
|
13
|
-
_defineProperty(this, "deck", void 0);
|
|
14
|
-
|
|
15
|
-
_defineProperty(this, "props", void 0);
|
|
4
|
+
this.id = void 0;
|
|
5
|
+
this.type = void 0;
|
|
6
|
+
this.renderingMode = void 0;
|
|
7
|
+
this.map = void 0;
|
|
8
|
+
this.deck = void 0;
|
|
9
|
+
this.props = void 0;
|
|
16
10
|
|
|
17
11
|
if (!props.id) {
|
|
18
12
|
throw new Error('Layer must have an unique id');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["getDeckInstance","addLayer","removeLayer","updateLayer","drawLayer","MapboxLayer","constructor","props","id","
|
|
1
|
+
{"version":3,"sources":["../../src/mapbox-layer.ts"],"names":["getDeckInstance","addLayer","removeLayer","updateLayer","drawLayer","MapboxLayer","constructor","props","id","type","renderingMode","map","deck","Error","onAdd","gl","onRemove","setProps","Object","assign","render"],"mappings":"AAAA,SAAQA,eAAR,EAAyBC,QAAzB,EAAmCC,WAAnC,EAAgDC,WAAhD,EAA6DC,SAA7D,QAA6E,cAA7E;AAUA,eAAe,MAAMC,WAAN,CAAwE;AASrFC,EAAAA,WAAW,CAACC,KAAD,EAAkC;AAAA,SAR7CC,EAQ6C;AAAA,SAP7CC,IAO6C;AAAA,SAN7CC,aAM6C;AAAA,SAL7CC,GAK6C;AAAA,SAJ7CC,IAI6C;AAAA,SAH7CL,KAG6C;;AAC3C,QAAI,CAACA,KAAK,CAACC,EAAX,EAAe;AACb,YAAM,IAAIK,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,SAAKL,EAAL,GAAUD,KAAK,CAACC,EAAhB;AACA,SAAKC,IAAL,GAAY,QAAZ;AACA,SAAKC,aAAL,GAAqBH,KAAK,CAACG,aAAN,IAAuB,IAA5C;AACA,SAAKC,GAAL,GAAW,IAAX;AACA,SAAKC,IAAL,GAAY,IAAZ;AACA,SAAKL,KAAL,GAAaA,KAAb;AACD;;AAIDO,EAAAA,KAAK,CAACH,GAAD,EAAWI,EAAX,EAA4C;AAC/C,SAAKJ,GAAL,GAAWA,GAAX;AACA,SAAKC,IAAL,GAAYZ,eAAe,CAAC;AAACW,MAAAA,GAAD;AAAMI,MAAAA,EAAN;AAAUH,MAAAA,IAAI,EAAE,KAAKL,KAAL,CAAWK;AAA3B,KAAD,CAA3B;AACAX,IAAAA,QAAQ,CAAC,KAAKW,IAAN,EAAY,IAAZ,CAAR;AACD;;AAEDI,EAAAA,QAAQ,GAAS;AACf,QAAI,KAAKJ,IAAT,EAAe;AACbV,MAAAA,WAAW,CAAC,KAAKU,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDK,EAAAA,QAAQ,CAACV,KAAD,EAAkC;AAExCW,IAAAA,MAAM,CAACC,MAAP,CAAc,KAAKZ,KAAnB,EAA0BA,KAA1B,EAAiC;AAACC,MAAAA,EAAE,EAAE,KAAKA;AAAV,KAAjC;;AAEA,QAAI,KAAKI,IAAT,EAAe;AACbT,MAAAA,WAAW,CAAC,KAAKS,IAAN,EAAY,IAAZ,CAAX;AACD;AACF;;AAEDQ,EAAAA,MAAM,GAAG;AACPhB,IAAAA,SAAS,CAAC,KAAKQ,IAAN,EAAa,KAAKD,GAAlB,EAAwB,IAAxB,CAAT;AACD;;AA/CoF","sourcesContent":["import {getDeckInstance, addLayer, removeLayer, updateLayer, drawLayer} from './deck-utils';\nimport type {Map, CustomLayerInterface} from 'mapbox-gl';\nimport type {Deck, Layer} from '@deck.gl/core';\n\nexport type MapboxLayerProps<LayerT extends Layer> = Partial<LayerT['props']> & {\n id: string;\n renderingMode?: '2d' | '3d';\n deck?: Deck;\n};\n\nexport default class MapboxLayer<LayerT extends Layer> implements CustomLayerInterface {\n id: string;\n type: 'custom';\n renderingMode: '2d' | '3d';\n map: Map | null;\n deck: Deck | null;\n props: MapboxLayerProps<LayerT>;\n\n /* eslint-disable no-this-before-super */\n constructor(props: MapboxLayerProps<LayerT>) {\n if (!props.id) {\n throw new Error('Layer must have an unique id');\n }\n\n this.id = props.id;\n this.type = 'custom';\n this.renderingMode = props.renderingMode || '3d';\n this.map = null;\n this.deck = null;\n this.props = props;\n }\n\n /* Mapbox custom layer methods */\n\n onAdd(map: Map, gl: WebGLRenderingContext): void {\n this.map = map;\n this.deck = getDeckInstance({map, gl, deck: this.props.deck});\n addLayer(this.deck, this);\n }\n\n onRemove(): void {\n if (this.deck) {\n removeLayer(this.deck, this);\n }\n }\n\n setProps(props: MapboxLayerProps<LayerT>) {\n // id cannot be changed\n Object.assign(this.props, props, {id: this.id});\n // safe guard in case setProps is called before onAdd\n if (this.deck) {\n updateLayer(this.deck, this);\n }\n }\n\n render() {\n drawLayer(this.deck!, this.map!, this);\n }\n}\n"],"file":"mapbox-layer.js"}
|