extra layout changes

This commit is contained in:
Ward 2021-07-27 15:51:47 +02:00
parent 5d4e98dcf9
commit 93e1c60720
10 changed files with 991 additions and 15888 deletions

File diff suppressed because it is too large Load diff

37
Logic/Actors/ExportPDF.ts Normal file
View file

@ -0,0 +1,37 @@
/**
* Creates screenshoter to take png screenshot
* Creates jspdf and downloads it
* - landscape pdf
*
* To add new layout:
* - add new possible layout name in constructor
* - add new layout in "PDFLayout"
* -> in there are more instructions
*/
import jsPDF from "jspdf";
import { SimpleMapScreenshoter } from "leaflet-simple-map-screenshoter";
import State from "../../State";
import Minimap from "../../UI/Base/Minimap";
import { PDFLayout } from "./PDFLayout";
export default class ExportPDF {
constructor(
name: string,
layout: "natuurpunt"
){
const screenshotter = new SimpleMapScreenshoter();
//let temporaryMap = new Minimap();
//temporaryMap.SetStyle('visibility: hidden');
//temporaryMap.AttachTo("tempScreenshotDiv");
//minimap op index.html -> hidden daar alles op doen en dan weg
//minimap - leaflet map ophalen - boundaries ophalen - State.state.featurePipeline
screenshotter.addTo(State.state.leafletMap.data);
let doc = new jsPDF('l');
screenshotter.takeScreen('image').then(image => {
let file = new PDFLayout();
file.AddLayout(layout, doc, image);
doc.save(name);
})
}
}

View file

