<commit_before>#review-panel
	.review-panel-toolbar
		resolved-comments-dropdown(
			entries="reviewPanel.resolvedComments"
			threads="reviewPanel.commentThreads"
			resolved-ids="reviewPanel.resolvedThreadIds"
			docs="docs"
			on-open="refreshResolvedCommentsDropdown();"
			on-unresolve="unresolveComment(threadId);"
			on-delete="deleteComment(entryId, threadId);"
			is-loading="reviewPanel.dropdown.loading"
			permissions="permissions"
		)
		span.review-panel-toolbar-label(ng-if="permissions.write")
			span(ng-click="toggleTrackChanges(true)", ng-if="editor.wantTrackChanges === false") Track Changes is 
				strong off
			span(ng-click="toggleTrackChanges(false)", ng-if="editor.wantTrackChanges === true") Track Changes is 
				strong on
			review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges", on-toggle="toggleTrackChanges")
		span.review-panel-toolbar-label.review-panel-toolbar-label-disabled(ng-if="!permissions.write")
			span(ng-if="editor.wantTrackChanges === false") Track Changes is 
				strong off
			span(ng-if="editor.wantTrackChanges === true") Track Changes is 
				strong on
		span.review-panel-toolbar-spinner(ng-if="editor.wantTrackChanges != editor.trackChanges")
			i.fa.fa-spin.fa-spinner

	.rp-entry-list(
		review-panel-sorted
		ng-if="reviewPanel.subView === SubViews.CUR_FILE"
	)
		.rp-entry-list-inner
			.rp-entry-wrapper(
				ng-repeat="(entry_id, entry) in reviewPanel.entries[editor.open_doc_id]"
				ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)"
			)
				div(ng-if="entry.type === 'insert' || entry.type === 'delete'")
					change-entry(
						entry="entry"
						user="users[entry.metadata.user_id]"
						on-reject="rejectChange(entry_id);"
						on-accept="acceptChange(entry_id);"
						on-indicator-click="toggleReviewPanel();"
						permissions="permissions"
					)

				div(ng-if="entry.type === 'comment'")
					comment-entry(
						entry="entry"
						threads="reviewPanel.commentThreads"
						on-resolve="resolveComment(entry, entry_id)"
						on-reply="submitReply(entry, entry_id);"
						on-indicator-click="toggleReviewPanel();"
						permissions="permissions"
					)
				
				div(ng-if="entry.type === 'add-comment' && permissions.comment")
					add-comment-entry(
						on-start-new="startNewComment();"
						on-submit="submitNewComment(content);"
						on-cancel="cancelNewComment();"
						on-indicator-click="toggleReviewPanel();"
					)

	.rp-entry-list(
		ng-if="reviewPanel.subView === SubViews.OVERVIEW"
	)
		.rp-loading(ng-if="reviewPanel.overview.loading")
			i.fa.fa-spinner.fa-spin
		.rp-overview-file(
			ng-repeat="doc in docs"
			ng-if="!reviewPanel.overview.loading"
		)
			.rp-overview-file-header(
				ng-if="reviewPanel.entries[doc.doc.id] | notEmpty"
			)
				| {{ doc.path }}
			.rp-entry-wrapper(
				ng-repeat="(entry_id, entry) in reviewPanel.entries[doc.doc.id] | orderOverviewEntries"
				ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)"
			)
				div(ng-if="entry.type === 'insert' || entry.type === 'delete'")
					change-entry(
						entry="entry"
						user="users[entry.metadata.user_id]"
						on-indicator-click="toggleReviewPanel();"
						ng-click="gotoEntry(doc_id, entry)"
						permissions="permissions"
					)

				div(ng-if="entry.type === 'comment'")
					comment-entry(
						entry="entry"
						threads="reviewPanel.commentThreads"
						on-reply="submitReply(entry, entry_id);"
						on-indicator-click="toggleReviewPanel();"
						ng-click="gotoEntry(doc_id, entry)"
						permissions="permissions"
					)

	.rp-nav
		a.rp-nav-item(
			href
			ng-click="setSubView(SubViews.CUR_FILE);"
			ng-class="{ 'rp-nav-item-active' : reviewPanel.subView === SubViews.CUR_FILE }"
		)
			i.fa.fa-file-text-o
			span.rp-nav-label Current file
		a.rp-nav-item(
			href
			ng-click="setSubView(SubViews.OVERVIEW);"
			ng-class="{ 'rp-nav-item-active' : reviewPanel.subView === SubViews.OVERVIEW }"
		)
			i.fa.fa-list
			span.rp-nav-label Overview


