@@ -28,7 +28,7 @@ function displayImage() {
2828 svgImage . setAttribute ( 'viewBox' , `0 0 ${ right . width } ${ fullHeight } ` ) ;
2929 }
3030 svgSize = { w : svgImage . clientWidth , h : svgImage . clientHeight } ;
31-
31+ document . getElementById ( "dl" ) . setAttribute ( "href" , 'data:image/svg+xml;base64,' + window . btoa ( unescape ( encodeURIComponent ( document . getElementById ( "svgContainer" ) . innerHTML ) ) ) ) ;
3232}
3333
3434const svgContainer = document . getElementById ( "svgContainer" ) ;
@@ -117,3 +117,74 @@ svgContainer.onmouseleave = function (e) {
117117 isPanning = false ;
118118}
119119
120+
121+ const params = new Proxy ( new URLSearchParams ( window . location . search ) , {
122+ get : ( searchParams , prop ) => searchParams . get ( prop ) ,
123+ } ) ;
124+ // Get the value of "some_key" in eg "https://example.com/?some_key=some_value"
125+ let wtgText = params . wtg ; // "some_value"export
126+ if ( wtgText != null ) {
127+ console . log ( wtgText ) ;
128+ var content = base64ToArrayBuffer ( wtgText ) ;
129+ if ( content != null ) {
130+ decompress ( content , "gzip" ) . then ( function ( result ) {
131+ console . log ( result ) ;
132+ document . getElementById ( "code" ) . innerHTML = result ;
133+
134+ } ) ;
135+ }
136+ }
137+
138+ function GetURL ( ) {
139+ var compressedFlow = compress ( document . getElementById ( "code" ) . value , "gzip" ) ;
140+ compressedFlow . then ( function ( result ) {
141+ // do something with result
142+ var param = arrayBufferToBase64 ( result ) ;
143+ var url = document . URL ;
144+ let params = new URLSearchParams ( url . search ) ;
145+ params . set ( 'wtg' , param ) ;
146+ console . log ( params . toString ( ) )
147+ window . history . replaceState ( { } , '' , `${ location . pathname } ?${ params } ` ) ;
148+ } ) ;
149+
150+ }
151+
152+
153+ function compress ( string , encoding ) {
154+ const byteArray = new TextEncoder ( ) . encode ( string ) ;
155+ const cs = new CompressionStream ( encoding ) ;
156+ const writer = cs . writable . getWriter ( ) ;
157+ writer . write ( byteArray ) ;
158+ writer . close ( ) ;
159+ return new Response ( cs . readable ) . arrayBuffer ( ) ;
160+ }
161+
162+ function decompress ( byteArray , encoding ) {
163+ const cs = new DecompressionStream ( encoding ) ;
164+ const writer = cs . writable . getWriter ( ) ;
165+ writer . write ( byteArray ) ;
166+ writer . close ( ) ;
167+ return new Response ( cs . readable ) . arrayBuffer ( ) . then ( function ( arrayBuffer ) {
168+ return new TextDecoder ( ) . decode ( arrayBuffer ) ;
169+ } ) ;
170+ }
171+
172+ function arrayBufferToBase64 ( buffer ) {
173+ var binary = '' ;
174+ var bytes = new Uint8Array ( buffer ) ;
175+ var len = bytes . byteLength ;
176+ for ( var i = 0 ; i < len ; i ++ ) {
177+ binary += String . fromCharCode ( bytes [ i ] ) ;
178+ }
179+ return window . btoa ( binary ) ;
180+ }
181+
182+ function base64ToArrayBuffer ( base64 ) {
183+ var binary_string = window . atob ( base64 ) ;
184+ var len = binary_string . length ;
185+ var bytes = new Uint8Array ( len ) ;
186+ for ( var i = 0 ; i < len ; i ++ ) {
187+ bytes [ i ] = binary_string . charCodeAt ( i ) ;
188+ }
189+ return bytes . buffer ;
190+ }
0 commit comments