{"version":3,"sources":["jsdelivr-header.js","/npm/leaflet-indoor-pytek@1.0.1/leaflet-indoor.js"],"names":[],"mappings":"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","file":"/npm/leaflet-indoor-pytek@1.0.1/leaflet-indoor.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.19.2.\n * Original file: /npm/leaflet-indoor-pytek@1.0.1/leaflet-indoor.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","/**\r\n * A layer that will display indoor data\r\n *\r\n * addData takes a GeoJSON feature collection, each feature must have a level\r\n * property that indicates the level.\r\n *\r\n * getLevels can be called to get the array of levels that are present.\r\n */\r\nL.Indoor = L.Layer.extend({\r\n\r\n    options: {\r\n        // by default the levels are expected to be in the level attribute in\r\n        // the feature properties, pass a replacement function in options if\r\n        // this is not the case.\r\n        getLevel: function(feature) {\r\n            return feature.properties.level;\r\n        }\r\n    },\r\n\r\n    initialize: function(data, options) {\r\n        L.setOptions(this, options);\r\n        options = this.options;\r\n\r\n        var layers = this._layers = {};\r\n        this._map = null;\r\n\r\n        if (\"level\" in this.options) {\r\n            this._level = this.options.level;\r\n        } else {\r\n            this._level = null;\r\n        }\r\n\r\n        if (\"onEachFeature\" in this.options)\r\n            var onEachFeature = this.options.onEachFeature;\r\n\r\n        this.options.onEachFeature = function(feature, layer) {\r\n\r\n            if (onEachFeature)\r\n                onEachFeature(feature, layer);\r\n\r\n            if (\"markerForFeature\" in options) {\r\n                var marker = options.markerForFeature(feature);\r\n                if (typeof(marker) !== 'undefined') {\r\n                    marker.on('click', function(e) {\r\n                        layer.fire('click', e);\r\n                    });\r\n\r\n                    var level = options.getLevel(feature);\r\n\r\n                    if (typeof(level) === 'undefined') {\r\n                        console.warn(\"level undefined for\");\r\n                        console.log(feature);\r\n                    } else {\r\n                        function addToLevel(level) {\r\n                            layers[level].addLayer(marker);\r\n                        }\r\n\r\n                        if (L.Util.isArray(level)) {\r\n                            level.forEach(addToLevel);\r\n                        } else {\r\n                            addToLevel(level);\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n        };\r\n\r\n        this.addData(data);\r\n    },\r\n    addTo: function (map) {\r\n        map.addLayer(this);\r\n        return this;\r\n    },\r\n    onAdd: function (map) {\r\n        this._map = map;\r\n\r\n        if (this._level === null) {\r\n            var levels = this.getLevels();\r\n\r\n            if (levels.length !== 0) {\r\n                this._level = levels[0];\r\n            }\r\n        }\r\n\r\n        if (this._level !== null) {\r\n            if (this._level in this._layers) {\r\n                this._map.addLayer(this._layers[this._level]);\r\n            } else {\r\n                // TODO: Display warning?\r\n            }\r\n        }\r\n    },\r\n    onRemove: function (map) {\r\n        if (this._level in this._layers) {\r\n            this._map.removeLayer(this._layers[this._level]);\r\n        }\r\n\r\n        this._map = null;\r\n    },\r\n    addData: function(data) {\r\n        var layers = this._layers,\r\n            options = this.options,\r\n            features = L.Util.isArray(data) ? data : data.features;\r\n\r\n        features.forEach(function (part) {\r\n\r\n            var level = options.getLevel(part);\r\n\r\n            var layer;\r\n\r\n            if (typeof level === 'undefined' ||\r\n                level === null) {\r\n                // TODO: Display warning\r\n\r\n                return;\r\n            }\r\n\r\n            if (!(\"geometry\" in part)) {\r\n                // TODO: Not sure if this is still needed/display warning\r\n                return;\r\n            }\r\n\r\n            // if the feature is on mutiple levels\r\n            if (L.Util.isArray(level)) {\r\n                level.forEach(function(level) {\r\n                    if (level in layers) {\r\n                        layer = layers[level];\r\n                    } else {\r\n                        layer = layers[level] = L.geoJson({\r\n                            type: \"FeatureCollection\",\r\n                            features: []\r\n                        }, options);\r\n                    }\r\n\r\n                    layer.addData(part);\r\n                });\r\n            } else { // feature is on a single level\r\n                if (level in layers) {\r\n                    layer = layers[level];\r\n                } else {\r\n                    layer = layers[level] = L.geoJson({\r\n                        type: \"FeatureCollection\",\r\n                        features: []\r\n                    }, options);\r\n                }\r\n\r\n                layer.addData(part);\r\n            }\r\n        });\r\n    },\r\n    getLevels: function() {\r\n        return Object.keys(this._layers);\r\n    },\r\n    getLevel: function() {\r\n        return this._level;\r\n    },\r\n    setLevel: function(level) {\r\n        if (typeof(level) === 'object') {\r\n            level = level.newLevel;\r\n        }\r\n\r\n        if (this._level === level)\r\n            return;\r\n\r\n        var oldLayer = this._layers[this._level];\r\n        var layer = this._layers[level];\r\n\r\n        if (this._map !== null) {\r\n            if (this._map.hasLayer(oldLayer)) {\r\n                this._map.removeLayer(oldLayer);\r\n            }\r\n\r\n            if (layer) {\r\n                this._map.addLayer(layer);\r\n            }\r\n        }\r\n\r\n        this._level = level;\r\n    },\r\n    resetStyle: function (layer) {\r\n      // reset any custom styles\r\n      layer.options = layer.defaultOptions;\r\n      this._setLayerStyle(layer, this.options.style);\r\n      return this;\r\n    },\r\n    _setLayerStyle: function (layer, style) {\r\n      if (typeof style === 'function') {\r\n        style = style(layer.feature);\r\n      }\r\n      if (layer.setStyle) {\r\n        layer.setStyle(style);\r\n      }\r\n    }\r\n});\r\n\r\nL.indoor = function(data, options) {\r\n    return new L.Indoor(data, options);\r\n};\r\n\r\nL.Control.Level = L.Control.extend({\r\n    includes: L.Evented,\r\n\r\n    options: {\r\n        position: 'bottomright',\r\n\r\n        // used to get a unique integer for each level to be used to order them\r\n        parseLevel: function(level) {\r\n            return parseInt(level, 10);\r\n        }\r\n    },\r\n\r\n    initialize: function(options) {\r\n        L.setOptions(this, options);\r\n\r\n        this._map = null;\r\n        this._buttons = {};\r\n        this._listeners = [];\r\n        this._level = options.level;\r\n    },\r\n    onAdd: function(map) {\r\n        var div = L.DomUtil.create('div', 'leaflet-bar leaflet-control-button');\r\n\r\n        div.style.font = \"18px 'Lucida Console',Monaco,monospace\";\r\n\r\n        var buttons = this._buttons;\r\n        var activeLevel = this._level;\r\n        var self = this;\r\n\r\n        var levels = [];\r\n\r\n        for (var i=0; i<this.options.levels.length; i++) {\r\n            var level = this.options.levels[i];\r\n\r\n            var levelNum = self.options.parseLevel(level);\r\n\r\n            levels.push({\r\n                num: levelNum,\r\n                label: level\r\n            });\r\n        }\r\n\r\n        levels.sort(function(a, b) {\r\n            return a.num - b.num;\r\n        });\r\n\r\n        for (i=levels.length-1; i>=0; i--) {\r\n            var level = levels[i].num;\r\n            var originalLevel = levels[i].label;\r\n\r\n            var levelBtn = L.DomUtil.create('a', 'leaflet-buttons-control-button', div);\r\n            levelBtn.setAttribute('role','button');\r\n            levelBtn.style.cursor = 'pointer';\r\n\r\n            if (level === activeLevel || originalLevel === activeLevel) {\r\n                levelBtn.style.backgroundColor = \"#b0b0b0\";\r\n            }\r\n\r\n            levelBtn.appendChild(levelBtn.ownerDocument.createTextNode(originalLevel));\r\n\r\n            (function(level) {\r\n                levelBtn.onclick = function() {\r\n                    self.setLevel(level);\r\n                };\r\n            })(level);\r\n\r\n            buttons[level] = levelBtn;\r\n        }\r\n\r\n        return div;\r\n    },\r\n    setLevel: function(level) {\r\n        if (level === this._level)\r\n            return;\r\n        var oldLevel = this._level;\r\n        this._level = level;\r\n\r\n        if (this._map !== null) {\r\n            if (typeof oldLevel !== \"undefined\")\r\n                this._buttons[oldLevel].style.backgroundColor = \"#FFFFFF\";\r\n            this._buttons[level].style.backgroundColor = \"#b0b0b0\";\r\n        }\r\n\r\n        if(typeof this.options.indoorLayer.setLevel === 'function'){\r\n            this.options.indoorLayer.setLevel({\r\n                oldLevel: oldLevel,\r\n                newLevel: level\r\n            })\r\n        }\r\n    },\r\n    getLevel: function() {\r\n        return this._level;\r\n    }\r\n});\r\n\r\nL.Control.level = function (options) {\r\n    return new L.Control.Level(options);\r\n};"]}