@@ -3,31 +3,22 @@ import { Toolbar } from 'markmap-toolbar'
33import { debounce } from "radashi"
44
55const resize = {
6- event : new Event ( 'resize' ) ,
7- observer : new ResizeObserver ( ( entries ) => {
8- entries . forEach ( ( entry ) => {
9- entry . target . dispatchEvent ( resize . event )
10- } )
11- } ) ,
12- listeners : new Map < Element , ( event : Event ) => void > ( ) ,
13- observe : ( el : Element , func : ( ) => void ) => {
14- if ( ! ( el instanceof Element ) || typeof func !== "function" ) return
6+ resizeListeners : new Map < HTMLElement , ( ) => void > ( ) ,
157
16- if ( ! resize . listeners . has ( el ) ) {
17- resize . listeners . set ( el , func )
18- el . addEventListener ( "resize" , func )
19- resize . observer . observe ( el )
20- }
8+ add ( el : HTMLElement , callback : ( ) => void ) {
9+ if ( ! ( el instanceof HTMLElement ) || typeof callback !== "function" ) return
10+ if ( ! this . resizeListeners . has ( el ) ) this . resizeListeners . set ( el , callback )
2111 } ,
22- destroyAll : ( ) => {
23- resize . listeners . forEach ( ( func , el ) => {
24- el . removeEventListener ( "resize" , func )
25- resize . observer . unobserve ( el )
26- } )
27- resize . listeners . clear ( )
12+
13+ clear ( ) {
14+ this . resizeListeners . clear ( )
2815 }
2916}
3017
18+ window . addEventListener ( 'resize' , ( ) => {
19+ resize . resizeListeners . forEach ( callback => callback ( ) )
20+ } )
21+
3122const toolbar = ( markmapInstance : Markmap ) => {
3223 const toolbar = Toolbar . create ( markmapInstance )
3324 toolbar . setBrand ( false )
@@ -60,12 +51,12 @@ const render = () => {
6051 const markmapInstance = Markmap . create ( svg , deriveOptions ( jsonOptions ) , root )
6152 if ( wrapper . dataset ?. toolbar !== 'false' ) wrapper . appendChild ( toolbar ( markmapInstance ) )
6253 const autoHeight = ! wrapper . style . height
63- resize . observe ( wrapper , debounce ( { delay : 100 } , ( ) => updateMarkmapSize ( markmapInstance , autoHeight ) ) )
54+ resize . add ( wrapper , debounce ( { delay : 100 } , ( ) => updateMarkmapSize ( markmapInstance , autoHeight ) ) )
6455 } )
6556}
6657
6758window . addEventListener ( 'vscode.markdown.updateContent' , ( ) => {
68- resize . destroyAll ( )
59+ resize . clear ( )
6960 render ( )
7061} )
7162
0 commit comments