@@ -111,10 +111,22 @@ class MarkdownButtonElement extends HTMLElement {
111
111
}
112
112
113
113
class MarkdownHeaderButtonElement extends MarkdownButtonElement {
114
- constructor ( ) {
115
- super ( )
116
-
114
+ connectedCallback ( ) {
117
115
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 ) {
118
130
if ( level < 1 || level > 6 ) {
119
131
return
120
132
}
@@ -132,8 +144,7 @@ if (!window.customElements.get('md-header')) {
132
144
}
133
145
134
146
class MarkdownBoldButtonElement extends MarkdownButtonElement {
135
- constructor ( ) {
136
- super ( )
147
+ connectedCallback ( ) {
137
148
styles . set ( this , { prefix : '**' , suffix : '**' , trimFirst : true } )
138
149
}
139
150
}
@@ -144,8 +155,7 @@ if (!window.customElements.get('md-bold')) {
144
155
}
145
156
146
157
class MarkdownItalicButtonElement extends MarkdownButtonElement {
147
- constructor ( ) {
148
- super ( )
158
+ connectedCallback ( ) {
149
159
styles . set ( this , { prefix : '_' , suffix : '_' , trimFirst : true } )
150
160
}
151
161
}
@@ -156,8 +166,7 @@ if (!window.customElements.get('md-italic')) {
156
166
}
157
167
158
168
class MarkdownQuoteButtonElement extends MarkdownButtonElement {
159
- constructor ( ) {
160
- super ( )
169
+ connectedCallback ( ) {
161
170
styles . set ( this , { prefix : '> ' , multiline : true , surroundWithNewlines : true } )
162
171
}
163
172
}
@@ -168,8 +177,7 @@ if (!window.customElements.get('md-quote')) {
168
177
}
169
178
170
179
class MarkdownCodeButtonElement extends MarkdownButtonElement {
171
- constructor ( ) {
172
- super ( )
180
+ connectedCallback ( ) {
173
181
styles . set ( this , { prefix : '`' , suffix : '`' , blockPrefix : '```' , blockSuffix : '```' } )
174
182
}
175
183
}
@@ -180,8 +188,7 @@ if (!window.customElements.get('md-code')) {
180
188
}
181
189
182
190
class MarkdownLinkButtonElement extends MarkdownButtonElement {
183
- constructor ( ) {
184
- super ( )
191
+ connectedCallback ( ) {
185
192
styles . set ( this , { prefix : '[' , suffix : '](url)' , replaceNext : 'url' , scanFor : 'https?://' } )
186
193
}
187
194
}
@@ -192,8 +199,7 @@ if (!window.customElements.get('md-link')) {
192
199
}
193
200
194
201
class MarkdownImageButtonElement extends MarkdownButtonElement {
195
- constructor ( ) {
196
- super ( )
202
+ connectedCallback ( ) {
197
203
styles . set ( this , { prefix : '' , replaceNext : 'url' , scanFor : 'https?://' } )
198
204
}
199
205
}
@@ -204,8 +210,7 @@ if (!window.customElements.get('md-image')) {
204
210
}
205
211
206
212
class MarkdownUnorderedListButtonElement extends MarkdownButtonElement {
207
- constructor ( ) {
208
- super ( )
213
+ connectedCallback ( ) {
209
214
styles . set ( this , { prefix : '- ' , multiline : true , unorderedList : true } )
210
215
}
211
216
}
@@ -216,8 +221,7 @@ if (!window.customElements.get('md-unordered-list')) {
216
221
}
217
222
218
223
class MarkdownOrderedListButtonElement extends MarkdownButtonElement {
219
- constructor ( ) {
220
- super ( )
224
+ connectedCallback ( ) {
221
225
styles . set ( this , { prefix : '1. ' , multiline : true , orderedList : true } )
222
226
}
223
227
}
@@ -228,8 +232,7 @@ if (!window.customElements.get('md-ordered-list')) {
228
232
}
229
233
230
234
class MarkdownTaskListButtonElement extends MarkdownButtonElement {
231
- constructor ( ) {
232
- super ( )
235
+ connectedCallback ( ) {
233
236
styles . set ( this , { prefix : '- [ ] ' , multiline : true , surroundWithNewlines : true } )
234
237
}
235
238
}
@@ -240,8 +243,7 @@ if (!window.customElements.get('md-task-list')) {
240
243
}
241
244
242
245
class MarkdownMentionButtonElement extends MarkdownButtonElement {
243
- constructor ( ) {
244
- super ( )
246
+ connectedCallback ( ) {
245
247
styles . set ( this , { prefix : '@' , prefixSpace : true } )
246
248
}
247
249
}
@@ -252,8 +254,7 @@ if (!window.customElements.get('md-mention')) {
252
254
}
253
255
254
256
class MarkdownRefButtonElement extends MarkdownButtonElement {
255
- constructor ( ) {
256
- super ( )
257
+ connectedCallback ( ) {
257
258
styles . set ( this , { prefix : '#' , prefixSpace : true } )
258
259
}
259
260
}
@@ -264,8 +265,7 @@ if (!window.customElements.get('md-ref')) {
264
265
}
265
266
266
267
class MarkdownStrikethroughButtonElement extends MarkdownButtonElement {
267
- constructor ( ) {
268
- super ( )
268
+ connectedCallback ( ) {
269
269
styles . set ( this , { prefix : '~~' , suffix : '~~' , trimFirst : true } )
270
270
}
271
271
}
@@ -276,10 +276,6 @@ if (!window.customElements.get('md-strikethrough')) {
276
276
}
277
277
278
278
class MarkdownToolbarElement extends HTMLElement {
279
- constructor ( ) {
280
- super ( )
281
- }
282
-
283
279
connectedCallback ( ) : void {
284
280
if ( ! this . hasAttribute ( 'role' ) ) {
285
281
this . setAttribute ( 'role' , 'toolbar' )
0 commit comments