2020
2121 < link rel =icon type ='image/png ' href ='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAMAAAAM7l6QAAAB41BMVEVHcExEPzkoWIEtobIxrLcud5M+cYQtfJUrjKIqe5grgZ0upLMmTHsmS3cpu8MvpbMqZ4o4ZXwzkaQveJMsn7Aob48nf50qhZ8qnLAlVYIppLUsma0mW4YspLUlN2coYIYxo7EqgJwohKEoSnciGVMjKWMyoK8kMmQumaoytLstj6Q1mqg0sLoyr7kuiqAzq7coOGUqNmAmOmc6oqwqWYE2lacwrbcqc5IoiKItjKMvlqgpobIsZoQrhJsqhZ8pcpIoiKIqgJkqSHElPG0vjqMnYYguqrcoYIcnS3cndZcsaYgpjKQmWoQpgZwuobImOm8ogp8qe5ktqbcnWIImVH4ro7QlOGwrmq0tq7glOW0odpUlS3omQnQpaowqpbYnUXwrpbUkJV4gFE8iG1wjHFskMWgiG1gvtsAru8Mus7wttL4rYIcqf50raIswlKgrkKcpf5wtlqsvl6otjKEpaYkplKopZYUuZIImQ3Aqk6k1iJ0mQXErqLYrYIMpi6I0qbYlX4gkQ3EspLQslKkojKYlOGsskacrmKsrYoUmWoQpeJcnY4spgZ0xh54ro7UocpUofp0lU34sa4glWYYmaJAnpbcnm7Amf54ngqAniKMnjacnhaEleJojJ2YniaQoobQlXogCX05qAAAAk3RSTlMAAc3TZSwJVLbC0sveOf44OQMoFte59sXm7PjG9t6ruK7C92lApmg6OUFpF3hSNTAZDmoOayCEZ+hkcvojisuw9Ycpe6TW08zI9YTd2dq63fTO4Oi939De3NvQ2NKe8cPZZUz668x5neuix2fjZJa7yZ5NQnD6j0xP6E9h1aXNsfqm4sz2xr23SODZ6NN97OXs1pCs7VkWAAABjElEQVQoz2NgoBdgMxZyMmTDISls2dvO7SHvZS6MRZJRQFExcJps9BQuTvFiTOmO/gnyc6YlRE+Z1W5RWYQuaxMbZT8RIh3K4e1iiiorGKskMimEU1qh0V3cz5FJrFAQRdqpe2Zf/GSlOO5WyQApacnpEvoo0tULZobHTJ49Nch/8oypNT7T57OgSDvLODSHyShJuYXJBEi5uYtZm6FIGzHZucgxcTErgIj62kARHVTdC+aFRwINj4gEGh7hOn0+qu6KhpkSYLtB0syd0611UaQNXGfGyQf7igAN7wnlkJwugubxEt82r/guCW6Pbm9uW1EuK/TIKvOM8pkzTZZnyiyRutI8jGizERUT9QRJt3A45AthiU9HccVpTTxTODlttbHFN6NQlZV0iEk5KyPO9MLOjlUjPmnDNFV1CIu1wE4PwtJP1zGGSiclz001UlY2yc61nzGPw1JLTY2FJYuPDxZwKilzVdV5eXkFBMxzLLT0NDT4+fkz+TI0YUlFJdEA6gZWmLO1WTQFaZ1vAIUhYF6nuTxlAAAAAElFTkSuQmCC '>
2222 < meta name =viewport content ='width=device-width, initial-scale=1 '>
23-
23+
2424 < script type ='application/ld+json '>
2525 {
2626 "@context" : "https://schema.org" ,
3636 "offers" : { "@type" :"Offer" , "price" :"0" , "priceCurrency" :"GBP" }
3737 }
3838 </ script >
39-
4039
41- < script src ='https://javascript-2020.github.io/stackoverflow/libs/stringify.js '> </ script >
42-
4340
44- < script src ='https://libs.ext-code.com/js/dom/component/component.js '> </ script >
45-
41+ < script src ='https://javascript-2020.github.io/stackoverflow/libs/stringify.js '> </ script >
42+
43+
44+ < script src ='https://libs.ext-code.com/js/dom/component/v3.0/component.js '> </ script >
45+
4646 < script init >
4747 console . clear ( ) ;
4848 console . log ( 'global-state-diff.html' ) ;
5858 var keydown ;
5959 var debug ;
6060 var inspect ;
61-
61+
6262 var hdr ;
6363
6464
6565
6666 var detect ;
67-
68-
69-
67+
68+
69+
7070 //:
7171
7272
7373 async function init ( ) {
7474 debug ( 'init' , version ) ;
75-
75+
7676 var menu = menumod ( ) ;
7777
7878 mod . base . add ( { ext, $, datatype, keydown, menu, menumod} ) ;
7979
80-
80+
8181 hdr = mod [ 'misc-hdr' ] ;
8282
8383 hdr . initmod ( { ext, $} ) ;
9595
9696 //:
9797
98-
98+
9999( async ( ) => {
100100
101101 mod . stack . add ;
102102
103103 ( { ext} = await import ( 'https://libs.ext-code.com/js/io/ext-loader/ext-loader.m.js' ) ) ;
104-
104+
105105 var promise = ext . load . libs (
106106 'js/dom/$.js' ,
107107 'js/core/datatype.js' ,
111111 'js/string/inspect/inspect.js'
112112 ) ;
113113 [ $ , datatype , menumod , keydown , debug , inspect ] = await promise ;
114-
114+
115115 mod . stack . complete ;
116-
116+
117117} ) ( ) ;
118-
119-
118+
119+
120120 </ script >
121121
122-
122+
123123 < style >
124-
125-
124+
125+
126126 html
127127 {height : 100% ;font-family : arial}
128128 body
131131 }
132132 body > *
133133 {max-width : 1400px ;width : 100% ;padding : 0 20px ;}
134-
134+
135135
136136 section
137137 {border : 1px solid lightblue;padding : 10px ;border-radius : 10px ;display : flex;flex-direction : column;gap : 20px }
143143 {font-size : 16px ;padding : 5px 10px ;box-sizing : border-box}
144144 input [type = button ]
145145 {cursor : pointer}
146-
147-
146+
147+
148148 .input
149149 {display : flex;align-items : center;gap : 10px }
150150 .input > input
161161 {padding : 2px ;
162162 content : url (data:image/jpeg;base64, iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAMAAAC7IEhfAAABSlBMVEVHcEwnz/4C8P4g1P4L6P43wf5Mr/4a2v4Y3P4/uv5PrP4+vf5Auv4ozv5KsP4vyv45wP5Jsf5Auf49vP5Mrv4zxf44wf5Lr/46wP4h1P5Lr/46vv5Jsv4R5P5Hs/5Etv44wf5Hs/41w/4uyv47vv49vP5Ftf5GtP4c2f4rzP4tyv4m0f5Etv5Nrv4xxv4xxv4xx/4W3/5KsP5Mr/4/u/4uyv5Isv4K6f4l0f4qzv4W3/4V3/5Nrv5Mrv5Mrv5Mr/4W3v4e2P5BuP5Hsv4N5v4K6f4O5v42w/5Dt/4E7/4uyf4C8P4nz/4M5/4K6v4oz/4P5f4k0v4b2v5Gs/4E7v4I6/5Nrf4e1/4H7P4E7v5Auv5Dtv4sy/5Isv5GtP4wx/49vP4zxf47vv44wP42w/5LsP5Jsf4i1P4n0P4N5v4k0v4a2v4S4v4X3v6OfcqkAAAAVnRSTlMACo7CjQWN/VczjgIJMfIXJzHtjj5iVekR71Hvtz7CjelXjre2wiJj2PCFIWbR7+fEnXaodz3544/USfOC22Tm7CXOnqfUZ+/3VTV9bsTzqGDahpb2tyRB6bIAAAIDSURBVDjLrZVpV9pAFIYntdFiQkZsLCQECtJSlqAsFRBU3Kuta1sncYGuJEDt///aISkkkyHo6enzLTlP5s5758wNAC526pd3d1++/fzx/evNze1tp210wxURUMTWBz2v2EWtLc7jBTPmoJfNrqy8i0ajixgB00VISJIeW9JMKbcWDAYDNiFMQN1EqAAJcUfSBif0fsQWQjLxpjGnXUJa5CoIbTiP8KJ0OqfNMLQIZhGad/Ke3t///vWwGKv1+yPxfW55+TnmJWZW5ggxcqX3m6WSVTpSdPcxHCLExmf97AI8e1j8cK1f8X9Fq/Sotrf0k2v9KRiJ08L8mwhf2CQx8oK/yJyPw3Q67ULaV4Tr7tRCwFfkllLF4ushccwGPyUMzwzhMQz/X1Kz+QVMmh2LcjgsTxDZ3OpqIpFYfDu+KGwoxE5JvTtpF9NX9BEB792jn0gD4eNEsVAQHyXOO7fQFmNNLZOnPV5BqEyI+Yxm1qkluS0BCWRp8FEze6mTJQtVVd8MUfcEhBSGFOGMOWmaoc0AmRoXP5cmiHEReEXANOopzCsLRYlXjWolGXE2jK/r/ujEWAdOFIxWGrjO8ljXazG6MeynthEn2gAP9P7B4XCE2thzdG2v2jbK5LfHZ3hINbclSco6o/kIh1Einq4e1qxp5m2PkqZ/CPvbXvFot+xe7w/EpaiUrJ24NAAAAABJRU5ErkJggg==);
163163 }
164-
165-
164+
165+
166166 # output , # output2
167167 {white-space : pre;font-family : monospace;font-size : 16px }
168168 # item , # item2
171171 {}
172172 # values
173173 {}
174-
175-
174+
175+
176176 iframe
177177 {display : none}
178178
181181 </ head >
182182
183183 < body >
184-
184+
185185 < misc-hdr component =grp style ='position:relative '>
186186 < img class =title src ='images/global-state-diff.png ' style ='top:-5px;height:40px ' alt =global-state-diff >
187187 < time slot =date datetime =2025-10-18 > 18 Oct 2025</ time >
188188 </ misc-hdr >
189-
189+
190190 < section id =script >
191191
192192 < h3 >
218218 </ div >
219219
220220 </ section >
221-
222-
221+
222+
223223 < section id =import >
224224
225225 < h3 >
@@ -251,14 +251,14 @@ <h3>
251251 </ div >
252252
253253 </ section >
254-
255-
254+
255+
256256 </ body >
257-
258-
257+
258+
259259 < script >
260-
261-
260+
261+
262262 var item ;
263263 var item2 ;
264264
@@ -267,23 +267,23 @@ <h3>
267267
268268
269269 function initdom ( ) {
270-
271-
270+
271+
272272
273273 $ ( '#script .paste' ) . onclick = async e => { var txt = await navigator . clipboard . readText ( ) ; src . value = txt } ;
274274 $ ( '#script .copy' ) . onclick = e => navigator . clipboard . writeText ( src . value ) ;
275-
275+
276276 item = $ ( '#item' ) ;
277277 item . remove ( ) ;
278278
279279 go . onclick = function ( ) {
280280
281281 process ( src . value ) ;
282-
282+
283283 } //onclick
284-
285-
286-
284+
285+
286+
287287 $ ( '#import .paste' ) . onclick = async e => { var txt = await navigator . clipboard . readText ( ) ; src2 . value = txt } ;
288288 $ ( '#import .copy' ) . onclick = e => navigator . clipboard . writeText ( src2 . value ) ;
289289
@@ -293,32 +293,32 @@ <h3>
293293 go2 . onclick = function ( ) {
294294
295295 process2 ( src2 . value ) ;
296-
296+
297297 } //onclick
298-
299-
298+
299+
300300
301301 } //initdom
302302
303-
304- //:
305-
306303
304+ //:
305+
306+
307307 function process ( src ) {
308308
309-
309+
310310 var iframe = document . createElement ( 'iframe' ) ;
311311 iframe . onload = onload ;
312312 document . body . append ( iframe ) ;
313-
313+
314314
315315 function onload ( ) {
316316
317317 var win = iframe . contentWindow ;
318318 var doc = iframe . contentDocument ;
319319
320320 var beforeKeys = new Set ( Object . keys ( win ) ) ;
321-
321+
322322
323323 var script = document . createElement ( 'script' ) ;
324324 script . src = src ;
327327
328328 var afterKeys = new Set ( Object . keys ( win ) ) ;
329329 var added = [ ...afterKeys ] . filter ( k => ! beforeKeys . has ( k ) ) ;
330-
331- var str = '' ;
330+
331+ var str = '' ;
332332 added . forEach ( key => {
333333
334334 var s = win [ key ] . toString ( ) ;
339339 str += `window.${ key } [ ${ typeof win [ key ] } ] : ${ s1 } ` + '\n' ;
340340
341341 console . log ( `window.${ key } =` , win [ key ] ) ;
342-
342+
343343 } ) ;
344344
345345 var nitem = item . cloneNode ( true ) ;
360360 } //onload
361361
362362 } //process
363-
364-
363+
364+
365365
366366
367367 async function process2 ( src ) {
371371
372372 var str = '' ;
373373 for ( var key in mod ) {
374-
374+
375375
376376 var s1 = '[ null ]' ;
377377
382382 s1 = tostring ( mod [ key ] ) ;
383383 str += key + ` [ ${ typeof mod [ key ] } ] : ${ s1 } ` + '\n' ;
384384 for ( var prop in mod [ key ] ) {
385-
386- var s2 = tostring ( mod [ key ] [ prop ] ) ;
385+
386+ var s2 = tostring ( mod [ key ] [ prop ] ) ;
387387 str += ' ' + prop + ` [ ${ typeof mod [ key ] [ prop ] } ] : ${ s2 } ` + '\n' ;
388388
389389 } //for
@@ -403,10 +403,10 @@ <h3>
403403 $ ( '#values' ) . textContent = str ;
404404
405405 output2 . append ( nitem ) ;
406-
407-
406+
407+
408408 function tostring ( v ) {
409-
409+
410410 var s = v . toString ( ) ;
411411 var s1 = s . slice ( 0 , 80 ) ;
412412 if ( s . length > s1 . length ) {
@@ -417,51 +417,51 @@ <h3>
417417 } //tostring
418418
419419 } //process
420-
421-
422-
423-
424420
425-
421+
422+
423+
424+
425+
426426( async ( ) => {
427427
428428 var { init, parse} = await import ( 'https://unpkg.com/es-module-lexer?module' ) ;
429429
430430 detect = async function ( code ) {
431431
432432 await init ( ) ;
433-
433+
434434 var [ imports , exports ] = parse ( code ) ;
435-
435+
436436 var isESM = imports . length > 0 || exports . length > 0 ;
437437 var isCommonJS = / r e q u i r e \( | m o d u l e \. e x p o r t s | e x p o r t s \. / . test ( code ) ;
438438
439439 var isNode = / p r o c e s s \. | _ _ d i r n a m e | r e q u i r e \( / . test ( code ) ;
440440 var isBrowser = / w i n d o w \. | d o c u m e n t \. | n a v i g a t o r \. / . test ( code ) ;
441-
441+
442442 var type = 'Unknown' ;
443443 if ( isESM ) {
444444 type = 'ESM' ;
445445 } else if ( isCommonJS ) {
446446 type = 'CommonJS' ;
447447 }
448-
448+
449449 if ( isNode ) {
450450 type += ' (Node.js)' ;
451451 } else if ( isBrowser ) {
452452 type += ' (Browser)' ;
453453 }
454-
454+
455455 return type ;
456456
457457 } //detect
458-
459- } ) ( ) ;
458+
459+ } ) ( ) ;
460460
461461
462462 </ script >
463-
464-
463+
464+
465465
466466</ html >
467467
0 commit comments