script(type='text/ng-template', id='changeEntryTemplate')
	div
		.rp-entry-callout(
			ng-class="'rp-entry-callout-' + entry.type"
		)
		.rp-entry-indicator(
			ng-switch="entry.type"
			ng-class="{ 'rp-entry-indicator-focused': entry.focused }"
			ng-click="onIndicatorClick();"
		)
			i.fa.fa-pencil(ng-switch-when="insert")
			i.rp-icon-delete(ng-switch-when="delete")
		.rp-entry(
			ng-class="[ 'rp-entry-' + entry.type, (entry.focused ? 'rp-entry-focused' : '')]"
		)
			.rp-entry-body
				.rp-entry-action-icon(ng-switch="entry.type")
					i.fa.fa-pencil(ng-switch-when="insert")
					i.rp-icon-delete(ng-switch-when="delete")
				.rp-entry-details
					.rp-entry-description(ng-switch="entry.type")
						span(ng-switch-when="insert") Added&nbsp;
							ins.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }}
							a.rp-collapse-toggle(
								href
								ng-if="needsCollapsing"
								ng-click="toggleCollapse();"
							) &nbsp;{{ isCollapsed ? '(more)' : '(less)' }}
						span(ng-switch-when="delete") Deleted&nbsp;
							del.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }}
							a.rp-collapse-toggle(
								href
								ng-if="needsCollapsing"
								ng-click="toggleCollapse();"
							) &nbsp;{{ isCollapsed ? '(more)' : '(less)' }}
					.rp-entry-metadata
						| {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }}&nbsp;&bull;&nbsp;
						span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} 
			.rp-entry-actions(ng-if="permissions.write")
				a.rp-entry-button(href, ng-click="onReject();") 
					i.fa.fa-times
					| &nbsp;Reject
				a.rp-entry-button(href, ng-click="onAccept();") 
					i.fa.fa-check
					| &nbsp;Accept

script(type='text/ng-template', id='commentEntryTemplate')
	.rp-comment-wrapper(
		ng-class="{ 'rp-comment-wrapper-resolving': state.animating }"
	)
		.rp-entry-callout.rp-entry-callout-comment
		.rp-entry-indicator(
			ng-class="{ 'rp-entry-indicator-focused': entry.focused }"
			ng-click="onIndicatorClick();"
		)
			i.fa.fa-comment
		.rp-entry.rp-entry-comment(
			ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolving': state.animating }"
		)
			div
				.rp-comment(
					ng-repeat="comment in threads[entry.thread_id].messages track by comment.id"
				)
					p.rp-comment-content 
						span.rp-entry-user(
							style="color: hsl({{ comment.user.hue }}, 70%, 40%);"
						) {{ comment.user.name }}:&nbsp;
						| {{ comment.content }}
					.rp-entry-metadata
						| {{ comment.timestamp | date : 'MMM d, y h:mm a' }}
			.rp-comment-reply(ng-if="permissions.comment")
				textarea.rp-comment-input(
					ng-model="entry.replyContent"
					ng-keypress="handleCommentReplyKeyPress($event);"
					stop-propagation="click"
					placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}"
				)
			.rp-entry-actions
				a.rp-entry-button(href, ng-click="animateAndCallOnResolve();", ng-if="permissions.comment && permissions.write") 
					i.fa.fa-inbox
					| &nbsp;Resolve
				a.rp-entry-button(href, ng-click="onReply();", ng-if="permissions.comment")
					i.fa.fa-reply
					| &nbsp;Reply
	
