@@ -53,8 +53,12 @@ var _codeWrap = /*#__PURE__*/new WeakMap();
53
53
54
54
var _value = /*#__PURE__*/ new WeakMap ( ) ;
55
55
56
+ var _label = /*#__PURE__*/ new WeakMap ( ) ;
57
+
56
58
var _language = /*#__PURE__*/ new WeakMap ( ) ;
57
59
60
+ var _controls = /*#__PURE__*/ new WeakMap ( ) ;
61
+
58
62
var _render = /*#__PURE__*/ new WeakSet ( ) ;
59
63
60
64
var HTMLCodeBlockElement = /*#__PURE__*/ function ( _HTMLElement ) {
@@ -97,18 +101,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
97
101
value : ''
98
102
} ) ;
99
103
104
+ _label . set ( _assertThisInitialized ( _this ) , {
105
+ writable : true ,
106
+ value : ''
107
+ } ) ;
108
+
100
109
_language . set ( _assertThisInitialized ( _this ) , {
101
110
writable : true ,
102
111
value : ''
103
112
} ) ;
104
113
114
+ _controls . set ( _assertThisInitialized ( _this ) , {
115
+ writable : true ,
116
+ value : false
117
+ } ) ;
118
+
105
119
var mkslot = function mkslot ( name ) {
106
120
var slot = document . createElement ( 'slot' ) ;
107
121
slot . name = name ;
108
122
return slot ;
109
123
} ;
110
124
111
- var slots = [ mkslot ( 'code' ) ] ;
125
+ var slots = [ mkslot ( 'label' ) , mkslot ( 'copy-button' ) , mkslot ( ' code') ] ;
112
126
var pre = document . createElement ( 'pre' ) ;
113
127
var code = document . createElement ( 'code' ) ;
114
128
code . tabIndex = 0 ;
@@ -119,8 +133,12 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
119
133
120
134
_classPrivateFieldSet ( _assertThisInitialized ( _this ) , _value , ( _this . textContent || '' ) . replace ( / ^ \n / , '' ) ) ;
121
135
136
+ _classPrivateFieldSet ( _assertThisInitialized ( _this ) , _label , _this . getAttribute ( 'label' ) || '' ) ;
137
+
122
138
_classPrivateFieldSet ( _assertThisInitialized ( _this ) , _language , _this . getAttribute ( 'language' ) || '' ) ;
123
139
140
+ _classPrivateFieldSet ( _assertThisInitialized ( _this ) , _controls , _this . getAttribute ( 'controls' ) !== null ) ;
141
+
124
142
_classPrivateFieldSet ( _assertThisInitialized ( _this ) , _shadowRoot , _this . attachShadow ( {
125
143
mode : 'closed'
126
144
} ) ) ;
@@ -146,6 +164,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
146
164
147
165
_classPrivateMethodGet ( this , _render , _render2 ) . call ( this ) ;
148
166
}
167
+ /**
168
+ * The name of code block
169
+ * @returns - The value of the label attribute
170
+ */
171
+
172
+ } , {
173
+ key : "label" ,
174
+ get : function get ( ) {
175
+ return _classPrivateFieldGet ( this , _label ) ;
176
+ } ,
177
+ set : function set ( name ) {
178
+ // TODO: Accessiblity Treeにアクセシブルネームを提供する
179
+ _classPrivateFieldSet ( this , _label , name || '' ) ;
180
+
181
+ if ( _classPrivateFieldGet ( this , _label ) ) {
182
+ this . setAttribute ( 'label' , name ) ;
183
+ } else {
184
+ this . removeAttribute ( 'label' ) ;
185
+ }
186
+
187
+ _classPrivateMethodGet ( this , _render , _render2 ) . call ( this ) ;
188
+ }
149
189
/**
150
190
* Language Mode
151
191
* @returns - The value of the language attribute
@@ -165,6 +205,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
165
205
this . removeAttribute ( 'language' ) ;
166
206
}
167
207
208
+ _classPrivateMethodGet ( this , _render , _render2 ) . call ( this ) ;
209
+ }
210
+ /**
211
+ * Flag to display the UI
212
+ * @returns - With or without controls attribute
213
+ * */
214
+
215
+ } , {
216
+ key : "controls" ,
217
+ get : function get ( ) {
218
+ return _classPrivateFieldGet ( this , _controls ) ;
219
+ } ,
220
+ set : function set ( flag ) {
221
+ // TODO: コピーボタン、ラベルの表示切り替え
222
+ _classPrivateFieldSet ( this , _controls , flag ) ;
223
+
224
+ if ( _classPrivateFieldGet ( this , _controls ) ) {
225
+ this . setAttribute ( 'controls' , '' ) ;
226
+ } else {
227
+ this . removeAttribute ( 'controls' ) ;
228
+ }
229
+
168
230
_classPrivateMethodGet ( this , _render , _render2 ) . call ( this ) ;
169
231
}
170
232
} , {
@@ -177,9 +239,15 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
177
239
178
240
179
241
switch ( attrName ) {
242
+ // string
243
+ case 'label' :
180
244
case 'language' :
181
245
this [ attrName ] = newValue || '' ;
182
246
break ;
247
+ // boolean
248
+
249
+ case 'controls' :
250
+ this [ attrName ] = typeof newValue === 'string' ;
183
251
}
184
252
}
185
253
} , {
@@ -220,8 +288,7 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
220
288
} , {
221
289
key : "observedAttributes" ,
222
290
get : function get ( ) {
223
- return [ 'language' // 'controls',
224
- ] ;
291
+ return [ 'label' , 'language' , 'controls' ] ;
225
292
}
226
293
} ] ) ;
227
294
0 commit comments