File tree Expand file tree Collapse file tree 2 files changed +26
-0
lines changed
Expand file tree Collapse file tree 2 files changed +26
-0
lines changed Original file line number Diff line number Diff line change @@ -70,6 +70,12 @@ class AdvancedTextWrapper {
7070}
7171
7272function wrapField ( field ) {
73+ const monaco = field . closest ( '.monaco-editor' ) ;
74+ if ( monaco ) {
75+ const visualElement = monaco . querySelector ( '.monaco-editor-background' ) ;
76+ return new AdvancedTextWrapper ( monaco , visualElement ) ;
77+ }
78+
7379 if ( field . classList . contains ( 'ace_text-input' ) ) {
7480 const ace = field . parentNode ;
7581 const visualElement = ace . querySelector ( '.ace_scroller' ) ;
Original file line number Diff line number Diff line change @@ -9,6 +9,8 @@ export default function unsafeMessenger() {
99 function listener ( { target} ) {
1010 if ( target . CodeMirror ) {
1111 codeMirror ( target ) ;
12+ } else if ( target . classList . contains ( 'monaco-editor' ) ) {
13+ monacoEditor ( target ) ;
1214 } else {
1315 ace ( target ) ;
1416 }
@@ -73,6 +75,24 @@ export default function unsafeMessenger() {
7375 editor . blur ( ) ;
7476 } ) ;
7577 }
78+
79+ function monacoEditor ( target ) {
80+ const editor = globalThis . monaco . editor . getModel ( target . dataset . uri ) ;
81+ sendBack ( target , editor . getValue ( ) ) ;
82+
83+ editor . onDidChangeContent ( throttle ( 50 , event => {
84+ if ( ! event . isFlush ) { // Flush === setValue
85+ sendBack ( target , editor . getValue ( ) ) ;
86+ }
87+ } ) ) ;
88+
89+ target . addEventListener ( 'gt:transfer' , ( ) => {
90+ editor . setValue ( target . getAttribute ( 'gt-value' ) ) ;
91+ } ) ;
92+ target . addEventListener ( 'gt:blur' , ( ) => {
93+ target . ownerDocument . activeElement . blur ( ) ;
94+ } ) ;
95+ }
7696}
7797
7898// eslint-disable-next-line no-unused-expressions
You can’t perform that action at this time.
0 commit comments