diff --git a/src/UI/Base/Img.ts b/src/UI/Base/Img.ts index 96b0b7ac0..fcc413ec0 100644 --- a/src/UI/Base/Img.ts +++ b/src/UI/Base/Img.ts @@ -1,11 +1,15 @@ import { Utils } from "../../Utils" import BaseUIElement from "../BaseUIElement" - +/** + * @deprecated +*/ export default class Img extends BaseUIElement { private readonly _src: string private readonly _rawSvg: boolean private readonly _options: { readonly fallbackImage?: string } + /** @deprecated + */ constructor( src: string, rawSvg = false, diff --git a/src/UI/Base/Tr.svelte b/src/UI/Base/Tr.svelte index 4a6ebae06..3d172f98f 100644 --- a/src/UI/Base/Tr.svelte +++ b/src/UI/Base/Tr.svelte @@ -20,10 +20,17 @@ {#if $txt} + {#if cls} {@html Utils.purify($txt)} + {:else} + + {@html Utils.purify($txt)} + + + {/if} {/if} diff --git a/src/UI/BigComponents/ShareScreen.svelte b/src/UI/BigComponents/ShareScreen.svelte index b7081c1e7..87cae1ccd 100644 --- a/src/UI/BigComponents/ShareScreen.svelte +++ b/src/UI/BigComponents/ShareScreen.svelte @@ -11,12 +11,8 @@ import Tr from "../Base/Tr.svelte" import Translations from "../i18n/Translations" import { Utils } from "../../Utils" - import { DocumentDuplicateIcon } from "@rgossiaux/svelte-heroicons/outline" - import ToSvelte from "../Base/ToSvelte.svelte" - import Img from "../Base/Img" import Qr from "../../Utils/Qr" import AccordionSingle from "../Flowbite/AccordionSingle.svelte" - import Share from "@babeard/svelte-heroicons/solid/Share" import Constants from "../../Models/Constants" import Copyable from "../Base/Copyable.svelte" @@ -127,9 +123,7 @@
- new Img(new Qr(linkToShare).toImageElement(125)).SetStyle("width: 125px")} - /> +
diff --git a/src/UI/Popup/QrCode.svelte b/src/UI/Popup/QrCode.svelte new file mode 100644 index 000000000..ad0ecb2a7 --- /dev/null +++ b/src/UI/Popup/QrCode.svelte @@ -0,0 +1,46 @@ + + +{#if $id.startsWith("node/-")} + + +{:else} + toggleSize()} src={new Qr($url).toImageElement($size)} style={`width: ${$size}px; height: ${$size}px`} /> +{/if} diff --git a/src/UI/SpecialVisualizations.ts b/src/UI/SpecialVisualizations.ts index d7b05273b..cbb72b890 100644 --- a/src/UI/SpecialVisualizations.ts +++ b/src/UI/SpecialVisualizations.ts @@ -96,6 +96,8 @@ import { CombinedFetcher } from "../Logic/Web/NearbyImagesSearch" import { And } from "../Logic/Tags/And" import CloseNoteButton from "./Popup/Notes/CloseNoteButton.svelte" import PendingChangesIndicator from "./BigComponents/PendingChangesIndicator.svelte" +import Loading from "./Base/Loading" +import QrCode from "./Popup/QrCode.svelte" class NearbyImageVis implements SpecialVisualization { // Class must be in SpecialVisualisations due to weird cyclical import that breaks the tests @@ -1682,46 +1684,11 @@ export default class SpecialVisualizations { docs: "Generates a QR-code to share the selected object", constr( state: SpecialVisualizationState, - tagSource: UIEventSource>, + tags: UIEventSource>, argument: string[], feature: Feature - ): BaseUIElement { - const smallSize = 100 - const bigSize = 200 - const size = new UIEventSource(smallSize) - return new VariableUiElement( - tagSource - .map((tags) => tags.id) - .map( - (id) => { - if (id.startsWith("node/-")) { - // Not yet uploaded - return undefined - } - const [lon, lat] = GeoOperations.centerpointCoordinates(feature) - const includeLayout = window.location.pathname - .split("/") - .at(-1) - .startsWith("theme") - const layout = includeLayout - ? "layout=" + state.layout.id + "&" - : "" - const url = - `${window.location.protocol}//${window.location.host}${window.location.pathname}?${layout}lat=${lat}&lon=${lon}&z=15` + - `#${id}` - return new Img(new Qr(url).toImageElement(size.data)).SetStyle( - `width: ${size.data}px` - ) - }, - [size] - ) - ).onClick(() => { - if (size.data !== bigSize) { - size.setData(bigSize) - } else { - size.setData(smallSize) - } - }) + ): SvelteUIElement { + return new SvelteUIElement(QrCode , {state, tags, feature} ) } }, {