|
<script lang="ts"> |
|
import { tooltip } from '$lib/utils/tooltip'; |
|
import IconLineWrap from '../Icons/IconLineWrap.svelte'; |
|
|
|
export const hydrate = true; |
|
|
|
export let classNames = ''; |
|
export let wrapLines = false; |
|
export let style: 'blank' | 'button' | 'button-clear' | 'text' = 'text'; |
|
|
|
function toggleWrapLines() { |
|
wrapLines = !wrapLines; |
|
} |
|
|
|
function onKeyDown(e: KeyboardEvent) { |
|
const { key, code, altKey } = e; |
|
|
|
if (((key === 'z' || code === 'KeyZ') && altKey) || key === 'Â') { |
|
e.preventDefault(); |
|
toggleWrapLines(); |
|
} |
|
} |
|
</script> |
|
|
|
<svelte:window on:keydown={onKeyDown} /> |
|
|
|
{#key wrapLines} |
|
<button |
|
class="border-gray-500 {classNames} |
|
{style !== 'blank' |
|
? 'inline-flex cursor-pointer items-center justify-center text-sm focus:outline-hidden' |
|
: ''} |
|
{['button', 'button-clear'].includes(style) ? 'bg-white dark:bg-gray-900 dark:text-white' : ''} |
|
{style === 'text' ? 'mx-0.5' : ''} |
|
{style === 'button' ? 'btn' : ''} |
|
{style === 'button-clear' ? 'rounded-md border p-1 shadow-xs' : ''} |
|
" |
|
type="button" |
|
on:click={toggleWrapLines} |
|
use:tooltip={wrapLines ? 'Unwrap lines' : 'Wrap lines'} |
|
><IconLineWrap classNames={wrapLines ? 'opacity-100' : 'opacity-40'} /></button |
|
> |
|
{/key} |
|
|