2021-11-11 23:37:42 +01:00
|
|
|
<script lang="ts">
|
|
|
|
import { identify, useEntity } from "../lib/entity";
|
|
|
|
|
|
|
|
import HashBadge from "./HashBadge.svelte";
|
|
|
|
|
|
|
|
import Marquee from "./Marquee.svelte";
|
|
|
|
import UpLink from "./UpLink.svelte";
|
|
|
|
|
|
|
|
export let address: string;
|
|
|
|
export let link = false;
|
|
|
|
export let isFile = false;
|
|
|
|
export let resolve = true;
|
|
|
|
|
|
|
|
// Identification
|
|
|
|
let inferredIds = [];
|
|
|
|
const { attributes, backlinks } = useEntity(address, () => resolve);
|
|
|
|
$: {
|
|
|
|
if (resolve) {
|
|
|
|
identify($attributes, $backlinks).then((inferredEntries) => {
|
|
|
|
inferredIds = inferredEntries.map((eid) => eid.value);
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<div class="address" class:identified={Boolean(inferredIds)}>
|
|
|
|
<HashBadge {address} />
|
2021-11-30 20:59:53 +01:00
|
|
|
<div class="separator" />
|
2021-11-11 23:37:42 +01:00
|
|
|
<Marquee>
|
|
|
|
{#if isFile}
|
|
|
|
<UpLink to={{ entity: address }}>
|
|
|
|
{address}
|
|
|
|
</UpLink>
|
|
|
|
{:else if link}
|
|
|
|
<UpLink to={{ entity: address }}>
|
|
|
|
{inferredIds.join(" | ") || address}
|
|
|
|
</UpLink>
|
|
|
|
{:else}
|
|
|
|
{inferredIds.join(" | ") || address}
|
|
|
|
{/if}
|
|
|
|
</Marquee>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<style scoped lang="scss">
|
|
|
|
.address {
|
|
|
|
display: flex;
|
|
|
|
align-items: center;
|
|
|
|
|
2021-11-30 20:59:53 +01:00
|
|
|
padding: 0.1em;
|
|
|
|
|
|
|
|
border: 0.1em solid var(--foreground);
|
|
|
|
border-radius: 0.2em;
|
|
|
|
|
|
|
|
font-family: var(--monospace-font);
|
|
|
|
line-break: anywhere;
|
2021-11-11 23:37:42 +01:00
|
|
|
|
|
|
|
&.identified {
|
|
|
|
font-family: var(--default-font);
|
|
|
|
font-size: 0.95em;
|
|
|
|
line-break: auto;
|
|
|
|
}
|
2021-11-30 20:59:53 +01:00
|
|
|
}
|
2021-11-11 23:37:42 +01:00
|
|
|
|
2021-11-30 20:59:53 +01:00
|
|
|
.separator {
|
|
|
|
width: 0.5em;
|
2021-11-11 23:37:42 +01:00
|
|
|
}
|
|
|
|
</style>
|