forked from cybrespace/pinafore
		
	
		
			
	
	
		
			48 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
|  | <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> |