mapcomplete/UI/Popup/ShareLinkViz.ts

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

49 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-05-24 00:07:56 +02:00
import {UIEventSource} from "../../Logic/UIEventSource"
2022-11-02 14:44:06 +01:00
import LayerConfig from "../../Models/ThemeConfig/LayerConfig"
2023-05-24 00:07:56 +02:00
import {SpecialVisualization, SpecialVisualizationState} from "../SpecialVisualization";
2023-05-11 17:29:25 +02:00
import SvelteUIElement from "../Base/SvelteUIElement";
import ShareButton from "../Base/ShareButton.svelte";
export class ShareLinkViz implements SpecialVisualization {
funcName = "share_link"
docs = "Creates a link that (attempts to) open the native 'share'-screen"
example =
"{share_link()} to share the current page, {share_link(<some_url>)} to share the given url"
args = [
{
name: "url",
doc: "The url to share (default: current URL)",
},
]
2023-03-28 05:13:48 +02:00
public constr(state: SpecialVisualizationState, tagSource: UIEventSource<Record<string, string>>, args: string[]) {
const generateShareData = () => {
2023-03-28 05:13:48 +02:00
const title = state?.layout?.title?.txt ?? "MapComplete"
2023-03-28 05:13:48 +02:00
let matchingLayer: LayerConfig = state?.layout?.getMatchingLayer(
tagSource?.data
)
let name =
2023-05-24 01:54:57 +02:00
matchingLayer?.title?.GetRenderValue(tagSource.data)?.Subs(tagSource.data)?.txt ??
tagSource.data?.name ??
"POI"
if (name) {
name = `${name} (${title})`
} else {
name = title
}
let url = args[0] ?? ""
if (url === "") {
url = window.location.href
}
return {
title: name,
url: url,
2023-03-28 05:13:48 +02:00
text: state?.layout?.shortDescription?.txt ?? "MapComplete",
}
}
2023-05-11 17:29:25 +02:00
return new SvelteUIElement(ShareButton, {generateShareData})
}
}