@@ -85,6 +85,54 @@ function Playground() {
8585 [ ] ,
8686 ) ;
8787
88+ const onChangeOverlay = useCallback (
89+ async ( value : string | undefined , _ : editor . IModelContentChangedEvent ) => {
90+ try {
91+ setChangedLoading ( true ) ;
92+ result . current = value || "" ;
93+ const response = await ApplyOverlay (
94+ original . current ,
95+ result . current ,
96+ true ,
97+ ) ;
98+ if ( response . type == "success" ) {
99+ setApplyOverlayMode ( "original+overlay" ) ;
100+ changed . current = response . result || "" ;
101+ setError ( "" ) ;
102+ setOverlayMarkers ( [ ] ) ;
103+ const info = await GetInfo ( changed . current , false ) ;
104+ tryHandlePageTitle ( JSON . parse ( info ) ) ;
105+ } else if ( response . type == "incomplete" ) {
106+ setApplyOverlayMode ( "jsonpathexplorer" ) ;
107+ changed . current = response . result || "" ;
108+ setError ( "" ) ;
109+ setOverlayMarkers ( [ ] ) ;
110+ } else if ( response . type == "error" ) {
111+ setApplyOverlayMode ( "jsonpathexplorer" ) ;
112+ setOverlayMarkers ( [
113+ {
114+ startLineNumber : response . line ,
115+ endLineNumber : response . line ,
116+ startColumn : response . col ,
117+ endColumn : response . col + 1000 , // end of line
118+ message : response . error ,
119+ severity : MarkerSeverity . Error , // Use MarkerSeverity from Monaco
120+ } ,
121+ ] ) ;
122+ }
123+ } catch ( e : unknown ) {
124+ if ( e instanceof Error ) {
125+ setError ( e . message ) ;
126+ }
127+ } finally {
128+ setChangedLoading ( false ) ;
129+ }
130+ } ,
131+ [ ] ,
132+ ) ;
133+
134+ const onChangeOverlayDebounced = useDebounceCallback ( onChangeOverlay , 500 ) ;
135+
88136 const getShareUrl = useCallback ( async ( ) => {
89137 try {
90138 setShareUrlLoading ( true ) ;
@@ -146,20 +194,7 @@ function Playground() {
146194 original . current = decompressed . original ;
147195 result . current = decompressed . result ;
148196
149- const changedNew = await ApplyOverlay (
150- original . current ,
151- result . current ,
152- false ,
153- ) ;
154- if ( changedNew . type == "success" ) {
155- const info = await GetInfo ( original . current , false ) ;
156- const parsedInfo = JSON . parse ( info ) ;
157- tryHandlePageTitle ( parsedInfo ) ;
158- posthog . capture ( "overlay.speakeasy.com:load-shared" , {
159- openapi : parsedInfo ,
160- } ) ;
161- changed . current = changedNew . result ;
162- }
197+ await onChangeOverlay ( result . current , { } as any ) ;
163198 } catch ( error : any ) {
164199 console . error ( "invalid share url:" , error . message ) ;
165200 }
@@ -241,54 +276,6 @@ function Playground() {
241276
242277 const onChangeBDebounced = useDebounceCallback ( onChangeB , 500 ) ;
243278
244- const onChangeC = useCallback (
245- async ( value : string | undefined , _ : editor . IModelContentChangedEvent ) => {
246- try {
247- setChangedLoading ( true ) ;
248- result . current = value || "" ;
249- const response = await ApplyOverlay (
250- original . current ,
251- result . current ,
252- true ,
253- ) ;
254- if ( response . type == "success" ) {
255- setApplyOverlayMode ( "original+overlay" ) ;
256- changed . current = response . result || "" ;
257- setError ( "" ) ;
258- setOverlayMarkers ( [ ] ) ;
259- const info = await GetInfo ( changed . current , false ) ;
260- tryHandlePageTitle ( JSON . parse ( info ) ) ;
261- } else if ( response . type == "incomplete" ) {
262- setApplyOverlayMode ( "jsonpathexplorer" ) ;
263- changed . current = response . result || "" ;
264- setError ( "" ) ;
265- setOverlayMarkers ( [ ] ) ;
266- } else if ( response . type == "error" ) {
267- setApplyOverlayMode ( "jsonpathexplorer" ) ;
268- setOverlayMarkers ( [
269- {
270- startLineNumber : response . line ,
271- endLineNumber : response . line ,
272- startColumn : response . col ,
273- endColumn : response . col + 1000 , // end of line
274- message : response . error ,
275- severity : MarkerSeverity . Error , // Use MarkerSeverity from Monaco
276- } ,
277- ] ) ;
278- }
279- } catch ( e : unknown ) {
280- if ( e instanceof Error ) {
281- setError ( e . message ) ;
282- }
283- } finally {
284- setChangedLoading ( false ) ;
285- }
286- } ,
287- [ ] ,
288- ) ;
289-
290- const onChangeCDebounced = useDebounceCallback ( onChangeC , 500 ) ;
291-
292279 const ref = useRef < ImperativePanelGroupHandle > ( null ) ;
293280
294281 const maxLayout = useCallback ( ( index : number ) => {
@@ -460,7 +447,7 @@ function Playground() {
460447 < Editor
461448 readonly = { false }
462449 value = { result . current }
463- onChange = { onChangeCDebounced }
450+ onChange = { onChangeOverlayDebounced }
464451 loading = { resultLoading }
465452 markers = { overlayMarkers }
466453 title = { "Overlay" }
0 commit comments