| 
									
										
										
										
											2018-03-03 15:44:43 -08:00
										 |  |  | <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' | 
					
						
							| 
									
										
										
										
											2018-04-05 17:57:36 -07:00
										 |  |  |   import debounce from 'lodash-es/debounce' | 
					
						
							| 
									
										
										
										
											2018-03-03 15:44:43 -08:00
										 |  |  |   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> |