@@ -111,10 +111,22 @@ class MarkdownButtonElement extends HTMLElement {
111111}
112112
113113class MarkdownHeaderButtonElement extends MarkdownButtonElement {
114- constructor ( ) {
115- super ( )
116-
114+ connectedCallback ( ) {
117115 const level = parseInt ( this . getAttribute ( 'level' ) || '3' , 10 )
116+ this . #setLevelStyle( level )
117+ }
118+
119+ static get observedAttributes ( ) {
120+ return [ 'level' ]
121+ }
122+
123+ attributeChangedCallback ( name : string , oldValue : string , newValue : string ) {
124+ if ( name !== 'level' ) return
125+ const level = parseInt ( newValue || '3' , 10 )
126+ this . #setLevelStyle( level )
127+ }
128+
129+ #setLevelStyle( level : number ) {
118130 if ( level < 1 || level > 6 ) {
119131 return
120132 }
@@ -132,8 +144,7 @@ if (!window.customElements.get('md-header')) {
132144}
133145
134146class MarkdownBoldButtonElement extends MarkdownButtonElement {
135- constructor ( ) {
136- super ( )
147+ connectedCallback ( ) {
137148 styles . set ( this , { prefix : '**' , suffix : '**' , trimFirst : true } )
138149 }
139150}
@@ -144,8 +155,7 @@ if (!window.customElements.get('md-bold')) {
144155}
145156
146157class MarkdownItalicButtonElement extends MarkdownButtonElement {
147- constructor ( ) {
148- super ( )
158+ connectedCallback ( ) {
149159 styles . set ( this , { prefix : '_' , suffix : '_' , trimFirst : true } )
150160 }
151161}
@@ -156,8 +166,7 @@ if (!window.customElements.get('md-italic')) {
156166}
157167
158168class MarkdownQuoteButtonElement extends MarkdownButtonElement {
159- constructor ( ) {
160- super ( )
169+ connectedCallback ( ) {
161170 styles . set ( this , { prefix : '> ' , multiline : true , surroundWithNewlines : true } )
162171 }
163172}
@@ -168,8 +177,7 @@ if (!window.customElements.get('md-quote')) {
168177}
169178
170179class MarkdownCodeButtonElement extends MarkdownButtonElement {
171- constructor ( ) {
172- super ( )
180+ connectedCallback ( ) {
173181 styles . set ( this , { prefix : '`' , suffix : '`' , blockPrefix : '```' , blockSuffix : '```' } )
174182 }
175183}
@@ -180,8 +188,7 @@ if (!window.customElements.get('md-code')) {
180188}
181189
182190class MarkdownLinkButtonElement extends MarkdownButtonElement {
183- constructor ( ) {
184- super ( )
191+ connectedCallback ( ) {
185192 styles . set ( this , { prefix : '[' , suffix : '](url)' , replaceNext : 'url' , scanFor : 'https?://' } )
186193 }
187194}
@@ -192,8 +199,7 @@ if (!window.customElements.get('md-link')) {
192199}
193200
194201class MarkdownImageButtonElement extends MarkdownButtonElement {
195- constructor ( ) {
196- super ( )
202+ connectedCallback ( ) {
197203 styles . set ( this , { prefix : '' , replaceNext : 'url' , scanFor : 'https?://' } )
198204 }
199205}
@@ -204,8 +210,7 @@ if (!window.customElements.get('md-image')) {
204210}
205211
206212class MarkdownUnorderedListButtonElement extends MarkdownButtonElement {
207- constructor ( ) {
208- super ( )
213+ connectedCallback ( ) {
209214 styles . set ( this , { prefix : '- ' , multiline : true , unorderedList : true } )
210215 }
211216}
@@ -216,8 +221,7 @@ if (!window.customElements.get('md-unordered-list')) {
216221}
217222
218223class MarkdownOrderedListButtonElement extends MarkdownButtonElement {
219- constructor ( ) {
220- super ( )
224+ connectedCallback ( ) {
221225 styles . set ( this , { prefix : '1. ' , multiline : true , orderedList : true } )
222226 }
223227}
@@ -228,8 +232,7 @@ if (!window.customElements.get('md-ordered-list')) {
228232}
229233
230234class MarkdownTaskListButtonElement extends MarkdownButtonElement {
231- constructor ( ) {
232- super ( )
235+ connectedCallback ( ) {
233236 styles . set ( this , { prefix : '- [ ] ' , multiline : true , surroundWithNewlines : true } )
234237 }
235238}
@@ -240,8 +243,7 @@ if (!window.customElements.get('md-task-list')) {
240243}
241244
242245class MarkdownMentionButtonElement extends MarkdownButtonElement {
243- constructor ( ) {
244- super ( )
246+ connectedCallback ( ) {
245247 styles . set ( this , { prefix : '@' , prefixSpace : true } )
246248 }
247249}
@@ -252,8 +254,7 @@ if (!window.customElements.get('md-mention')) {
252254}
253255
254256class MarkdownRefButtonElement extends MarkdownButtonElement {
255- constructor ( ) {
256- super ( )
257+ connectedCallback ( ) {
257258 styles . set ( this , { prefix : '#' , prefixSpace : true } )
258259 }
259260}
@@ -264,8 +265,7 @@ if (!window.customElements.get('md-ref')) {
264265}
265266
266267class MarkdownStrikethroughButtonElement extends MarkdownButtonElement {
267- constructor ( ) {
268- super ( )
268+ connectedCallback ( ) {
269269 styles . set ( this , { prefix : '~~' , suffix : '~~' , trimFirst : true } )
270270 }
271271}
@@ -276,10 +276,6 @@ if (!window.customElements.get('md-strikethrough')) {
276276}
277277
278278class MarkdownToolbarElement extends HTMLElement {
279- constructor ( ) {
280- super ( )
281- }
282-
283279 connectedCallback ( ) : void {
284280 if ( ! this . hasAttribute ( 'role' ) ) {
285281 this . setAttribute ( 'role' , 'toolbar' )
0 commit comments