| 
									
										
										
										
											2018-03-03 16:12:48 -08:00
										 |  |  | <span class="compose-box-length {{overLimit ? 'over-char-limit' : ''}}" | 
					
						
							| 
									
										
										
										
											2018-03-03 14:51:48 -08:00
										 |  |  |       aria-label="{{lengthLabel}}"> | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |       {{lengthToDisplayDeferred || '0'}} | 
					
						
							| 
									
										
										
										
											2018-02-26 21:50:03 -08:00
										 |  |  |     </span> | 
					
						
							|  |  |  | <style> | 
					
						
							|  |  |  |   .compose-box-length { | 
					
						
							|  |  |  |     grid-area: length; | 
					
						
							|  |  |  |     justify-self: right; | 
					
						
							|  |  |  |     color: var(--main-theme-color); | 
					
						
							|  |  |  |     font-size: 1.3em; | 
					
						
							|  |  |  |     align-self: center; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .compose-box-length.over-char-limit { | 
					
						
							|  |  |  |     color: var(--warning-color); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   import { CHAR_LIMIT } from '../../_static/statuses' | 
					
						
							|  |  |  |   import { mark, stop } from '../../_utils/marks' | 
					
						
							| 
									
										
										
										
											2018-02-26 22:22:56 -08:00
										 |  |  |   import { store } from '../../_store/store' | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |   import { scheduleIdleTask } from '../../_utils/scheduleIdleTask' | 
					
						
							| 
									
										
										
										
											2018-02-26 21:50:03 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   export default { | 
					
						
							|  |  |  |     oncreate() { | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |       this.set({lengthToDisplayDeferred: this.get('lengthToDisplay')}) | 
					
						
							| 
									
										
										
										
											2018-02-26 22:22:56 -08:00
										 |  |  |       // perf improvement for keyboard input latency | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |       this.observe('lengthToDisplay', () => { | 
					
						
							|  |  |  |         scheduleIdleTask(() => { | 
					
						
							|  |  |  |           mark('set lengthToDisplayDeferred') | 
					
						
							|  |  |  |           this.set({lengthToDisplayDeferred: this.get('lengthToDisplay')}) | 
					
						
							|  |  |  |           stop('set lengthToDisplayDeferred') | 
					
						
							| 
									
										
										
										
											2018-02-26 21:50:03 -08:00
										 |  |  |         }) | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |       }, {init: false}) | 
					
						
							| 
									
										
										
										
											2018-02-26 21:50:03 -08:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-02-26 22:22:56 -08:00
										 |  |  |     store: () => store, | 
					
						
							| 
									
										
										
										
											2018-02-26 21:50:03 -08:00
										 |  |  |     computed: { | 
					
						
							| 
									
										
										
										
											2018-03-03 16:12:48 -08:00
										 |  |  |       lengthToDisplay: (length) => CHAR_LIMIT - length, | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |       lengthLabel: (overLimit, lengthToDisplayDeferred) => { | 
					
						
							| 
									
										
										
										
											2018-03-03 16:12:48 -08:00
										 |  |  |         if (overLimit) { | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |           return `${lengthToDisplayDeferred} characters over limit` | 
					
						
							| 
									
										
										
										
											2018-02-26 21:50:03 -08:00
										 |  |  |         } else { | 
					
						
							| 
									
										
										
										
											2018-03-12 20:18:34 -07:00
										 |  |  |           return `${lengthToDisplayDeferred} characters remaining` | 
					
						
							| 
									
										
										
										
											2018-02-26 21:50:03 -08:00
										 |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | </script> |