<input class="content-warning-input"
       type="text"
       placeholder="Content warning"
       aria-label="Content warning"
       bind:value=rawText
/>
<style>
  .content-warning-input {
    font-size: 1.2em;
    margin: 10px 0 0 5px;
    padding: 10px;
    border: 1px solid var(--input-border);
    width: calc(100% - 5px);
  }
</style>
<script>
  import { store } from '../../_store/store'
  import debounce from 'lodash/debounce'
  import { scheduleIdleTask } from '../../_utils/scheduleIdleTask'

  export default {
    oncreate() {
      this.setupSyncFromStore()
      this.setupSyncToStore()
    },
    store: () => store,
    data: () => ({
      rawText: ''
    }),
    methods: {
      setupSyncFromStore() {
        this.observe('contentWarning', contentWarning => {
          this.set({rawText: contentWarning})
        })
      },
      setupSyncToStore() {
        const saveText = debounce(() => scheduleIdleTask(() => this.store.save()), 1000)

        this.observe('rawText', rawText => {
          this.store.setComposeData(this.get('realm'), {
            contentWarning: rawText
          })
          saveText()
        }, {init: false})
      }
    }
  }
</script>