<section class="container">
  <div class="left-half noprint">
    <div class="editor">
      <ul class="toolbar">
        <li><button type="button" data-command="bold">Fett</button></li>
        <li><button type="button" data-command="italic">Kursiv</button></li>
        <!-- <li><button type="button" data-command="link">Link</button></li>
        <li><button type="button" data-command="image">Bild</button></li> -->
        <li><button type="button" data-command="header1">Groß</button></li>
        <li><button type="button" data-command="header2">Bisschen Groß</button></li>
        <li><button type="button" data-command="unorderedList">Liste</button></li>
        <li><button type="button" data-command="orderedList">Aufzählung</button></li>
        <!-- <li><button type="button" data-command="code"></button></li> -->
      </ul>
      <textarea bind:value=text type=text>{text}</textarea>
    </div>
  </div>
  <div class="right-half">
    {#each schueler as s (s.ID)}
      <Brief schueler={schueler}><span slot="kuerzel">{s.Lehrer}</span><span slot="anschrift">{s.Vorname} {s.Name}<br>{s.Strasse}<br>{s.PLZ} {s.OrtAbk}</span><svelte:component this={Component} s={s} /></Brief>
    {/each}
  </div>
</section>

<script>
import svelte from 'svelte'
import TextareaEditor from 'textarea-editor'
import marked from 'marked'

export default {
  oncreate () {
    const textarea = document.querySelector('textarea')
    const toolbar = document.querySelector('.toolbar')
    const editor = new TextareaEditor(textarea)
    toolbar.addEventListener('mousedown', e => e.preventDefault());

    toolbar.addEventListener('click', e => {
      const command = e.target.getAttribute('data-command');
      if (!command) return;
      let url;
      if (/image|link/.test(command) && !editor.hasFormat(command)) {
        url = prompt('URL:');
      }
      editor.toggle(command, url);
    })
    textarea.addEventListener('keydown', (e) => {
      const key = e.which;
      const cmd = e.metaKey || e.ctrlKey;
      if (!cmd) return;
      switch (key) {
        case 66:
          editor.toggle('bold');
          break;
        case 73:
          editor.toggle('italic');
          break;
        default: return;
      }
      e.preventDefault();
    })
  },
  data () {return {
    text: 'Hallo {s.Vorname}'
    }},
  computed: {
    Component: ({text}) => svelte.create(marked(text, { sanitize: false }))
  },
  components: {Brief: './brief.html'}
}
</script>

<style>
@import 'daten/main.css';
/* Pattern styles */
.container {
  display: grid;
  grid-gap: 10px;
  grid-template-columns: 1fr 2fr;
  margin-top: 10px;
}

.left-half {
  grid-column: 1;
}

.right-half {
  grid-column: 2;
}

.editor {
  position: sticky;
  top: 60px;
  height: 90%;
  margin-left: 10px;
}

textarea {
  width: 100%;
  height: 100%;
  padding: 20px;
  border-color: #ccc;
  resize: none;
  font-size: 1.6em;
}

textarea:focus {
  outline: none;
  border-color: #3498db;
}

.toolbar {
  background: #ddd;
  list-style: none;
  margin: 0;
  padding: 0;
  overflow: hidden;
  width: 100%;
}

.toolbar button {
  float: left;
  font-weight: bold;
  background: #ddd;
  color: #333;
  border: none;
  padding: 15px;
}

.toolbar button:hover {
  background: #ccc;
}
</style>