@@ -53,8 +53,12 @@ var _codeWrap = /*#__PURE__*/new WeakMap();
5353
5454var _value = /*#__PURE__*/ new WeakMap ( ) ;
5555
56+ var _label = /*#__PURE__*/ new WeakMap ( ) ;
57+
5658var _language = /*#__PURE__*/ new WeakMap ( ) ;
5759
60+ var _controls = /*#__PURE__*/ new WeakMap ( ) ;
61+
5862var _render = /*#__PURE__*/ new WeakSet ( ) ;
5963
6064var HTMLCodeBlockElement = /*#__PURE__*/ function ( _HTMLElement ) {
@@ -97,18 +101,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
97101 value : ''
98102 } ) ;
99103
104+ _label . set ( _assertThisInitialized ( _this ) , {
105+ writable : true ,
106+ value : ''
107+ } ) ;
108+
100109 _language . set ( _assertThisInitialized ( _this ) , {
101110 writable : true ,
102111 value : ''
103112 } ) ;
104113
114+ _controls . set ( _assertThisInitialized ( _this ) , {
115+ writable : true ,
116+ value : false
117+ } ) ;
118+
105119 var mkslot = function mkslot ( name ) {
106120 var slot = document . createElement ( 'slot' ) ;
107121 slot . name = name ;
108122 return slot ;
109123 } ;
110124
111- var slots = [ mkslot ( 'code' ) ] ;
125+ var slots = [ mkslot ( 'label' ) , mkslot ( 'copy-button' ) , mkslot ( ' code') ] ;
112126 var pre = document . createElement ( 'pre' ) ;
113127 var code = document . createElement ( 'code' ) ;
114128 code . tabIndex = 0 ;
@@ -119,8 +133,12 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
119133
120134 _classPrivateFieldSet ( _assertThisInitialized ( _this ) , _value , ( _this . textContent || '' ) . replace ( / ^ \n / , '' ) ) ;
121135
136+ _classPrivateFieldSet ( _assertThisInitialized ( _this ) , _label , _this . getAttribute ( 'label' ) || '' ) ;
137+
122138 _classPrivateFieldSet ( _assertThisInitialized ( _this ) , _language , _this . getAttribute ( 'language' ) || '' ) ;
123139
140+ _classPrivateFieldSet ( _assertThisInitialized ( _this ) , _controls , _this . getAttribute ( 'controls' ) !== null ) ;
141+
124142 _classPrivateFieldSet ( _assertThisInitialized ( _this ) , _shadowRoot , _this . attachShadow ( {
125143 mode : 'closed'
126144 } ) ) ;
@@ -146,6 +164,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
146164
147165 _classPrivateMethodGet ( this , _render , _render2 ) . call ( this ) ;
148166 }
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+ }
149189 /**
150190 * Language Mode
151191 * @returns - The value of the language attribute
@@ -165,6 +205,28 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
165205 this . removeAttribute ( 'language' ) ;
166206 }
167207
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+
168230 _classPrivateMethodGet ( this , _render , _render2 ) . call ( this ) ;
169231 }
170232 } , {
@@ -177,9 +239,15 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
177239
178240
179241 switch ( attrName ) {
242+ // string
243+ case 'label' :
180244 case 'language' :
181245 this [ attrName ] = newValue || '' ;
182246 break ;
247+ // boolean
248+
249+ case 'controls' :
250+ this [ attrName ] = typeof newValue === 'string' ;
183251 }
184252 }
185253 } , {
@@ -220,8 +288,7 @@ var HTMLCodeBlockElement = /*#__PURE__*/function (_HTMLElement) {
220288 } , {
221289 key : "observedAttributes" ,
222290 get : function get ( ) {
223- return [ 'language' // 'controls',
224- ] ;
291+ return [ 'label' , 'language' , 'controls' ] ;
225292 }
226293 } ] ) ;
227294
0 commit comments