script(type='text/ng-template', id='resolvedCommentEntryTemplate')
	.rp-resolved-comment
		div
			.rp-resolved-comment-context
				| Quoted text on&nbsp;
				span.rp-resolved-comment-context-file {{ thread.docName }}
				p.rp-resolved-comment-context-quote
					span {{ thread.content | limitTo:(isCollapsed ? contentLimit : thread.content.length)}}
					a.rp-collapse-toggle(
						href
						ng-if="needsCollapsing"
						ng-click="toggleCollapse();"
					) &nbsp;{{ isCollapsed ? '(more)' : '(less)' }}
			.rp-comment(
				ng-repeat="comment in thread.messages track by comment.id"
			)
				p.rp-comment-content 
					span.rp-entry-user(
						style="color: hsl({{ comment.user.hue }}, 70%, 40%);"
						ng-if="$first || comment.user.id !== thread.messages[$index - 1].user.id"
					) {{ comment.user.name }}:&nbsp;
					| {{ comment.content }}
				.rp-entry-metadata
					| {{ comment.timestamp | date : 'MMM d, y h:mm a' }}
			.rp-comment.rp-comment-resolver
				p.rp-comment-resolver-content 
					span.rp-entry-user(
						style="color: hsl({{ thread.resolved_by_user.hue }}, 70%, 40%);"
					) {{ thread.resolved_by_user.name }}:&nbsp;
					| Marked as resolved.
				.rp-entry-metadata
					| {{ thread.resolved_at | date : 'MMM d, y h:mm a' }}
				
		.rp-entry-actions(ng-if="permissions.comment && permissions.write")
			a.rp-entry-button(
				href
				ng-click="onUnresolve({ 'threadId': thread.threadId });"
			) 
				| &nbsp;Re-open
			a.rp-entry-button(
				href
				ng-click="onDelete({ 'entryId': thread.entryId, 'threadId': thread.threadId });"
			)
				| &nbsp;Delete


script(type='text/ng-template', id='addCommentEntryTemplate')
	div
		.rp-entry-callout.rp-entry-callout-add-comment
		.rp-entry-indicator(
			ng-if="!commentState.adding"
			ng-click="startNewComment(); onIndicatorClick();"
			tooltip="Add a comment"
			tooltip-placement="right"
			tooltip-append-to-body="true"
		)
			i.fa.fa-commenting
		.rp-entry.rp-entry-add-comment(
			ng-class="[ (state.isAdding ? 'rp-entry-adding-comment' : ''), (entry.focused ? 'rp-entry-focused' : '')]"
		)
			a.rp-add-comment-btn(
				href
				ng-if="!state.isAdding"
				ng-click="startNewComment();"
			) 
				i.fa.fa-comment
				| &nbsp;Add comment
			div(ng-if="state.isAdding")
				.rp-new-comment
					textarea.rp-comment-input(
						ng-model="state.content"
						ng-keypress="handleCommentKeyPress($event);"
						placeholder="Add your comment here"
					)
				.rp-entry-actions
					a.rp-entry-button(href, ng-click="cancelNewComment();") 
						i.fa.fa-times
						| &nbsp;Cancel
					a.rp-entry-button(href, ng-click="submitNewComment()") 
						i.fa.fa-comment
						| &nbsp;Comment

script(type='text/ng-template', id='resolvedCommentsDropdownTemplate')
	.resolved-comments
		.resolved-comments-backdrop(
			ng-class="{ 'resolved-comments-backdrop-visible' : state.isOpen }"
			ng-click="state.isOpen = false"
		)
		a.resolved-comments-toggle(
			href
			ng-click="toggleOpenState();"
			tooltip="Resolved Comments"
			tooltip-placement="bottom"
			tooltip-append-to-body="true"
		)
			i.fa.fa-inbox
		.resolved-comments-dropdown(
			ng-class="{ 'resolved-comments-dropdown-open' : state.isOpen }"
		)
			.rp-loading(ng-if="isLoading")
				i.fa.fa-spinner.fa-spin
			.resolved-comments-scroller(
				ng-if="!isLoading"
			)
				resolved-comment-entry(
					ng-repeat="thread in resolvedComments | orderBy:'resolved_at':true"
					thread="thread"
					on-unresolve="handleUnresolve(threadId);"
					on-delete="handleDelete(entryId, threadId);"
					permissions="permissions"
				)
				.rp-loading(ng-if="!resolvedComments.length")
					| No resolved threads.
			
