<script>
	import { createEventDispatcher } from 'svelte';

	export let current_ease;
	export let current_type;
	export let eases;
	export let types;
	export let duration;
	export let playing;
	export let width;

	const dispatch = createEventDispatcher();

	$: mobile = width && width < 600;
</script>

<div class="easing-sidebar">
	<div class="easing-types">
		<h3>Ease</h3>
		{#if mobile}
			<select bind:value={current_ease}>
				{#each [...eases] as [name]}
					<option value={name} class:selected={name === current_ease}>
						{name}
					</option>
				{/each}
			</select>
		{:else}
			<ul>
				{#each [...eases] as [name]}
					<li class:selected={name === current_ease}>
						<button on:click={() => (current_ease = name)}> {name}</button>
					</li>
				{/each}
			</ul>
		{/if}
		<h3>Type</h3>
		{#if mobile}
			<select bind:value={current_type}>
				{#each types as [name, type]}
					<option value={type}>
						{name}
					</option>
				{/each}
			</select>
		{:else}
			<ul>
				{#each types as [name, type]}
					<li class:selected={type === current_type}>
						<button on:click={() => (current_type = type)}> {name}</button>
					</li>
				{/each}
			</ul>
		{/if}
	</div>
	<h4>Duration</h4>
	<div class="duration">
		<span>
			<input type="number" bind:value={duration} min="0" step="100" />
			<button class="number" on:click={() => (duration -= 100)}>-</button>
			<button class="number" on:click={() => (duration += 100)}>+</button>
		</span>
		<button class="play" on:click={() => dispatch('play')}>
			{playing ? 'Restart' : 'Play'}
		</button>
	</div>
</div>

<style>
	.easing-sidebar {
		width: 11em;
	}

	ul {
		list-style: none;
		padding: 0;
		display: grid;
		grid-template-columns: 1fr;
		gap: 3px;
		font-size: 18px;
	}

	li {
		display: grid;
	}

	li:hover {
		background: #676778;
		color: white;
	}

	button {
		border: none;
		border-radius: 2px;
		padding: 2px;
	}

	.selected > button {
		background: #ff3e00;
		color: white;
		font-weight: bold;
	}

	h3 {
		margin: 0 10px 0 0;
	}

	h4 {
		margin-bottom: 0;
	}

	select {
		display: inline;
		padding: 0.2em;
		margin: 0;
	}

	.duration {
		width: 100%;
		display: flex;
		align-items: center;
		flex-wrap: wrap;
	}

	.duration span {
		display: flex;
	}

	.duration input {
		width: 80px;
		margin: 10px 10px 10px 0;
	}

	.duration button {
		margin: 10px 5px;
	}

	.duration .number {
		width: 30px;
	}

	.duration .play {
		margin: 0 5px 0 auto;
		width: 100%;
	}

	@media (max-width: 600px) {
		.easing-types {
			display: flex;
			align-items: center;
			margin-top: 10px;
		}

		.easing-sidebar {
			width: 100%;
		}

		.duration .play {
			margin-left: auto;
			width: unset;
		}

		h3 {
			font-size: 0.9em;
			display: inline;
		}

		h3:nth-of-type(2) {
			margin-left: auto;
		}

		ul li {
			margin-right: 10px;
		}
	}
</style>
