Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Anwar Javed
2013-01-09 13:35:00 +05:30
6 changed files with 401 additions and 63 deletions

View File

@@ -66,6 +66,7 @@ Complete
* [SoundJS](http://www.createjs.com/#!/SoundJS) (by [Pedro Ferreira](https://bitbucket.org/drk4))
* [Spin](http://fgnass.github.com/spin.js/) (by [Boris Yankov](https://github.com/borisyankov))
* [Sugar](http://sugarjs.com/) (by [Josh Baldwin](https://github.com/jbaldwin/))
* [SwipeView](http://cubiq.org/swipeview) (by [Boris Yankov](https://github.com/borisyankov))
* [Teechart](http://www.steema.com) (by [Steema](http://www.steema.com))
* [Toastr](https://github.com/CodeSeven/toastr) (by [Boris Yankov](https://github.com/borisyankov))
* [TweenJS](http://www.createjs.com/#!/TweenJS) (by [Pedro Ferreira](https://bitbucket.org/drk4))

View File

@@ -39,7 +39,7 @@ interface iScrollOptions {
wheelAction?: string;
// Snap
snap?: bool;
snap?: any;
snapThreshold?: number;
// Events

19
iscroll/iscroll-tests.ts Normal file
View File

@@ -0,0 +1,19 @@
/// <reference path="iscroll-4.2.d.ts" />
var myScroll1 = new iScroll('wrapper');
var myScroll2 = new iScroll('wrapper', { hScrollbar: false, vScrollbar: false });
var myScroll3= new iScroll('wrapper', {
snap: true,
momentum: false,
hScrollbar: false,
vScrollbar: false
});
var myScroll4 = new iScroll('wrapper', {
snap: 'li',
momentum: false,
hScrollbar: false,
vScrollbar: false
});
var myScroll6 = new iScroll('wrapper', { scrollbarClass: 'myScrollbar' });
myScroll1.refresh();

46
swipeview/swipeview-1.0.d.ts vendored Normal file
View File

@@ -0,0 +1,46 @@
// Type definitions for SwipeView 1.0
// Project: http://cubiq.org/swipeview
// Definitions by: Boris Yankov <https://github.com/borisyankov/>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
interface SwipeViewEvent {
(fn: Function): void;
}
interface SwipeViewOptions {
text?: string;
numberOfPages?: number;
snapThreshold?: number;
hastyPageFlip?: bool;
loop?: bool;
}
interface PageHTMLElement extends HTMLElement {
dataset: any;
}
class SwipeView {
masterPages: PageHTMLElement[];
currentMasterPage: number;
wrapper: HTMLElement;
slider: HTMLElement;
constructor (element: string);
constructor (element: string, options: SwipeViewOptions);
destroy(): void;
refreshSize(): void;
updatePageCount(n: number): void;
goToPage(p: number): void;
next(): void;
prev(): void;
handleEvent(e: Event): void;
onFlip: SwipeViewEvent;
onMoveOut: SwipeViewEvent;
onMoveIn: SwipeViewEvent;
onTouchStart: SwipeViewEvent;
}

View File

@@ -0,0 +1,252 @@
/// <reference path="swipeview-1.0.d.ts" />
function demo1() {
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
var
el,
i,
page,
dots = document.querySelectorAll('#nav li'),
slides = [
{
img: 'images/pic01.jpg',
width: 300,
height: 213,
desc: 'Piazza del Duomo, Florence, Italy'
},
{
img: 'images/pic02.jpg',
width: 300,
height: 164,
desc: 'Tuscan Landscape'
}
];
var gallery = new SwipeView('#wrapper', { numberOfPages: slides.length });
// Load initial data
for (i = 0; i < 3; i++) {
page = i == 0 ? slides.length - 1 : i - 1;
el = document.createElement('img');
el.className = 'loading';
el.src = slides[page].img;
el.width = slides[page].width;
el.height = slides[page].height;
el.onload = function () { this.className = ''; }
gallery.masterPages[i].appendChild(el);
el = document.createElement('span');
el.innerHTML = slides[page].desc;
gallery.masterPages[i].appendChild(el)
}
gallery.onFlip(function () {
var el,
upcoming,
i;
for (i = 0; i < 3; i++) {
upcoming = gallery.masterPages[i].dataset.upcomingPageIndex;
if (upcoming != gallery.masterPages[i].dataset.pageIndex) {
el = gallery.masterPages[i].querySelector('img');
el.className = 'loading';
el.src = slides[upcoming].img;
el.width = slides[upcoming].width;
el.height = slides[upcoming].height;
el = gallery.masterPages[i].querySelector('span');
el.innerHTML = slides[upcoming].desc;
}
}
});
gallery.onMoveOut(function () {
gallery.masterPages[gallery.currentMasterPage].className = gallery.masterPages[gallery.currentMasterPage].className.replace(/(^|\s)swipeview-active(\s|$)/, '');
});
gallery.onMoveIn(function () {
var className = gallery.masterPages[gallery.currentMasterPage].className;
/(^|\s)swipeview-active(\s|$)/.test(className) || (gallery.masterPages[gallery.currentMasterPage].className = !className ? 'swipeview-active' : className + ' swipeview-active');
});
}
function demo2() {
var carousel: SwipeView,
el,
i,
page,
slides = [
'<strong>Swipe</strong> to know more &gt;&gt;&gt;<br>Or scroll down for <em>Lorem Ipsum</em>',
'1. A robot may not injure a human being or, through inaction, allow a human being to come to harm.',
'2. A robot must obey the orders given to it by human beings, except where such orders would conflict with the First Law.',
'3. A robot must protect its own existence as long as such protection does not conflict with the First or Second Laws.'
];
carousel = new SwipeView('#wrapper', {
numberOfPages: slides.length,
hastyPageFlip: true
});
// Load initial data
for (i = 0; i < 3; i++) {
page = i == 0 ? slides.length - 1 : i - 1;
el = document.createElement('span');
el.innerHTML = slides[page];
carousel.masterPages[i].appendChild(el)
}
carousel.onFlip(function () {
var el,
upcoming,
i;
for (i = 0; i < 3; i++) {
upcoming = carousel.masterPages[i].dataset.upcomingPageIndex;
if (upcoming != carousel.masterPages[i].dataset.pageIndex) {
el = carousel.masterPages[i].querySelector('span');
el.innerHTML = slides[upcoming];
}
}
});
}
function demo3() {
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
window.addEventListener('load', function () {
var ereader: SwipeView,
el,
i,
pageIndex,
pages = [],
req = new XMLHttpRequest();
ereader = new SwipeView('#wrapper', { hastyPageFlip: true });
// Ajax request
req.open('GET', 'flowers.txt', true);
req.onreadystatechange = function () {
if (req.readyState != 4) return;
paginate(req.status != 200 && req.status != 304 ? false : req.responseText);
req = null;
}
req.send(null);
function paginate(book) {
var that = this,
container,
helper,
words = [],
segment,
wordCount = 80,
avgWordCount = 0,
progressTotal = 0,
progressCurrent = 0,
progressMaxWidth = document.getElementById('progressbar').clientWidth,
progressToBookRatio = 0,
progressBar = document.querySelector('#progressbar > span'),
size;
if (!book) return;
book = book.replace(/\n\n/g, ' <br><br>').replace(/\n/g, ' ');
progressTotal = book.length;
progressToBookRatio = progressMaxWidth / book.length;
container = document.createElement('div');
container.style.visibility = 'hidden';
container.innerHTML = '<div id="ereader-helper"></div>';
ereader.slider.appendChild(container);
helper = document.getElementById('ereader-helper');
helper.innerHTML = '';
var loopy = function () {
words = book.split(' ', wordCount);
segment = words.join(' ');
helper.innerHTML = segment;
if (helper.offsetHeight > ereader.wrapperHeight) {
if (size == -1) {
words.pop();
segment = words.join(' ');
pages.push(segment);
book = book.substr(segment.length);
avgWordCount = Math.round((wordCount + avgWordCount) / 2);
wordCount = avgWordCount;
size = 0;
progressTotal -= segment.length;
} else {
size = 1;
wordCount--;
}
} else {
if (size == 1) {
pages.push(segment);
book = book.substr(segment.length);
avgWordCount = Math.round((wordCount + avgWordCount) / 2);
wordCount = avgWordCount;
size = 0;
progressTotal -= segment.length;
} else {
if (segment == book) {
pages.push(segment);
book = '';
}
size = -1;
wordCount++;
}
}
if (book) {
progressBar.style.width = 150 - Math.round(progressToBookRatio * progressTotal) + 'px';
setTimeout(loopy, 1);
} else {
book = null;
words = null;
segment = null;
helper.innerHTML = '';
ereader.slider.removeChild(container);
ereader.updatePageCount(pages.length);
ereader.masterPages[0].dataset.pageIndex = pages.length - 1;
ereader.masterPages[0].dataset.upcomingPageIndex = ereader.masterPages[0].dataset.pageIndex;
// Load initial data
for (i = 0; i < 3; i++) {
pageIndex = i == 0 ? pages.length - 1 : i - 1;
el = document.createElement('div');
el.innerHTML = pages[pageIndex];
ereader.masterPages[i].appendChild(el)
}
document.getElementById('loading').style.display = 'none';
}
}
loopy();
}
ereader.onFlip(function () {
var el,
upcoming,
i;
for (i = 0; i < 3; i++) {
upcoming = ereader.masterPages[i].dataset.upcomingPageIndex;
if (upcoming != ereader.masterPages[i].dataset.pageIndex) {
el = ereader.masterPages[i].querySelector('div');
el.innerHTML = pages[upcoming];
}
}
});
}, false);
}

144
youtube/youtube.d.ts vendored
View File

@@ -1,24 +1,31 @@
// Type definitions for YouTube [No version numbering]
// Project: https://developers.google.com/youtube/
// Definitions by: Daz Wilkin <https://github.com/DazWilkin/>
// Updated by: Ian Obermiller <http://ianobermiller.com>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
// I'm a TypeScript noob so please be gentle!
module YT {
interface EventArgs {
target: Player;
data: any;
}
module Google.YT {
interface Event {
(event: any): void;
interface EventHandler {
(event: EventArgs): void;
}
export interface Events {
onReady?: Event;
onPlayback?: Event;
onStateChange?: Event;
onReady?: EventHandler;
onPlayback?: EventHandler;
onStateChange?: EventHandler;
}
export enum ListType {
search,
user_uploads,
playlist,
}
export interface PlayerVars {
autohide?: number;
autoplay?: number;
@@ -42,91 +49,104 @@ module Google.YT {
start?: number;
theme?: string;
}
export interface PlayerOptions {
width: number;
height: number;
videoId: string;
playerVars: PlayerVars;
events: Events;
width?: number;
height?: number;
videoId?: string;
playerVars?: PlayerVars;
events?: Events;
}
interface LoadVideoByTestId {
interface VideoByIdParams {
videoId: string;
startSeconds: number;
endSeconds: number;
suggestedQuality: string;
startSeconds?: number;
endSeconds?: number;
suggestedQuality?: string;
}
export interface Player {
interface VideoByUrlParams {
mediaContentUrl: string;
startSeconds?: number;
endSeconds?: number;
suggestedQuality?: string;
}
export class Player {
// Constructor
new (string, playerOptions:PlayerOptions): any;
constructor(id: string, playerOptions: PlayerOptions);
// Queueing functions
//loadVideoById:(videoId: string, startSeconds: number, suggestedQuality: string)=> void;
loadVideoById:(LoadVideoByTestId)=> void;
loadVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): void;
loadVideoById(VideoByIdParams): void;
cueVideoById(videoId: string, startSeconds?: number, suggestedQuality?: string): void;
cueVideoById(VideoByIdParams): void;
loadVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): void;
loadVideoByUrl(VideoByUrlParams): void;
cueVideoByUrl(mediaContentUrl: string, startSeconds?: number, suggestedQuality?: string): void;
cueVideoByUrl(VideoByUrlParams): void;
// Properties
size;
// Playing
playVideo: () =>void;
pauseVideo: () =>void;
stopVideo: () =>void;
seekTo: (seconds:number, allowSeekAhead:bool) =>void;
clearVideo: () =>void;
playVideo(): void;
pauseVideo(): void;
stopVideo(): void;
seekTo(seconds:number, allowSeekAhead:bool): void;
clearVideo(): void;
// Playlist
nextVideo: () =>void;
previousVideo: () =>void;
playVideoAt:(index: number) =>void;
nextVideo(): void;
previousVideo(): void;
playVideoAt(index: number): void;
// Volume
mute: () =>void;
unMute: () =>void;
isMuted: () =>bool;
setVolume: (volume: number) =>void;
getVolume: () =>number;
mute(): void;
unMute(): void;
isMuted(): bool;
setVolume(volume: number): void;
getVolume(): number;
// Sizing
setSize: (width: number, height: number) =>any;
setSize(width: number, height: number): any;
// Playback
getPlaybackRate: () =>number;
setPlaybackRate: (suggestedRate:number) =>void;
getPlaybackRate(): number;
setPlaybackRate(suggestedRate:number): void;
getAvailablePlaybackRates(): number[];
// Behavior
setLoop: (loopPlaylists: bool) =>void;
setShuffle: (shufflePlaylist: bool) =>void;
setLoop(loopPlaylists: bool): void;
setShuffle(shufflePlaylist: bool): void;
// Status
getVideoLoadedFraction: () =>number;
getPlayerState: () =>number;
getCurrentTime:()=> number;
getVideoStartBytes:()=>number;
getVideoBytesLoaded: () =>number;
getVideoBytesTotal: () =>number;
getVideoLoadedFraction(): number;
getPlayerState(): number;
getCurrentTime(): number;
getVideoStartBytes(): number;
getVideoBytesLoaded(): number;
getVideoBytesTotal(): number;
// Information
getDuration: () =>number;
getVideoUrl: () =>string;
getVideoEmbedCode: () =>string;
getDuration(): number;
getVideoUrl(): string;
getVideoEmbedCode(): string;
// Playlist
getPlaylist: () =>any[];
getPlaylistIndex:()=>number;
getPlaylist(): any[];
getPlaylistIndex(): number;
// Event Listener
addEventListener: (event: string, listener: string) =>void;
addEventListener(event: string, listener: string): void;
}
}
interface YT {
Player: Google.YT.Player;
PlayerState: {
BUFFERING: number;
CUED: number;
ENDED: number;
PAUSED: number;
PLAYING: number;
export enum PlayerState {
BUFFERING,
CUED,
ENDED,
PAUSED,
PLAYING
};
}
}