@@ -121,6 +121,8 @@ function getStylesFromIframe(iframe) {
121
121
return cssText ;
122
122
}
123
123
124
+ var isRegistred = false ;
125
+
124
126
module . exports = function ( ) {
125
127
var codepens = document . querySelectorAll ( 'div.codepen' ) ;
126
128
//remove the old codepen links
@@ -133,69 +135,71 @@ module.exports = function() {
133
135
}
134
136
} ) ;
135
137
136
- //Register PrismJS "Run" custom button
137
- Prism . plugins . toolbar . registerButton ( "run-code" , function ( env ) {
138
- var demoWrapper = findDemoWrapper ( env . element ) ;
139
- var pre = env . element . parentElement ;
140
- var hasRunBtn = demoWrapper ? demoWrapper . getAttribute ( "data-has-run" ) : pre . getAttribute ( "data-has-run" ) ;
141
- //prevent other demos without codepen link to register Run button
142
- if ( hasRunBtn ) {
143
- var btn = document . createElement ( "button" ) ;
144
- btn . innerHTML = "Run" ;
145
- btn . setAttribute ( "data-run" , "" ) ;
146
- return btn ;
147
- }
148
- } ) ;
149
- document . body . addEventListener ( 'click' , function ( ev ) {
150
- if ( ev . target . getAttribute ( 'data-run' ) != null ) {
151
- var btn = ev . target ;
152
- var demoWrapper = findDemoWrapper ( btn ) ;
153
- if ( ! demoWrapper ) {
154
- var preElement = findPreForToolbarBtn ( btn ) ;
155
- var codeElement = preElement . querySelector ( "code" ) ;
156
- var language = codeElement . className . match ( languageHTML ) [ 1 ] ;
157
- var text = codeElement . textContent ;
158
-
159
- var data = types [ language ] ( text ) ;
160
-
161
- if ( data . js ) {
162
- data . js = data . js . trim ( ) ;
163
- }
164
- if ( data . html ) {
165
- data . html = data . html . trim ( ) ;
166
- }
167
- if ( data ) {
168
- cleanCodePenData ( data ) ;
169
- if ( window . CREATE_CODE_PEN ) {
170
- CREATE_CODE_PEN ( data ) ;
171
- } else {
172
- createCodePen ( data ) ;
138
+ if ( ! isRegistred ) {
139
+ //Register PrismJS "Run" custom button
140
+ Prism . plugins . toolbar . registerButton ( "run-code" , function ( env ) {
141
+ var demoWrapper = findDemoWrapper ( env . element ) ;
142
+ var pre = env . element . parentElement ;
143
+ var hasRunBtn = demoWrapper ? demoWrapper . getAttribute ( "data-has-run" ) : pre . getAttribute ( "data-has-run" ) ;
144
+ //prevent other demos without codepen link to register Run button
145
+ if ( hasRunBtn ) {
146
+ var btn = document . createElement ( "button" ) ;
147
+ btn . innerHTML = "Run" ;
148
+ btn . setAttribute ( "data-run" , "" ) ;
149
+ return btn ;
150
+ }
151
+ } ) ;
152
+ document . body . addEventListener ( 'click' , function ( ev ) {
153
+ if ( ev . target . getAttribute ( 'data-run' ) != null ) {
154
+ var btn = ev . target ;
155
+ var demoWrapper = findDemoWrapper ( btn ) ;
156
+ if ( ! demoWrapper ) {
157
+ var preElement = findPreForToolbarBtn ( btn ) ;
158
+ var codeElement = preElement . querySelector ( "code" ) ;
159
+ var language = codeElement . className . match ( languageHTML ) [ 1 ] ;
160
+ var text = codeElement . textContent ;
161
+
162
+ var data = types [ language ] ( text ) ;
163
+
164
+ if ( data . js ) {
165
+ data . js = data . js . trim ( ) ;
166
+ }
167
+ if ( data . html ) {
168
+ data . html = data . html . trim ( ) ;
173
169
}
170
+ if ( data ) {
171
+ cleanCodePenData ( data ) ;
172
+ if ( window . CREATE_CODE_PEN ) {
173
+ CREATE_CODE_PEN ( data ) ;
174
+ } else {
175
+ createCodePen ( data ) ;
176
+ }
174
177
175
- } else {
176
- console . warn ( "Unable to create a codepen for this demo" ) ;
178
+ } else {
179
+ console . warn ( "Unable to create a codepen for this demo" ) ;
180
+ }
177
181
}
178
- }
179
- if ( demoWrapper && matches . call ( demoWrapper , '.demo_wrapper' ) ) {
180
- var htmlCode = demoWrapper . querySelector ( '[data-for=html] code' ) ;
181
- var htmlText = htmlCode ? htmlCode . textContent . trim ( ) : '' ;
182
- var jsCode = demoWrapper . querySelector ( '[data-for=js] code' ) ;
183
- var jsText = jsCode ? jsCode . textContent . trim ( ) : '' ;
184
- var cssText = getStylesFromIframe ( demoWrapper . querySelector ( 'iframe' ) ) ;
185
- var codePen = {
186
- html : htmlText ,
187
- js : jsText ,
188
- js_module : true ,
189
- editors : '1011' ,
190
- css : cssText . trim ( )
191
- } ;
192
- cleanCodePenData ( codePen ) ;
193
- if ( window . CREATE_CODE_PEN ) {
194
- CREATE_CODE_PEN ( codePen ) ;
195
- } else {
196
- createCodePen ( codePen ) ;
182
+ if ( demoWrapper && matches . call ( demoWrapper , '.demo_wrapper' ) ) {
183
+ var htmlCode = demoWrapper . querySelector ( '[data-for=html] code' ) ;
184
+ var htmlText = htmlCode ? htmlCode . textContent . trim ( ) : '' ;
185
+ var jsCode = demoWrapper . querySelector ( '[data-for=js] code' ) ;
186
+ var jsText = jsCode ? jsCode . textContent . trim ( ) : '' ;
187
+ var cssText = getStylesFromIframe ( demoWrapper . querySelector ( 'iframe' ) ) ;
188
+ var codePen = {
189
+ html : htmlText ,
190
+ js : jsText ,
191
+ js_module : true ,
192
+ editors : '1011' ,
193
+ css : cssText . trim ( )
194
+ } ;
195
+ cleanCodePenData ( codePen ) ;
196
+ if ( window . CREATE_CODE_PEN ) {
197
+ CREATE_CODE_PEN ( codePen ) ;
198
+ } else {
199
+ createCodePen ( codePen ) ;
200
+ }
197
201
}
198
202
}
199
- }
200
- } ) ;
203
+ } ) ;
204
+ }
201
205
} ;
0 commit comments