Skip to content

Commit

Permalink
v2.0.0, public API
Browse files Browse the repository at this point in the history
  • Loading branch information
Todd Motto committed Oct 30, 2013
1 parent e81f711 commit e246ca0
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 85 deletions.
86 changes: 45 additions & 41 deletions dist/fluidvids.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,55 +6,59 @@
*
* Copyright 2013 Todd Motto. MIT licensed.
*/
window.fluidvids = (function (window, document, undefined) {
window.Fluidvids = (function (window, document, undefined) {

'use strict';

/*
* Constructor function
*/
var Fluidvids = function (elem) {
this.elem = elem;
};
var players, obj;
var head = document.head || document.getElementsByTagName('head')[0];
var css = '.fluidvids-elem{position:absolute;top:0px;left:0px;width:100%;' +
'height:100%;}.fluidvids{width:100%;position:relative;}';

/*
* Prototypal setup
*/
Fluidvids.prototype = {

init : function () {

var videoRatio = (this.elem.height / this.elem.width) * 100;
this.elem.style.position = 'absolute';
this.elem.style.top = '0';
this.elem.style.left = '0';
this.elem.width = '100%';
this.elem.height = '100%';

var wrap = document.createElement('div');
wrap.className = 'fluidvids';
wrap.style.width = '100%';
wrap.style.position = 'relative';
wrap.style.paddingTop = videoRatio + '%';

var thisParent = this.elem.parentNode;
thisParent.insertBefore(wrap, this.elem);
wrap.appendChild(this.elem);
var _matchesPlayer = function (source) {
players = new RegExp('^(https?:)?\/\/(?:' + obj.join('|') + ').*$', 'i');
return players.test(source);
};

}
var _render = function (elem) {
var wrap = document.createElement('div');
var thisParent = elem.parentNode;
var ratio = (parseInt(elem.height ? elem.height : elem.offsetHeight, 10) /
(parseInt(elem.width ? elem.width : elem.offsetWidth, 10)) * 100);

thisParent.insertBefore(wrap, elem);
elem.className += ' fluidvids-elem';
wrap.className += ' fluidvids';
wrap.style.paddingTop = ratio + '%';
wrap.appendChild(elem);
};

/*
* Initiate the plugin
*/
var iframes = document.getElementsByTagName( 'iframe' );
var _appendStyles = function () {
var style = document.createElement('style');
if (style.styleSheet) {
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}
head.appendChild(style);
};

for (var i = 0; i < iframes.length; i++) {
var players = /www.youtube.com|player.vimeo.com/;
if (iframes[i].src.search(players) > 0) {
new Fluidvids(iframes[i]).init();
var init = function (object) {
var options = object || {};
var selector = options.selector || 'iframe';
obj = options.players || ['www.youtube.com', 'player.vimeo.com'];
var nodes = document.querySelectorAll(selector);
for (var i = 0; i < nodes.length; i++) {
var self = nodes[i];
if (_matchesPlayer(self.src)) {
_render(self);
}
}
}
_appendStyles();
};

return {
init: init
};

})(window, document);
})(window, document);
2 changes: 1 addition & 1 deletion dist/fluidvids.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"title": "FluidVids",
"description": "Fluid YouTube/Vimeo video embeds",
"author": "Todd Motto",
"homepage": "https://github.com/toddmotto/fluidvids/",
"version": "1.2.0",
"homepage": "https://github.com/toddmotto/fluidvids",
"version": "2.0.0",
"devDependencies": {
"grunt": "~0.4.1",
"grunt-cli": "~0.1.7",
Expand Down
86 changes: 45 additions & 41 deletions src/fluidvids.js
Original file line number Diff line number Diff line change
@@ -1,52 +1,56 @@
window.fluidvids = (function (window, document, undefined) {
window.Fluidvids = (function (window, document, undefined) {

'use strict';

/*
* Constructor function
*/
var Fluidvids = function (elem) {
this.elem = elem;
var players, obj;
var head = document.head || document.getElementsByTagName('head')[0];
var css = '.fluidvids-elem{position:absolute;top:0px;left:0px;width:100%;' +
'height:100%;}.fluidvids{width:100%;position:relative;}';

var _matchesPlayer = function (source) {
players = new RegExp('^(https?:)?\/\/(?:' + obj.join('|') + ').*$', 'i');
return players.test(source);
};

/*
* Prototypal setup
*/
Fluidvids.prototype = {

init : function () {

var videoRatio = (this.elem.height / this.elem.width) * 100;
this.elem.style.position = 'absolute';
this.elem.style.top = '0';
this.elem.style.left = '0';
this.elem.width = '100%';
this.elem.height = '100%';

var wrap = document.createElement('div');
wrap.className = 'fluidvids';
wrap.style.width = '100%';
wrap.style.position = 'relative';
wrap.style.paddingTop = videoRatio + '%';

var thisParent = this.elem.parentNode;
thisParent.insertBefore(wrap, this.elem);
wrap.appendChild(this.elem);
var _render = function (elem) {
var wrap = document.createElement('div');
var thisParent = elem.parentNode;
var ratio = (parseInt(elem.height ? elem.height : elem.offsetHeight, 10) /
(parseInt(elem.width ? elem.width : elem.offsetWidth, 10)) * 100);

thisParent.insertBefore(wrap, elem);
elem.className += ' fluidvids-elem';
wrap.className += ' fluidvids';
wrap.style.paddingTop = ratio + '%';
wrap.appendChild(elem);
};

var _appendStyles = function () {
var style = document.createElement('style');
if (style.styleSheet) {
style.styleSheet.cssText = css;
} else {
style.appendChild(document.createTextNode(css));
}

head.appendChild(style);
};

/*
* Initiate the plugin
*/
var iframes = document.getElementsByTagName( 'iframe' );

for (var i = 0; i < iframes.length; i++) {
var players = /www.youtube.com|player.vimeo.com/;
if (iframes[i].src.search(players) > 0) {
new Fluidvids(iframes[i]).init();
var init = function (object) {
var options = object || {};
var selector = options.selector || 'iframe';
obj = options.players || ['www.youtube.com', 'player.vimeo.com'];
var nodes = document.querySelectorAll(selector);
for (var i = 0; i < nodes.length; i++) {
var self = nodes[i];
if (_matchesPlayer(self.src)) {
_render(self);
}
}
}
_appendStyles();
};

return {
init: init
};

})(window, document);
})(window, document);

0 comments on commit e246ca0

Please sign in to comment.