forked from mozilla/popcorn-js
/
popcorn.applyclass.js
85 lines (65 loc) · 1.96 KB
/
popcorn.applyclass.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// EFFECT: applyclass
(function (Popcorn) {
/**
* apply css class to jquery selector
* selector is relative to plugin target's id
* so .overlay is actually jQuery( "#target .overlay")
*
* @param {Object} options
*
* Example:
var p = Popcorn('#video')
.footnote({
start: 5, // seconds
end: 15, // seconds
text: 'This video made exclusively for drumbeat.org',
target: 'footnotediv',
effect: 'applyclass',
applyclass: 'selector: class'
})
*
*/
Popcorn.compose( "applyclass", {
manifest: {
about: {
name: "Popcorn applyclass Effect",
version: "0.1",
author: "@scottdowne",
website: "scottdowne.wordpress.com"
},
options: {}
},
_setup: function( options ) {
options.classes = {};
options.applyclass = options.applyclass || "";
var classes = options.applyclass.replace( /\s/g, "" ).split( "," ),
item = [],
idx = 0, len = classes.length;
for ( ; idx < len; idx++ ) {
item = classes[ idx ].split( ":" );
if ( item[ 0 ] ) {
options.classes[ item[ 0 ] ] = item[ 1 ] || "";
}
}
},
start: function( event, options ) {
var idx = 0, len = 0, elements;
Popcorn.forEach( options.classes, function( key, val ) {
elements = [];
if ( key === "parent" ) {
var item = document.querySelectorAll("#" + options.target )[ 0 ];
item && item.parentNode && elements.push( item.parentNode );
} else {
elements = document.querySelectorAll("#" + options.target + " " + key );
}
for ( idx = 0, len = elements.length; idx < len; idx++ ) {
var element = elements[ idx ];
element.classList.toggle( val );
setTimeout( function() {
element.classList.toggle( val );
}, 250 );
}
});
}
});
})( Popcorn );