1
- var template = '<ul>' +
2
- '<li class="tab" data-tab="demo">Demo</li>' +
3
- '<li class="tab" data-tab="html">HTML</li>' +
4
- '<li class="tab" data-tab="js" style="display:none;">JS</li>' +
5
- '</ul>' +
6
- '<div class="tab-content" data-for="demo">' +
7
- '<iframe></iframe>' +
8
- '</div>' +
9
- '<div class="tab-content" data-for="html">' +
10
- '<pre class="prettyprint"></pre>' +
11
- '</div>' +
12
- '<div class="tab-content" data-for="js">' +
13
- '<pre class="prettyprint lang-js"></pre>' +
14
- '</div>' ;
15
-
16
- function render ( node , docObject ) {
1
+ var template = require ( "./demo_tpl" ) ;
2
+
3
+ function render ( node , docObject ) {
17
4
var demoDiv = document . createElement ( "div" ) ;
18
5
demoDiv . className = "demo" ;
19
6
demoDiv . innerHTML = template ;
20
- var demoSrc = ( docObject . pathToRoot || ".." ) + "/" + ( node . dataset ? node . dataset . demoSrc : node . getAttribute ( "data-demo-src" ) ) ;
7
+ var demoSrc =
8
+ ( docObject . pathToRoot || ".." ) +
9
+ "/" +
10
+ ( node . dataset ? node . dataset . demoSrc : node . getAttribute ( "data-demo-src" ) ) ;
21
11
demoDiv . getElementsByTagName ( "iframe" ) [ 0 ] . src = demoSrc ;
22
12
23
13
node . innerHTML = "" ;
@@ -26,69 +16,72 @@ function render(node, docObject){
26
16
return demoDiv ;
27
17
}
28
18
29
-
30
- module . exports = function ( node ) {
19
+ module . exports = function ( node ) {
31
20
var docObject = window . docObject || { } ;
32
21
render ( node , docObject ) ;
33
22
34
23
var iframe = node . getElementsByTagName ( "iframe" ) [ 0 ] ;
35
24
36
25
iframe . addEventListener ( "load" , process ) ;
37
26
38
- function process ( ) {
39
- var demoEl = this . contentDocument . getElementById ( ' demo-html' ) ,
40
- sourceEl = this . contentDocument . getElementById ( ' demo-source' ) ;
27
+ function process ( ) {
28
+ var demoEl = this . contentDocument . getElementById ( " demo-html" ) ,
29
+ sourceEl = this . contentDocument . getElementById ( " demo-source" ) ;
41
30
42
- var html = getHTML . call ( this , demoEl ) ;
43
- var js = getJS . call ( this , sourceEl ) ;
31
+ var html = getHTML . call ( this , demoEl ) ;
32
+ var js = getJS . call ( this , sourceEl ) ;
44
33
45
- var dataForHtml = node . querySelector ( "[data-for=html] > pre" ) ;
46
- dataForHtml . innerHTML = prettyify ( html ) ;
34
+ var dataForHtml = node . querySelector ( "[data-for=html] > pre" ) ;
35
+ dataForHtml . innerHTML = prettyify ( html ) ;
47
36
48
- if ( js ) {
49
- var dataForJS = node . querySelector ( "[data-for=js] > pre" ) ;
50
- dataForJS . innerHTML = prettyify ( js . replace ( / \t / g, " " ) ) ;
51
- show ( node . querySelector ( "[data-tab=js]" ) ) ;
52
- }
37
+ if ( js ) {
38
+ var dataForJS = node . querySelector ( "[data-for=js] > pre" ) ;
39
+ dataForJS . innerHTML = prettyify ( js . replace ( / \t / g, " " ) ) ;
40
+ show ( node . querySelector ( "[data-tab=js]" ) ) ;
41
+ }
53
42
54
- tabs ( ) ;
43
+ tabs ( ) ;
55
44
}
56
45
57
46
function getHTML ( demoEl ) {
58
- var html = demoEl ? demoEl . innerHTML : this . contentWindow . DEMO_HTML ;
59
-
60
- if ( ! html ) {
61
- // try to make from body
62
- var clonedBody = this . contentDocument . body . cloneNode ( true ) ;
63
- var scripts = [ ] . slice . call ( clonedBody . getElementsByTagName ( "script" ) ) ;
64
- scripts . forEach ( function ( script ) {
65
- if ( ! script . type || script . type . indexOf ( "javascript" ) === - 1 ) {
66
- script . parentNode . removeChild ( script ) ;
67
- }
68
- } ) ;
69
- var styles = [ ] . slice . call ( clonedBody . getElementsByTagName ( "style" ) ) ;
70
- styles . forEach ( function ( style ) {
71
- style . parentNode . removeChild ( style ) ;
72
- } ) ;
73
- html = clonedBody . innerHTML ;
74
- }
75
- return html ;
47
+ var html = demoEl ? demoEl . innerHTML : this . contentWindow . DEMO_HTML ;
48
+
49
+ if ( ! html ) {
50
+ // try to make from body
51
+ var clonedBody = this . contentDocument . body . cloneNode ( true ) ;
52
+ var scripts = [ ] . slice . call ( clonedBody . getElementsByTagName ( "script" ) ) ;
53
+ scripts . forEach ( function ( script ) {
54
+ if ( ! script . type || script . type . indexOf ( "javascript" ) === - 1 ) {
55
+ script . parentNode . removeChild ( script ) ;
56
+ }
57
+ } ) ;
58
+ var styles = [ ] . slice . call ( clonedBody . getElementsByTagName ( "style" ) ) ;
59
+ styles . forEach ( function ( style ) {
60
+ style . parentNode . removeChild ( style ) ;
61
+ } ) ;
62
+ html = clonedBody . innerHTML ;
63
+ }
64
+ return html ;
76
65
}
77
66
78
- function getJS ( sourceEl ) {
79
- var source = sourceEl ? sourceEl . innerHTML : this . contentWindow . DEMO_SOURCE ;
80
- if ( ! source ) {
81
- var scripts = [ ] . slice . call ( this . contentDocument . querySelectorAll ( "script" ) ) ;
82
- // get the first one that is JS
83
- for ( var i = 0 ; i < scripts . length ; i ++ ) {
84
- if ( ! scripts [ i ] . type || ( scripts [ i ] . type . indexOf ( "javascript" ) >= 0 &&
85
- ! scripts [ i ] . src ) ) {
86
- source = scripts [ i ] . innerHTML ;
87
- break ;
88
- }
67
+ function getJS ( sourceEl ) {
68
+ var source = sourceEl ? sourceEl . innerHTML : this . contentWindow . DEMO_SOURCE ;
69
+ if ( ! source ) {
70
+ var scripts = [ ] . slice . call (
71
+ this . contentDocument . querySelectorAll ( "script" )
72
+ ) ;
73
+ // get the first one that is JS
74
+ for ( var i = 0 ; i < scripts . length ; i ++ ) {
75
+ if (
76
+ ! scripts [ i ] . type ||
77
+ ( scripts [ i ] . type . indexOf ( "javascript" ) >= 0 && ! scripts [ i ] . src )
78
+ ) {
79
+ source = scripts [ i ] . innerHTML ;
80
+ break ;
89
81
}
90
82
}
91
- return ( source ? source . trim ( ) : '' ) ;
83
+ }
84
+ return source ? source . trim ( ) : "" ;
92
85
}
93
86
94
87
function show ( el ) {
@@ -100,32 +93,30 @@ module.exports = function(node){
100
93
}
101
94
102
95
function tabs ( ) {
103
- node . querySelector ( "ul" ) . addEventListener ( "click" , function ( ev ) {
96
+ node . querySelector ( "ul" ) . addEventListener ( "click" , function ( ev ) {
104
97
var el = ev . target ;
105
- if ( el . className === "tab" ) {
98
+ if ( el . className === "tab" ) {
106
99
toggle ( el . dataset ? el . dataset . tab : el . getAttribute ( "data-tab" ) ) ;
107
100
}
108
101
} ) ;
109
102
toggle ( "demo" ) ;
110
103
111
104
function toggle ( tabName ) {
112
- each ( ".tab" , function ( el ) {
113
- if ( el . classList ) {
105
+ each ( ".tab" , function ( el ) {
106
+ if ( el . classList ) {
114
107
el . classList . remove ( "active" ) ;
115
108
} else {
116
109
el . className = "tab" ;
117
110
}
118
-
119
111
} ) ;
120
112
121
113
each ( ".tab-content" , hide ) ;
122
- each ( ".tab[data-tab='" + tabName + "']" , function ( el ) {
123
- if ( el . classList ) {
114
+ each ( ".tab[data-tab='" + tabName + "']" , function ( el ) {
115
+ if ( el . classList ) {
124
116
el . classList . add ( "active" ) ;
125
117
} else {
126
118
el . className = "tab active" ;
127
119
}
128
-
129
120
} ) ;
130
121
each ( "[data-for='" + tabName + "']" , show ) ;
131
122
}
@@ -134,13 +125,10 @@ module.exports = function(node){
134
125
var tabs = [ ] . slice . call ( node . querySelectorAll ( selector ) ) ;
135
126
tabs . forEach ( cb ) ;
136
127
}
137
-
138
128
}
139
129
140
- function prettyify ( txt ) {
141
- txt = txt . replace ( / < / g, '<' ) ;
142
- return typeof prettyPrintOne !== "undefined" ?
143
- prettyPrintOne ( txt ) : txt ;
130
+ function prettyify ( txt ) {
131
+ txt = txt . replace ( / < / g, "<" ) ;
132
+ return typeof prettyPrintOne !== "undefined" ? prettyPrintOne ( txt ) : txt ;
144
133
}
145
-
146
134
} ;
0 commit comments