dawarich/vendor/javascript/leaflet.control.layers.tree.js
Evgenii Burmakin b1393ee674
0.36.0 (#1952)
* Implement OmniAuth GitHub authentication

* Fix omniauth GitHub scope to include user email access

* Remove margin-bottom

* Implement Google OAuth2 authentication

* Implement OIDC authentication for Dawarich using omniauth_openid_connect gem.

* Add patreon account linking and patron checking service

* Update docker-compose.yml to use boolean values instead of strings

* Add support for KML files

* Add tests

* Update changelog

* Remove patreon OAuth integration

* Move omniauthable to a concern

* Update an icon in integrations

* Update changelog

* Update app version

* Fix family location sharing toggle

* Move family location sharing to its own controller

* Update changelog

* Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags.

* Add places management API and tags feature

* Add some changes related to places management feature

* Fix some tests

* Fix sometests

* Add places layer

* Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control

* Rework tag form

* Add hashtag

* Add privacy zones to tags

* Add notes to places and manage place tags

* Update changelog

* Update e2e tests

* Extract tag serializer to its own file

* Fix some tests

* Fix tags request specs

* Fix some tests

* Fix rest of the tests

* Revert some changes

* Add missing specs

* Revert changes in place export/import code

* Fix some specs

* Fix PlaceFinder to only consider global places when finding existing places

* Fix few more specs

* Fix visits creator spec

* Fix last tests

* Update place creating modal

* Add home location based on "Home" tagged place

* Save enabled tag layers

* Some fixes

* Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data

* Update migration to use disable_ddl_transaction! and add up/down methods

* Fix tag layers restoration and filtering logic

* Update OIDC auto-registration and email/password registration settings

* Fix potential xss
2025-11-24 19:45:09 +01:00

4 lines
9.3 KiB
JavaScript

// leaflet.control.layers.tree@1.2.0 downloaded from https://ga.jspm.io/npm:leaflet.control.layers.tree@1.2.0/L.Control.Layers.Tree.js
import*as e from"leaflet";var t=e;try{"default"in e&&(t=e.default)}catch(e){}var l=typeof globalThis!=="undefined"?globalThis:typeof self!=="undefined"?self:global;var s={};(function(e,l){l(s,t)})(0,(function(e,t){if(typeof t==="undefined")throw new Error("Leaflet must be included first");t.Control.Layers.Tree=t.Control.Layers.extend({options:{closedSymbol:"+",openedSymbol:"&minus;",spaceSymbol:" ",selectorBack:false,namedToggle:false,collapseAll:"",expandAll:"",labelIsSelector:"both"},_initClassesNames:function(){(this||l).cls={children:"leaflet-layerstree-children",childrenNopad:"leaflet-layerstree-children-nopad",hide:"leaflet-layerstree-hide",closed:"leaflet-layerstree-closed",opened:"leaflet-layerstree-opened",space:"leaflet-layerstree-header-space",pointer:"leaflet-layerstree-header-pointer",header:"leaflet-layerstree-header",neverShow:"leaflet-layerstree-nevershow",node:"leaflet-layerstree-node",name:"leaflet-layerstree-header-name",label:"leaflet-layerstree-header-label",selAllCheckbox:"leaflet-layerstree-sel-all-checkbox"}},initialize:function(e,s,a){(this||l)._scrollTop=0;this._initClassesNames();(this||l)._baseTree=null;(this||l)._overlaysTree=null;t.Util.setOptions(this||l,a);t.Control.Layers.prototype.initialize.call(this||l,null,null,a);this._setTrees(e,s)},setBaseTree:function(e){return this._setTrees(e)},setOverlayTree:function(e){return this._setTrees(void 0,e)},addBaseLayer:function(e,t){throw"addBaseLayer is disabled"},addOverlay:function(e,t){throw"addOverlay is disabled"},removeLayer:function(e){throw"removeLayer is disabled"},collapse:function(){(this||l)._scrollTop=this._sect().scrollTop;return t.Control.Layers.prototype.collapse.call(this||l)},expand:function(){t.Control.Layers.prototype.expand.call(this||l);this._sect().scrollTop=(this||l)._scrollTop},onAdd:function(e){function s(e){e._layersTreeName&&(r.innerHTML=e._layersTreeName)}var a=t.Control.Layers.prototype.onAdd.call(this||l,e);if((this||l).options.namedToggle){var r=(this||l)._container.getElementsByClassName("leaflet-control-layers-toggle")[0];t.DomUtil.addClass(r,"leaflet-layerstree-named-toggle");e.eachLayer((function(e){s(e)}));e.on("baselayerchange",(function(e){s(e.layer)}),this||l)}return a},expandTree:function(e){var t=e?(this||l)._overlaysList:(this||l)._baseLayersList;t&&this._applyOnTree(t,false);return this._localExpand()},collapseTree:function(e){var t=e?(this||l)._overlaysList:(this||l)._baseLayersList;t&&this._applyOnTree(t,true);return this._localExpand()},expandSelected:function(e){function s(e){var l=e.parentElement;if(l){t.DomUtil.hasClass(l,a.cls.children)&&!t.DomUtil.hasClass(e,a.cls.childrenNopad)&&t.DomUtil.removeClass(l,i);if(t.DomUtil.hasClass(l,a.cls.node)){var r=l.getElementsByClassName(a.cls.header)[0];a._applyOnTree(r,false)}s(l)}}var a=this||l;var r=e?(this||l)._overlaysList:(this||l)._baseLayersList;if(!r)return this||l;var i=(this||l).cls.hide;var n=(this||l)._layerControlInputs||r.getElementsByTagName("input");for(var o=0;o<n.length;o++){var c=n[o];(this||l)._getLayer&&!!this._getLayer(c.layerId).overlay!=!!e||c.checked&&s(c.parentElement.parentElement.parentElement.parentElement)}return this._localExpand()},_sect:function(){return(this||l)._section||(this||l)._form},_setTrees:function(e,t){var s=0;function a(e,t,l){if(e&&e.layer){l||(e.layer._layersTreeName=e.name||e.label);t[s++]=e.layer}e&&e.children&&e.children.length&&e.children.forEach((function(e){a(e,t,l)}));return t}function r(e){return Array.isArray(e)?{noShow:true,children:e}:e}(this||l)._layerControlInputs&&((this||l)._layerControlInputs=[]);for(var i=0;i<(this||l)._layers.length;++i)(this||l)._layers[i].layer.off("add remove",(this||l)._onLayerChange,this||l);(this||l)._layers=[];e!==void 0&&((this||l)._baseTree=r(e));t!==void 0&&((this||l)._overlaysTree=r(t));var n=a((this||l)._baseTree,{});for(var o in n)this._addLayer(n[o],o);var c=a((this||l)._overlaysTree,{},true);for(var h in c)this._addLayer(c[h],h,true);return(this||l)._map?this._update():this||l},_localExpand:function(){if((this||l)._map&&t.DomUtil.hasClass((this||l)._container,"leaflet-control-layers-expanded")){var e=this._sect().scrollTop;this.expand();this._sect().scrollTop=e;(this||l)._scrollTop=e}return this||l},_applyOnTree:function(e,s){var a=[{cls:(this||l).cls.children,hide:s},{cls:(this||l).cls.opened,hide:s},{cls:(this||l).cls.closed,hide:!s}];a.forEach((function(s){var a=e.getElementsByClassName(s.cls);for(var r=0;r<a.length;r++){var i=a[r];t.DomUtil.hasClass(i,(this||l).cls.childrenNopad)||(s.hide?t.DomUtil.addClass(i,(this||l).cls.hide):t.DomUtil.removeClass(i,(this||l).cls.hide))}}),this||l)},_addItem:function(e){},_update:function(){if(!(this||l)._container)return this||l;t.Control.Layers.prototype._update.call(this||l);this._addTreeLayout((this||l)._baseTree,false);this._addTreeLayout((this||l)._overlaysTree,true);return this._localExpand()},_addTreeLayout:function(e,t){if(e){var s=t?(this||l)._overlaysList:(this||l)._baseLayersList;this._expandCollapseAll(t,(this||l).options.collapseAll,(this||l).collapseTree);this._expandCollapseAll(t,(this||l).options.expandAll,(this||l).expandTree);this._iterateTreeLayout(e,s,t,[],e.noShow);(this||l)._checkDisabledLayers&&this._checkDisabledLayers()}},_expandCollapseAll:function(e,s,a,r){var i=e?(this||l)._overlaysList:(this||l)._baseLayersList;r=r||(this||l);if(s){var n=document.createElement("div");n.className="leaflet-layerstree-expand-collapse";i.appendChild(n);n.innerHTML=s;n.tabIndex=0;t.DomEvent.on(n,"click keydown",(function(t){if(t.type!=="keydown"||t.keyCode===32){n.blur();a.call(r,e);this._localExpand()}}),this||l)}},_iterateTreeLayout:function(e,s,a,r,i){if(e){var n=g("div",(this||l).cls.header,s);var o=g("span");var c=g("span");var h=g("span",(this||l).cls.closed,o,(this||l).options.closedSymbol);var d=g("span",(this||l).cls.opened,o,(this||l).options.openedSymbol);var p=g("span",(this||l).cls.space,null,(this||l).options.spaceSymbol);if((this||l).options.selectorBack){o.insertBefore(p,h);n.appendChild(c);n.appendChild(o)}else{o.appendChild(p);n.appendChild(o);n.appendChild(c)}var f;if(e.selectAllCheckbox){f=this._createCheckboxElement(false);f.className+=" "+(this||l).cls.selAllCheckbox}var y=(this||l).cls.hide;if(e.children){var u=g("div",(this||l).cls.children,s);var v=e.layer?o:n;t.DomUtil.addClass(v,(this||l).cls.pointer);v.tabIndex=0;t.DomEvent.on(v,"click keydown",(function(e){if(!(this||l)._preventClick&&(e.type!=="keydown"||e.keyCode===32)){v.blur();if(t.DomUtil.hasClass(d,y)){t.DomUtil.addClass(h,y);t.DomUtil.removeClass(d,y);t.DomUtil.removeClass(u,y)}else{t.DomUtil.removeClass(h,y);t.DomUtil.addClass(d,y);t.DomUtil.addClass(u,y)}this._localExpand()}}),this||l);f&&r.splice(0,0,s);e.children.forEach((function(e){var t=g("div",(this||l).cls.node,u);this._iterateTreeLayout(e,t,a,r)}),this||l);f&&r.splice(0,1)}else t.DomUtil.addClass(o,(this||l).cls.neverShow);var m;m=e.layer&&((this||l).options.labelIsSelector==="both"||a&&(this||l).options.labelIsSelector==="overlay"||!a&&(this||l).options.labelIsSelector==="base")?"label":"span";var _=g(m,(this||l).cls.label,c);if(e.layer){var C=(this||l)._map.hasLayer(e.layer);var b;var T=a?e.radioGroup:"leaflet-base-layers_"+t.Util.stamp(this||l);if(T)b=this._createRadioElement(T,C);else{b=this._createCheckboxElement(C);U(b,this||l)}(this||l)._layerControlInputs&&(this||l)._layerControlInputs.push(b);b.layerId=t.Util.stamp(e.layer);t.DomEvent.on(b,"click",(this||l)._onInputClick,this||l);_.appendChild(b)}if(e.selectAllCheckbox){_.appendChild(f);S(e.selectAllCheckbox)&&(f.title=e.selectAllCheckbox);t.DomEvent.on(f,"click",(function(e){e.stopPropagation();N(f.checked,this||l)}),this||l);D(s);U(f,this||l)}g("span",(this||l).cls.name,_,e.label);t.DomUtil.addClass(e.collapsed?d:h,y);e.collapsed&&u&&t.DomUtil.addClass(u,y);if(i){t.DomUtil.addClass(n,(this||l).cls.neverShow);t.DomUtil.addClass(u,(this||l).cls.childrenNopad)}var L=e.eventedClasses;L instanceof Array||(L=[L]);for(var k=0;k<L.length;k++){var x=L[k];if(x&&x.className){var E=s.querySelector("."+x.className);E&&t.DomEvent.on(E,x.event||"click",function(t){return function(a){a.stopPropagation();var r=A(t)?t(a,s,e,(this||l)._map):t;r!==void 0&&r!==null&&N(r,this||l)}}(x.selectAll),this||l)}}}function g(e,l,s,a){var r=t.DomUtil.create(e,l,s);a&&(r.innerHTML=a);return r}function D(e){var t=e.querySelector("input[type=checkbox]");var l=true;var s=true;var a=e.querySelectorAll("input[type=checkbox]");[].forEach.call(a,(function(e){if(e===t);else if(e.indeterminate){l=false;s=false}else e.checked?s=false:e.checked||(l=false)}));if(l){t.indeterminate=false;t.checked=true}else if(s){t.indeterminate=false;t.checked=false}else{t.indeterminate=true;t.checked=false}}function U(e,l){r.forEach((function(s){t.DomEvent.on(e,"click",(function(e){D(s)}),l)}),l)}function S(e){return typeof e==="string"||e instanceof String}function A(e){return e&&{}.toString.call(e)==="[object Function]"}function N(e,t){var l=s.getElementsByTagName("input");for(var a=0;a<l.length;a++){var r=l[a];if(r.type==="checkbox"){r.checked=e;r.indeterminate=false}}t._onInputClick()}},_createCheckboxElement:function(e){var t=document.createElement("input");t.type="checkbox";t.className="leaflet-control-layers-selector";t.defaultChecked=e;return t}});t.control.layers.tree=function(e,l,s){return new t.Control.Layers.Tree(e,l,s)}}));export{s as default};