<commit_msg>Use 'show all' instead of 'more'<commit_after>#review-panel
	.review-panel-toolbar
		resolved-comments-dropdown(
			entries="reviewPanel.resolvedComments"
			threads="reviewPanel.commentThreads"
			resolved-ids="reviewPanel.resolvedThreadIds"
			docs="docs"
			on-open="refreshResolvedCommentsDropdown();"
			on-unresolve="unresolveComment(threadId);"
			on-delete="deleteComment(entryId, threadId);"
			is-loading="reviewPanel.dropdown.loading"
			permissions="permissions"
		)
		span.review-panel-toolbar-label(ng-if="permissions.write")
			span(ng-click="toggleTrackChanges(true)", ng-if="editor.wantTrackChanges === false") Track Changes is 
				strong off
			span(ng-click="toggleTrackChanges(false)", ng-if="editor.wantTrackChanges === true") Track Changes is 
				strong on
			review-panel-toggle(ng-if="editor.wantTrackChanges == editor.trackChanges", ng-model="editor.wantTrackChanges", on-toggle="toggleTrackChanges")
		span.review-panel-toolbar-label.review-panel-toolbar-label-disabled(ng-if="!permissions.write")
			span(ng-if="editor.wantTrackChanges === false") Track Changes is 
				strong off
			span(ng-if="editor.wantTrackChanges === true") Track Changes is 
				strong on
		span.review-panel-toolbar-spinner(ng-if="editor.wantTrackChanges != editor.trackChanges")
			i.fa.fa-spin.fa-spinner

	.rp-entry-list(
		review-panel-sorted
		ng-if="reviewPanel.subView === SubViews.CUR_FILE"
	)
		.rp-entry-list-inner
			.rp-entry-wrapper(
				ng-repeat="(entry_id, entry) in reviewPanel.entries[editor.open_doc_id]"
				ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)"
			)
				div(ng-if="entry.type === 'insert' || entry.type === 'delete'")
					change-entry(
						entry="entry"
						user="users[entry.metadata.user_id]"
						on-reject="rejectChange(entry_id);"
						on-accept="acceptChange(entry_id);"
						on-indicator-click="toggleReviewPanel();"
						permissions="permissions"
					)

				div(ng-if="entry.type === 'comment'")
					comment-entry(
						entry="entry"
						threads="reviewPanel.commentThreads"
						on-resolve="resolveComment(entry, entry_id)"
						on-reply="submitReply(entry, entry_id);"
						on-indicator-click="toggleReviewPanel();"
						permissions="permissions"
					)
				
				div(ng-if="entry.type === 'add-comment' && permissions.comment")
					add-comment-entry(
						on-start-new="startNewComment();"
						on-submit="submitNewComment(content);"
						on-cancel="cancelNewComment();"
						on-indicator-click="toggleReviewPanel();"
					)

	.rp-entry-list(
		ng-if="reviewPanel.subView === SubViews.OVERVIEW"
	)
		.rp-loading(ng-if="reviewPanel.overview.loading")
			i.fa.fa-spinner.fa-spin
		.rp-overview-file(
			ng-repeat="doc in docs"
			ng-if="!reviewPanel.overview.loading"
		)
			.rp-overview-file-header(
				ng-if="reviewPanel.entries[doc.doc.id] | notEmpty"
			)
				| {{ doc.path }}
			.rp-entry-wrapper(
				ng-repeat="(entry_id, entry) in reviewPanel.entries[doc.doc.id] | orderOverviewEntries"
				ng-if="!(entry.type === 'comment' && reviewPanel.commentThreads[entry.thread_id].resolved === true)"
			)
				div(ng-if="entry.type === 'insert' || entry.type === 'delete'")
					change-entry(
						entry="entry"
						user="users[entry.metadata.user_id]"
						on-indicator-click="toggleReviewPanel();"
						ng-click="gotoEntry(doc_id, entry)"
						permissions="permissions"
					)

				div(ng-if="entry.type === 'comment'")
					comment-entry(
						entry="entry"
						threads="reviewPanel.commentThreads"
						on-reply="submitReply(entry, entry_id);"
						on-indicator-click="toggleReviewPanel();"
						ng-click="gotoEntry(doc_id, entry)"
						permissions="permissions"
					)

	.rp-nav
		a.rp-nav-item(
			href
			ng-click="setSubView(SubViews.CUR_FILE);"
			ng-class="{ 'rp-nav-item-active' : reviewPanel.subView === SubViews.CUR_FILE }"
		)
			i.fa.fa-file-text-o
			span.rp-nav-label Current file
		a.rp-nav-item(
			href
			ng-click="setSubView(SubViews.OVERVIEW);"
			ng-class="{ 'rp-nav-item-active' : reviewPanel.subView === SubViews.OVERVIEW }"
		)
			i.fa.fa-list
			span.rp-nav-label Overview


script(type='text/ng-template', id='changeEntryTemplate')
	div
		.rp-entry-callout(
			ng-class="'rp-entry-callout-' + entry.type"
		)
		.rp-entry-indicator(
			ng-switch="entry.type"
			ng-class="{ 'rp-entry-indicator-focused': entry.focused }"
			ng-click="onIndicatorClick();"
		)
			i.fa.fa-pencil(ng-switch-when="insert")
			i.rp-icon-delete(ng-switch-when="delete")
		.rp-entry(
			ng-class="[ 'rp-entry-' + entry.type, (entry.focused ? 'rp-entry-focused' : '')]"
		)
			.rp-entry-body
				.rp-entry-action-icon(ng-switch="entry.type")
					i.fa.fa-pencil(ng-switch-when="insert")
					i.rp-icon-delete(ng-switch-when="delete")
				.rp-entry-details
					.rp-entry-description(ng-switch="entry.type")
						span(ng-switch-when="insert") Added&nbsp;
							ins.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }}
							a.rp-collapse-toggle(
								href
								ng-if="needsCollapsing"
								ng-click="toggleCollapse();"
							) {{ isCollapsed ? '... (show all)' : ' (show less)' }}
						span(ng-switch-when="delete") Deleted&nbsp;
							del.rp-content-highlight {{ entry.content | limitTo:(isCollapsed ? contentLimit : entry.content.length) }}
							a.rp-collapse-toggle(
								href
								ng-if="needsCollapsing"
								ng-click="toggleCollapse();"
							) {{ isCollapsed ? '... (show all)' : ' (show less)' }}
					.rp-entry-metadata
						| {{ entry.metadata.ts | date : 'MMM d, y h:mm a' }}&nbsp;&bull;&nbsp;
						span.rp-entry-user(style="color: hsl({{ user.hue }}, 70%, 40%);") {{ user.name }} 
			.rp-entry-actions(ng-if="permissions.write")
				a.rp-entry-button(href, ng-click="onReject();") 
					i.fa.fa-times
					| &nbsp;Reject
				a.rp-entry-button(href, ng-click="onAccept();") 
					i.fa.fa-check
					| &nbsp;Accept

script(type='text/ng-template', id='commentEntryTemplate')
	.rp-comment-wrapper(
		ng-class="{ 'rp-comment-wrapper-resolving': state.animating }"
	)
		.rp-entry-callout.rp-entry-callout-comment
		.rp-entry-indicator(
			ng-class="{ 'rp-entry-indicator-focused': entry.focused }"
			ng-click="onIndicatorClick();"
		)
			i.fa.fa-comment
		.rp-entry.rp-entry-comment(
			ng-class="{ 'rp-entry-focused': entry.focused, 'rp-entry-comment-resolving': state.animating }"
		)
			div
				.rp-comment(
					ng-repeat="comment in threads[entry.thread_id].messages track by comment.id"
				)
					p.rp-comment-content 
						span.rp-entry-user(
							style="color: hsl({{ comment.user.hue }}, 70%, 40%);"
						) {{ comment.user.name }}:&nbsp;
						| {{ comment.content }}
					.rp-entry-metadata
						| {{ comment.timestamp | date : 'MMM d, y h:mm a' }}
			.rp-comment-reply(ng-if="permissions.comment")
				textarea.rp-comment-input(
					ng-model="entry.replyContent"
					ng-keypress="handleCommentReplyKeyPress($event);"
					stop-propagation="click"
					placeholder="{{ 'Hit \"Enter\" to reply' + (entry.resolved ? ' and re-open' : '') }}"
				)
			.rp-entry-actions
				a.rp-entry-button(href, ng-click="animateAndCallOnResolve();", ng-if="permissions.comment && permissions.write") 
					i.fa.fa-inbox
					| &nbsp;Resolve
				a.rp-entry-button(href, ng-click="onReply();", ng-if="permissions.comment")
					i.fa.fa-reply
					| &nbsp;Reply
	
script(type='text/ng-template', id='resolvedCommentEntryTemplate')
	.rp-resolved-comment
		div
			.rp-resolved-comment-context
				| Quoted text on&nbsp;
				span.rp-resolved-comment-context-file {{ thread.docName }}
				p.rp-resolved-comment-context-quote
					span {{ thread.content | limitTo:(isCollapsed ? contentLimit : thread.content.length)}}
					a.rp-collapse-toggle(
						href
						ng-if="needsCollapsing"
						ng-click="toggleCollapse();"
					) &nbsp;{{ isCollapsed ? '(more)' : '(less)' }}
			.rp-comment(
				ng-repeat="comment in thread.messages track by comment.id"
			)
				p.rp-comment-content 
					span.rp-entry-user(
						style="color: hsl({{ comment.user.hue }}, 70%, 40%);"
						ng-if="$first || comment.user.id !== thread.messages[$index - 1].user.id"
					) {{ comment.user.name }}:&nbsp;
					| {{ comment.content }}
				.rp-entry-metadata
					| {{ comment.timestamp | date : 'MMM d, y h:mm a' }}
			.rp-comment.rp-comment-resolver
				p.rp-comment-resolver-content 
					span.rp-entry-user(
						style="color: hsl({{ thread.resolved_by_user.hue }}, 70%, 40%);"
					) {{ thread.resolved_by_user.name }}:&nbsp;
					| Marked as resolved.
				.rp-entry-metadata
					| {{ thread.resolved_at | date : 'MMM d, y h:mm a' }}
				
		.rp-entry-actions(ng-if="permissions.comment && permissions.write")
			a.rp-entry-button(
				href
				ng-click="onUnresolve({ 'threadId': thread.threadId });"
			) 
				| &nbsp;Re-open
			a.rp-entry-button(
				href
				ng-click="onDelete({ 'entryId': thread.entryId, 'threadId': thread.threadId });"
			)
				| &nbsp;Delete


script(type='text/ng-template', id='addCommentEntryTemplate')
	div
		.rp-entry-callout.rp-entry-callout-add-comment
		.rp-entry-indicator(
			ng-if="!commentState.adding"
			ng-click="startNewComment(); onIndicatorClick();"
			tooltip="Add a comment"
			tooltip-placement="right"
			tooltip-append-to-body="true"
		)
			i.fa.fa-commenting
		.rp-entry.rp-entry-add-comment(
			ng-class="[ (state.isAdding ? 'rp-entry-adding-comment' : ''), (entry.focused ? 'rp-entry-focused' : '')]"
		)
			a.rp-add-comment-btn(
				href
				ng-if="!state.isAdding"
				ng-click="startNewComment();"
			) 
				i.fa.fa-comment
				| &nbsp;Add comment
			div(ng-if="state.isAdding")
				.rp-new-comment
					textarea.rp-comment-input(
						ng-model="state.content"
						ng-keypress="handleCommentKeyPress($event);"
						placeholder="Add your comment here"
					)
				.rp-entry-actions
					a.rp-entry-button(href, ng-click="cancelNewComment();") 
						i.fa.fa-times
						| &nbsp;Cancel
					a.rp-entry-button(href, ng-click="submitNewComment()") 
						i.fa.fa-comment
						| &nbsp;Comment

script(type='text/ng-template', id='resolvedCommentsDropdownTemplate')
	.resolved-comments
		.resolved-comments-backdrop(
			ng-class="{ 'resolved-comments-backdrop-visible' : state.isOpen }"
			ng-click="state.isOpen = false"
		)
		a.resolved-comments-toggle(
			href
			ng-click="toggleOpenState();"
			tooltip="Resolved Comments"
			tooltip-placement="bottom"
			tooltip-append-to-body="true"
		)
			i.fa.fa-inbox
		.resolved-comments-dropdown(
			ng-class="{ 'resolved-comments-dropdown-open' : state.isOpen }"
		)
			.rp-loading(ng-if="isLoading")
				i.fa.fa-spinner.fa-spin
			.resolved-comments-scroller(
				ng-if="!isLoading"
			)
				resolved-comment-entry(
					ng-repeat="thread in resolvedComments | orderBy:'resolved_at':true"
					thread="thread"
					on-unresolve="handleUnresolve(threadId);"
					on-delete="handleDelete(entryId, threadId);"
					permissions="permissions"
				)
				.rp-loading(ng-if="!resolvedComments.length")
					| No resolved threads.
			

{'fraction_non_alphanumeric': 0.17637709459152626, 'fraction_numerical': 0.0015439807456518778, 'mean_word_length': 3.3095890410958906, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2138448', 'n_tokens_mistral': 9540, 'n_tokens_neox': 7593, 'n_words': 983}