PageSourceSearch

https://geo.stat.gov.lv/stage2/lib/leaflet-draw/edit/handler/EditToolbar.Delete.js

js stat.gov.lv collected 2026-10-02 03:35:36 UTC 3,991 bytes, 154 lines download raw bytes

vendor: 3,991 bytes, lines 1-154
1/**
2 * @class L.EditToolbar.Delete
3 * @aka EditToolbar.Delete
4 */
5L.EditToolbar.Delete = L.Handler.extend({
6	statics: {
7		TYPE: 'remove' // not delete as delete is reserved in js
8	},
9
10	includes: [L.Evented.prototype || L.Mixin.Events,],
11
12	// @method intialize(): void
13	initialize: function (map, options) {
14		L.Handler.prototype.initialize.call(this, map);
15
16		L.Util.setOptions(this, options);
17
18		// Store the selectable layer group for ease of access
19		this._deletableLayers = this.options.featureGroup;
20
21		if (!(this._deletableLayers instanceof L.FeatureGroup)) {
22			throw new Error('options.featureGroup must be a L.FeatureGroup');
23		}
24
25		// Save the type so super can fire, need to do this as cannot do this.TYPE :(
26		this.type = L.EditToolbar.Delete.TYPE;
27	},
28
29	// @method enable(): void
30	// Enable the delete toolbar
31	enable: function () {
32		if (this._enabled || !this._hasAvailableLayers()) {
33			return;
34		}
35		this.fire('enabled', { handler: this.type });
36
37		this._map.fire(L.Draw.Event.DELETESTART, { handler: this.type });
38
39		L.Handler.prototype.enable.call(this);
40
41		this._deletableLayers
42			.on('layeradd', this._enableLayerDelete, this)
43			.on('layerremove', this._disableLayerDelete, this);
44	},
45
46	// @method disable(): void
47	// Disable the delete toolbar
48	disable: function () {
49		if (!this._enabled) {
50			return;
51		}
52
53		this._deletableLayers
54			.off('layeradd', this._enableLayerDelete, this)
55			.off('layerremove', this._disableLayerDelete, this);
56
57		L.Handler.prototype.disable.call(this);
58
59		this._map.fire(L.Draw.Event.DELETESTOP, { handler: this.type });
60
61		this.fire('disabled', { handler: this.type });
62	},
63
64	// @method addHooks(): void
65	// Add listener hooks to this handler
66	addHooks: function () {
67		var map = this._map;
68
69		if (map) {
70			map.getContainer().focus();
71
72			this._deletableLayers.eachLayer(this._enableLayerDelete, this);
73			this._deletedLayers = new L.LayerGroup();
74
75			this._tooltip = new L.Draw.Tooltip(this._map);
76			this._tooltip.updateContent({ text: L.drawLocal.edit.handlers.remove.tooltip.text });
77
78			this._map.on('mousemove', this._onMouseMove, this);
79		}
80	},
81
82	// @method removeHooks(): void
83	// Remove listener hooks from this handler
84	removeHooks: function () {
85		if (this._map) {
86			this._deletableLayers.eachLayer(this._disableLayerDelete, this);
87			this._deletedLayers = null;
88
89			this._tooltip.dispose();
90			this._tooltip = null;
91
92			this._map.off('mousemove', this._onMouseMove, this);
93		}
94	},
95
96	// @method revertLayers(): void
97	// Revert the deleted layers back to their prior state.
98	revertLayers: function () {
99		// Iterate of the deleted layers and add them back into the featureGroup
100		this._deletedLayers.eachLayer(function (layer) {
101			this._deletableLayers.addLayer(layer);
102			layer.fire('revert-deleted', { layer: layer });
103		}, this);
104	},
105
106	// @method save(): void
107	// Save deleted layers
108	save: function () {
109		this._map.fire(L.Draw.Event.DELETED, { layers: this._deletedLayers });
110	},
111
112	// @method removeAllLayers(): void
113	// Remove all delateable layers
114	removeAllLayers: function(){
115		// Iterate of the delateable layers and add remove them
116		this._deletableLayers.eachLayer(function (layer) {
117			this._removeLayer({layer:layer});
118		}, this);
119		this.save();
120	},
121
122	_enableLayerDelete: function (e) {
123		var layer = e.layer || e.target || e;
124
125		layer.on('click', this._removeLayer, this);
126	},
127
128	_disableLayerDelete: function (e) {
129		var layer = e.layer || e.target || e;
130
131		layer.off('click', this._removeLayer, this);
132
133		// Remove from the deleted layers so we can't accidentally revert if the user presses cancel
134		this._deletedLayers.removeLayer(layer);
135	},
136
137	_removeLayer: function (e) {
138		var layer = e.layer || e.target || e;
139
140		this._deletableLayers.removeLayer(layer);
141
142		this._deletedLayers.addLayer(layer);
143
144		layer.fire('deleted');
145	},
146
147	_onMouseMove: function (e) {
148		this._tooltip.updatePosition(e.latlng);
149	},
150
151	_hasAvailableLayers: function () {
152		return this._deletableLayers.getLayers().length !== 0;
153	}
154});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.