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.