@ -1,271 +1,266 @@
import * as L from "leaflet";
import {UIEventSource} from "../UIEventSource";
import { UIEventSource } from "../UIEventSource";
import Svg from "../../Svg";
import Img from "../../UI/Base/Img";
import {LocalStorageSource} from "../Web/LocalStorageSource";
import { LocalStorageSource } from "../Web/LocalStorageSource";
import LayoutConfig from "../../Customizations/JSON/LayoutConfig";
import {VariableUiElement} from "../../UI/Base/VariableUIElement";
import {CenterFlexedElement} from "../../UI/Base/CenterFlexedElement";
import { VariableUiElement } from "../../UI/Base/VariableUIElement";
import { CenterFlexedElement } from "../../UI/Base/CenterFlexedElement";
export default class GeoLocationHandler extends VariableUiElement {
/**
* Wether or not the geolocation is active, aka the user requested the current location
* @private
*/
private readonly _isActive: UIEventSource<boolean>;
/**
* Wether or not the geolocation is active, aka the user requested the current location
* @private
*/
private readonly _isActive: UIEventSource<boolean>;
/**
* Wether or not the geolocation is locked, aka the user requested the current location and wants the crosshair to follow the user
* @private
*/
private readonly _isLocked: UIEventSource<boolean>;
/**
* Wether or not the geolocation is locked, aka the user requested the current location and wants the crosshair to follow the user
* @private
*/
private readonly _isLocked: UIEventSource<boolean>;
/**
* The callback over the permission API
* @private
*/
private readonly _permission: UIEventSource<string>;
/**
* The callback over the permission API
* @private
*/
private readonly _permission: UIEventSource<string>;
/***
* The marker on the map, in order to update it
* @private
*/
private _marker: L.Marker;
/**
* Literally: _currentGPSLocation.data != undefined
* @private
*/
private readonly _hasLocation: UIEventSource<boolean>;
private readonly _currentGPSLocation: UIEventSource<{
latlng: any;
accuracy: number;
}>;
/**
* Kept in order to update the marker
* @private
*/
private readonly _leafletMap: UIEventSource<L.Map>;
/***
* The marker on the map, in order to update it
* @private
*/
private _marker: L.Marker;
/**
* Literally: _currentGPSLocation.data != undefined
* @private
*/
private readonly _hasLocation: UIEventSource<boolean>;
private readonly _currentGPSLocation: UIEventSource<{
latlng: any;
accuracy: number;
}>;
/**
* Kept in order to update the marker
* @private
*/
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
* @private
*/
private _lastUserRequest: Date;
/**
* 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.
*
* Instead, we set this flag. If this flag is set upon loading the page, we start geolocating immediately.
* If the user denies the geolocation this time, we unset this flag
* @private
*/
private readonly _previousLocationGrant: UIEventSource<string>;
private readonly _layoutToUse: UIEventSource<LayoutConfig>;
/**
* The date when the user requested the geolocation. If we have a location, it'll autozoom to it the first 30 secs
* @private
*/
private _lastUserRequest: Date;
constructor(
currentGPSLocation: UIEventSource<{ latlng: any; accuracy: number }>,
leafletMap: UIEventSource<L.Map>,
layoutToUse: UIEventSource<LayoutConfig>
) {
const hasLocation = currentGPSLocation.map(
(location) => location !== undefined
);
const previousLocationGrant = LocalStorageSource.Get(
"geolocation-permissions"
);
const isActive = new UIEventSource<boolean>(false);
const isLocked = new UIEventSource<boolean>(false);
super(
hasLocation.map(
(hasLocationData) => {
let icon: string;
if (isLocked.data) {
icon = Svg.location;
} else if (hasLocationData) {
icon = Svg.crosshair_blue;
} else if (isActive.data) {
icon = Svg.crosshair_blue_center;
} else {
icon = Svg.crosshair;
}
/**
* 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.
*
* Instead, we set this flag. If this flag is set upon loading the page, we start geolocating immediately.
* If the user denies the geolocation this time, we unset this flag
* @private
*/
private readonly _previousLocationGrant: UIEventSource<string>;
private readonly _layoutToUse: UIEventSource<LayoutConfig>;
return new CenterFlexedElement(
Img.AsImageElement(icon, "", "width:1.25rem;height:1.25rem")
);
},
[isActive, isLocked]
)
);
this._isActive = isActive;
this._isLocked = isLocked;
this._permission = new UIEventSource<string>("");
this._previousLocationGrant = previousLocationGrant;
this._currentGPSLocation = currentGPSLocation;
this._leafletMap = leafletMap;
this._layoutToUse = layoutToUse;
this._hasLocation = hasLocation;
const self = this;
constructor(
currentGPSLocation: UIEventSource<{ latlng: any; accuracy: number }>,
leafletMap: UIEventSource<L.Map>,
layoutToUse: UIEventSource<LayoutConfig>
) {
const hasLocation = currentGPSLocation.map(
(location) => location !== undefined
const currentPointer = this._isActive.map(
(isActive) => {
if (isActive && !self._hasLocation.data) {
return "cursor-wait";
}
return "cursor-pointer";
},
[this._hasLocation]
);
currentPointer.addCallbackAndRun((pointerClass) => {
self.SetClass(pointerClass);
});
this.onClick(() => {
if (self._hasLocation.data) {
self._isLocked.setData(!self._isLocked.data);
}
self.init(true);
});
this.init(false);
this._currentGPSLocation.addCallback((location) => {
self._previousLocationGrant.setData("granted");
const timeSinceRequest =
(new Date().getTime() - (self._lastUserRequest?.getTime() ?? 0)) / 1000;
if (timeSinceRequest < 30) {
self.MoveToCurrentLoction(16);
} else if (self._isLocked.data) {
self.MoveToCurrentLoction();
}
let color = "#1111cc";
try {
color = getComputedStyle(document.body).getPropertyValue(
"--catch-detail-color"
);
const previousLocationGrant = LocalStorageSource.Get(
"geolocation-permissions"
);
const isActive = new UIEventSource<boolean>(false);
const isLocked = new UIEventSource<boolean>(false);
super(
hasLocation.map(
(hasLocationData) => {
let icon: string;
} catch (e) {
console.error(e);
}
const icon = L.icon({
iconUrl: Img.AsData(Svg.crosshair.replace(/#000000/g, color)),
iconSize: [40, 40], // size of the icon
iconAnchor: [20, 20], // point of the icon which will correspond to marker's location
});
if (isLocked.data) {
icon = Svg.crosshair_locked;
} else if (hasLocationData) {
icon = Svg.crosshair_blue;
} else if (isActive.data) {
icon = Svg.crosshair_blue_center;
} else {
icon = Svg.crosshair;
}
const map = self._leafletMap.data;
return new CenterFlexedElement(
Img.AsImageElement(icon, "", "width:1.25rem;height:1.25rem")
);
const newMarker = L.marker(location.latlng, { icon: icon });
newMarker.addTo(map);
},
[isActive, isLocked]
)
);
this._isActive = isActive;
this._isLocked = isLocked;
this._permission = new UIEventSource<string>("");
this._previousLocationGrant = previousLocationGrant;
this._currentGPSLocation = currentGPSLocation;
this._leafletMap = leafletMap;
this._layoutToUse = layoutToUse;
this._hasLocation = hasLocation;
const self = this;
if (self._marker !== undefined) {
map.removeLayer(self._marker);
}
self._marker = newMarker;
});
}
const currentPointer = this._isActive.map(
(isActive) => {
if (isActive && !self._hasLocation.data) {
return "cursor-wait";
}
return "cursor-pointer";
},
[this._hasLocation]
);
currentPointer.addCallbackAndRun((pointerClass) => {
self.SetClass(pointerClass);
});
this.onClick(() => {
if (self._hasLocation.data) {
self._isLocked.setData(!self._isLocked.data);
}
self.init(true);
});
this.init(false);
this._currentGPSLocation.addCallback((location) => {
self._previousLocationGrant.setData("granted");
const timeSinceRequest =
(new Date().getTime() - (self._lastUserRequest?.getTime() ?? 0)) / 1000;
if (timeSinceRequest < 30) {
self.MoveToCurrentLoction(16);
} else if (self._isLocked.data) {
self.MoveToCurrentLoction();
}
let color = "#1111cc";
try {
color = getComputedStyle(document.body).getPropertyValue(
"--catch-detail-color"
);
} catch (e) {
console.error(e);
}
const icon = L.icon({
iconUrl: Img.AsData(Svg.crosshair.replace(/#000000/g, color)),
iconSize: [40, 40], // size of the icon
iconAnchor: [20, 20], // point of the icon which will correspond to marker's location
});
const map = self._leafletMap.data;
const newMarker = L.marker(location.latlng, {icon: icon});
newMarker.addTo(map);
if (self._marker !== undefined) {
map.removeLayer(self._marker);
}
self._marker = newMarker;
});
private init(askPermission: boolean) {
const self = this;
if (self._isActive.data) {
self.MoveToCurrentLoction(16);
return;
}
private init(askPermission: boolean) {
const self = this;
if (self._isActive.data) {
self.MoveToCurrentLoction(16);
return;
}
try {
navigator?.permissions
?.query({name: "geolocation"})
?.then(function (status) {
console.log("Geolocation is already", status);
if (status.state === "granted") {
self.StartGeolocating(false);
}
self._permission.setData(status.state);
status.onchange = function () {
self._permission.setData(status.state);
};
});
} catch (e) {
console.error(e);
}
if (askPermission) {
self.StartGeolocating(true);
} else if (this._previousLocationGrant.data === "granted") {
this._previousLocationGrant.setData("");
try {
navigator?.permissions
?.query({ name: "geolocation" })
?.then(function (status) {
console.log("Geolocation is already", status);
if (status.state === "granted") {
self.StartGeolocating(false);
}
}
self._permission.setData(status.state);
status.onchange = function () {
self._permission.setData(status.state);
};
});
} catch (e) {
console.error(e);
}
if (askPermission) {
self.StartGeolocating(true);
} else if (this._previousLocationGrant.data === "granted") {
this._previousLocationGrant.setData("");
self.StartGeolocating(false);
}
}
private MoveToCurrentLoction(targetZoom = 16) {
const location = this._currentGPSLocation.data;
this._lastUserRequest = undefined;
if (
this._currentGPSLocation.data.latlng[0] === 0 &&
this._currentGPSLocation.data.latlng[1] === 0
) {
console.debug("Not moving to GPS-location: it is null island");
return;
}
private MoveToCurrentLoction(targetZoom = 16) {
const location = this._currentGPSLocation.data;
this._lastUserRequest = undefined;
// We check that the GPS location is not out of bounds
const b = this._layoutToUse.data.lockLocation;
let inRange = true;
if (b) {
if (b !== true) {
// B is an array with our locklocation
inRange =
b[0][0] <= location.latlng[0] &&
location.latlng[0] <= b[1][0] &&
b[0][1] <= location.latlng[1] &&
location.latlng[1] <= b[1][1];
}
}
if (!inRange) {
console.log(
"Not zooming to GPS location: out of bounds",
b,
location.latlng
);
} else {
this._leafletMap.data.setView(location.latlng, targetZoom);
}
}
if (
this._currentGPSLocation.data.latlng[0] === 0 &&
this._currentGPSLocation.data.latlng[1] === 0
) {
console.debug("Not moving to GPS-location: it is null island");
return;
}
private StartGeolocating(zoomToGPS = true) {
const self = this;
console.log("Starting geolocation");
// We check that the GPS location is not out of bounds
const b = this._layoutToUse.data.lockLocation;
let inRange = true;
if (b) {
if (b !== true) {
// B is an array with our locklocation
inRange =
b[0][0] <= location.latlng[0] &&
location.latlng[0] <= b[1][0] &&
b[0][1] <= location.latlng[1] &&
location.latlng[1] <= b[1][1];
}
}
if (!inRange) {
console.log(
"Not zooming to GPS location: out of bounds",
b,
location.latlng
);
} else {
this._leafletMap.data.setView(location.latlng, targetZoom);
}
this._lastUserRequest = zoomToGPS ? new Date() : new Date(0);
if (self._permission.data === "denied") {
self._previousLocationGrant.setData("");
return "";
}
if (this._currentGPSLocation.data !== undefined) {
this.MoveToCurrentLoction(16);
}
private StartGeolocating(zoomToGPS = true) {
const self = this;
console.log("Starting geolocation");
console.log("Searching location using GPS");
this._lastUserRequest = zoomToGPS ? new Date() : new Date(0);
if (self._permission.data === "denied") {
self._previousLocationGrant.setData("");
return "";
}
if (this._currentGPSLocation.data !== undefined) {
this.MoveToCurrentLoction(16);
}
console.log("Searching location using GPS");
if (self._isActive.data) {
return;
}
self._isActive.setData(true);
navigator.geolocation.watchPosition(
function (position) {
self._currentGPSLocation.setData({
latlng: [position.coords.latitude, position.coords.longitude],
accuracy: position.coords.accuracy,
});
},
function () {
console.warn("Could not get location with navigator.geolocation");
}
);
if (self._isActive.data) {
return;
}
self._isActive.setData(true);
navigator.geolocation.watchPosition(
function (position) {
self._currentGPSLocation.setData({
latlng: [position.coords.latitude, position.coords.longitude],
accuracy: position.coords.accuracy,
});
},
function () {
console.warn("Could not get location with navigator.geolocation");
}
);
}
}

20
Logic/Actors/PDFLayout.ts Normal file
View file

@ -0,0 +1,20 @@
/**
* Adds a theme to the pdf
*/
import jsPDF from "jspdf";
export class PDFLayout {
public AddLayout(layout: string, doc: jsPDF, image: Blob){
if(layout === "natuurpunt") this.AddNatuurpuntLayout(doc, image);
}
public AddNatuurpuntLayout(doc: jsPDF, image: Blob){
// Add Natuurpunt layout
const screenRatio = screen.width/screen.height;
let img = document.createElement('img');
img.src = './assets/themes/natuurpunt/natuurpunt.png';
doc.addImage(img, 'PNG', 15, 5, 20, 20);
doc.addImage(image, 'PNG', 15, 30, 150*screenRatio, 150);
return doc;
}
}

12
Svg.ts
View file

@ -24,6 +24,11 @@ export default class Svg {
public static ampersand_svg() { return new Img(Svg.ampersand, true);}
public static ampersand_ui() { return new FixedUiElement(Svg.ampersand_img);}
public static arrow_download = "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"22.849\" viewBox=\"0 0 20 22.849\"> <path id=\"Path_arrow-collapse-down\" data-name=\"Path / arrow-collapse-down\" d=\"M19.92,12.08l-5.264,5.264L12,20,4.08,12.08,5.5,10.67l5.5,5.5V2h2V16.17l5.5-5.51,1.42,1.42M12,22.849H2v2H22v-2Z\" transform=\"translate(-2 -2)\" fill=\"#fff\"/> </svg> "
public static arrow_download_img = Img.AsImageElement(Svg.arrow_download)
public static arrow_download_svg() { return new Img(Svg.arrow_download, true);}
public static arrow_download_ui() { return new FixedUiElement(Svg.arrow_download_img);}
public static arrow_left_smooth = " <!-- Created with Inkscape (http://www.inkscape.org/) --> <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=\"100\" height=\"100\" viewBox=\"0 0 26.458333 26.458334\" version=\"1.1\" id=\"svg8\" sodipodi:docname=\"arrow-left-smooth.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"> <defs id=\"defs2\" /> <sodipodi:namedview id=\"base\" pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1.0\" inkscape:pageopacity=\"0.0\" inkscape:pageshadow=\"2\" inkscape:zoom=\"4\" inkscape:cx=\"19.262262\" inkscape:cy=\"36.323203\" inkscape:document-units=\"px\" inkscape:current-layer=\"layer1\" showgrid=\"false\" units=\"px\" showguides=\"true\" inkscape:guide-bbox=\"true\" inkscape:window-width=\"1920\" inkscape:window-height=\"1001\" inkscape:window-x=\"0\" inkscape:window-y=\"0\" inkscape:window-maximized=\"1\"> <sodipodi:guide position=\"13.229167,23.859748\" orientation=\"1,0\" id=\"guide815\" inkscape:locked=\"false\" /> <sodipodi:guide position=\"14.944824,13.229167\" orientation=\"0,1\" id=\"guide817\" inkscape:locked=\"false\" /> </sodipodi:namedview> <metadata id=\"metadata5\"> <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> <g inkscape:label=\"Layer 1\" inkscape:groupmode=\"layer\" id=\"layer1\" transform=\"translate(0,-270.54165)\"> <path style=\"fill: none !important;stroke:#ffffff;stroke-width:3.59588718;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" d=\"m 20.139011,294.16029 c 0,0 -13.7995299,-7.53922 -13.8484369,-10.36091 -0.04891,-2.82169 13.8484369,-10.38607 13.8484369,-10.38607\" id=\"path821\" inkscape:connector-curvature=\"0\" /> </g> </svg> "
public static arrow_left_smooth_img = Img.AsImageElement(Svg.arrow_left_smooth)
public static arrow_left_smooth_svg() { return new Img(Svg.arrow_left_smooth, true);}
@ -89,6 +94,11 @@ export default class Svg {
public static compass_svg() { return new Img(Svg.compass, true);}
public static compass_ui() { return new FixedUiElement(Svg.compass_img);}
public static copyright = "<svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"> <path d=\"M8.08 8.86C8.13 8.53 8.24 8.24 8.38 7.99C8.52 7.74 8.72 7.53 8.97 7.37C9.21 7.22 9.51 7.15 9.88 7.14C10.11 7.15 10.32 7.19 10.51 7.27C10.71 7.36 10.89 7.48 11.03 7.63C11.17 7.78 11.28 7.96 11.37 8.16C11.46 8.36 11.5 8.58 11.51 8.8H13.3C13.28 8.33 13.19 7.9 13.02 7.51C12.85 7.12 12.62 6.78 12.32 6.5C12.02 6.22 11.66 6 11.24 5.84C10.82 5.68 10.36 5.61 9.85 5.61C9.2 5.61 8.63 5.72 8.15 5.95C7.67 6.18 7.27 6.48 6.95 6.87C6.63 7.26 6.39 7.71 6.24 8.23C6.09 8.75 6 9.29 6 9.87V10.14C6 10.72 6.08 11.26 6.23 11.78C6.38 12.3 6.62 12.75 6.94 13.13C7.26 13.51 7.66 13.82 8.14 14.04C8.62 14.26 9.19 14.38 9.84 14.38C10.31 14.38 10.75 14.3 11.16 14.15C11.57 14 11.93 13.79 12.24 13.52C12.55 13.25 12.8 12.94 12.98 12.58C13.16 12.22 13.27 11.84 13.28 11.43H11.49C11.48 11.64 11.43 11.83 11.34 12.01C11.25 12.19 11.13 12.34 10.98 12.47C10.83 12.6 10.66 12.7 10.46 12.77C10.27 12.84 10.07 12.86 9.86 12.87C9.5 12.86 9.2 12.79 8.97 12.64C8.72 12.48 8.52 12.27 8.38 12.02C8.24 11.77 8.13 11.47 8.08 11.14C8.03 10.81 8 10.47 8 10.14V9.87C8 9.52 8.03 9.19 8.08 8.86V8.86ZM10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 18C5.59 18 2 14.41 2 10C2 5.59 5.59 2 10 2C14.41 2 18 5.59 18 10C18 14.41 14.41 18 10 18Z\" fill=\"white\"/> </svg>"
public static copyright_img = Img.AsImageElement(Svg.copyright)
public static copyright_svg() { return new Img(Svg.copyright, true);}
public static copyright_ui() { return new FixedUiElement(Svg.copyright_img);}
public static cross_bottom_right = " <!-- Created with Inkscape (http://www.inkscape.org/) --> <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=\"100\" height=\"100\" viewBox=\"0 0 26.458333 26.458334\" version=\"1.1\" id=\"svg8\" sodipodi:docname=\"cross_bottom_right.svg\" inkscape:version=\"0.92.4 (5da689c313, 2019-01-14)\"> <defs id=\"defs2\" /> <sodipodi:namedview id=\"base\" pagecolor=\"#ffffff\" bordercolor=\"#666666\" borderopacity=\"1.0\" inkscape:pageopacity=\"0.0\" inkscape:pageshadow=\"2\" inkscape:zoom=\"2.8284271\" inkscape:cx=\"-71.204807\" inkscape:cy=\"118.94409\" inkscape:document-units=\"px\" inkscape:current-layer=\"layer1\" showgrid=\"false\" units=\"px\" showguides=\"true\" inkscape:guide-bbox=\"true\" inkscape:window-width=\"1920\" inkscape:window-height=\"995\" inkscape:window-x=\"0\" inkscape:window-y=\"0\" inkscape:window-maximized=\"1\"> <sodipodi:guide position=\"13.229167,23.859748\" orientation=\"1,0\" id=\"guide815\" inkscape:locked=\"false\" /> <sodipodi:guide position=\"14.944824,13.229167\" orientation=\"0,1\" id=\"guide817\" inkscape:locked=\"false\" /> </sodipodi:namedview> <metadata id=\"metadata5\"> <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 /> </cc:Work> </rdf:RDF> </metadata> <g inkscape:label=\"Layer 1\" inkscape:groupmode=\"layer\" id=\"layer1\" transform=\"translate(0,-270.54165)\"> <g id=\"g836\" transform=\"matrix(0.82247743,0,0,0.82247743,9.1847058,57.199661)\"> <path inkscape:connector-curvature=\"0\" id=\"path815\" d=\"M 18.972892,289.3838 7.7469352,278.15784 v 0\" style=\"fill: none !important;stroke:#000000;stroke-width:3.4395833;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" /> <path inkscape:connector-curvature=\"0\" id=\"path815-3\" d=\"M 18.98982,278.10371 7.7638604,289.32967 v 0\" style=\"fill: none !important;stroke:#000000;stroke-width:3.4395833;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1\" /> </g> </g> </svg> "
public static cross_bottom_right_img = Img.AsImageElement(Svg.cross_bottom_right)
public static cross_bottom_right_svg() { return new Img(Svg.cross_bottom_right, true);}
@ -389,4 +399,4 @@ export default class Svg {
public static wikipedia_svg() { return new Img(Svg.wikipedia, true);}
public static wikipedia_ui() { return new FixedUiElement(Svg.wikipedia_img);}
public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-left-thin.svg": Svg.arrow_left_thin,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkbox-empty.svg": Svg.checkbox_empty,"checkbox-filled.svg": Svg.checkbox_filled,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair-empty.svg": Svg.crosshair_empty,"crosshair-locked.svg": Svg.crosshair_locked,"crosshair.svg": Svg.crosshair,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"download.svg": Svg.download,"envelope.svg": Svg.envelope,"filter.svg": Svg.filter,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"length-crosshair.svg": Svg.length_crosshair,"location.svg": Svg.location,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min-zoom.svg": Svg.min_zoom,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus-zoom.svg": Svg.plus_zoom,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}
public static All = {"SocialImageForeground.svg": Svg.SocialImageForeground,"add.svg": Svg.add,"addSmall.svg": Svg.addSmall,"ampersand.svg": Svg.ampersand,"arrow-download.svg": Svg.arrow_download,"arrow-left-smooth.svg": Svg.arrow_left_smooth,"arrow-left-thin.svg": Svg.arrow_left_thin,"arrow-right-smooth.svg": Svg.arrow_right_smooth,"back.svg": Svg.back,"bug.svg": Svg.bug,"camera-plus.svg": Svg.camera_plus,"checkbox-empty.svg": Svg.checkbox_empty,"checkbox-filled.svg": Svg.checkbox_filled,"checkmark.svg": Svg.checkmark,"circle.svg": Svg.circle,"clock.svg": Svg.clock,"close.svg": Svg.close,"compass.svg": Svg.compass,"copyright.svg": Svg.copyright,"cross_bottom_right.svg": Svg.cross_bottom_right,"crosshair-blue-center.svg": Svg.crosshair_blue_center,"crosshair-blue.svg": Svg.crosshair_blue,"crosshair-empty.svg": Svg.crosshair_empty,"crosshair-locked.svg": Svg.crosshair_locked,"crosshair.svg": Svg.crosshair,"delete_icon.svg": Svg.delete_icon,"direction.svg": Svg.direction,"direction_gradient.svg": Svg.direction_gradient,"direction_masked.svg": Svg.direction_masked,"direction_outline.svg": Svg.direction_outline,"direction_stroke.svg": Svg.direction_stroke,"down.svg": Svg.down,"download.svg": Svg.download,"envelope.svg": Svg.envelope,"filter.svg": Svg.filter,"floppy.svg": Svg.floppy,"gear.svg": Svg.gear,"help.svg": Svg.help,"home.svg": Svg.home,"home_white_bg.svg": Svg.home_white_bg,"josm_logo.svg": Svg.josm_logo,"layers.svg": Svg.layers,"layersAdd.svg": Svg.layersAdd,"length-crosshair.svg": Svg.length_crosshair,"location.svg": Svg.location,"logo.svg": Svg.logo,"logout.svg": Svg.logout,"mapcomplete_logo.svg": Svg.mapcomplete_logo,"mapillary.svg": Svg.mapillary,"mapillary_black.svg": Svg.mapillary_black,"min-zoom.svg": Svg.min_zoom,"min.svg": Svg.min,"no_checkmark.svg": Svg.no_checkmark,"or.svg": Svg.or,"osm-copyright.svg": Svg.osm_copyright,"osm-logo-us.svg": Svg.osm_logo_us,"osm-logo.svg": Svg.osm_logo,"pencil.svg": Svg.pencil,"phone.svg": Svg.phone,"pin.svg": Svg.pin,"plus-zoom.svg": Svg.plus_zoom,"plus.svg": Svg.plus,"pop-out.svg": Svg.pop_out,"reload.svg": Svg.reload,"ring.svg": Svg.ring,"search.svg": Svg.search,"send_email.svg": Svg.send_email,"share.svg": Svg.share,"square.svg": Svg.square,"star.svg": Svg.star,"star_half.svg": Svg.star_half,"star_outline.svg": Svg.star_outline,"star_outline_half.svg": Svg.star_outline_half,"statistics.svg": Svg.statistics,"translate.svg": Svg.translate,"up.svg": Svg.up,"wikidata.svg": Svg.wikidata,"wikimedia-commons-white.svg": Svg.wikimedia_commons_white,"wikipedia.svg": Svg.wikipedia};}

View file

@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="22.849" viewBox="0 0 20 22.849">
<path id="Path_arrow-collapse-down" data-name="Path / arrow-collapse-down" d="M19.92,12.08l-5.264,5.264L12,20,4.08,12.08,5.5,10.67l5.5,5.5V2h2V16.17l5.5-5.51,1.42,1.42M12,22.849H2v2H22v-2Z" transform="translate(-2 -2)" fill="#fff"/>
</svg>

After

Width:  |  Height:  |  Size: 334 B

3
assets/svg/copyright.svg Normal file
View file

@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.08 8.86C8.13 8.53 8.24 8.24 8.38 7.99C8.52 7.74 8.72 7.53 8.97 7.37C9.21 7.22 9.51 7.15 9.88 7.14C10.11 7.15 10.32 7.19 10.51 7.27C10.71 7.36 10.89 7.48 11.03 7.63C11.17 7.78 11.28 7.96 11.37 8.16C11.46 8.36 11.5 8.58 11.51 8.8H13.3C13.28 8.33 13.19 7.9 13.02 7.51C12.85 7.12 12.62 6.78 12.32 6.5C12.02 6.22 11.66 6 11.24 5.84C10.82 5.68 10.36 5.61 9.85 5.61C9.2 5.61 8.63 5.72 8.15 5.95C7.67 6.18 7.27 6.48 6.95 6.87C6.63 7.26 6.39 7.71 6.24 8.23C6.09 8.75 6 9.29 6 9.87V10.14C6 10.72 6.08 11.26 6.23 11.78C6.38 12.3 6.62 12.75 6.94 13.13C7.26 13.51 7.66 13.82 8.14 14.04C8.62 14.26 9.19 14.38 9.84 14.38C10.31 14.38 10.75 14.3 11.16 14.15C11.57 14 11.93 13.79 12.24 13.52C12.55 13.25 12.8 12.94 12.98 12.58C13.16 12.22 13.27 11.84 13.28 11.43H11.49C11.48 11.64 11.43 11.83 11.34 12.01C11.25 12.19 11.13 12.34 10.98 12.47C10.83 12.6 10.66 12.7 10.46 12.77C10.27 12.84 10.07 12.86 9.86 12.87C9.5 12.86 9.2 12.79 8.97 12.64C8.72 12.48 8.52 12.27 8.38 12.02C8.24 11.77 8.13 11.47 8.08 11.14C8.03 10.81 8 10.47 8 10.14V9.87C8 9.52 8.03 9.19 8.08 8.86V8.86ZM10 0C4.48 0 0 4.48 0 10C0 15.52 4.48 20 10 20C15.52 20 20 15.52 20 10C20 4.48 15.52 0 10 0ZM10 18C5.59 18 2 14.41 2 10C2 5.59 5.59 2 10 2C14.41 2 18 5.59 18 10C18 14.41 14.41 18 10 18Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -1,6 +1,3 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before After
Before After

View file

@ -1,62 +1,58 @@
[
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "direction_masked.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "direction_outline.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "direction_stroke.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "SocialImageForeground.svg",
"license": "CC-BY-SA",
"sources": [
"https://mapcomplete.osm.be"
]
"sources": ["https://mapcomplete.osm.be"]
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "add.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "addSmall.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Hannah"
],
"authors": ["Hannah Declerck"],
"path": "download.svg",
"license": "CC0",
"sources": []
},
{
"authors": ["Hannah Declerck"],
"path": "copyright.svg",
"license": "CC0",
"sources": []
},
{
"authors": ["Hannah Declerck"],
"path": "arrow-download.svg",
"license": "CC0",
"sources": []
},
{
"authors": [],
"path": "ampersand.svg",
@ -64,33 +60,25 @@
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "arrow-left-smooth.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "arrow-right-smooth.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "back.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Github"
],
"authors": ["Github"],
"path": "bug.svg",
"license": "MIT",
"sources": [
@ -101,35 +89,26 @@
{
"path": "camera-plus.svg",
"license": "CC-BY-SA 3.0",
"authors": [
"Dave Gandy",
"Pieter Vander Vennet"
],
"authors": ["Dave Gandy", "Pieter Vander Vennet"],
"sources": [
"https://fontawesome.com/",
"https://commons.wikimedia.org/wiki/File:Camera_font_awesome.svg"
]
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "checkmark.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "circle.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "clock.svg",
"license": "CC0",
"sources": []
@ -171,9 +150,7 @@
"sources": []
},
{
"authors": [
"Dave Gandy"
],
"authors": ["Dave Gandy"],
"path": "delete_icon.svg",
"license": "CC-BY-SA",
"sources": [
@ -205,9 +182,7 @@
"sources": []
},
{
"authors": [
"The Tango Desktop Project"
],
"authors": ["The Tango Desktop Project"],
"path": "floppy.svg",
"license": "CC0",
"sources": [
@ -228,29 +203,19 @@
"sources": []
},
{
"authors": [
"Timothy Miller"
],
"authors": ["Timothy Miller"],
"path": "home.svg",
"license": "CC-BY-SA 3.0",
"sources": [
"https://commons.wikimedia.org/wiki/File:Home-icon.svg"
]
"sources": ["https://commons.wikimedia.org/wiki/File:Home-icon.svg"]
},
{
"authors": [
"Timothy Miller"
],
"authors": ["Timothy Miller"],
"path": "home_white_bg.svg",
"license": "CC-BY-SA 3.0",
"sources": [
"https://commons.wikimedia.org/wiki/File:Home-icon.svg"
]
"sources": ["https://commons.wikimedia.org/wiki/File:Home-icon.svg"]
},
{
"authors": [
"JOSM Team"
],
"authors": ["JOSM Team"],
"path": "josm_logo.svg",
"license": "CC0",
"sources": [
@ -273,9 +238,7 @@
{
"path": "Ornament-Horiz-0.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -283,9 +246,7 @@
{
"path": "Ornament-Horiz-1.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -293,9 +254,7 @@
{
"path": "Ornament-Horiz-2.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -303,9 +262,7 @@
{
"path": "Ornament-Horiz-3.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -313,9 +270,7 @@
{
"path": "Ornament-Horiz-4.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -323,9 +278,7 @@
{
"path": "Ornament-Horiz-5.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -333,9 +286,7 @@
{
"path": "Ornament-Horiz-6.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -377,25 +328,16 @@
"sources": []
},
{
"authors": [
"Pieter Vander Vennet",
" OSM"
],
"authors": ["Pieter Vander Vennet", " OSM"],
"path": "mapcomplete_logo.svg",
"license": "Logo; CC-BY-SA",
"sources": [
"https://mapcomplete.osm.be"
]
"sources": ["https://mapcomplete.osm.be"]
},
{
"authors": [
"Mapillary"
],
"authors": ["Mapillary"],
"path": "mapillary.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://mapillary.com/"
]
"sources": ["https://mapillary.com/"]
},
{
"authors": [],
@ -419,32 +361,22 @@
"authors": [],
"path": "osm-copyright.svg",
"license": "logo; all rights reserved",
"sources": [
"https://www.OpenStreetMap.org"
]
"sources": ["https://www.OpenStreetMap.org"]
},
{
"authors": [
"OpenStreetMap U.S. Chapter"
],
"authors": ["OpenStreetMap U.S. Chapter"],
"path": "osm-logo-us.svg",
"license": "Logo",
"sources": [
"https://www.openstreetmap.us/"
]
"sources": ["https://www.openstreetmap.us/"]
},
{
"authors": [],
"path": "osm-logo.svg",
"license": "logo; all rights reserved",
"sources": [
"https://www.OpenStreetMap.org"
]
"sources": ["https://www.OpenStreetMap.org"]
},
{
"authors": [
"GitHub Octicons"
],
"authors": ["GitHub Octicons"],
"path": "pencil.svg",
"license": "MIT",
"sources": [
@ -453,14 +385,10 @@
]
},
{
"authors": [
"@ tyskrat"
],
"authors": ["@ tyskrat"],
"path": "phone.svg",
"license": "CC-BY 3.0",
"sources": [
"https://www.onlinewebfonts.com/icon/1059"
]
"sources": ["https://www.onlinewebfonts.com/icon/1059"]
},
{
"authors": [],
@ -475,14 +403,10 @@
"sources": []
},
{
"authors": [
"@fatih"
],
"authors": ["@fatih"],
"path": "pop-out.svg",
"license": "CC-BY 3.0",
"sources": [
"https://www.onlinewebfonts.com/icon/2151"
]
"sources": ["https://www.onlinewebfonts.com/icon/2151"]
},
{
"authors": [],
@ -497,9 +421,7 @@
"sources": []
},
{
"authors": [
"OOjs UI Team and other contributors"
],
"authors": ["OOjs UI Team and other contributors"],
"path": "search.svg",
"license": "MIT",
"sources": [
@ -526,19 +448,13 @@
"sources": []
},
{
"authors": [
"@felpgrc"
],
"authors": ["@felpgrc"],
"path": "statistics.svg",
"license": "CC-BY 3.0",
"sources": [
"https://www.onlinewebfonts.com/icon/197818"
]
"sources": ["https://www.onlinewebfonts.com/icon/197818"]
},
{
"authors": [
"MGalloway (WMF)"
],
"authors": ["MGalloway (WMF)"],
"path": "translate.svg",
"license": "CC-BY-SA 3.0",
"sources": [
@ -552,147 +468,103 @@
"sources": []
},
{
"authors": [
"Wikidata"
],
"authors": ["Wikidata"],
"path": "wikidata.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://www.wikidata.org"
]
"sources": ["https://www.wikidata.org"]
},
{
"authors": [
"Wikimedia"
],
"authors": ["Wikimedia"],
"path": "wikimedia-commons-white.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://commons.wikimedia.org"
]
"sources": ["https://commons.wikimedia.org"]
},
{
"authors": [
"Wikipedia"
],
"authors": ["Wikipedia"],
"path": "wikipedia.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://www.wikipedia.org/"
]
"sources": ["https://www.wikipedia.org/"]
},
{
"authors": [
"Mapillary"
],
"authors": ["Mapillary"],
"path": "mapillary_black.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://www.mapillary.com/"
]
"sources": ["https://www.mapillary.com/"]
},
{
"authors": [
"Hannah Declerck"
],
"authors": ["Hannah Declerck"],
"path": "location.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Hannah Declerck"
],
"authors": ["Hannah Declerck"],
"path": "min-zoom.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Hannah Declerck"
],
"authors": ["Hannah Declerck"],
"path": "plus-zoom.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Hannah Declerck"
],
"authors": ["Hannah Declerck"],
"path": "filter.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Hannah Declerck"
],
"authors": ["Hannah Declerck"],
"path": "checkbox-empty.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Hannah Declerck"
],
"authors": ["Hannah Declerck"],
"path": "checkbox-filled.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Hannah Declerck"
],
"authors": ["Hannah Declerck"],
"path": "arrow-left-thin.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "direction_masked.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "direction_outline.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "direction_stroke.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "SocialImageForeground.svg",
"license": "CC-BY-SA",
"sources": [
"https://mapcomplete.osm.be"
]
"sources": ["https://mapcomplete.osm.be"]
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "add.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "addSmall.svg",
"license": "CC0",
"sources": []
@ -704,33 +576,25 @@
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "arrow-left-smooth.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "arrow-right-smooth.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "back.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Github"
],
"authors": ["Github"],
"path": "bug.svg",
"license": "MIT",
"sources": [
@ -741,35 +605,26 @@
{
"path": "camera-plus.svg",
"license": "CC-BY-SA 3.0",
"authors": [
"Dave Gandy",
"Pieter Vander Vennet"
],
"authors": ["Dave Gandy", "Pieter Vander Vennet"],
"sources": [
"https://fontawesome.com/",
"https://commons.wikimedia.org/wiki/File:Camera_font_awesome.svg"
]
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "checkmark.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "circle.svg",
"license": "CC0",
"sources": []
},
{
"authors": [
"Pieter Vander Vennet"
],
"authors": ["Pieter Vander Vennet"],
"path": "clock.svg",
"license": "CC0",
"sources": []
@ -823,9 +678,7 @@
"sources": []
},
{
"authors": [
"Dave Gandy"
],
"authors": ["Dave Gandy"],
"path": "delete_icon.svg",
"license": "CC-BY-SA",
"sources": [
@ -857,9 +710,7 @@
"sources": []
},
{
"authors": [
"The Tango Desktop Project"
],
"authors": ["The Tango Desktop Project"],
"path": "floppy.svg",
"license": "CC0",
"sources": [
@ -880,29 +731,19 @@
"sources": []
},
{
"authors": [
"Timothy Miller"
],
"authors": ["Timothy Miller"],
"path": "home.svg",
"license": "CC-BY-SA 3.0",
"sources": [
"https://commons.wikimedia.org/wiki/File:Home-icon.svg"
]
"sources": ["https://commons.wikimedia.org/wiki/File:Home-icon.svg"]
},
{
"authors": [
"Timothy Miller"
],
"authors": ["Timothy Miller"],
"path": "home_white_bg.svg",
"license": "CC-BY-SA 3.0",
"sources": [
"https://commons.wikimedia.org/wiki/File:Home-icon.svg"
]
"sources": ["https://commons.wikimedia.org/wiki/File:Home-icon.svg"]
},
{
"authors": [
"JOSM Team"
],
"authors": ["JOSM Team"],
"path": "josm_logo.svg",
"license": "CC0",
"sources": [
@ -925,9 +766,7 @@
{
"path": "Ornament-Horiz-0.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -935,9 +774,7 @@
{
"path": "Ornament-Horiz-1.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -945,9 +782,7 @@
{
"path": "Ornament-Horiz-2.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -955,9 +790,7 @@
{
"path": "Ornament-Horiz-3.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -965,9 +798,7 @@
{
"path": "Ornament-Horiz-4.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -975,9 +806,7 @@
{
"path": "Ornament-Horiz-5.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -985,9 +814,7 @@
{
"path": "Ornament-Horiz-6.svg",
"license": "CC-BY",
"authors": [
"Nightwolfdezines"
],
"authors": ["Nightwolfdezines"],
"sources": [
"https://www.vecteezy.com/vector-art/226361-ornaments-and-flourishes"
]
@ -1029,25 +856,16 @@
"sources": []
},
{
"authors": [
"Pieter Vander Vennet",
" OSM"
],
"authors": ["Pieter Vander Vennet", " OSM"],
"path": "mapcomplete_logo.svg",
"license": "Logo; CC-BY-SA",
"sources": [
"https://mapcomplete.osm.be"
]
"sources": ["https://mapcomplete.osm.be"]
},
{
"authors": [
"Mapillary"
],
"authors": ["Mapillary"],
"path": "mapillary.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://mapillary.com/"
]
"sources": ["https://mapillary.com/"]
},
{
"authors": [],
@ -1071,32 +889,22 @@
"authors": [],
"path": "osm-copyright.svg",
"license": "logo; all rights reserved",
"sources": [
"https://www.OpenStreetMap.org"
]
"sources": ["https://www.OpenStreetMap.org"]
},
{
"authors": [
"OpenStreetMap U.S. Chapter"
],
"authors": ["OpenStreetMap U.S. Chapter"],
"path": "osm-logo-us.svg",
"license": "Logo",
"sources": [
"https://www.openstreetmap.us/"
]
"sources": ["https://www.openstreetmap.us/"]
},
{
"authors": [],
"path": "osm-logo.svg",
"license": "logo; all rights reserved",
"sources": [
"https://www.OpenStreetMap.org"
]
"sources": ["https://www.OpenStreetMap.org"]
},
{
"authors": [
"GitHub Octicons"
],
"authors": ["GitHub Octicons"],
"path": "pencil.svg",
"license": "MIT",
"sources": [
@ -1105,14 +913,10 @@
]
},
{
"authors": [
"@ tyskrat"
],
"authors": ["@ tyskrat"],
"path": "phone.svg",
"license": "CC-BY 3.0",
"sources": [
"https://www.onlinewebfonts.com/icon/1059"
]
"sources": ["https://www.onlinewebfonts.com/icon/1059"]
},
{
"authors": [],
@ -1127,14 +931,10 @@
"sources": []
},
{
"authors": [
"@fatih"
],
"authors": ["@fatih"],
"path": "pop-out.svg",
"license": "CC-BY 3.0",
"sources": [
"https://www.onlinewebfonts.com/icon/2151"
]
"sources": ["https://www.onlinewebfonts.com/icon/2151"]
},
{
"authors": [],
@ -1149,9 +949,7 @@
"sources": []
},
{
"authors": [
"OOjs UI Team and other contributors"
],
"authors": ["OOjs UI Team and other contributors"],
"path": "search.svg",
"license": "MIT",
"sources": [
@ -1178,19 +976,13 @@
"sources": []
},
{
"authors": [
"@felpgrc"
],
"authors": ["@felpgrc"],
"path": "statistics.svg",
"license": "CC-BY 3.0",
"sources": [
"https://www.onlinewebfonts.com/icon/197818"
]
"sources": ["https://www.onlinewebfonts.com/icon/197818"]
},
{
"authors": [
"MGalloway (WMF)"
],
"authors": ["MGalloway (WMF)"],
"path": "translate.svg",
"license": "CC-BY-SA 3.0",
"sources": [
@ -1204,53 +996,33 @@
"sources": []
},
{
"authors": [
"Wikidata"
],
"authors": ["Wikidata"],
"path": "wikidata.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://www.wikidata.org"
]
"sources": ["https://www.wikidata.org"]
},
{
"authors": [
"Wikimedia"
],
"authors": ["Wikimedia"],
"path": "wikimedia-commons-white.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://commons.wikimedia.org"
]
"sources": ["https://commons.wikimedia.org"]
},
{
"authors": [
"Wikipedia"
],
"authors": ["Wikipedia"],
"path": "wikipedia.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://www.wikipedia.org/"
]
"sources": ["https://www.wikipedia.org/"]
},
{
"authors": [
"Mapillary"
],
"authors": ["Mapillary"],
"path": "mapillary_black.svg",
"license": "Logo; All rights reserved",
"sources": [
"https://www.mapillary.com/"
]
"sources": ["https://www.mapillary.com/"]
},
{
"authors": [
"The Tango! Desktop Project"
],
"authors": ["The Tango! Desktop Project"],
"path": "floppy.svg",
"license": "CC0",
"sources": [
"https://commons.wikimedia.org/wiki/File:Media-floppy.svg"
]
"sources": ["https://commons.wikimedia.org/wiki/File:Media-floppy.svg"]
}
]
]

14790
package-lock.json generated

File diff suppressed because it is too large Load diff