| 
									
										
										
										
											2018-02-08 19:09:22 -08:00
										 |  |  | <article class="status-article {{getClasses(originalStatus, timelineType, isStatusInOwnThread)}}" | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:13 -08:00
										 |  |  |          tabindex="0" | 
					
						
							|  |  |  |          delegate-click-key="{{delegateKey}}" | 
					
						
							|  |  |  |          delegate-keydown-key="{{delegateKey}}" | 
					
						
							|  |  |  |          aria-posinset="{{index}}" | 
					
						
							|  |  |  |          aria-setsize="{{length}}" | 
					
						
							| 
									
										
										
										
											2018-02-10 11:00:56 -08:00
										 |  |  |          aria-label="Status by {{originalStatus.account.display_name || originalStatus.account.username}}" | 
					
						
							| 
									
										
										
										
											2018-01-27 18:25:49 -08:00
										 |  |  |          on:recalculateHeight> | 
					
						
							| 
									
										
										
										
											2018-02-04 10:05:01 -08:00
										 |  |  |   {{#if (notification && (notification.type === 'reblog' || notification.type === 'favourite')) || status.reblog}} | 
					
						
							| 
									
										
										
										
											2018-02-04 12:49:42 -08:00
										 |  |  |     <StatusHeader :notification :status :isStatusInNotification /> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-02-09 22:55:11 -08:00
										 |  |  |   <StatusAuthorName status="{{originalStatus}}" :isStatusInOwnThread :isStatusInNotification /> | 
					
						
							|  |  |  |   <StatusAuthorHandle status="{{originalStatus}}" :isStatusInNotification /> | 
					
						
							|  |  |  |   {{#if !isStatusInOwnThread}} | 
					
						
							|  |  |  |     <StatusRelativeDate status="{{originalStatus}}" :isStatusInNotification /> | 
					
						
							|  |  |  |   {{/if}} | 
					
						
							|  |  |  |   <StatusSidebar status="{{originalStatus}}" :isStatusInOwnThread /> | 
					
						
							| 
									
										
										
										
											2018-01-23 18:25:05 -08:00
										 |  |  |   {{#if originalStatus.spoiler_text}} | 
					
						
							| 
									
										
										
										
											2018-02-09 22:55:11 -08:00
										 |  |  |     <StatusSpoiler status="{{originalStatus}}" :isStatusInOwnThread :contextualStatusId :isStatusInNotification on:recalculateHeight /> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-23 18:25:05 -08:00
										 |  |  |   {{#if !originalStatus.spoiler_text || spoilerShown}} | 
					
						
							| 
									
										
										
										
											2018-02-04 12:49:42 -08:00
										 |  |  |     <StatusContent status="{{originalStatus}}" :isStatusInOwnThread :isStatusInNotification /> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-02-04 12:18:22 -08:00
										 |  |  |   {{#if originalStatus.media_attachments && originalStatus.media_attachments.length}} | 
					
						
							| 
									
										
										
										
											2018-02-04 12:27:28 -08:00
										 |  |  |     <StatusMediaAttachments status="{{originalStatus}}" :contextualStatusId on:recalculateHeight /> | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-02-09 22:55:11 -08:00
										 |  |  |   {{#if isStatusInOwnThread}} | 
					
						
							|  |  |  |   <StatusAbsoluteDate status="{{originalStatus}}" /> | 
					
						
							|  |  |  |   {{/if}} | 
					
						
							|  |  |  |   <StatusToolbar :status :isStatusInOwnThread /> | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  | </article> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <style> | 
					
						
							| 
									
										
										
										
											2018-01-16 08:38:23 -08:00
										 |  |  |   .status-article { | 
					
						
							| 
									
										
										
										
											2018-02-10 11:00:56 -08:00
										 |  |  |     cursor: pointer; | 
					
						
							| 
									
										
										
										
											2018-01-16 08:44:35 -08:00
										 |  |  |     max-width: calc(100vw - 40px); | 
					
						
							|  |  |  |     padding: 10px 20px; | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     display: grid; | 
					
						
							|  |  |  |     grid-template-areas: | 
					
						
							| 
									
										
										
										
											2018-02-09 22:55:11 -08:00
										 |  |  |         "....... header       header        header" | 
					
						
							|  |  |  |         "sidebar author-name  author-handle relative-date" | 
					
						
							|  |  |  |         "sidebar spoiler      spoiler       spoiler" | 
					
						
							|  |  |  |         "sidebar spoiler-btn  spoiler-btn   spoiler-btn" | 
					
						
							|  |  |  |         "sidebar content      content       content" | 
					
						
							|  |  |  |         "media   media        media         media" | 
					
						
							|  |  |  |         "....... toolbar      toolbar       toolbar"; | 
					
						
							| 
									
										
										
										
											2018-02-09 22:01:44 -08:00
										 |  |  |     grid-template-columns: min-content minmax(0, max-content) 1fr min-content; | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-16 08:38:23 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-06 20:54:49 -08:00
										 |  |  |   .status-article.status-in-timeline { | 
					
						
							|  |  |  |     width: 560px; | 
					
						
							|  |  |  |     border-bottom: 1px solid var(--main-border); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-27 18:25:49 -08:00
										 |  |  |   .status-article.status-direct { | 
					
						
							|  |  |  |     background-color: var(--status-direct-background); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-09 22:55:11 -08:00
										 |  |  |   .status-article.status-in-own-thread { | 
					
						
							|  |  |  |     grid-template-areas: | 
					
						
							|  |  |  |       "sidebar     author-name" | 
					
						
							|  |  |  |       "sidebar     author-handle" | 
					
						
							|  |  |  |       "spoiler     spoiler" | 
					
						
							|  |  |  |       "spoiler-btn spoiler-btn" | 
					
						
							|  |  |  |       "content     content" | 
					
						
							|  |  |  |       "media       media" | 
					
						
							|  |  |  |       "date        date" | 
					
						
							|  |  |  |       "toolbar     toolbar"; | 
					
						
							|  |  |  |     grid-template-columns: min-content 1fr; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 22:40:40 -08:00
										 |  |  |   @media (max-width: 767px) { | 
					
						
							|  |  |  |     .status-article { | 
					
						
							|  |  |  |       padding: 10px 10px; | 
					
						
							|  |  |  |       max-width: calc(100vw - 20px); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							| 
									
										
										
										
											2018-02-04 10:50:39 -08:00
										 |  |  |   import StatusSidebar from './StatusSidebar.html' | 
					
						
							|  |  |  |   import StatusHeader from './StatusHeader.html' | 
					
						
							| 
									
										
										
										
											2018-02-09 22:55:11 -08:00
										 |  |  |   import StatusAuthorName from './StatusAuthorName.html' | 
					
						
							|  |  |  |   import StatusAuthorHandle from './StatusAuthorHandle.html' | 
					
						
							|  |  |  |   import StatusRelativeDate from './StatusRelativeDate.html' | 
					
						
							|  |  |  |   import StatusAbsoluteDate from './StatusAbsoluteDate.html' | 
					
						
							| 
									
										
										
										
											2018-02-04 10:50:39 -08:00
										 |  |  |   import StatusToolbar from './StatusToolbar.html' | 
					
						
							|  |  |  |   import StatusMediaAttachments from './StatusMediaAttachments.html' | 
					
						
							| 
									
										
										
										
											2018-02-04 12:18:22 -08:00
										 |  |  |   import StatusContent from './StatusContent.html' | 
					
						
							|  |  |  |   import StatusSpoiler from './StatusSpoiler.html' | 
					
						
							| 
									
										
										
										
											2018-01-28 13:09:39 -08:00
										 |  |  |   import { store } from '../../_store/store' | 
					
						
							| 
									
										
										
										
											2018-02-08 19:09:22 -08:00
										 |  |  |   import identity from 'lodash/identity' | 
					
						
							| 
									
										
										
										
											2018-02-10 11:00:56 -08:00
										 |  |  |   import { goto } from 'sapper/runtime.js' | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:13 -08:00
										 |  |  |   import { registerDelegate, unregisterDelegate } from '../../_utils/delegate' | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   export default { | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:13 -08:00
										 |  |  |     oncreate() { | 
					
						
							|  |  |  |       let delegateKey = this.get('delegateKey') | 
					
						
							|  |  |  |       let onClickOrKeydown = this.onClickOrKeydown.bind(this) | 
					
						
							|  |  |  |       registerDelegate('click', delegateKey, onClickOrKeydown) | 
					
						
							|  |  |  |       registerDelegate('keydown', delegateKey, onClickOrKeydown) | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     ondestroy() { | 
					
						
							|  |  |  |       let delegateKey = this.get('delegateKey') | 
					
						
							|  |  |  |       unregisterDelegate('click', delegateKey) | 
					
						
							|  |  |  |       unregisterDelegate('keydown', delegateKey) | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     components: { | 
					
						
							| 
									
										
										
										
											2018-02-04 10:50:39 -08:00
										 |  |  |       StatusSidebar, | 
					
						
							| 
									
										
										
										
											2018-02-04 10:23:18 -08:00
										 |  |  |       StatusHeader, | 
					
						
							| 
									
										
										
										
											2018-02-09 22:55:11 -08:00
										 |  |  |       StatusAuthorName, | 
					
						
							|  |  |  |       StatusAuthorHandle, | 
					
						
							|  |  |  |       StatusRelativeDate, | 
					
						
							|  |  |  |       StatusAbsoluteDate, | 
					
						
							| 
									
										
										
										
											2018-02-04 10:50:39 -08:00
										 |  |  |       StatusToolbar, | 
					
						
							|  |  |  |       StatusMediaAttachments, | 
					
						
							| 
									
										
										
										
											2018-02-04 12:18:22 -08:00
										 |  |  |       StatusContent, | 
					
						
							|  |  |  |       StatusSpoiler | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |     store: () => store, | 
					
						
							| 
									
										
										
										
											2018-02-06 20:54:49 -08:00
										 |  |  |     helpers: { | 
					
						
							| 
									
										
										
										
											2018-02-08 19:09:22 -08:00
										 |  |  |       getClasses(originalStatus, timelineType, isStatusInOwnThread) { | 
					
						
							|  |  |  |         return [ | 
					
						
							|  |  |  |           originalStatus.visibility === 'direct' && 'status-direct', | 
					
						
							|  |  |  |           timelineType !== 'search' && 'status-in-timeline', | 
					
						
							|  |  |  |           isStatusInOwnThread && 'status-in-own-thread' | 
					
						
							|  |  |  |         ].filter(identity).join(' ') | 
					
						
							| 
									
										
										
										
											2018-02-06 20:54:49 -08:00
										 |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-02-10 11:00:56 -08:00
										 |  |  |     methods: { | 
					
						
							|  |  |  |       onClickOrKeydown(e) { | 
					
						
							|  |  |  |         let { type, keyCode } = e | 
					
						
							|  |  |  |         let { localName, parentElement } = e.target | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if ((type === 'click' || (type === 'keydown' && keyCode === 13)) && | 
					
						
							|  |  |  |             localName !== 'a' && | 
					
						
							|  |  |  |             localName !== 'button' && | 
					
						
							|  |  |  |             parentElement.localName !== 'a' && | 
					
						
							|  |  |  |             parentElement.localName !== 'button' && | 
					
						
							|  |  |  |             parentElement.parentElement.localName !== 'a' && | 
					
						
							|  |  |  |             parentElement.parentElement.localName !== 'button') { | 
					
						
							|  |  |  |           e.preventDefault() | 
					
						
							|  |  |  |           e.stopPropagation() | 
					
						
							|  |  |  |           goto(`/statuses/${this.get('statusId')}`) | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     computed: { | 
					
						
							| 
									
										
										
										
											2018-01-19 00:51:51 -08:00
										 |  |  |       originalStatus: (status) => status.reblog ? status.reblog : status, | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |       statusId: (originalStatus) => originalStatus.id, | 
					
						
							| 
									
										
										
										
											2018-02-10 11:30:13 -08:00
										 |  |  |       delegateKey: (statusId, timelineType, timelineValue) => `status-${timelineType}-${timelineValue}-${statusId}`, | 
					
						
							| 
									
										
										
										
											2018-02-04 12:49:42 -08:00
										 |  |  |       contextualStatusId: ($currentInstance, timelineType, timelineValue, status, notification) => { | 
					
						
							|  |  |  |         return `${$currentInstance}/${timelineType}/${timelineValue}/${notification ? notification.id : ''}/${status.id}` | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-02-04 10:55:10 -08:00
										 |  |  |       originalAccount: (originalStatus) => originalStatus.account, | 
					
						
							| 
									
										
										
										
											2018-02-04 12:18:22 -08:00
										 |  |  |       isStatusInOwnThread: (timelineType, timelineValue, statusId) => timelineType === 'status' && timelineValue === statusId, | 
					
						
							| 
									
										
										
										
											2018-02-04 12:49:42 -08:00
										 |  |  |       isStatusInNotification: (status, notification) => notification && notification.status && notification.type !== 'mention' && notification.status.id === status.id, | 
					
						
							| 
									
										
										
										
											2018-02-04 12:27:28 -08:00
										 |  |  |       spoilerShown: ($spoilersShown, contextualStatusId) => !!$spoilersShown[contextualStatusId] | 
					
						
							| 
									
										
										
										
											2018-01-10 21:31:33 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | </script> |