PageSourceSearch

https://tegallinggah.desa.id/assets/js/leaflet.browser.print.utils.js?vcd6c00a46d51c39da30d97d1b0999032

js tegallinggah.desa.id collected 2026-10-03 02:49:19 UTC 7,246 bytes, 206 lines download raw bytes

1/**
2	MIT License http://www.opensource.org/licenses/mit-license.php
3	Author Igor Vladyka <[email protected]> (https://github.com/Igor-Vladyka/leaflet.browser.print)
4**/
5
6L.Control.BrowserPrint.Utils = {
7
8	_ignoreArray: [],
9
10	_cloneFactoryArray: [],
11	_cloneRendererArray: [],
12	_knownRenderers: {},
13
14	cloneOptions: function(options) {
15		var utils = this;
16	    var retOptions = {};
17	    for (var name in options) {
18	        var item = options[name];
19			if (item && item.clone) {
20				retOptions[name] = item.clone();
21			} else if (item && item.onAdd) {
22				retOptions[name] = utils.cloneLayer(item);
23			} else {
24				retOptions[name] = item;
25			}
26	    }
27	    return retOptions;
28	},
29
30	cloneBasicOptionsWithoutLayers: function(options) {
31	    var retOptions = {};
32		var optionNames = Object.getOwnPropertyNames(options);
33		if (optionNames.length) {
34			for (var i = 0; i < optionNames.length; i++) {
35				var optName = optionNames[i];
36				if (optName && optName != "layers") {
37			        retOptions[optName] = options[optName];
38				}
39			}
40
41		    return this.cloneOptions(retOptions);
42		}
43
44		return retOptions;
45	},
46
47	cloneInnerLayers: function (layer) {
48		var utils = this;
49		var layers = [];
50
51		layer.eachLayer(function (inner) {
52			var l = utils.cloneLayer(inner);
53
54			if (l) {
55				layers.push(l);
56			}
57		});
58
59		return layers;
60	},
61
62	initialize: function () {
63
64		this._knownRenderers = {};
65
66		// Renderers
67		this.registerRenderer(L.SVG, 'L.SVG');
68		this.registerRenderer(L.Canvas, 'L.Canvas');
69
70		this.registerLayer(L.TileLayer.WMS, 'L.TileLayer.WMS', function(layer, utils) { 	return L.tileLayer.wms(layer._url, utils.cloneOptions(layer.options)); });
71		this.registerLayer(L.TileLayer, 'L.TileLayer', function(layer, utils) { 			return L.tileLayer(layer._url, utils.cloneOptions(layer.options)); });
72		this.registerLayer(L.GridLayer, 'L.GridLayer', function(layer, utils) { 			return L.gridLayer(utils.cloneOptions(layer.options)); });
73		this.registerLayer(L.ImageOverlay, 'L.ImageOverlay', function(layer, utils) { 		return L.imageOverlay(layer._url, layer._bounds, utils.cloneOptions(layer.options)); });
74		this.registerLayer(L.Marker, 'L.Marker', function(layer, utils) { 					return L.marker(layer.getLatLng(), utils.cloneOptions(layer.options)); });
75		this.registerLayer(L.Popup, 'L.Popup', function(layer, utils) { 					return L.popup(utils.cloneOptions(layer.options)).setLatLng(layer.getLatLng()).setContent(layer.getContent()); });
76		this.registerLayer(L.Circle, 'L.Circle', function(layer, utils) { 					return L.circle(layer.getLatLng(), layer.getRadius(), utils.cloneOptions(layer.options)); });
77		this.registerLayer(L.CircleMarker, 'L.CircleMarker', function(layer, utils) { 		return L.circleMarker(layer.getLatLng(), utils.cloneOptions(layer.options)); });
78		this.registerLayer(L.Rectangle, 'L.Rectangle', function(layer, utils) { 			return L.rectangle(layer.getBounds(), utils.cloneOptions(layer.options)); });
79		this.registerLayer(L.Polygon, 'L.Polygon', function(layer, utils) { 				return L.polygon(layer.getLatLngs(), utils.cloneOptions(layer.options)); });
80
81		// MultiPolyline is removed in leaflet 1.0.0
82		this.registerLayer(L.MultiPolyline, 'L.MultiPolyline', function(layer, utils) { 	return L.polyline(layer.getLatLngs(), utils.cloneOptions(layer.options)); });
83		// MultiPolygon is removed in leaflet 1.0.0
84		this.registerLayer(L.MultiPolygon, 'L.MultiPolygon', function(layer, utils) { 		return L.multiPolygon(layer.getLatLngs(), utils.cloneOptions(layer.options)); });
85
86		this.registerLayer(L.Polyline, 'L.Polyline', function(layer, utils) { 				return L.polyline(layer.getLatLngs(), utils.cloneOptions(layer.options)); });
87		this.registerLayer(L.GeoJSON, 'L.GeoJSON', function(layer, utils) { 				return L.geoJson(layer.toGeoJSON(), utils.cloneOptions(layer.options)); });
88
89		this.registerIgnoreLayer(L.FeatureGroup, 'L.FeatureGroup');
90		this.registerIgnoreLayer(L.LayerGroup, 'L.LayerGroup');
91
92		// There is no point to clone tooltips here;  L.tooltip(options);
93		this.registerLayer(L.Tooltip, 'L.Tooltip', function(){	return null; });
94	},
95
96	_register: function(array, type, identifier, builderFunction) {
97		if (type &&
98			!array.filter(function(l){ return l.identifier === identifier; }).length) {
99
100			array.push({
101				type: type,
102				identifier: identifier,
103				builder: builderFunction || function (layer) { return new type(layer.options); }
104			});
105		}
106	},
107
108	registerLayer: function(type, identifier, builderFunction) {
109		this._register(this._cloneFactoryArray, type, identifier, builderFunction);
110	},
111
112	registerRenderer: function(type, identifier, builderFunction) {
113		this._register(this._cloneRendererArray, type, identifier, builderFunction);
114	},
115
116	registerIgnoreLayer: function(type, identifier) {
117		this._register(this._ignoreArray, type, identifier);
118	},
119
120	cloneLayer: function(layer) {
121		if (!layer) return null;
122
123		// First we check if this layer is actual renderer
124		var renderer = this.__getRenderer(layer);
125		if (renderer) {
126			return renderer;
127		}
128
129		var factoryObject;
130		if (layer._group) { // Exceptional check for L.MarkerClusterGroup
131			factoryObject = this.__getFactoryObject(layer._group, true);
132		} else {
133			factoryObject = this.__getFactoryObject(layer);
134		}
135
136		// We clone and recreate layer if it's simple overlay
137		if (factoryObject) {
138			factoryObject = factoryObject.builder(layer, this);
139		}
140
141		return factoryObject;
142	},
143
144	getType: function(layer) {
145		if (!layer) return null;
146
147		var factoryObject = this.__getFactoryObject(layer);
148		if (factoryObject) {
149			factoryObject = factoryObject.identifier;
150		}
151
152		return factoryObject;
153	},
154
155	__getRenderer: function(oldRenderer) {
156		var renderer = this._knownRenderers[oldRenderer._leaflet_id];
157		if (!renderer) {
158			for (var i = 0; i < this._cloneRendererArray.length; i++) {
159				var factoryObject = this._cloneRendererArray[i];
160				if (oldRenderer instanceof factoryObject.type) {
161					this._knownRenderers[oldRenderer._leaflet_id] = factoryObject.builder(oldRenderer.options);
162					break;
163				}
164			}
165
166			renderer = this._knownRenderers[oldRenderer._leaflet_id];
167		}
168
169		return renderer;
170	},
171
172	__getFactoryObject: function (layer, skipIgnore) {
173		if (!skipIgnore) {
174			for (var i = 0; i < this._ignoreArray.length; i++) {
175				var ignoreObject = this._ignoreArray[i];
176				if (ignoreObject.type && layer instanceof ignoreObject.type) {
177					return null;
178				}
179			}
180		}
181
182		for (var i = 0; i < this._cloneFactoryArray.length; i++) {
183			var factoryObject = this._cloneFactoryArray[i];
184			if (factoryObject.type && layer instanceof factoryObject.type) {
185				return factoryObject;
186			}
187		}
188
189		for (var i = 0; i < this._cloneRendererArray.length; i++) {
190			var factoryObject = this._cloneRendererArray[i];
191			if (factoryObject.type && layer instanceof factoryObject.type) {
192				return null;
193			}
194		}
195
196		this.__unknownLayer__();
197
198		return null;
199	},
200
201	__unknownLayer__: function(){
202	   console.warn('Unknown layer, cannot clone this layer. Leaflet version: ' + L.version);
203	   console.info('For additional information please refer to documentation on: https://github.com/Igor-Vladyka/leaflet.browser.print.');
204	   console.info('-------------------------------------------------------------------------------------------------------------------');
205   }
206};

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.