Decent fix of gps-locking behaviour: single click will zoom, second click within 3sec will lock the gps location + better icons + disable of dragging while locked, fix of #458
|
@ -44,13 +44,13 @@ export default class GeoLocationHandler extends VariableUiElement {
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private readonly _leafletMap: UIEventSource<L.Map>;
|
private readonly _leafletMap: UIEventSource<L.Map>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The date when the user requested the geolocation. If we have a location, it'll autozoom to it the first 30 secs
|
* The date when the user requested the geolocation. If we have a location, it'll autozoom to it the first 30 secs
|
||||||
* @private
|
* @private
|
||||||
*/
|
*/
|
||||||
private _lastUserRequest: Date;
|
private _lastUserRequest: Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A small flag on localstorage. If the user previously granted the geolocation, it will be set.
|
* A small flag on localstorage. If the user previously granted the geolocation, it will be set.
|
||||||
* On firefox, the permissions api is broken (probably fingerprint resistiance) and "granted + don't ask again" doesn't stick between sessions.
|
* On firefox, the permissions api is broken (probably fingerprint resistiance) and "granted + don't ask again" doesn't stick between sessions.
|
||||||
|
@ -75,30 +75,57 @@ export default class GeoLocationHandler extends VariableUiElement {
|
||||||
);
|
);
|
||||||
const isActive = new UIEventSource<boolean>(false);
|
const isActive = new UIEventSource<boolean>(false);
|
||||||
const isLocked = new UIEventSource<boolean>(false);
|
const isLocked = new UIEventSource<boolean>(false);
|
||||||
|
const permission = new UIEventSource<string>("");
|
||||||
|
const lastClick = new UIEventSource<Date>(undefined);
|
||||||
|
const lastClickWithinThreeSecs = lastClick.map(lastClick => {
|
||||||
|
if (lastClick === undefined) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const timeDiff = (new Date().getTime() - lastClick.getTime()) / 1000
|
||||||
|
return timeDiff <= 3
|
||||||
|
})
|
||||||
|
lastClick.addCallbackAndRunD(_ => {
|
||||||
|
window.setTimeout(() => {
|
||||||
|
if (lastClickWithinThreeSecs.data) {
|
||||||
|
lastClick.ping()
|
||||||
|
}
|
||||||
|
}, 500)
|
||||||
|
})
|
||||||
super(
|
super(
|
||||||
hasLocation.map(
|
hasLocation.map(
|
||||||
(hasLocationData) => {
|
(hasLocationData) => {
|
||||||
let icon: BaseUIElement;
|
let icon: BaseUIElement;
|
||||||
|
console.log("Determining icon:", permission.data, isActive.data, hasLocationData, isLocked.data, lastClickWithinThreeSecs.data)
|
||||||
if (isLocked.data) {
|
if (permission.data === "denied") {
|
||||||
icon = Svg.location_svg();
|
return Svg.location_refused_svg();
|
||||||
} else if (hasLocationData) {
|
|
||||||
icon = Svg.location_empty_svg();
|
|
||||||
} else if (isActive.data) {
|
|
||||||
icon = Svg.location_empty_svg();
|
|
||||||
} else {
|
|
||||||
icon = Svg.location_circle_svg();
|
|
||||||
}
|
}
|
||||||
return icon
|
|
||||||
|
if (!isActive.data) {
|
||||||
|
return Svg.location_empty_svg()
|
||||||
|
}
|
||||||
|
if (!hasLocationData) {
|
||||||
|
// Position not yet found but we are active: we spin to indicate activity
|
||||||
|
const icon = Svg.location_empty_svg()
|
||||||
|
icon.SetStyle("animation: spin 4s linear infinite;")
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
if (isLocked.data) {
|
||||||
|
return Svg.location_locked_svg()
|
||||||
|
}
|
||||||
|
if (lastClickWithinThreeSecs.data) {
|
||||||
|
return Svg.location_unlocked_svg()
|
||||||
|
}
|
||||||
|
|
||||||
|
// We have a location, so we show a dot in the center
|
||||||
|
return Svg.location_svg();
|
||||||
},
|
},
|
||||||
[isActive, isLocked]
|
[isActive, isLocked, permission, lastClickWithinThreeSecs]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
this.SetClass("mapcontrol")
|
this.SetClass("mapcontrol")
|
||||||
this._isActive = isActive;
|
this._isActive = isActive;
|
||||||
this._isLocked = isLocked;
|
this._isLocked = isLocked;
|
||||||
this._permission = new UIEventSource<string>("");
|
this._permission = permission
|
||||||
this._previousLocationGrant = previousLocationGrant;
|
this._previousLocationGrant = previousLocationGrant;
|
||||||
this._currentGPSLocation = currentGPSLocation;
|
this._currentGPSLocation = currentGPSLocation;
|
||||||
this._leafletMap = leafletMap;
|
this._leafletMap = leafletMap;
|
||||||
|
@ -119,14 +146,39 @@ export default class GeoLocationHandler extends VariableUiElement {
|
||||||
self.SetClass(pointerClass);
|
self.SetClass(pointerClass);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
this.onClick(() => {
|
this.onClick(() => {
|
||||||
|
/*
|
||||||
|
* If the previous click was within 3 seconds (and we have an active location), then we lock to the location
|
||||||
|
*/
|
||||||
if (self._hasLocation.data) {
|
if (self._hasLocation.data) {
|
||||||
self._isLocked.setData(!self._isLocked.data);
|
if (isLocked.data) {
|
||||||
|
isLocked.setData(false)
|
||||||
|
} else if (lastClick.data !== undefined) {
|
||||||
|
const timeDiff = (new Date().getTime() - lastClick.data.getTime()) / 1000
|
||||||
|
if (timeDiff <= 3) {
|
||||||
|
isLocked.setData(true)
|
||||||
|
lastClick.setData(undefined)
|
||||||
|
} else {
|
||||||
|
lastClick.setData(new Date())
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
lastClick.setData(new Date())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.init(true);
|
self.init(true);
|
||||||
});
|
});
|
||||||
this.init(false);
|
this.init(false);
|
||||||
|
|
||||||
|
isLocked.addCallbackAndRunD(isLocked => {
|
||||||
|
if (isLocked) {
|
||||||
|
leafletMap.data?.dragging?.disable()
|
||||||
|
} else {
|
||||||
|
leafletMap.data?.dragging?.enable()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
this._currentGPSLocation.addCallback((location) => {
|
this._currentGPSLocation.addCallback((location) => {
|
||||||
self._previousLocationGrant.setData("granted");
|
self._previousLocationGrant.setData("granted");
|
||||||
|
|
||||||
|
@ -147,7 +199,7 @@ export default class GeoLocationHandler extends VariableUiElement {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
const icon = L.icon({
|
const icon = L.icon({
|
||||||
iconUrl: Img.AsData(Svg.crosshair.replace(/#000000/g, color)),
|
iconUrl: Img.AsData(Svg.location.replace(/#000000/g, color).replace(/#000/g, color)),
|
||||||
iconSize: [40, 40], // size of the icon
|
iconSize: [40, 40], // size of the icon
|
||||||
iconAnchor: [20, 20], // point of the icon which will correspond to marker's location
|
iconAnchor: [20, 20], // point of the icon which will correspond to marker's location
|
||||||
});
|
});
|
||||||
|
@ -240,6 +292,7 @@ export default class GeoLocationHandler extends VariableUiElement {
|
||||||
this._lastUserRequest = zoomToGPS ? new Date() : new Date(0);
|
this._lastUserRequest = zoomToGPS ? new Date() : new Date(0);
|
||||||
if (self._permission.data === "denied") {
|
if (self._permission.data === "denied") {
|
||||||
self._previousLocationGrant.setData("");
|
self._previousLocationGrant.setData("");
|
||||||
|
self._isActive.setData(false)
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
if (this._currentGPSLocation.data !== undefined) {
|
if (this._currentGPSLocation.data !== undefined) {
|
||||||
|
|
|
@ -23,21 +23,25 @@ export default class RightControls extends Combine {
|
||||||
);
|
);
|
||||||
|
|
||||||
const plus = new MapControlButton(
|
const plus = new MapControlButton(
|
||||||
Svg.plus_zoom_svg()
|
Svg.plus_svg(),{
|
||||||
|
dontStyle:true
|
||||||
|
}
|
||||||
).onClick(() => {
|
).onClick(() => {
|
||||||
State.state.locationControl.data.zoom++;
|
State.state.locationControl.data.zoom++;
|
||||||
State.state.locationControl.ping();
|
State.state.locationControl.ping();
|
||||||
});
|
});
|
||||||
|
|
||||||
const min = new MapControlButton(
|
const min = new MapControlButton(
|
||||||
Svg.min_zoom_svg()
|
Svg.min_svg(),{
|
||||||
|
dontStyle: true
|
||||||
|
}
|
||||||
).onClick(() => {
|
).onClick(() => {
|
||||||
State.state.locationControl.data.zoom--;
|
State.state.locationControl.data.zoom--;
|
||||||
State.state.locationControl.ping();
|
State.state.locationControl.ping();
|
||||||
});
|
});
|
||||||
|
|
||||||
super([plus, min, geolocationButton].map(el => el.SetClass("m-0.5 md:m-1")))
|
super([plus, min, geolocationButton].map(el => el.SetClass("m-0.5 md:m-1")))
|
||||||
this.SetClass("flex flex-col")
|
this.SetClass("flex flex-col items-center")
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,62 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<svg
|
|
||||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
|
||||||
xmlns:cc="http://creativecommons.org/ns#"
|
|
||||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
|
||||||
xmlns:svg="http://www.w3.org/2000/svg"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
|
||||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
version="1.1"
|
|
||||||
id="svg11"
|
|
||||||
sodipodi:docname="location-circle.svg"
|
|
||||||
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
|
||||||
<metadata
|
|
||||||
id="metadata15">
|
|
||||||
<rdf:RDF>
|
|
||||||
<cc:Work
|
|
||||||
rdf:about="">
|
|
||||||
<dc:format>image/svg+xml</dc:format>
|
|
||||||
<dc:type
|
|
||||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
|
||||||
</cc:Work>
|
|
||||||
</rdf:RDF>
|
|
||||||
</metadata>
|
|
||||||
<sodipodi:namedview
|
|
||||||
pagecolor="#ffffff"
|
|
||||||
bordercolor="#666666"
|
|
||||||
borderopacity="1"
|
|
||||||
objecttolerance="10"
|
|
||||||
gridtolerance="10"
|
|
||||||
guidetolerance="10"
|
|
||||||
inkscape:pageopacity="0"
|
|
||||||
inkscape:pageshadow="2"
|
|
||||||
inkscape:window-width="1920"
|
|
||||||
inkscape:window-height="999"
|
|
||||||
id="namedview13"
|
|
||||||
showgrid="false"
|
|
||||||
inkscape:zoom="19.666667"
|
|
||||||
inkscape:cx="15.349556"
|
|
||||||
inkscape:cy="11.585617"
|
|
||||||
inkscape:window-x="1680"
|
|
||||||
inkscape:window-y="0"
|
|
||||||
inkscape:window-maximized="1"
|
|
||||||
inkscape:current-layer="svg11" />
|
|
||||||
<defs
|
|
||||||
id="defs4">
|
|
||||||
<style
|
|
||||||
id="style2">.cls-1{fill:#000;}.cls-2{fill:none;stroke:#000;stroke-miterlimit:10;stroke-width:1.5px;}</style>
|
|
||||||
</defs>
|
|
||||||
<path
|
|
||||||
style="fill:#000000"
|
|
||||||
inkscape:connector-curvature="0"
|
|
||||||
id="path6"
|
|
||||||
d="m 12,7.71 a 4.37,4.37 0 0 1 2.4,0.73 4.3,4.3 0 0 1 1.83,4.43 4.31,4.31 0 0 1 -3.39,3.39 A 4.32,4.32 0 1 1 12,7.71 Z"
|
|
||||||
class="cls-1" />
|
|
||||||
<path
|
|
||||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.5px;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
|
|
||||||
d="M 12,3.9492188 C 5.5686003,3.954127 1.690624,11.203882 5.2558594,16.556641 h 0.00195 c 2.6718604,3.989543 7.2401435,4.412862 10.5585935,2.640625 3.318451,-1.772238 5.507368,-5.802848 3.677735,-10.2421879 l -0.002,-0.00195 C 18.236517,5.9260126 15.277212,3.9484722 12,3.9492188 Z m 0,1.5 c 2.674974,-6.094e-4 5.0825,1.6072908 6.107422,4.078125 1.553254,3.7713402 -0.246448,6.8781492 -2.998047,8.3476562 -2.751726,1.469575 -6.3350719,1.238395 -8.6054688,-2.150391 v -0.002 C 3.5579114,11.297176 6.6831292,5.4532764 12,5.4492188 Z"
|
|
||||||
id="path8"
|
|
||||||
inkscape:connector-curvature="0" />
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 3.6 KiB |
|
@ -1 +1,9 @@
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><defs><style>.cls-1{fill:#fff;}</style></defs><g id="Calque_1" data-name="Calque 1"><path class="cls-1" d="M23.86,11.25H20A8.09,8.09,0,0,0,12.77,4V.11H11.23V4A8.11,8.11,0,0,0,4,11.29H.14v1.58H4a8.06,8.06,0,0,0,7.26,7.25V24h1.54V20.11A8.06,8.06,0,0,0,20,12.86h3.83V11.25ZM12,18.55a6.45,6.45,0,0,1-3.61-1.1,6.51,6.51,0,0,1-2.77-6.69A6.59,6.59,0,0,1,7.4,7.43,6.51,6.51,0,0,1,14.49,6a6.49,6.49,0,0,1,4,6,6.52,6.52,0,0,1-1.9,4.62,6.37,6.37,0,0,1-2.12,1.42,6.49,6.49,0,0,1-2.5.5Z"/></g></svg>
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||||
|
<defs>
|
||||||
|
<style>.cls-1{fill:#000;}</style>
|
||||||
|
</defs>
|
||||||
|
<g id="Calque_1" data-name="Calque 1">
|
||||||
|
<path class="cls-1"
|
||||||
|
d="M23.86,11.25H20A8.09,8.09,0,0,0,12.77,4V.11H11.23V4A8.11,8.11,0,0,0,4,11.29H.14v1.58H4a8.06,8.06,0,0,0,7.26,7.25V24h1.54V20.11A8.06,8.06,0,0,0,20,12.86h3.83V11.25ZM12,18.55a6.45,6.45,0,0,1-3.61-1.1,6.51,6.51,0,0,1-2.77-6.69A6.59,6.59,0,0,1,7.4,7.43,6.51,6.51,0,0,1,14.49,6a6.49,6.49,0,0,1,4,6,6.52,6.52,0,0,1-1.9,4.62,6.37,6.37,0,0,1-2.12,1.42,6.49,6.49,0,0,1-2.5.5Z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
Before Width: | Height: | Size: 546 B After Width: | Height: | Size: 599 B |
40
assets/svg/location-refused.svg
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
id="svg9"
|
||||||
|
version="1.1"
|
||||||
|
viewBox="0 0 24 24">
|
||||||
|
<metadata
|
||||||
|
id="metadata13">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title></dc:title>
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<style
|
||||||
|
id="style2">.cls-1{fill:#000;}</style>
|
||||||
|
</defs>
|
||||||
|
<g
|
||||||
|
data-name="Calque 1"
|
||||||
|
id="Calque_1">
|
||||||
|
<path
|
||||||
|
id="path6"
|
||||||
|
d="M23.86,11.25H20A8.09,8.09,0,0,0,12.77,4V.11H11.23V4A8.11,8.11,0,0,0,4,11.29H.14v1.58H4a8.06,8.06,0,0,0,7.26,7.25V24h1.54V20.11A8.06,8.06,0,0,0,20,12.86h3.83V11.25ZM12,18.55a6.45,6.45,0,0,1-3.61-1.1,6.51,6.51,0,0,1-2.77-6.69A6.59,6.59,0,0,1,7.4,7.43,6.51,6.51,0,0,1,14.49,6a6.49,6.49,0,0,1,4,6,6.52,6.52,0,0,1-1.9,4.62,6.37,6.37,0,0,1-2.12,1.42,6.49,6.49,0,0,1-2.5.5Z"
|
||||||
|
class="cls-1" />
|
||||||
|
</g>
|
||||||
|
<path
|
||||||
|
id="path820"
|
||||||
|
d="M 3.1887134,2.3641419 A 0.53296954,0.53296954 0 0 0 2.8473139,3.2696832 L 19.973494,21.261852 a 0.53302379,0.53302379 0 1 0 0.772311,-0.734841 L 3.6196261,2.5348416 A 0.53296954,0.53296954 0 0 0 3.1887134,2.3641419 Z"
|
||||||
|
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#bd0f00;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff !important;stroke-width:0.42633301;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
|
@ -1,4 +1,60 @@
|
||||||
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
<path d="M23.7304 11.1411H19.8992C19.7137 9.27763 18.8888 7.53597 17.5647 6.21181C16.2405 4.88765 14.4988 4.06268 12.6353 3.87719V0H11.1029V3.91554C9.2389 4.09962 7.49635 4.92404 6.17192 6.24847C4.84748 7.5729 4.02306 9.31545 3.83898 11.1794H0.0078125V12.7579H3.83898C4.02191 14.6215 4.84615 16.3639 6.17098 17.6874C7.49581 19.0108 9.23903 19.8331 11.1029 20.0141V23.8376H12.6353V20.0064C14.4986 19.8241 16.2411 19.0012 17.5656 17.678C18.8902 16.3548 19.7149 14.6134 19.8992 12.7502H23.7304V11.1717V11.1411ZM11.8614 18.4433C10.5736 18.4418 9.31515 18.0586 8.24511 17.342C7.17506 16.6254 6.34147 15.6076 5.84969 14.4174C5.35791 13.2272 5.23002 11.918 5.48219 10.6551C5.73436 9.39217 6.35529 8.23234 7.26646 7.32225C8.17762 6.41216 9.33805 5.7926 10.6012 5.54191C11.8644 5.29123 13.1736 5.42063 14.3633 5.91381C15.5529 6.40698 16.5696 7.24189 17.2849 8.31278C18.0002 9.38366 18.3821 10.6425 18.3821 11.9303C18.3851 12.7885 18.2187 13.639 17.8923 14.4327C17.566 15.2265 17.0861 15.948 16.4803 16.556C15.8745 17.1639 15.1547 17.6463 14.3621 17.9754C13.5694 18.3046 12.7197 18.474 11.8614 18.474V18.4433Z" fill="white"/>
|
<svg
|
||||||
<path d="M11.8613 7.61646C12.7145 7.61646 13.5485 7.86939 14.2579 8.3434C14.9673 8.81742 15.5203 9.49112 15.8468 10.2794C16.1733 11.0676 16.2587 11.9351 16.0923 12.7719C15.9258 13.6087 15.5149 14.3773 14.9116 14.9806C14.3083 15.5839 13.5397 15.9949 12.7029 16.1614C11.8661 16.3278 10.9986 16.2423 10.2104 15.9158C9.42212 15.5893 8.74842 15.0364 8.27441 14.327C7.80039 13.6176 7.54736 12.7835 7.54736 11.9303C7.54939 10.7868 8.0045 9.69074 8.81307 8.88216C9.62164 8.07359 10.7178 7.61848 11.8613 7.61646Z" fill="white"/>
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
version="1.1"
|
||||||
|
id="svg6"
|
||||||
|
sodipodi:docname="location.svg"
|
||||||
|
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||||
|
<metadata
|
||||||
|
id="metadata12">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs10" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="844"
|
||||||
|
inkscape:window-height="480"
|
||||||
|
id="namedview8"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="9.8333333"
|
||||||
|
inkscape:cx="12"
|
||||||
|
inkscape:cy="12"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="0"
|
||||||
|
inkscape:current-layer="svg6" />
|
||||||
|
<path
|
||||||
|
d="M23.7304 11.1411H19.8992C19.7137 9.27763 18.8888 7.53597 17.5647 6.21181C16.2405 4.88765 14.4988 4.06268 12.6353 3.87719V0H11.1029V3.91554C9.2389 4.09962 7.49635 4.92404 6.17192 6.24847C4.84748 7.5729 4.02306 9.31545 3.83898 11.1794H0.0078125V12.7579H3.83898C4.02191 14.6215 4.84615 16.3639 6.17098 17.6874C7.49581 19.0108 9.23903 19.8331 11.1029 20.0141V23.8376H12.6353V20.0064C14.4986 19.8241 16.2411 19.0012 17.5656 17.678C18.8902 16.3548 19.7149 14.6134 19.8992 12.7502H23.7304V11.1717V11.1411ZM11.8614 18.4433C10.5736 18.4418 9.31515 18.0586 8.24511 17.342C7.17506 16.6254 6.34147 15.6076 5.84969 14.4174C5.35791 13.2272 5.23002 11.918 5.48219 10.6551C5.73436 9.39217 6.35529 8.23234 7.26646 7.32225C8.17762 6.41216 9.33805 5.7926 10.6012 5.54191C11.8644 5.29123 13.1736 5.42063 14.3633 5.91381C15.5529 6.40698 16.5696 7.24189 17.2849 8.31278C18.0002 9.38366 18.3821 10.6425 18.3821 11.9303C18.3851 12.7885 18.2187 13.639 17.8923 14.4327C17.566 15.2265 17.0861 15.948 16.4803 16.556C15.8745 17.1639 15.1547 17.6463 14.3621 17.9754C13.5694 18.3046 12.7197 18.474 11.8614 18.474V18.4433Z"
|
||||||
|
fill="#000"
|
||||||
|
id="path2" />
|
||||||
|
<path
|
||||||
|
d="m 11.861295,8.2266295 c 0.73252,0 1.448557,0.2171548 2.057617,0.6241194 0.609061,0.4069732 1.083843,0.985383 1.364161,1.6621661 0.280319,0.676715 0.35364,1.421513 0.210776,2.139953 -0.14295,0.718441 -0.495731,1.378328 -1.013698,1.896295 -0.517968,0.517968 -1.177854,0.870835 -1.896295,1.013784 -0.71844,0.142864 -1.463239,0.06946 -2.139953,-0.210861 C 9.7671196,15.071767 9.1887098,14.597071 8.7817452,13.98801 8.374772,13.37895 8.1575313,12.662828 8.1575313,11.930307 8.1592742,10.948547 8.5500121,10.007517 9.2442155,9.313305 9.9384189,8.6191016 10.879535,8.2283638 11.861295,8.2266295 Z"
|
||||||
|
id="path4"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
style="fill:#000000;stroke-width:0.85855699" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 3.2 KiB |
61
assets/svg/location_locked.svg
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
version="1.1"
|
||||||
|
id="svg6"
|
||||||
|
sodipodi:docname="location_locked.svg"
|
||||||
|
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||||
|
<metadata
|
||||||
|
id="metadata12">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs10" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="999"
|
||||||
|
id="namedview8"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="19.666667"
|
||||||
|
inkscape:cx="-0.65655236"
|
||||||
|
inkscape:cy="17.070597"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg6" />
|
||||||
|
<path
|
||||||
|
d="M23.7304 11.1411H19.8992C19.7137 9.27763 18.8888 7.53597 17.5647 6.21181C16.2405 4.88765 14.4988 4.06268 12.6353 3.87719V0H11.1029V3.91554C9.2389 4.09962 7.49635 4.92404 6.17192 6.24847C4.84748 7.5729 4.02306 9.31545 3.83898 11.1794H0.0078125V12.7579H3.83898C4.02191 14.6215 4.84615 16.3639 6.17098 17.6874C7.49581 19.0108 9.23903 19.8331 11.1029 20.0141V23.8376H12.6353V20.0064C14.4986 19.8241 16.2411 19.0012 17.5656 17.678C18.8902 16.3548 19.7149 14.6134 19.8992 12.7502H23.7304V11.1717V11.1411ZM11.8614 18.4433C10.5736 18.4418 9.31515 18.0586 8.24511 17.342C7.17506 16.6254 6.34147 15.6076 5.84969 14.4174C5.35791 13.2272 5.23002 11.918 5.48219 10.6551C5.73436 9.39217 6.35529 8.23234 7.26646 7.32225C8.17762 6.41216 9.33805 5.7926 10.6012 5.54191C11.8644 5.29123 13.1736 5.42063 14.3633 5.91381C15.5529 6.40698 16.5696 7.24189 17.2849 8.31278C18.0002 9.38366 18.3821 10.6425 18.3821 11.9303C18.3851 12.7885 18.2187 13.639 17.8923 14.4327C17.566 15.2265 17.0861 15.948 16.4803 16.556C15.8745 17.1639 15.1547 17.6463 14.3621 17.9754C13.5694 18.3046 12.7197 18.474 11.8614 18.474V18.4433Z"
|
||||||
|
fill="#000"
|
||||||
|
id="path2" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:0.98823529;stroke-width:0.53433436"
|
||||||
|
inkscape:connector-curvature="0"
|
||||||
|
d="m 14.928466,10.673833 h -0.57 v -1.86213 c 0,0 0,-2.679815 -2.663551,-2.679815 -2.6635515,0 -2.6635515,2.679815 -2.6635515,2.679815 v 1.86213 H 8.4613637 c -0.5678217,0 -1.0281318,0.463122 -1.0281309,1.034411 v 4.113868 c 0.00293,0.569195 0.4623832,1.029059 1.0281309,1.029051 h 6.4671023 c 0.567825,0 1.028136,-0.463127 1.028131,-1.034419 v -4.1085 c 10e-7,-0.571289 -0.460309,-1.034411 -1.028131,-1.034411 z m -3.233551,4.033472 c -0.949256,0 -1.424471,-1.154617 -0.753325,-1.829857 0.671145,-0.67524 1.818751,-0.197116 1.818746,0.757936 -3e-6,0.592007 -0.477007,1.071921 -1.065421,1.071921 z m 1.598132,-4.033472 H 10.096784 V 9.0796843 c 0,-0.8039373 0,-1.8758671 1.598131,-1.8758671 1.598132,0 1.598132,1.0719298 1.598132,1.8758671 z"
|
||||||
|
id="path822"
|
||||||
|
sodipodi:nodetypes="sccsccscccsccsssssccsssc" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.5 KiB |
59
assets/svg/location_unlocked.svg
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="24"
|
||||||
|
height="24"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
version="1.1"
|
||||||
|
id="svg6"
|
||||||
|
sodipodi:docname="location_unlocked.svg"
|
||||||
|
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
|
||||||
|
<metadata
|
||||||
|
id="metadata12">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<defs
|
||||||
|
id="defs10" />
|
||||||
|
<sodipodi:namedview
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1"
|
||||||
|
objecttolerance="10"
|
||||||
|
gridtolerance="10"
|
||||||
|
guidetolerance="10"
|
||||||
|
inkscape:pageopacity="0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="999"
|
||||||
|
id="namedview8"
|
||||||
|
showgrid="false"
|
||||||
|
inkscape:zoom="39.333334"
|
||||||
|
inkscape:cx="9.6942243"
|
||||||
|
inkscape:cy="14.719784"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="0"
|
||||||
|
inkscape:window-maximized="1"
|
||||||
|
inkscape:current-layer="svg6" />
|
||||||
|
<path
|
||||||
|
d="M23.7304 11.1411H19.8992C19.7137 9.27763 18.8888 7.53597 17.5647 6.21181C16.2405 4.88765 14.4988 4.06268 12.6353 3.87719V0H11.1029V3.91554C9.2389 4.09962 7.49635 4.92404 6.17192 6.24847C4.84748 7.5729 4.02306 9.31545 3.83898 11.1794H0.0078125V12.7579H3.83898C4.02191 14.6215 4.84615 16.3639 6.17098 17.6874C7.49581 19.0108 9.23903 19.8331 11.1029 20.0141V23.8376H12.6353V20.0064C14.4986 19.8241 16.2411 19.0012 17.5656 17.678C18.8902 16.3548 19.7149 14.6134 19.8992 12.7502H23.7304V11.1717V11.1411ZM11.8614 18.4433C10.5736 18.4418 9.31515 18.0586 8.24511 17.342C7.17506 16.6254 6.34147 15.6076 5.84969 14.4174C5.35791 13.2272 5.23002 11.918 5.48219 10.6551C5.73436 9.39217 6.35529 8.23234 7.26646 7.32225C8.17762 6.41216 9.33805 5.7926 10.6012 5.54191C11.8644 5.29123 13.1736 5.42063 14.3633 5.91381C15.5529 6.40698 16.5696 7.24189 17.2849 8.31278C18.0002 9.38366 18.3821 10.6425 18.3821 11.9303C18.3851 12.7885 18.2187 13.639 17.8923 14.4327C17.566 15.2265 17.0861 15.948 16.4803 16.556C15.8745 17.1639 15.1547 17.6463 14.3621 17.9754C13.5694 18.3046 12.7197 18.474 11.8614 18.474V18.4433Z"
|
||||||
|
fill="#000"
|
||||||
|
id="path2" />
|
||||||
|
<path
|
||||||
|
style="fill:#000000;fill-opacity:0.98823529;stroke-width:0.53433436"
|
||||||
|
d="M 11.695312 6.1328125 C 9.031761 6.1328125 9.03125 8.8125 9.03125 8.8125 L 9.03125 10.673828 L 8.4609375 10.673828 C 7.8931158 10.673828 7.4335928 11.137695 7.4335938 11.708984 L 7.4335938 15.822266 C 7.4365238 16.391461 7.8951898 16.85157 8.4609375 16.851562 L 14.927734 16.851562 C 15.495559 16.851562 15.957036 16.387698 15.957031 15.816406 L 15.957031 11.708984 C 15.957032 11.137695 15.495556 10.673828 14.927734 10.673828 L 14.359375 10.673828 L 14.359375 10.660156 L 13.292969 10.660156 L 13.292969 10.673828 L 10.097656 10.673828 L 10.097656 9.0800781 C 10.097656 8.2761408 10.097181 7.203125 11.695312 7.203125 C 12.676883 7.203125 13.053119 7.6091325 13.199219 8.1074219 L 14.251953 8.1074219 C 14.055009 7.3134035 13.472082 6.1328125 11.695312 6.1328125 z M 11.8125 12.568359 C 12.312566 12.627521 12.759769 13.037858 12.759766 13.634766 C 12.759763 14.226773 12.283727 14.707031 11.695312 14.707031 C 10.746056 14.707031 10.27026 13.552193 10.941406 12.876953 C 11.193086 12.623738 11.51246 12.532862 11.8125 12.568359 z "
|
||||||
|
id="path822" />
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.7 KiB |
|
@ -1,3 +0,0 @@
|
||||||
<svg width="22" height="22" viewBox="0 0 22 22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path d="M15.346 13.5045H14.3761L14.0324 13.173C15.2355 11.7734 15.9598 9.95647 15.9598 7.97991C15.9598 3.57254 12.3873 0 7.97991 0C3.57254 0 0 3.57254 0 7.97991C0 12.3873 3.57254 15.9598 7.97991 15.9598C9.95647 15.9598 11.7734 15.2355 13.173 14.0324L13.5045 14.3761V15.346L19.6429 21.4721L21.4721 19.6429L15.346 13.5045ZM7.97991 13.5045C4.92299 13.5045 2.45536 11.0368 2.45536 7.97991C2.45536 4.92299 4.92299 2.45536 7.97991 2.45536C11.0368 2.45536 13.5045 4.92299 13.5045 7.97991C13.5045 11.0368 11.0368 13.5045 7.97991 13.5045ZM4.91071 7.36607H11.0491V8.59375H4.91071V7.36607Z" fill="white"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 699 B |
|
@ -1,5 +0,0 @@
|
||||||
<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path d="M16.0291 14.1876H15.0592L14.7155 13.8561C15.9186 12.4565 16.6429 10.6396 16.6429 8.66302C16.6429 4.25565 13.0704 0.683105 8.66302 0.683105C4.25565 0.683105 0.683105 4.25565 0.683105 8.66302C0.683105 13.0704 4.25565 16.6429 8.66302 16.6429C10.6396 16.6429 12.4565 15.9186 13.8561 14.7155L14.1876 15.0592V16.0291L20.326 22.1552L22.1552 20.326L16.0291 14.1876ZM8.66302 14.1876C5.6061 14.1876 3.13846 11.7199 3.13846 8.66302C3.13846 5.6061 5.6061 3.13846 8.66302 3.13846C11.7199 3.13846 14.1876 5.6061 14.1876 8.66302C14.1876 11.7199 11.7199 14.1876 8.66302 14.1876Z" fill="black"/>
|
|
||||||
<path d="M16.0291 14.1876H15.0592L14.7155 13.8561C15.9186 12.4565 16.6429 10.6396 16.6429 8.66302C16.6429 4.25565 13.0704 0.683105 8.66302 0.683105C4.25565 0.683105 0.683105 4.25565 0.683105 8.66302C0.683105 13.0704 4.25565 16.6429 8.66302 16.6429C10.6396 16.6429 12.4565 15.9186 13.8561 14.7155L14.1876 15.0592V16.0291L20.326 22.1552L22.1552 20.326L16.0291 14.1876ZM8.66302 14.1876C5.6061 14.1876 3.13846 11.7199 3.13846 8.66302C3.13846 5.6061 5.6061 3.13846 8.66302 3.13846C11.7199 3.13846 14.1876 5.6061 14.1876 8.66302C14.1876 11.7199 11.7199 14.1876 8.66302 14.1876Z" fill="white"/>
|
|
||||||
<path d="M11.7321 9.27679H9.27679V11.7321H8.04911V9.27679H5.59375V8.04911H8.04911V5.59375H9.27679V8.04911H11.7321V9.27679Z" fill="white"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.4 KiB |