forked from MapComplete/MapComplete
Refactoring: remove dependency on 'ToSvelte' by working with TypeComponent directly
This commit is contained in:
parent
8b426ac444
commit
29dc7d1e03
9 changed files with 20 additions and 29 deletions
|
@ -43,7 +43,7 @@ export default class GenericImageProvider extends ImageProvider {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceIcon() {
|
sourceIcon() {
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import { Store, Stores } from "../UIEventSource"
|
import { Store, Stores } from "../UIEventSource"
|
||||||
import BaseUIElement from "../../UI/BaseUIElement"
|
|
||||||
import { LicenseInfo } from "./LicenseInfo"
|
import { LicenseInfo } from "./LicenseInfo"
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import { Feature, Point } from "geojson"
|
import { Feature, Point } from "geojson"
|
||||||
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
||||||
|
import { ComponentType } from "svelte/types/runtime/internal/dev"
|
||||||
|
|
||||||
export interface ProvidedImage {
|
export interface ProvidedImage {
|
||||||
url: string
|
url: string
|
||||||
|
@ -69,10 +69,7 @@ export default abstract class ImageProvider {
|
||||||
|
|
||||||
public abstract readonly name: string
|
public abstract readonly name: string
|
||||||
|
|
||||||
public abstract SourceIcon(
|
public abstract sourceIcon(): ComponentType
|
||||||
img?: { id: string; url: string; host?: string },
|
|
||||||
location?: { lon: number; lat: number }
|
|
||||||
): BaseUIElement
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets all the relevant URLS for the given tags and for the given prefixes;
|
* Gets all the relevant URLS for the given tags and for the given prefixes;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
import ImageProvider, { ProvidedImage } from "./ImageProvider"
|
import ImageProvider, { ProvidedImage } from "./ImageProvider"
|
||||||
import BaseUIElement from "../../UI/BaseUIElement"
|
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import Constants from "../../Models/Constants"
|
import Constants from "../../Models/Constants"
|
||||||
import { LicenseInfo } from "./LicenseInfo"
|
import { LicenseInfo } from "./LicenseInfo"
|
||||||
|
@ -27,7 +26,7 @@ export class Imgur extends ImageProvider {
|
||||||
return [Imgur.apiUrlInfo]
|
return [Imgur.apiUrlInfo]
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceIcon(): BaseUIElement {
|
sourceIcon() {
|
||||||
return undefined
|
return undefined
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,11 +2,11 @@ import ImageProvider, { PanoramaView, ProvidedImage } from "./ImageProvider"
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import { LicenseInfo } from "./LicenseInfo"
|
import { LicenseInfo } from "./LicenseInfo"
|
||||||
import Constants from "../../Models/Constants"
|
import Constants from "../../Models/Constants"
|
||||||
import SvelteUIElement from "../../UI/Base/SvelteUIElement"
|
|
||||||
import { default as MapillaryIcon } from "../../assets/svg/Mapillary.svelte"
|
import { default as MapillaryIcon } from "../../assets/svg/Mapillary.svelte"
|
||||||
import { Feature, Point } from "geojson"
|
import { Feature, Point } from "geojson"
|
||||||
import { Store, UIEventSource } from "../UIEventSource"
|
import { Store, UIEventSource } from "../UIEventSource"
|
||||||
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
||||||
|
import { ComponentType } from "svelte/types/runtime/internal/dev"
|
||||||
|
|
||||||
export class Mapillary extends ImageProvider {
|
export class Mapillary extends ImageProvider {
|
||||||
public static readonly singleton = new Mapillary()
|
public static readonly singleton = new Mapillary()
|
||||||
|
@ -138,8 +138,8 @@ export class Mapillary extends ImageProvider {
|
||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceIcon(): SvelteUIElement {
|
sourceIcon(): ComponentType {
|
||||||
return new SvelteUIElement(MapillaryIcon)
|
return MapillaryIcon
|
||||||
}
|
}
|
||||||
|
|
||||||
async ExtractUrls(key: string, value: string): Promise<ProvidedImage[]> {
|
async ExtractUrls(key: string, value: string): Promise<ProvidedImage[]> {
|
||||||
|
|
|
@ -2,16 +2,15 @@ import { ImageUploader } from "./ImageUploader"
|
||||||
import { AuthorizedPanoramax, ImageData, Panoramax, PanoramaxXYZ } from "panoramax-js/dist"
|
import { AuthorizedPanoramax, ImageData, Panoramax, PanoramaxXYZ } from "panoramax-js/dist"
|
||||||
import ExifReader from "exifreader"
|
import ExifReader from "exifreader"
|
||||||
import ImageProvider, { PanoramaView, ProvidedImage } from "./ImageProvider"
|
import ImageProvider, { PanoramaView, ProvidedImage } from "./ImageProvider"
|
||||||
import BaseUIElement from "../../UI/BaseUIElement"
|
|
||||||
import { LicenseInfo } from "./LicenseInfo"
|
import { LicenseInfo } from "./LicenseInfo"
|
||||||
import { GeoOperations } from "../GeoOperations"
|
import { GeoOperations } from "../GeoOperations"
|
||||||
import Constants from "../../Models/Constants"
|
import Constants from "../../Models/Constants"
|
||||||
import { Store, Stores, UIEventSource } from "../UIEventSource"
|
import { Store, Stores, UIEventSource } from "../UIEventSource"
|
||||||
import SvelteUIElement from "../../UI/Base/SvelteUIElement"
|
|
||||||
import Panoramax_bw from "../../assets/svg/Panoramax_bw.svelte"
|
import Panoramax_bw from "../../assets/svg/Panoramax_bw.svelte"
|
||||||
import { Feature, Point } from "geojson"
|
import { Feature, Point } from "geojson"
|
||||||
import { AddImageOptions } from "panoramax-js/dist/Panoramax"
|
import { AddImageOptions } from "panoramax-js/dist/Panoramax"
|
||||||
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
||||||
|
import { ComponentType } from "svelte/types/runtime/internal/dev"
|
||||||
|
|
||||||
export default class PanoramaxImageProvider extends ImageProvider {
|
export default class PanoramaxImageProvider extends ImageProvider {
|
||||||
public static readonly singleton: PanoramaxImageProvider = new PanoramaxImageProvider()
|
public static readonly singleton: PanoramaxImageProvider = new PanoramaxImageProvider()
|
||||||
|
@ -39,8 +38,8 @@ export default class PanoramaxImageProvider extends ImageProvider {
|
||||||
{ data: Promise<{ data: ImageData; url: string }>; time: Date }
|
{ data: Promise<{ data: ImageData; url: string }>; time: Date }
|
||||||
> = {}
|
> = {}
|
||||||
|
|
||||||
public SourceIcon(): SvelteUIElement {
|
public sourceIcon(): ComponentType {
|
||||||
return new SvelteUIElement(Panoramax_bw)
|
return Panoramax_bw
|
||||||
}
|
}
|
||||||
|
|
||||||
visitUrl(
|
visitUrl(
|
||||||
|
|
|
@ -1,12 +1,11 @@
|
||||||
import ImageProvider, { PanoramaView, ProvidedImage } from "./ImageProvider"
|
import ImageProvider, { PanoramaView, ProvidedImage } from "./ImageProvider"
|
||||||
import BaseUIElement from "../../UI/BaseUIElement"
|
|
||||||
import { WikimediaImageProvider } from "./WikimediaImageProvider"
|
import { WikimediaImageProvider } from "./WikimediaImageProvider"
|
||||||
import Wikidata from "../Web/Wikidata"
|
import Wikidata from "../Web/Wikidata"
|
||||||
import SvelteUIElement from "../../UI/Base/SvelteUIElement"
|
|
||||||
import Wikidata_icon from "../../assets/svg/Wikidata.svelte"
|
import Wikidata_icon from "../../assets/svg/Wikidata.svelte"
|
||||||
import { Utils } from "../../Utils"
|
import { Utils } from "../../Utils"
|
||||||
import { Feature, Point } from "geojson"
|
import { Feature, Point } from "geojson"
|
||||||
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
||||||
|
import { ComponentType } from "svelte/types/runtime/internal/dev"
|
||||||
|
|
||||||
export class WikidataImageProvider extends ImageProvider {
|
export class WikidataImageProvider extends ImageProvider {
|
||||||
public static readonly singleton = new WikidataImageProvider()
|
public static readonly singleton = new WikidataImageProvider()
|
||||||
|
@ -25,8 +24,8 @@ export class WikidataImageProvider extends ImageProvider {
|
||||||
return Wikidata.neededUrls
|
return Wikidata.neededUrls
|
||||||
}
|
}
|
||||||
|
|
||||||
public SourceIcon(): BaseUIElement {
|
public sourceIcon(): ComponentType {
|
||||||
return new SvelteUIElement(Wikidata_icon)
|
return Wikidata_icon
|
||||||
}
|
}
|
||||||
|
|
||||||
public async ExtractUrls(key: string, value: string): Promise<ProvidedImage[]> {
|
public async ExtractUrls(key: string, value: string): Promise<ProvidedImage[]> {
|
||||||
|
|
|
@ -1,13 +1,10 @@
|
||||||
import ImageProvider, { PanoramaView, ProvidedImage } from "./ImageProvider"
|
import ImageProvider, { PanoramaView, ProvidedImage } from "./ImageProvider"
|
||||||
import BaseUIElement from "../../UI/BaseUIElement"
|
|
||||||
import { Utils } from "../../Utils"
|
|
||||||
import { LicenseInfo } from "./LicenseInfo"
|
import { LicenseInfo } from "./LicenseInfo"
|
||||||
import Wikimedia from "../Web/Wikimedia"
|
import Wikimedia from "../Web/Wikimedia"
|
||||||
import SvelteUIElement from "../../UI/Base/SvelteUIElement"
|
|
||||||
import Wikimedia_commons_white from "../../assets/svg/Wikimedia_commons_white.svelte"
|
import Wikimedia_commons_white from "../../assets/svg/Wikimedia_commons_white.svelte"
|
||||||
import { Feature, Point } from "geojson"
|
import { Feature, Point } from "geojson"
|
||||||
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
import { ServerSourceInfo } from "../../Models/SourceOverview"
|
||||||
import { describe } from "vitest"
|
import { ComponentType } from "svelte/types/runtime/internal/dev"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This module provides endpoints for wikimedia and others
|
* This module provides endpoints for wikimedia and others
|
||||||
|
@ -118,8 +115,8 @@ export class WikimediaImageProvider extends ImageProvider {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
SourceIcon(): BaseUIElement {
|
sourceIcon(): ComponentType {
|
||||||
return new SvelteUIElement(Wikimedia_commons_white)
|
return Wikimedia_commons_white
|
||||||
}
|
}
|
||||||
|
|
||||||
public PrepUrl(value: NonNullable<string>): ProvidedImage
|
public PrepUrl(value: NonNullable<string>): ProvidedImage
|
||||||
|
|
|
@ -2,6 +2,7 @@ import BaseUIElement from "../BaseUIElement"
|
||||||
|
|
||||||
import { SvelteComponentTyped } from "svelte"
|
import { SvelteComponentTyped } from "svelte"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The SvelteUIComponent serves as a translating class which which wraps a SvelteElement into the BaseUIElement framework.
|
* The SvelteUIComponent serves as a translating class which which wraps a SvelteElement into the BaseUIElement framework.
|
||||||
* Also see ToSvelte.svelte for the opposite conversion
|
* Also see ToSvelte.svelte for the opposite conversion
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
import { LicenseInfo } from "../../Logic/ImageProviders/LicenseInfo"
|
import { LicenseInfo } from "../../Logic/ImageProviders/LicenseInfo"
|
||||||
import type { ProvidedImage } from "../../Logic/ImageProviders/ImageProvider"
|
import type { ProvidedImage } from "../../Logic/ImageProviders/ImageProvider"
|
||||||
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
|
import { ImmutableStore, Store, UIEventSource } from "../../Logic/UIEventSource"
|
||||||
import ToSvelte from "../Base/ToSvelte.svelte"
|
|
||||||
import { EyeIcon } from "@rgossiaux/svelte-heroicons/solid"
|
import { EyeIcon } from "@rgossiaux/svelte-heroicons/solid"
|
||||||
import Tr from "../Base/Tr.svelte"
|
import Tr from "../Base/Tr.svelte"
|
||||||
import Translations from "../i18n/Translations"
|
import Translations from "../i18n/Translations"
|
||||||
|
@ -17,7 +16,7 @@
|
||||||
let license: Store<LicenseInfo> = image.license
|
let license: Store<LicenseInfo> = image.license
|
||||||
? new ImmutableStore(image.license)
|
? new ImmutableStore(image.license)
|
||||||
: UIEventSource.FromPromise(image.provider?.DownloadAttribution(image))
|
: UIEventSource.FromPromise(image.provider?.DownloadAttribution(image))
|
||||||
let icon = image.provider?.SourceIcon(image)
|
let icon = image.provider?.sourceIcon()
|
||||||
let openOriginal = image.provider?.visitUrl(image)
|
let openOriginal = image.provider?.visitUrl(image)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -28,11 +27,11 @@
|
||||||
{#if icon !== undefined}
|
{#if icon !== undefined}
|
||||||
{#if openOriginal}
|
{#if openOriginal}
|
||||||
<a href={openOriginal} target="_blank" rel="noopener" class="mr-2 h-6 w-6">
|
<a href={openOriginal} target="_blank" rel="noopener" class="mr-2 h-6 w-6">
|
||||||
<ToSvelte construct={icon} />
|
<svelte:component this={icon} />
|
||||||
</a>
|
</a>
|
||||||
{:else}
|
{:else}
|
||||||
<div class="mr-2 h-6 w-6">
|
<div class="mr-2 h-6 w-6">
|
||||||
<ToSvelte construct={icon} />
|
<svelte:component this={icon} />
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue