11import OverType , { type OverTypeInstance } from '../../../overtype/overtype'
22import type { CommentEnhancer , CommentSpot } from '../../enhancer'
33import { logger } from '../../logger'
4+ import { modifyDOM } from '../modifyDOM'
45import { githubHighlighter } from './githubHighlighter'
5- import { GITHUB_SPOT_TYPES , type GitHubSpotType } from './githubSpotTypes'
66
77interface GitHubPRAddCommentSpot extends CommentSpot {
8- type : GitHubSpotType // Override to narrow from string to specific union
8+ type : 'GH_PR_ADD_COMMENT' // Override to narrow from string to specific union
99 domain : string
1010 slug : string // owner/repo
1111 number : number // issue/PR number, undefined for new issues and PRs
1212}
1313
1414export class GitHubPRAddCommentEnhancer implements CommentEnhancer < GitHubPRAddCommentSpot > {
1515 forSpotTypes ( ) : string [ ] {
16- return [ ... GITHUB_SPOT_TYPES ]
16+ return [ 'GH_PR_ADD_COMMENT' ]
1717 }
1818
1919 tryToEnhance ( _textarea : HTMLTextAreaElement ) : GitHubPRAddCommentSpot | null {
2020 // Only handle github.com domains TODO: identify GitHub Enterprise somehow
21- if ( window . location . hostname !== 'github.com' ) {
21+ if ( window . location . hostname !== 'github.com' || _textarea . id !== 'new_comment_field' ) {
2222 return null
2323 }
2424
@@ -46,7 +46,7 @@ export class GitHubPRAddCommentEnhancer implements CommentEnhancer<GitHubPRAddCo
4646 }
4747
4848 enhance ( textArea : HTMLTextAreaElement , _spot : GitHubPRAddCommentSpot ) : OverTypeInstance {
49- const overtypeContainer = this . modifyDOM ( textArea )
49+ const overtypeContainer = modifyDOM ( textArea )
5050 return new OverType ( overtypeContainer , {
5151 autoResize : true ,
5252 minHeight : '102px' ,
@@ -55,19 +55,6 @@ export class GitHubPRAddCommentEnhancer implements CommentEnhancer<GitHubPRAddCo
5555 } ) [ 0 ] !
5656 }
5757
58- private modifyDOM ( overtypeInput : HTMLTextAreaElement ) : HTMLElement {
59- overtypeInput . classList . add ( 'overtype-input' )
60- const overtypePreview = document . createElement ( 'div' )
61- overtypePreview . classList . add ( 'overtype-preview' )
62- overtypeInput . insertAdjacentElement ( 'afterend' , overtypePreview )
63- const overtypeWrapper = overtypeInput . parentElement ! . closest ( 'div' ) !
64- overtypeWrapper . classList . add ( 'overtype-wrapper' )
65- overtypeInput . placeholder = 'Add your comment here...'
66- const overtypeContainer = overtypeWrapper . parentElement ! . closest ( 'div' ) !
67- overtypeContainer . classList . add ( 'overtype-container' )
68- return overtypeContainer . parentElement ! . closest ( 'div' ) !
69- }
70-
7158 tableTitle ( spot : GitHubPRAddCommentSpot ) : string {
7259 const { slug, number } = spot
7360 return `${ slug } PR #${ number } `
0 commit comments