open-webui/src/lib/components/chat/Messages/Markdown/Source.svelte

33 lines
834 B
Svelte
Raw Normal View History

2024-11-22 01:58:29 +00:00
<script lang="ts">
export let token;
export let onClick: Function = () => {};
2025-02-13 07:55:14 +00:00
let attributes: Record<string, string> = {};
function extractAttributes(input: string): Record<string, string> {
const regex = /(\w+)="([^"]*)"/g;
let match;
let attrs: Record<string, string> = {};
// Loop through all matches and populate the attributes object
while ((match = regex.exec(input)) !== null) {
attrs[match[1]] = match[2];
}
return attrs;
2024-11-22 01:58:29 +00:00
}
2025-02-13 07:55:14 +00:00
$: attributes = extractAttributes(token.text);
2024-11-22 01:58:29 +00:00
</script>
<button
2024-11-22 04:20:46 +00:00
class="text-xs font-medium w-fit translate-y-[2px] px-2 py-0.5 dark:bg-white/5 dark:text-white/60 dark:hover:text-white bg-gray-50 text-black/60 hover:text-black transition rounded-lg"
2024-11-22 01:58:29 +00:00
on:click={() => {
2025-02-13 07:55:14 +00:00
onClick(attributes.data);
2024-11-22 01:58:29 +00:00
}}
>
2024-11-22 04:20:46 +00:00
<span class="line-clamp-1">
2025-02-13 07:55:14 +00:00
{attributes.title}
2024-11-22 04:20:46 +00:00
</span>
2024-11-22 01:58:29 +00:00
</button>