File tree Expand file tree Collapse file tree 8 files changed +36
-8
lines changed Expand file tree Collapse file tree 8 files changed +36
-8
lines changed Original file line number Diff line number Diff line change 1+ import type { Options } from 'overtype'
2+
3+ export const commonGithubOptions : Options = {
4+ autoResize : true ,
5+ lineHeight : 'var(--text-body-lineHeight-medium, 1.4285)' ,
6+ padding : 'var(--base-size-16)' ,
7+ }
Original file line number Diff line number Diff line change @@ -4,6 +4,7 @@ import type React from 'react'
44import type { CommentEnhancer , CommentSpot } from '@/lib/enhancer'
55import { logger } from '@/lib/logger'
66import { modifyDOM } from '../modifyDOM'
7+ import { commonGithubOptions } from './ghOptions'
78import { githubHighlighter } from './githubHighlighter'
89
910export interface GitHubIssueAddCommentSpot extends CommentSpot {
@@ -52,9 +53,8 @@ export class GitHubIssueAddCommentEnhancer implements CommentEnhancer<GitHubIssu
5253 enhance ( textArea : HTMLTextAreaElement , _spot : GitHubIssueAddCommentSpot ) : OverTypeInstance {
5354 const overtypeContainer = modifyDOM ( textArea )
5455 return new OverType ( overtypeContainer , {
55- autoResize : true ,
56+ ... commonGithubOptions ,
5657 minHeight : '100px' ,
57- padding : 'var(--base-size-16)' ,
5858 placeholder : 'Use Markdown to format your comment' ,
5959 } ) [ 0 ] !
6060 }
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import OverType, { type OverTypeInstance } from 'overtype'
22import type { CommentEnhancer , CommentSpot } from '../../enhancer'
33import { logger } from '../../logger'
44import { modifyDOM } from '../modifyDOM'
5+ import { commonGithubOptions } from './ghOptions'
56import { githubHighlighter } from './githubHighlighter'
67
78interface GitHubIssueNewCommentSpot extends CommentSpot {
@@ -45,9 +46,8 @@ export class GitHubIssueNewCommentEnhancer implements CommentEnhancer<GitHubIssu
4546 enhance ( textArea : HTMLTextAreaElement , _spot : GitHubIssueNewCommentSpot ) : OverTypeInstance {
4647 const overtypeContainer = modifyDOM ( textArea )
4748 return new OverType ( overtypeContainer , {
48- autoResize : true ,
49+ ... commonGithubOptions ,
4950 minHeight : '400px' ,
50- padding : 'var(--base-size-16)' ,
5151 placeholder : 'Type your description here...' ,
5252 } ) [ 0 ] !
5353 }
Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ import type React from 'react'
33import type { CommentEnhancer , CommentSpot } from '@/lib/enhancer'
44import { logger } from '@/lib/logger'
55import { modifyDOM } from '../modifyDOM'
6+ import { commonGithubOptions } from './ghOptions'
67import { githubHighlighter } from './githubHighlighter'
78
89export interface GitHubPRAddCommentSpot extends CommentSpot {
@@ -55,7 +56,7 @@ export class GitHubPRAddCommentEnhancer implements CommentEnhancer<GitHubPRAddCo
5556 enhance ( textArea : HTMLTextAreaElement , _spot : GitHubPRAddCommentSpot ) : OverTypeInstance {
5657 const overtypeContainer = modifyDOM ( textArea )
5758 return new OverType ( overtypeContainer , {
58- autoResize : true ,
59+ ... commonGithubOptions ,
5960 minHeight : '102px' ,
6061 padding : 'var(--base-size-8)' ,
6162 placeholder : 'Add your comment here...' ,
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import OverType, { type OverTypeInstance } from 'overtype'
22import type { CommentEnhancer , CommentSpot } from '../../enhancer'
33import { logger } from '../../logger'
44import { modifyDOM } from '../modifyDOM'
5+ import { commonGithubOptions } from './ghOptions'
56import { githubHighlighter } from './githubHighlighter'
67
78interface GitHubPRNewCommentSpot extends CommentSpot {
@@ -50,9 +51,8 @@ export class GitHubPRNewCommentEnhancer implements CommentEnhancer<GitHubPRNewCo
5051 enhance ( textArea : HTMLTextAreaElement , _spot : GitHubPRNewCommentSpot ) : OverTypeInstance {
5152 const overtypeContainer = modifyDOM ( textArea )
5253 return new OverType ( overtypeContainer , {
53- autoResize : true ,
54+ ... commonGithubOptions ,
5455 minHeight : '250px' ,
55- padding : 'var(--base-size-16)' ,
5656 placeholder : 'Type your description here...' ,
5757 } ) [ 0 ] !
5858 }
Original file line number Diff line number Diff line change @@ -70,6 +70,7 @@ export class EnhancerRegistry {
7070 this . preparedEnhancers . add ( enhancer )
7171 }
7272 const overtype = enhancer . enhance ( textarea , spot )
73+ this . handleDelayedValueInjection ( overtype )
7374 return { enhancer, overtype, spot, textarea }
7475 }
7576 } catch ( error ) {
@@ -79,6 +80,24 @@ export class EnhancerRegistry {
7980 return null
8081 }
8182
83+ private handleDelayedValueInjection ( overtype : OverTypeInstance ) : void {
84+ // GitHub sometimes injects textarea content after a delay
85+ // We need to trigger OverType to update its preview after such injections
86+ // https://github.com/diffplug/gitcasso/issues/46
87+ setTimeout ( ( ) => {
88+ overtype . updatePreview ( )
89+ } , 100 )
90+ setTimeout ( ( ) => {
91+ overtype . updatePreview ( )
92+ } , 200 )
93+ setTimeout ( ( ) => {
94+ overtype . updatePreview ( )
95+ } , 400 )
96+ setTimeout ( ( ) => {
97+ overtype . updatePreview ( )
98+ } , 8000 )
99+ }
100+
82101 getEnhancerCount ( ) : number {
83102 return this . enhancers . size
84103 }
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ vi.mock('overtype', () => {
1818 preview : document . createElement ( 'div' ) ,
1919 setValue : vi . fn ( ) ,
2020 textarea : document . createElement ( 'textarea' ) ,
21+ updatePreview : vi . fn ( ) ,
2122 wrapper : document . createElement ( 'div' ) ,
2223 } ,
2324 ] )
You can’t perform that action at this time.
0 commit comments