| 
									
										
										
										
											2018-01-30 21:02:07 -08:00
										 |  |  | <article class="status-article {{originalStatus.visibility === 'direct' ? 'status-direct' : ''}} {{isStatusInContext ? 'status-in-context' : ''}}" | 
					
						
							|  |  |  |          tabindex="0" | 
					
						
							| 
									
										
										
										
											2018-01-27 18:25:49 -08:00
										 |  |  |          aria-posinset="{{index}}" aria-setsize="{{length}}" | 
					
						
							|  |  |  |          on:recalculateHeight> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |   {{#if status.reblog}} | 
					
						
							|  |  |  |     <div class="status-boosted"> | 
					
						
							|  |  |  |       <svg> | 
					
						
							|  |  |  |         <use xlink:href="#fa-retweet" /> | 
					
						
							|  |  |  |       </svg> | 
					
						
							|  |  |  |       <span> | 
					
						
							| 
									
										
										
										
											2018-01-28 21:07:31 -08:00
										 |  |  |         <a href="/accounts/{{status.account.id}}">{{status.account.username}}</a> | 
					
						
							| 
									
										
										
										
											2018-01-28 17:10:03 -08:00
										 |  |  |         boosted | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |       </span> | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   <div class="status-author"> | 
					
						
							| 
									
										
										
										
											2018-01-28 21:07:31 -08:00
										 |  |  |     <a class="status-author-name" href="/accounts/{{originalAccount.id}}"> | 
					
						
							|  |  |  |       {{originalAccount.display_name || originalAccount.username}} | 
					
						
							|  |  |  |     </a> | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |     <span class="status-author-handle"> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |       {{'@' + originalAccount.acct}} | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     </span> | 
					
						
							| 
									
										
										
										
											2018-01-30 18:26:13 -08:00
										 |  |  |     {{#if isStatusInContext}} | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |       <ExternalLink class="status-author-date" href="{{originalStatus.url}}" showIcon="true"> | 
					
						
							| 
									
										
										
										
											2018-01-28 17:10:03 -08:00
										 |  |  |         <time datetime={{createdAtDate}} title="{{relativeDate}}">{{relativeDate}}</time> | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |       </ExternalLink> | 
					
						
							| 
									
										
										
										
											2018-01-28 17:10:03 -08:00
										 |  |  |     {{else}} | 
					
						
							|  |  |  |       <a class="status-author-date" href="/statuses/{{originalStatus.id}}"> | 
					
						
							|  |  |  |         <time datetime={{createdAtDate}} title="{{relativeDate}}">{{relativeDate}}</time> | 
					
						
							|  |  |  |       </a> | 
					
						
							|  |  |  |     {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |   </div> | 
					
						
							| 
									
										
										
										
											2018-01-17 17:02:43 -08:00
										 |  |  |   <Avatar account={{originalAccount}} className="status-sidebar"/> | 
					
						
							| 
									
										
										
										
											2018-01-23 18:25:05 -08:00
										 |  |  |   {{#if originalStatus.spoiler_text}} | 
					
						
							|  |  |  |     <div class="status-spoiler">{{originalStatus.spoiler_text}}</div> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-23 18:25:05 -08:00
										 |  |  |   {{#if originalStatus.spoiler_text}} | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |     <div class="status-spoiler-button"> | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |       <button type="button" on:click="onClickSpoilerButton()">{{spoilerShown ? 'Show less' : 'Show more'}}</button> | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |     </div> | 
					
						
							|  |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-23 18:25:05 -08:00
										 |  |  |   {{#if !originalStatus.spoiler_text || spoilerShown}} | 
					
						
							| 
									
										
										
										
											2018-01-30 21:02:07 -08:00
										 |  |  |     <div class="status-content" ref:contentNode> | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |       {{{emojifiedContent}}} | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |     </div> | 
					
						
							|  |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |   {{#if originalMediaAttachments && originalMediaAttachments.length}} | 
					
						
							| 
									
										
										
										
											2018-01-24 23:46:01 -08:00
										 |  |  |     {{#if originalStatus.sensitive}} | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |       <div class="status-sensitive-media-container {{sensitiveShown ? 'status-sensitive-media-shown' : 'status-sensitive-media-hidden'}}" | 
					
						
							|  |  |  |               > | 
					
						
							|  |  |  |         <button type="button" class="status-sensitive-media-button" | 
					
						
							|  |  |  |                 aria-label="{{sensitiveShown ? 'Hide sensitive media: ' : 'Show sensitive media'}}" | 
					
						
							|  |  |  |                 on:click="onClickSensitiveMediaButton()" > | 
					
						
							|  |  |  |           {{#if !sensitiveShown}} | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |           <div class="status-sensitive-media-warning"> | 
					
						
							|  |  |  |             <span> | 
					
						
							|  |  |  |               Sensitive content. Click to show. | 
					
						
							|  |  |  |             </span> | 
					
						
							|  |  |  |           </div> | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |           {{/if}} | 
					
						
							|  |  |  |           <div class="svg-wrapper"> | 
					
						
							|  |  |  |             <svg> | 
					
						
							|  |  |  |               <use xlink:href="{{sensitiveShown ? '#fa-eye-slash' : '#fa-eye'}}" /> | 
					
						
							|  |  |  |             </svg> | 
					
						
							|  |  |  |           </div> | 
					
						
							|  |  |  |         </button> | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |         {{#if sensitiveShown}} | 
					
						
							| 
									
										
										
										
											2018-01-24 23:46:01 -08:00
										 |  |  |           <Media mediaAttachments="{{originalMediaAttachments}}" sensitive="{{originalStatus.sensitive}}"/> | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |         {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |       </div> | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     {{else}} | 
					
						
							| 
									
										
										
										
											2018-01-24 23:46:01 -08:00
										 |  |  |       <Media mediaAttachments="{{originalMediaAttachments}}" sensitive="{{originalStatus.sensitive}}"/> | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     {{/if}} | 
					
						
							|  |  |  |   {{/if}} | 
					
						
							| 
									
										
										
										
											2018-01-20 21:42:46 -08:00
										 |  |  |   <Toolbar :status /> | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  | </article> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | <style> | 
					
						
							| 
									
										
										
										
											2018-01-16 08:38:23 -08:00
										 |  |  |   .status-article { | 
					
						
							| 
									
										
										
										
											2018-01-16 08:44:35 -08:00
										 |  |  |     width: 560px; | 
					
						
							|  |  |  |     max-width: calc(100vw - 40px); | 
					
						
							|  |  |  |     padding: 10px 20px; | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     display: grid; | 
					
						
							|  |  |  |     grid-template-areas: | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |         ".............. status-boosted" | 
					
						
							|  |  |  |         "status-sidebar status-author" | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |         "status-sidebar status-spoiler" | 
					
						
							|  |  |  |         "status-sidebar status-spoiler-button" | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |         "status-sidebar status-content" | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |         "status-media   status-media" | 
					
						
							|  |  |  |         ".............. status-toolbar"; | 
					
						
							| 
									
										
										
										
											2018-01-16 08:44:35 -08:00
										 |  |  |     grid-template-columns: 58px 1fr; | 
					
						
							| 
									
										
										
										
											2018-01-16 08:38:23 -08:00
										 |  |  |     border-bottom: 1px solid var(--main-border); | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-16 08:38:23 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-27 18:25:49 -08:00
										 |  |  |   .status-article.status-direct { | 
					
						
							|  |  |  |     background-color: var(--status-direct-background); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   :global(.status-sidebar) { | 
					
						
							|  |  |  |     grid-area: status-sidebar; | 
					
						
							| 
									
										
										
										
											2018-01-16 08:44:35 -08:00
										 |  |  |     margin: 0 10px 0 0; | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |   .status-spoiler { | 
					
						
							|  |  |  |     grid-area: status-spoiler; | 
					
						
							|  |  |  |     word-wrap: break-word; | 
					
						
							|  |  |  |     overflow: hidden; | 
					
						
							|  |  |  |     white-space: pre-wrap; | 
					
						
							|  |  |  |     font-size: 1.1em; | 
					
						
							|  |  |  |     margin: 5px; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .status-spoiler-button { | 
					
						
							|  |  |  |     grid-area: status-spoiler-button; | 
					
						
							|  |  |  |     margin: 5px; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .status-spoiler-button button { | 
					
						
							|  |  |  |     padding: 5px 10px; | 
					
						
							|  |  |  |     font-size: 1.1em; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   .status-author { | 
					
						
							|  |  |  |     grid-area: status-author; | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     display: flex; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							| 
									
										
										
										
											2018-01-15 21:58:31 -08:00
										 |  |  |     margin: 0 10px 0 5px; | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     font-size: 1.1em; | 
					
						
							| 
									
										
										
										
											2018-01-14 21:41:19 -08:00
										 |  |  |     min-width: 0; | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |   :global(.status-author a, .status-author a:visited, .status-author a:hover, .status-author .status-author-handle) { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     color: var(--deemphasized-text-color); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |   :global(.status-author .status-author-name) { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     min-width: 0; | 
					
						
							|  |  |  |     flex-shrink: 1; | 
					
						
							| 
									
										
										
										
											2018-01-14 21:41:19 -08:00
										 |  |  |     color: var(--body-text-color); | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     font-weight: 600; | 
					
						
							|  |  |  |     white-space: nowrap; | 
					
						
							|  |  |  |     overflow: hidden; | 
					
						
							|  |  |  |     text-overflow: ellipsis; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |   :global(.status-author .status-author-name:hover) { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     color: var(--body-text-color); | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   .status-author-handle { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     min-width: 0; | 
					
						
							|  |  |  |     flex: 1; | 
					
						
							|  |  |  |     margin-left: 5px; | 
					
						
							|  |  |  |     white-space: nowrap; | 
					
						
							|  |  |  |     overflow: hidden; | 
					
						
							|  |  |  |     text-overflow: ellipsis; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |   :global(.status-author-date) { | 
					
						
							|  |  |  |     color: var(--deemphasized-text-color); | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     flex-shrink: 1; | 
					
						
							|  |  |  |     text-align: right; | 
					
						
							|  |  |  |     margin-left: 5px; | 
					
						
							|  |  |  |     white-space: nowrap; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |   :global(.status-author-date:hover) { | 
					
						
							|  |  |  |     color: var(--deemphasized-text-color); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   .status-content { | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |     margin: 10px 10px 10px 5px; | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |     grid-area: status-content; | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     word-wrap: break-word; | 
					
						
							|  |  |  |     overflow: hidden; | 
					
						
							|  |  |  |     white-space: pre-wrap; | 
					
						
							| 
									
										
										
										
											2018-01-11 00:26:35 -08:00
										 |  |  |     font-size: 0.9em; | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-30 21:02:07 -08:00
										 |  |  |   .status-in-context .status-content { | 
					
						
							|  |  |  |     font-size: 1.3em; | 
					
						
							| 
									
										
										
										
											2018-01-30 18:26:13 -08:00
										 |  |  |     margin: 20px 10px 20px 5px; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 22:46:27 -08:00
										 |  |  |   :global(.status-content .status-emoji) { | 
					
						
							|  |  |  |     width: 20px; | 
					
						
							|  |  |  |     height: 20px; | 
					
						
							|  |  |  |     margin: -3px 0; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   :global(.status-content p) { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     margin: 0 0 20px; | 
					
						
							| 
									
										
										
										
											2018-01-10 21:31:33 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   :global(.status-content p:first-child) { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     margin: 0 0 20px; | 
					
						
							| 
									
										
										
										
											2018-01-10 21:31:33 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   :global(.status-content p:last-child) { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     margin: 0; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   .status-boosted span { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     margin-left: 5px; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |   :global(.status-boosted span, .status-boosted a, .status-boosted a:visited, .status-boosted a:hover) { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     color: var(--deemphasized-text-color); | 
					
						
							| 
									
										
										
										
											2018-01-11 00:26:35 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   .status-boosted { | 
					
						
							|  |  |  |     grid-area: status-boosted; | 
					
						
							| 
									
										
										
										
											2018-01-15 21:58:31 -08:00
										 |  |  |     margin: 5px 10px 5px 5px; | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     display: flex; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-16 08:51:05 -08:00
										 |  |  |   .status-boosted svg { | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     width: 18px; | 
					
						
							|  |  |  |     height: 18px; | 
					
						
							| 
									
										
										
										
											2018-01-21 23:06:41 -08:00
										 |  |  |     fill: var(--deemphasized-text-color); | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-container { | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     grid-area: status-media; | 
					
						
							|  |  |  |     margin: 10px 0; | 
					
						
							|  |  |  |     position: relative; | 
					
						
							|  |  |  |     border-radius: 0; | 
					
						
							|  |  |  |     border: none; | 
					
						
							|  |  |  |     background: none; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-button { | 
					
						
							|  |  |  |     margin: 0; | 
					
						
							|  |  |  |     padding: 0; | 
					
						
							|  |  |  |     border: none; | 
					
						
							|  |  |  |     background: none; | 
					
						
							|  |  |  |     width: 100%; | 
					
						
							|  |  |  |     height: 100%; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 13:43:50 -08:00
										 |  |  |   .status-sensitive-media-button:hover { | 
					
						
							|  |  |  |     background: none; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .status-sensitive-media-button:active { | 
					
						
							|  |  |  |     background: none; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-shown .status-sensitive-media-button { | 
					
						
							|  |  |  |     position: absolute; | 
					
						
							|  |  |  |     left: 0; | 
					
						
							|  |  |  |     right: 0; | 
					
						
							|  |  |  |     top: 0; | 
					
						
							|  |  |  |     bottom: 0; | 
					
						
							| 
									
										
										
										
											2018-01-21 13:38:56 -08:00
										 |  |  |     z-index: 90; | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   .status-sensitive-media-container.status-sensitive-media-hidden { | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     width: 100%; | 
					
						
							|  |  |  |     margin: 10px auto; | 
					
						
							|  |  |  |     height: 200px; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-container .status-sensitive-media-warning { | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     position: absolute; | 
					
						
							|  |  |  |     top: 0; | 
					
						
							|  |  |  |     left: 0; | 
					
						
							|  |  |  |     right: 0; | 
					
						
							|  |  |  |     bottom: 0; | 
					
						
							|  |  |  |     display: flex; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							|  |  |  |     justify-content: center; | 
					
						
							|  |  |  |     color: var(--deemphasized-text-color); | 
					
						
							|  |  |  |     z-index: 60; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-container .svg-wrapper { | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     position: absolute; | 
					
						
							|  |  |  |     top: 0; | 
					
						
							|  |  |  |     left: 0; | 
					
						
							|  |  |  |     right: 0; | 
					
						
							|  |  |  |     bottom: 0; | 
					
						
							|  |  |  |     display: flex; | 
					
						
							|  |  |  |     align-items: flex-start; | 
					
						
							|  |  |  |     justify-content: flex-start; | 
					
						
							|  |  |  |     z-index: 40; | 
					
						
							|  |  |  |     pointer-events: none; | 
					
						
							|  |  |  |     background: var(--mask-bg); | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-container.status-sensitive-media-shown .svg-wrapper { | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     background: none; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-container svg { | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     width: 24px; | 
					
						
							|  |  |  |     height: 24px; | 
					
						
							|  |  |  |     fill: var(--mask-svg-fill); | 
					
						
							|  |  |  |     border-radius: 2px; | 
					
						
							|  |  |  |     background: var(--mask-opaque-bg); | 
					
						
							|  |  |  |     margin: 1px; | 
					
						
							|  |  |  |     padding: 6px 10px; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-01-21 13:35:03 -08:00
										 |  |  |   .status-sensitive-media-container.status-sensitive-media-hidden svg { | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |     fill: var(--deemphasized-text-color); | 
					
						
							|  |  |  |     background: var(--mask-opaque-bg); | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | </style> | 
					
						
							|  |  |  | <script> | 
					
						
							|  |  |  |   import Avatar from './Avatar.html' | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |   import Media from './Media.html' | 
					
						
							| 
									
										
										
										
											2018-01-20 21:42:46 -08:00
										 |  |  |   import Toolbar from './Toolbar.html' | 
					
						
							| 
									
										
										
										
											2018-01-27 16:35:44 -08:00
										 |  |  |   import { mark, stop } from '../../_utils/marks' | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |   import IntlRelativeFormat from 'intl-relativeformat' | 
					
						
							| 
									
										
										
										
											2018-01-28 15:02:02 -08:00
										 |  |  |   import { replaceAll } from '../../_utils/strings' | 
					
						
							| 
									
										
										
										
											2018-01-28 13:09:39 -08:00
										 |  |  |   import { store } from '../../_store/store' | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |   import ExternalLink from '../ExternalLink.html' | 
					
						
							| 
									
										
										
										
											2018-01-21 22:46:27 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |   const relativeFormat = new IntlRelativeFormat('en-US'); | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  |   export default { | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |     oncreate() { | 
					
						
							| 
									
										
										
										
											2018-01-24 19:48:25 -08:00
										 |  |  |       this.hydrateContent() | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     components: { | 
					
						
							| 
									
										
										
										
											2018-01-20 15:37:40 -08:00
										 |  |  |       Avatar, | 
					
						
							| 
									
										
										
										
											2018-01-20 21:42:46 -08:00
										 |  |  |       Media, | 
					
						
							| 
									
										
										
										
											2018-01-28 19:01:51 -08:00
										 |  |  |       Toolbar, | 
					
						
							|  |  |  |       ExternalLink | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |     }, | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |     store: () => store, | 
					
						
							| 
									
										
										
										
											2018-01-14 19:28:50 -08:00
										 |  |  |     computed: { | 
					
						
							| 
									
										
										
										
											2018-01-30 18:26:13 -08:00
										 |  |  |       isStatusInContext: (timelineType, timelineValue, statusId) => { | 
					
						
							|  |  |  |         return timelineType === 'status' && timelineValue === statusId | 
					
						
							|  |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-01-15 17:25:32 -08:00
										 |  |  |       createdAtDate: (status) => status.created_at, | 
					
						
							|  |  |  |       relativeDate: (createdAtDate) => { | 
					
						
							| 
									
										
										
										
											2018-01-17 00:59:15 -08:00
										 |  |  |         mark('compute relativeDate') | 
					
						
							|  |  |  |         let res = relativeFormat.format(new Date(createdAtDate)) | 
					
						
							|  |  |  |         stop('compute relativeDate') | 
					
						
							|  |  |  |         return res | 
					
						
							| 
									
										
										
										
											2018-01-14 21:41:19 -08:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-01-19 00:51:51 -08:00
										 |  |  |       originalStatus: (status) => status.reblog ? status.reblog : status, | 
					
						
							|  |  |  |       originalAccount: (originalStatus) => originalStatus.account, | 
					
						
							| 
									
										
										
										
											2018-01-21 22:46:27 -08:00
										 |  |  |       originalMediaAttachments: (originalStatus) => originalStatus.media_attachments, | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |       statusId: (originalStatus) => originalStatus.id, | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |       emojifiedContent: (originalStatus) => { | 
					
						
							| 
									
										
										
										
											2018-01-21 22:46:27 -08:00
										 |  |  |         let status = originalStatus | 
					
						
							|  |  |  |         let content = status.content | 
					
						
							|  |  |  |         if (status.emojis && status.emojis.length) { | 
					
						
							|  |  |  |           for (let emoji of status.emojis) { | 
					
						
							|  |  |  |             let { shortcode, url } = emoji | 
					
						
							|  |  |  |             let shortcodeWithColons = `:${shortcode}:` | 
					
						
							|  |  |  |             content = replaceAll( | 
					
						
							|  |  |  |               content, | 
					
						
							|  |  |  |               shortcodeWithColons, | 
					
						
							|  |  |  |               `<img class="status-emoji" draggable="false" src="${url}" alt="${shortcodeWithColons}" title="${shortcodeWithColons}" />` | 
					
						
							|  |  |  |             ) | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return content | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-01-27 18:06:44 -08:00
										 |  |  |       spoilerShown: ($spoilersShown, $currentInstance, statusId) => $spoilersShown && $spoilersShown[$currentInstance] && $spoilersShown[$currentInstance][statusId], | 
					
						
							|  |  |  |       sensitiveShown: ($sensitivesShown, $currentInstance, statusId) => $sensitivesShown && $sensitivesShown[$currentInstance] && $sensitivesShown[$currentInstance][statusId], | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |     }, | 
					
						
							|  |  |  |     methods: { | 
					
						
							|  |  |  |       onClickSpoilerButton() { | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |         let statusId = this.get('statusId') | 
					
						
							| 
									
										
										
										
											2018-01-27 18:06:44 -08:00
										 |  |  |         let instanceName = this.store.get('currentInstance') | 
					
						
							|  |  |  |         let $spoilersShown = this.store.get('spoilersShown') || {} | 
					
						
							|  |  |  |         if (!$spoilersShown[instanceName]) { | 
					
						
							|  |  |  |           $spoilersShown[instanceName] = {} | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $spoilersShown[instanceName][statusId] = !$spoilersShown[instanceName][statusId] | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |         this.store.set({'spoilersShown': $spoilersShown}) | 
					
						
							| 
									
										
										
										
											2018-01-24 19:48:25 -08:00
										 |  |  |         this.hydrateContent() | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |         this.fire('recalculateHeight') | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |       }, | 
					
						
							|  |  |  |       onClickSensitiveMediaButton() { | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |         let statusId = this.get('statusId') | 
					
						
							| 
									
										
										
										
											2018-01-27 18:06:44 -08:00
										 |  |  |         let instanceName = this.store.get('currentInstance') | 
					
						
							|  |  |  |         let $sensitivesShown = this.store.get('sensitivesShown') || {} | 
					
						
							|  |  |  |         if (!$sensitivesShown[instanceName]) { | 
					
						
							|  |  |  |           $sensitivesShown[instanceName] = {} | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $sensitivesShown[instanceName][statusId] = !$sensitivesShown[instanceName][statusId] | 
					
						
							| 
									
										
										
										
											2018-01-23 20:56:07 -08:00
										 |  |  |         this.store.set({'sensitivesShown': $sensitivesShown}) | 
					
						
							| 
									
										
										
										
											2018-01-21 12:34:35 -08:00
										 |  |  |         this.fire('recalculateHeight') | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |       }, | 
					
						
							| 
									
										
										
										
											2018-01-24 19:48:25 -08:00
										 |  |  |       hydrateContent() { | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |         if (!this.refs.contentNode) { | 
					
						
							|  |  |  |           return | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         let status = this.get('originalStatus') | 
					
						
							| 
									
										
										
										
											2018-01-24 19:48:25 -08:00
										 |  |  |         mark('hydrateContent') | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |         if (status.tags && status.tags.length) { | 
					
						
							|  |  |  |           let anchorTags = Array.from(this.refs.contentNode.querySelectorAll( | 
					
						
							|  |  |  |             'a[class~=hashtag][href^=http]')) | 
					
						
							|  |  |  |           for (let tag of status.tags) { | 
					
						
							|  |  |  |             for (let anchorTag of anchorTags) { | 
					
						
							| 
									
										
										
										
											2018-01-24 19:48:25 -08:00
										 |  |  |               if (anchorTag.getAttribute('href').endsWith(`/tags/${tag.name}`)) { | 
					
						
							|  |  |  |                 anchorTag.setAttribute('href', `/tags/${tag.name}`) | 
					
						
							| 
									
										
										
										
											2018-01-22 21:16:27 -08:00
										 |  |  |                 anchorTag.removeAttribute('target') | 
					
						
							|  |  |  |                 anchorTag.removeAttribute('rel') | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-01-24 19:48:25 -08:00
										 |  |  |         if (status.mentions && status.mentions.length) { | 
					
						
							|  |  |  |           let anchorTags = Array.from(this.refs.contentNode.querySelectorAll( | 
					
						
							|  |  |  |             'a[class~=mention][href^=http]')) | 
					
						
							|  |  |  |           for (let mention of status.mentions) { | 
					
						
							|  |  |  |             for (let anchorTag of anchorTags) { | 
					
						
							|  |  |  |               if (anchorTag.getAttribute('href') === mention.url) { | 
					
						
							|  |  |  |                 anchorTag.setAttribute('href', `/accounts/${mention.id}`) | 
					
						
							|  |  |  |                 anchorTag.removeAttribute('target') | 
					
						
							|  |  |  |                 anchorTag.removeAttribute('rel') | 
					
						
							|  |  |  |               } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |           } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         stop('hydrateContent') | 
					
						
							| 
									
										
										
										
											2018-01-21 10:32:18 -08:00
										 |  |  |       } | 
					
						
							| 
									
										
										
										
											2018-01-10 21:31:33 -08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-10 20:45:02 -08:00
										 |  |  |   } | 
					
						
							|  |  |  | </script> |