├── CNAME ├── LICENSE.md ├── README.md ├── css ├── bootstrap-social.css ├── bootstrap.css ├── bootstrap.min.css ├── ladda-themeless.min.css └── style.css ├── favicon.ico ├── fonts ├── flat-ui-icons-regular.eot ├── flat-ui-icons-regular.svg ├── flat-ui-icons-regular.ttf ├── flat-ui-icons-regular.woff ├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.woff └── lato │ ├── lato-black.eot │ ├── lato-black.svg │ ├── lato-black.ttf │ ├── lato-black.woff │ ├── lato-bold.eot │ ├── lato-bold.svg │ ├── lato-bold.ttf │ ├── lato-bold.woff │ ├── lato-bolditalic.eot │ ├── lato-bolditalic.svg │ ├── lato-bolditalic.ttf │ ├── lato-bolditalic.woff │ ├── lato-italic.eot │ ├── lato-italic.svg │ ├── lato-italic.ttf │ ├── lato-italic.woff │ ├── lato-light.eot │ ├── lato-light.svg │ ├── lato-light.ttf │ ├── lato-light.woff │ ├── lato-regular.eot │ ├── lato-regular.svg │ ├── lato-regular.ttf │ └── lato-regular.woff ├── images ├── demo │ ├── browser-2x.png │ ├── browser-author.jpg │ ├── browser-pic-1.jpg │ ├── browser-pic-2.jpg │ ├── browser-pic-3.jpg │ ├── browser-pic-4.jpg │ ├── browser-pic-5.jpg │ ├── browser-pic-6.jpg │ ├── browser.png │ ├── html-icon.png │ ├── logo-mask-2x.png │ ├── logo-mask.png │ └── video.jpg ├── example-image.jpg ├── favicon.ico ├── footer │ └── logo.png ├── gif-frame.png ├── gif │ ├── and.gif │ ├── hello.gif │ └── slideshare-as-a.gif ├── icons │ ├── png │ │ ├── Book.png │ │ ├── Calendar.png │ │ ├── Chat.png │ │ ├── Clipboard.png │ │ ├── Compas.png │ │ ├── Gift-Box.png │ │ ├── Infinity-Loop.png │ │ ├── Mail.png │ │ ├── Map.png │ │ ├── Pensils.png │ │ ├── Pocket.png │ │ ├── Retina-Ready.png │ │ ├── Toilet-Paper.png │ │ └── Watches.png │ └── svg │ │ ├── book.svg │ │ ├── calendar.svg │ │ ├── chat.svg │ │ ├── clipboard.svg │ │ ├── clocks.svg │ │ ├── compas.svg │ │ ├── gift-box.svg │ │ ├── loop.svg │ │ ├── mail.svg │ │ ├── map.svg │ │ ├── paper-bag.svg │ │ ├── pencils.svg │ │ ├── retina.svg │ │ └── toilet-paper.svg ├── login │ ├── icon.png │ ├── imac-2x.png │ └── imac.png ├── screenshots │ ├── gifdeck.png │ ├── gmail.png │ └── twitter.png ├── switch │ ├── mask-square.png │ └── mask.png ├── tile │ ├── ribbon-2x.png │ └── ribbon.png ├── todo │ ├── done-2x.png │ ├── done.png │ ├── search-2x.png │ ├── search.png │ ├── todo-2x.png │ └── todo.png └── video │ ├── fullscreen-2x.png │ ├── fullscreen.png │ ├── pause-2x.png │ ├── pause.png │ ├── play-2x.png │ ├── play.png │ ├── poster.jpg │ ├── volume-full-2x.png │ ├── volume-full.png │ ├── volume-off-2x.png │ └── volume-off.png ├── index.html ├── js ├── application.js ├── bootstrap.js ├── bootstrap.min.js ├── gif.js ├── gif.js.map ├── gif.worker.js ├── gif.worker.js.map ├── jquery-1.11.0.js ├── jquery.easing.min.js ├── ladda.min.js ├── modernizr.custom.51628.js ├── proxy.js ├── spin.min.js └── startup.js ├── less ├── mixins.less ├── style.less └── variables.less └── s3 └── proxy ├── proxy.html └── proxy.js /CNAME: -------------------------------------------------------------------------------- 1 | gifdeck.in -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | GifDeck 2 | ======= 3 | Convert your SlideShares into beautifully animated GIFs 4 | 5 | https://gifdeck.in 6 | 7 | ![Screenshot](images/screenshots/gifdeck.png) 8 | 9 | GifDeck uses [gif.js](https://jnordberg.github.io/gif.js/) to convert a presentation into a playable GIF. It makes use of HTML5 Canvas, Blob and Web Workers. Everything happens on the client side. Individual slides of a presentation are fetched using [SlideShare oEmbed API](https://www.slideshare.net/developers/oembed). For bypassing the cross browser restrictions, it uses an iFrame based postMessage proxy. 10 | -------------------------------------------------------------------------------- /css/bootstrap-social.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Social Buttons for Bootstrap 3 | * 4 | * Copyright 2013-2014 Panayiotis Lipiridis 5 | * Licensed under the MIT License 6 | * 7 | * https://github.com/lipis/bootstrap-social 8 | */ 9 | 10 | .btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} 11 | .btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} 12 | .btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} 13 | .btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} 14 | .btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)} 15 | .btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em} 16 | .btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em} 17 | .btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em} 18 | .btn-social-icon :first-child{border:none;text-align:center;width:100% !important} 19 | .btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0} 20 | .btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0} 21 | .btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0} 22 | .btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:hover,.btn-adn:focus,.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)} 23 | .btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none} 24 | .btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2)} 25 | .btn-adn .badge{color:#d87a68;background-color:#fff} 26 | .btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover,.btn-bitbucket:focus,.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)} 27 | .btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none} 28 | .btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)} 29 | .btn-bitbucket .badge{color:#205081;background-color:#fff} 30 | .btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover,.btn-dropbox:focus,.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)} 31 | .btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none} 32 | .btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)} 33 | .btn-dropbox .badge{color:#1087dd;background-color:#fff} 34 | .btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover,.btn-facebook:focus,.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)} 35 | .btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none} 36 | .btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)} 37 | .btn-facebook .badge{color:#3b5998;background-color:#fff} 38 | .btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover,.btn-flickr:focus,.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)} 39 | .btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none} 40 | .btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)} 41 | .btn-flickr .badge{color:#ff0084;background-color:#fff} 42 | .btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover,.btn-foursquare:focus,.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)} 43 | .btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none} 44 | .btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2)} 45 | .btn-foursquare .badge{color:#f94877;background-color:#fff} 46 | .btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:hover,.btn-github:focus,.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)} 47 | .btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none} 48 | .btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)} 49 | .btn-github .badge{color:#444;background-color:#fff} 50 | .btn-google-plus{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google-plus:hover,.btn-google-plus:focus,.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)} 51 | .btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{background-image:none} 52 | .btn-google-plus.disabled,.btn-google-plus[disabled],fieldset[disabled] .btn-google-plus,.btn-google-plus.disabled:hover,.btn-google-plus[disabled]:hover,fieldset[disabled] .btn-google-plus:hover,.btn-google-plus.disabled:focus,.btn-google-plus[disabled]:focus,fieldset[disabled] .btn-google-plus:focus,.btn-google-plus.disabled:active,.btn-google-plus[disabled]:active,fieldset[disabled] .btn-google-plus:active,.btn-google-plus.disabled.active,.btn-google-plus[disabled].active,fieldset[disabled] .btn-google-plus.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)} 53 | .btn-google-plus .badge{color:#dd4b39;background-color:#fff} 54 | .btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover,.btn-instagram:focus,.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)} 55 | .btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none} 56 | .btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)} 57 | .btn-instagram .badge{color:#3f729b;background-color:#fff} 58 | .btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover,.btn-linkedin:focus,.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)} 59 | .btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none} 60 | .btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)} 61 | .btn-linkedin .badge{color:#007bb6;background-color:#fff} 62 | .btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:hover,.btn-microsoft:focus,.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)} 63 | .btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none} 64 | .btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2)} 65 | .btn-microsoft .badge{color:#2672ec;background-color:#fff} 66 | .btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:hover,.btn-openid:focus,.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)} 67 | .btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none} 68 | .btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2)} 69 | .btn-openid .badge{color:#f7931e;background-color:#fff} 70 | .btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover,.btn-pinterest:focus,.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)} 71 | .btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none} 72 | .btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)} 73 | .btn-pinterest .badge{color:#cb2027;background-color:#fff} 74 | .btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:hover,.btn-reddit:focus,.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)} 75 | .btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none} 76 | .btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)} 77 | .btn-reddit .badge{color:#eff7ff;background-color:#000} 78 | .btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:hover,.btn-soundcloud:focus,.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)} 79 | .btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none} 80 | .btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#f50;border-color:rgba(0,0,0,0.2)} 81 | .btn-soundcloud .badge{color:#f50;background-color:#fff} 82 | .btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover,.btn-tumblr:focus,.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)} 83 | .btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none} 84 | .btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)} 85 | .btn-tumblr .badge{color:#2c4762;background-color:#fff} 86 | .btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover,.btn-twitter:focus,.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)} 87 | .btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none} 88 | .btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)} 89 | .btn-twitter .badge{color:#55acee;background-color:#fff} 90 | .btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:hover,.btn-vimeo:focus,.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)} 91 | .btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none} 92 | .btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)} 93 | .btn-vimeo .badge{color:#1ab7ea;background-color:#fff} 94 | .btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:hover,.btn-vk:focus,.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)} 95 | .btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none} 96 | .btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)} 97 | .btn-vk .badge{color:#587ea3;background-color:#fff} 98 | .btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:hover,.btn-yahoo:focus,.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)} 99 | .btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none} 100 | .btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2)} 101 | .btn-yahoo .badge{color:#720e9e;background-color:#fff} 102 | -------------------------------------------------------------------------------- /css/ladda-themeless.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Ladda 3 | * https://lab.hakim.se/ladda 4 | * MIT licensed 5 | * 6 | * Copyright (C) 2013 Hakim El Hattab, https://hakim.se 7 | */.ladda-button{position:relative}.ladda-button .ladda-spinner{position:absolute;z-index:2;display:inline-block;width:32px;height:32px;top:50%;margin-top:-16px;opacity:0;pointer-events:none}.ladda-button .ladda-label{position:relative;z-index:3}.ladda-button .ladda-progress{position:absolute;width:0;height:100%;left:0;top:0;background:rgba(0,0,0,.2);visibility:hidden;opacity:0;-webkit-transition:.1s linear all!important;-moz-transition:.1s linear all!important;-ms-transition:.1s linear all!important;-o-transition:.1s linear all!important;transition:.1s linear all!important}.ladda-button[data-loading] .ladda-progress{opacity:1;visibility:visible}.ladda-button,.ladda-button .ladda-label,.ladda-button .ladda-spinner{-webkit-transition:.3s cubic-bezier(0.175,.885,.32,1.275) all!important;-moz-transition:.3s cubic-bezier(0.175,.885,.32,1.275) all!important;-ms-transition:.3s cubic-bezier(0.175,.885,.32,1.275) all!important;-o-transition:.3s cubic-bezier(0.175,.885,.32,1.275) all!important;transition:.3s cubic-bezier(0.175,.885,.32,1.275) all!important}.ladda-button[data-style=zoom-in],.ladda-button[data-style=zoom-in] .ladda-label,.ladda-button[data-style=zoom-in] .ladda-spinner,.ladda-button[data-style=zoom-out],.ladda-button[data-style=zoom-out] .ladda-label,.ladda-button[data-style=zoom-out] .ladda-spinner{-webkit-transition:.3s ease all!important;-moz-transition:.3s ease all!important;-ms-transition:.3s ease all!important;-o-transition:.3s ease all!important;transition:.3s ease all!important}.ladda-button[data-style=expand-right] .ladda-spinner{right:14px}.ladda-button[data-style=expand-right][data-size="s"] .ladda-spinner,.ladda-button[data-style=expand-right][data-size=xs] .ladda-spinner{right:4px}.ladda-button[data-style=expand-right][data-loading]{padding-right:56px}.ladda-button[data-style=expand-right][data-loading] .ladda-spinner{opacity:1}.ladda-button[data-style=expand-right][data-loading][data-size="s"],.ladda-button[data-style=expand-right][data-loading][data-size=xs]{padding-right:40px}.ladda-button[data-style=expand-left] .ladda-spinner{left:14px}.ladda-button[data-style=expand-left][data-size="s"] .ladda-spinner,.ladda-button[data-style=expand-left][data-size=xs] .ladda-spinner{left:4px}.ladda-button[data-style=expand-left][data-loading]{padding-left:56px}.ladda-button[data-style=expand-left][data-loading] .ladda-spinner{opacity:1}.ladda-button[data-style=expand-left][data-loading][data-size="s"],.ladda-button[data-style=expand-left][data-loading][data-size=xs]{padding-left:40px}.ladda-button[data-style=expand-up]{overflow:hidden}.ladda-button[data-style=expand-up] .ladda-spinner{top:-32px;left:50%;margin-left:-16px}.ladda-button[data-style=expand-up][data-loading]{padding-top:54px}.ladda-button[data-style=expand-up][data-loading] .ladda-spinner{opacity:1;top:14px;margin-top:0}.ladda-button[data-style=expand-up][data-loading][data-size="s"],.ladda-button[data-style=expand-up][data-loading][data-size=xs]{padding-top:32px}.ladda-button[data-style=expand-up][data-loading][data-size="s"] .ladda-spinner,.ladda-button[data-style=expand-up][data-loading][data-size=xs] .ladda-spinner{top:4px}.ladda-button[data-style=expand-down]{overflow:hidden}.ladda-button[data-style=expand-down] .ladda-spinner{top:62px;left:50%;margin-left:-16px}.ladda-button[data-style=expand-down][data-size="s"] .ladda-spinner,.ladda-button[data-style=expand-down][data-size=xs] .ladda-spinner{top:40px}.ladda-button[data-style=expand-down][data-loading]{padding-bottom:54px}.ladda-button[data-style=expand-down][data-loading] .ladda-spinner{opacity:1}.ladda-button[data-style=expand-down][data-loading][data-size="s"],.ladda-button[data-style=expand-down][data-loading][data-size=xs]{padding-bottom:32px}.ladda-button[data-style=slide-left]{overflow:hidden}.ladda-button[data-style=slide-left] .ladda-label{position:relative}.ladda-button[data-style=slide-left] .ladda-spinner{left:100%;margin-left:-16px}.ladda-button[data-style=slide-left][data-loading] .ladda-label{opacity:0;left:-100%}.ladda-button[data-style=slide-left][data-loading] .ladda-spinner{opacity:1;left:50%}.ladda-button[data-style=slide-right]{overflow:hidden}.ladda-button[data-style=slide-right] .ladda-label{position:relative}.ladda-button[data-style=slide-right] .ladda-spinner{right:100%;margin-left:-16px}.ladda-button[data-style=slide-right][data-loading] .ladda-label{opacity:0;left:100%}.ladda-button[data-style=slide-right][data-loading] .ladda-spinner{opacity:1;left:50%}.ladda-button[data-style=slide-up]{overflow:hidden}.ladda-button[data-style=slide-up] .ladda-label{position:relative}.ladda-button[data-style=slide-up] .ladda-spinner{left:50%;margin-left:-16px;margin-top:1em}.ladda-button[data-style=slide-up][data-loading] .ladda-label{opacity:0;top:-1em}.ladda-button[data-style=slide-up][data-loading] .ladda-spinner{opacity:1;margin-top:-16px}.ladda-button[data-style=slide-down]{overflow:hidden}.ladda-button[data-style=slide-down] .ladda-label{position:relative}.ladda-button[data-style=slide-down] .ladda-spinner{left:50%;margin-left:-16px;margin-top:-2em}.ladda-button[data-style=slide-down][data-loading] .ladda-label{opacity:0;top:1em}.ladda-button[data-style=slide-down][data-loading] .ladda-spinner{opacity:1;margin-top:-16px}.ladda-button[data-style=zoom-out]{overflow:hidden}.ladda-button[data-style=zoom-out] .ladda-spinner{left:50%;margin-left:-16px;-webkit-transform:scale(2.5);-moz-transform:scale(2.5);-ms-transform:scale(2.5);-o-transform:scale(2.5);transform:scale(2.5)}.ladda-button[data-style=zoom-out] .ladda-label{position:relative;display:inline-block}.ladda-button[data-style=zoom-out][data-loading] .ladda-label{opacity:0;-webkit-transform:scale(0.5);-moz-transform:scale(0.5);-ms-transform:scale(0.5);-o-transform:scale(0.5);transform:scale(0.5)}.ladda-button[data-style=zoom-out][data-loading] .ladda-spinner{opacity:1;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}.ladda-button[data-style=zoom-in]{overflow:hidden}.ladda-button[data-style=zoom-in] .ladda-spinner{left:50%;margin-left:-16px;-webkit-transform:scale(0.2);-moz-transform:scale(0.2);-ms-transform:scale(0.2);-o-transform:scale(0.2);transform:scale(0.2)}.ladda-button[data-style=zoom-in] .ladda-label{position:relative;display:inline-block}.ladda-button[data-style=zoom-in][data-loading] .ladda-label{opacity:0;-webkit-transform:scale(2.2);-moz-transform:scale(2.2);-ms-transform:scale(2.2);-o-transform:scale(2.2);transform:scale(2.2)}.ladda-button[data-style=zoom-in][data-loading] .ladda-spinner{opacity:1;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}.ladda-button[data-style=contract]{overflow:hidden;width:100px}.ladda-button[data-style=contract] .ladda-spinner{left:50%;margin-left:-16px}.ladda-button[data-style=contract][data-loading]{border-radius:50%;width:52px}.ladda-button[data-style=contract][data-loading] .ladda-label{opacity:0}.ladda-button[data-style=contract][data-loading] .ladda-spinner{opacity:1}.ladda-button[data-style=contract-overlay]{overflow:hidden;width:100px;box-shadow:0 0 0 3000px transparent}.ladda-button[data-style=contract-overlay] .ladda-spinner{left:50%;margin-left:-16px}.ladda-button[data-style=contract-overlay][data-loading]{border-radius:50%;width:52px;box-shadow:0 0 0 3000px rgba(0,0,0,.8)}.ladda-button[data-style=contract-overlay][data-loading] .ladda-label{opacity:0}.ladda-button[data-style=contract-overlay][data-loading] .ladda-spinner{opacity:1} 8 | -------------------------------------------------------------------------------- /css/style.css: -------------------------------------------------------------------------------- 1 | body { 2 | width: 100%; 3 | height: 100%; 4 | font-family: "Whitney", "Helvetica Neue", Helvetica, Arial, sans-serif; 5 | color: #2c3e50; 6 | background-color: #4899ea; 7 | } 8 | html { 9 | width: 100%; 10 | height: 100%; 11 | } 12 | h1, 13 | h2, 14 | h3, 15 | h4, 16 | h5, 17 | h6 { 18 | margin: 0 0 35px; 19 | text-transform: uppercase; 20 | font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif; 21 | font-weight: 700; 22 | letter-spacing: 1px; 23 | } 24 | p { 25 | margin: 0 0 25px; 26 | font-size: 18px; 27 | line-height: 1.5; 28 | } 29 | @media (min-width: 767px) { 30 | p { 31 | margin: 0 0 35px; 32 | font-size: 20px; 33 | line-height: 1.6; 34 | } 35 | } 36 | a { 37 | color: #ffffff; 38 | -webkit-transition: all 0.2s ease-in-out; 39 | -moz-transition: all 0.2s ease-in-out; 40 | transition: all 0.2s ease-in-out; 41 | } 42 | a:hover, 43 | a:focus { 44 | text-decoration: none; 45 | color: #10161c; 46 | } 47 | .light { 48 | font-weight: 400; 49 | } 50 | .navbar-custom { 51 | margin-bottom: 0; 52 | border-bottom: 1px solid rgba(255, 255, 255, 0.3); 53 | text-transform: uppercase; 54 | font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif; 55 | background-color: #4899ea; 56 | } 57 | .navbar-custom .navbar-brand { 58 | font-weight: 700; 59 | } 60 | .navbar-custom .navbar-brand:focus { 61 | outline: none; 62 | } 63 | .navbar-custom .navbar-brand .navbar-toggle { 64 | padding: 4px 6px; 65 | font-size: 16px; 66 | color: #ffffff; 67 | } 68 | .navbar-custom .navbar-brand .navbar-toggle:focus, 69 | .navbar-custom .navbar-brand .navbar-toggle:active { 70 | outline: none; 71 | } 72 | .navbar-custom a { 73 | color: #ffffff; 74 | } 75 | .navbar-custom .nav li.active { 76 | outline: nonte; 77 | background-color: rgba(255, 255, 255, 0.3); 78 | } 79 | .navbar-custom .nav li a { 80 | -webkit-transition: background 0.3s ease-in-out; 81 | -moz-transition: background 0.3s ease-in-out; 82 | transition: background 0.3s ease-in-out; 83 | } 84 | .navbar-custom .nav li a:hover, 85 | .navbar-custom .nav li a:focus, 86 | .navbar-custom .nav li a.active { 87 | outline: none; 88 | background-color: rgba(255, 255, 255, 0.3); 89 | } 90 | @media (min-width: 767px) { 91 | .navbar { 92 | padding: 20px 0; 93 | border-bottom: none; 94 | letter-spacing: 1px; 95 | background: transparent; 96 | -webkit-transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; 97 | -moz-transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; 98 | transition: background 0.5s ease-in-out, padding 0.5s ease-in-out; 99 | } 100 | .top-nav-collapse { 101 | padding: 0; 102 | background-color: #4899ea; 103 | opacity: .9; 104 | } 105 | .navbar-custom.top-nav-collapse { 106 | border-bottom: 1px solid rgba(255, 255, 255, 0.3); 107 | } 108 | } 109 | .intro { 110 | display: table; 111 | width: 100%; 112 | height: auto; 113 | padding: 100px 0; 114 | text-align: center; 115 | color: #ffffff; 116 | background: #4899ea no-repeat bottom center scroll; 117 | -webkit-background-size: cover; 118 | -moz-background-size: cover; 119 | background-size: cover; 120 | -o-background-size: cover; 121 | } 122 | .intro .intro-body { 123 | display: table-cell; 124 | vertical-align: middle; 125 | } 126 | .intro .intro-body .brand-heading { 127 | font-size: 40px; 128 | } 129 | .intro .intro-body .intro-text { 130 | font-size: 18px; 131 | } 132 | @media (min-width: 767px) { 133 | .intro { 134 | height: 100%; 135 | padding: 0; 136 | } 137 | .intro .intro-body .brand-heading { 138 | font-size: 100px; 139 | } 140 | .intro .intro-body .intro-text { 141 | font-size: 25px; 142 | } 143 | } 144 | .btn-circle { 145 | width: 70px; 146 | height: 70px; 147 | margin-top: 15px; 148 | padding: 7px 16px; 149 | border: 2px solid #ffffff; 150 | border-radius: 35px; 151 | font-size: 40px; 152 | color: #ffffff; 153 | background: transparent; 154 | -webkit-transition: background 0.3s ease-in-out; 155 | -moz-transition: background 0.3s ease-in-out; 156 | transition: background 0.3s ease-in-out; 157 | } 158 | .btn-circle:hover, 159 | .btn-circle:focus { 160 | outline: none; 161 | color: #ffffff; 162 | background: rgba(255, 255, 255, 0.1); 163 | } 164 | .btn-circle i.animated { 165 | -webkit-transition-property: -webkit-transform; 166 | -webkit-transition-duration: 1s; 167 | -moz-transition-property: -moz-transform; 168 | -moz-transition-duration: 1s; 169 | } 170 | .btn-circle:hover i.animated { 171 | -webkit-animation-name: pulse; 172 | -moz-animation-name: pulse; 173 | -webkit-animation-duration: 1.5s; 174 | -moz-animation-duration: 1.5s; 175 | -webkit-animation-iteration-count: infinite; 176 | -moz-animation-iteration-count: infinite; 177 | -webkit-animation-timing-function: linear; 178 | -moz-animation-timing-function: linear; 179 | } 180 | @-webkit-keyframes pulse { 181 | 0 { 182 | -webkit-transform: scale(1); 183 | transform: scale(1); 184 | } 185 | 50% { 186 | -webkit-transform: scale(1.2); 187 | transform: scale(1.2); 188 | } 189 | 100% { 190 | -webkit-transform: scale(1); 191 | transform: scale(1); 192 | } 193 | } 194 | @-moz-keyframes pulse { 195 | 0 { 196 | -moz-transform: scale(1); 197 | transform: scale(1); 198 | } 199 | 50% { 200 | -moz-transform: scale(1.2); 201 | transform: scale(1.2); 202 | } 203 | 100% { 204 | -moz-transform: scale(1); 205 | transform: scale(1); 206 | } 207 | } 208 | .form-section { 209 | width: 100%; 210 | padding: 250px 0; 211 | height: 100%; 212 | color: #222222; 213 | background: #ffffff no-repeat center center scroll; 214 | -webkit-background-size: cover; 215 | -moz-background-size: cover; 216 | background-size: cover; 217 | -o-background-size: cover; 218 | } 219 | @media (max-width: 768px) { 220 | .form-section { 221 | padding: 100px 0 50px; 222 | } 223 | } 224 | @media (min-width: 767px) { 225 | .content-section { 226 | padding-top: 50px; 227 | } 228 | .form-section { 229 | padding: 100px 0; 230 | } 231 | } 232 | .btn { 233 | text-transform: uppercase; 234 | font-family: "Montserrat", "Helvetica Neue", Helvetica, Arial, sans-serif; 235 | font-weight: 400; 236 | -webkit-transition: all 0.3s ease-in-out; 237 | -moz-transition: all 0.3s ease-in-out; 238 | transition: all 0.3s ease-in-out; 239 | } 240 | .btn-default { 241 | border: 1px solid #34495e; 242 | color: #222222; 243 | background-color: transparent; 244 | } 245 | .btn-default:hover, 246 | .btn-default:focus { 247 | border: 1px solid #e67e22; 248 | outline: none; 249 | color: #222222; 250 | background-color: #e67e22; 251 | } 252 | ul.banner-social-buttons { 253 | margin-top: 0; 254 | } 255 | @media (max-width: 1199px) { 256 | ul.banner-social-buttons { 257 | margin-top: 15px; 258 | } 259 | } 260 | @media (max-width: 767px) { 261 | ul.banner-social-buttons li { 262 | display: block; 263 | margin-bottom: 20px; 264 | padding: 0; 265 | } 266 | ul.banner-social-buttons li:last-child { 267 | margin-bottom: 0; 268 | } 269 | } 270 | footer { 271 | color: #eeeeee; 272 | padding: 50px 0; 273 | } 274 | footer a { 275 | color: #ffffff; 276 | } 277 | footer a.btn { 278 | margin: 30px 20px 10px 20px; 279 | } 280 | footer a:hover { 281 | color: #ffffff; 282 | } 283 | footer p { 284 | margin: 0; 285 | } 286 | ::-moz-selection { 287 | text-shadow: none; 288 | background: #3c3c3c; 289 | background: rgba(44, 62, 80, 0.2); 290 | } 291 | ::selection { 292 | text-shadow: none; 293 | background: #3c3c3c; 294 | background: rgba(44, 62, 80, 0.2); 295 | } 296 | img::selection { 297 | background: transparent; 298 | } 299 | img::-moz-selection { 300 | background: transparent; 301 | } 302 | body { 303 | webkit-tap-highlight-color: rgba(44, 62, 80, 0.2); 304 | } 305 | #convert { 306 | background: #ffffff no-repeat center center scroll; 307 | min-height: 100%; 308 | margin-top: 100px; 309 | } 310 | #convert form.slideshare-url-form { 311 | margin-top: 100px; 312 | } 313 | @media (max-width: 768px) { 314 | #convert form.slideshare-url-form { 315 | margin-top: 50px; 316 | } 317 | } 318 | #convert .progress { 319 | margin-top: 100px; 320 | margin-left: 20px; 321 | height: 50px; 322 | } 323 | #convert .progress .progress-bar { 324 | min-width: 30%; 325 | } 326 | @media (max-width: 768px) { 327 | #convert .progress .progress-bar { 328 | min-width: 40%; 329 | } 330 | } 331 | #convert .progress span { 332 | margin: 14px; 333 | font-size: 1.5em; 334 | display: block; 335 | } 336 | #convert .btn-default { 337 | padding-top: 15px; 338 | padding-bottom: 14px; 339 | } 340 | @media (max-width: 768px) { 341 | #convert .btn-default { 342 | margin-top: 40px; 343 | } 344 | } 345 | #convert .glyphicon { 346 | font-size: 38px; 347 | padding-top: 10px; 348 | margin-left: 12px; 349 | } 350 | @media (max-width: 768px) { 351 | #convert .glyphicon { 352 | margin-top: 40px; 353 | } 354 | } 355 | #convert .ladda-button[data-loading] { 356 | color: #aaa; 357 | } 358 | #convert #save-gif { 359 | margin-top: 40px; 360 | } 361 | #convert input[type=url] { 362 | padding: 22px; 363 | float: left; 364 | width: 65%; 365 | } 366 | #convert .thumbnail { 367 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); 368 | margin-top: 55px; 369 | } 370 | #convert .thumbnail img { 371 | width: 100%; 372 | } 373 | #convert .imgur-button-container { 374 | margin-top: 20%; 375 | width: 80%; 376 | } 377 | #convert a { 378 | color: #111; 379 | } 380 | #convert .settings { 381 | margin-top: 15px; 382 | display: none; 383 | } 384 | .main-image { 385 | margin: 70px auto 20px; 386 | } 387 | .input-hg { 388 | height: 53px; 389 | padding: 10px 16px; 390 | font-size: 15px; 391 | line-height: 1.318; 392 | border-radius: 6px; 393 | } 394 | .not-supported-message { 395 | display: none; 396 | } 397 | html.not-supported body > * { 398 | display: none; 399 | } 400 | html.not-supported body .not-supported-message { 401 | display: block; 402 | } 403 | div.alert { 404 | margin-top: 5%; 405 | } 406 | .slideshare-url-form .form-group .form-control { 407 | border: 1px solid #666666; 408 | } 409 | #faq { 410 | background-color: #ffffff; 411 | } 412 | #faq a { 413 | color: #1abc9c; 414 | } 415 | #faq .row { 416 | margin-top: 12%; 417 | margin-bottom: 12%; 418 | } 419 | #faq .row div p { 420 | margin-top: 50%; 421 | display: inline-block; 422 | vertical-align: middle; 423 | } 424 | @media (max-width: 767px) { 425 | #faq .row div p { 426 | margin-top: 50px; 427 | } 428 | } 429 | -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/favicon.ico -------------------------------------------------------------------------------- /fonts/flat-ui-icons-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/flat-ui-icons-regular.eot -------------------------------------------------------------------------------- /fonts/flat-ui-icons-regular.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | This is a custom SVG font generated by IcoMoon. 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 23 | 28 | 30 | 34 | 37 | 41 | 46 | 51 | 56 | 58 | 62 | 68 | 72 | 76 | 79 | 83 | 90 | 93 | 95 | 112 | 114 | 117 | 118 | 123 | 127 | 130 | 133 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /fonts/flat-ui-icons-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/flat-ui-icons-regular.ttf -------------------------------------------------------------------------------- /fonts/flat-ui-icons-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/flat-ui-icons-regular.woff -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /fonts/lato/lato-black.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-black.eot -------------------------------------------------------------------------------- /fonts/lato/lato-black.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-black.ttf -------------------------------------------------------------------------------- /fonts/lato/lato-black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-black.woff -------------------------------------------------------------------------------- /fonts/lato/lato-bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-bold.eot -------------------------------------------------------------------------------- /fonts/lato/lato-bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-bold.ttf -------------------------------------------------------------------------------- /fonts/lato/lato-bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-bold.woff -------------------------------------------------------------------------------- /fonts/lato/lato-bolditalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-bolditalic.eot -------------------------------------------------------------------------------- /fonts/lato/lato-bolditalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-bolditalic.ttf -------------------------------------------------------------------------------- /fonts/lato/lato-bolditalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-bolditalic.woff -------------------------------------------------------------------------------- /fonts/lato/lato-italic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-italic.eot -------------------------------------------------------------------------------- /fonts/lato/lato-italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-italic.ttf -------------------------------------------------------------------------------- /fonts/lato/lato-italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-italic.woff -------------------------------------------------------------------------------- /fonts/lato/lato-light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-light.eot -------------------------------------------------------------------------------- /fonts/lato/lato-light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-light.ttf -------------------------------------------------------------------------------- /fonts/lato/lato-light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-light.woff -------------------------------------------------------------------------------- /fonts/lato/lato-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-regular.eot -------------------------------------------------------------------------------- /fonts/lato/lato-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-regular.ttf -------------------------------------------------------------------------------- /fonts/lato/lato-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/fonts/lato/lato-regular.woff -------------------------------------------------------------------------------- /images/demo/browser-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-2x.png -------------------------------------------------------------------------------- /images/demo/browser-author.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-author.jpg -------------------------------------------------------------------------------- /images/demo/browser-pic-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-pic-1.jpg -------------------------------------------------------------------------------- /images/demo/browser-pic-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-pic-2.jpg -------------------------------------------------------------------------------- /images/demo/browser-pic-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-pic-3.jpg -------------------------------------------------------------------------------- /images/demo/browser-pic-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-pic-4.jpg -------------------------------------------------------------------------------- /images/demo/browser-pic-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-pic-5.jpg -------------------------------------------------------------------------------- /images/demo/browser-pic-6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser-pic-6.jpg -------------------------------------------------------------------------------- /images/demo/browser.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/browser.png -------------------------------------------------------------------------------- /images/demo/html-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/html-icon.png -------------------------------------------------------------------------------- /images/demo/logo-mask-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/logo-mask-2x.png -------------------------------------------------------------------------------- /images/demo/logo-mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/logo-mask.png -------------------------------------------------------------------------------- /images/demo/video.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/demo/video.jpg -------------------------------------------------------------------------------- /images/example-image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/example-image.jpg -------------------------------------------------------------------------------- /images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/favicon.ico -------------------------------------------------------------------------------- /images/footer/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/footer/logo.png -------------------------------------------------------------------------------- /images/gif-frame.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/gif-frame.png -------------------------------------------------------------------------------- /images/gif/and.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/gif/and.gif -------------------------------------------------------------------------------- /images/gif/hello.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/gif/hello.gif -------------------------------------------------------------------------------- /images/gif/slideshare-as-a.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/gif/slideshare-as-a.gif -------------------------------------------------------------------------------- /images/icons/png/Book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Book.png -------------------------------------------------------------------------------- /images/icons/png/Calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Calendar.png -------------------------------------------------------------------------------- /images/icons/png/Chat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Chat.png -------------------------------------------------------------------------------- /images/icons/png/Clipboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Clipboard.png -------------------------------------------------------------------------------- /images/icons/png/Compas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Compas.png -------------------------------------------------------------------------------- /images/icons/png/Gift-Box.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Gift-Box.png -------------------------------------------------------------------------------- /images/icons/png/Infinity-Loop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Infinity-Loop.png -------------------------------------------------------------------------------- /images/icons/png/Mail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Mail.png -------------------------------------------------------------------------------- /images/icons/png/Map.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Map.png -------------------------------------------------------------------------------- /images/icons/png/Pensils.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Pensils.png -------------------------------------------------------------------------------- /images/icons/png/Pocket.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Pocket.png -------------------------------------------------------------------------------- /images/icons/png/Retina-Ready.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Retina-Ready.png -------------------------------------------------------------------------------- /images/icons/png/Toilet-Paper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Toilet-Paper.png -------------------------------------------------------------------------------- /images/icons/png/Watches.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/icons/png/Watches.png -------------------------------------------------------------------------------- /images/icons/svg/book.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/chat.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/clipboard.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/clocks.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /images/icons/svg/compas.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/gift-box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/loop.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /images/icons/svg/mail.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/map.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/paper-bag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/pencils.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/retina.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/icons/svg/toilet-paper.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /images/login/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/login/icon.png -------------------------------------------------------------------------------- /images/login/imac-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/login/imac-2x.png -------------------------------------------------------------------------------- /images/login/imac.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/login/imac.png -------------------------------------------------------------------------------- /images/screenshots/gifdeck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/screenshots/gifdeck.png -------------------------------------------------------------------------------- /images/screenshots/gmail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/screenshots/gmail.png -------------------------------------------------------------------------------- /images/screenshots/twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/screenshots/twitter.png -------------------------------------------------------------------------------- /images/switch/mask-square.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/switch/mask-square.png -------------------------------------------------------------------------------- /images/switch/mask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/switch/mask.png -------------------------------------------------------------------------------- /images/tile/ribbon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/tile/ribbon-2x.png -------------------------------------------------------------------------------- /images/tile/ribbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/tile/ribbon.png -------------------------------------------------------------------------------- /images/todo/done-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/todo/done-2x.png -------------------------------------------------------------------------------- /images/todo/done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/todo/done.png -------------------------------------------------------------------------------- /images/todo/search-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/todo/search-2x.png -------------------------------------------------------------------------------- /images/todo/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/todo/search.png -------------------------------------------------------------------------------- /images/todo/todo-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/todo/todo-2x.png -------------------------------------------------------------------------------- /images/todo/todo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/todo/todo.png -------------------------------------------------------------------------------- /images/video/fullscreen-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/fullscreen-2x.png -------------------------------------------------------------------------------- /images/video/fullscreen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/fullscreen.png -------------------------------------------------------------------------------- /images/video/pause-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/pause-2x.png -------------------------------------------------------------------------------- /images/video/pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/pause.png -------------------------------------------------------------------------------- /images/video/play-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/play-2x.png -------------------------------------------------------------------------------- /images/video/play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/play.png -------------------------------------------------------------------------------- /images/video/poster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/poster.jpg -------------------------------------------------------------------------------- /images/video/volume-full-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/volume-full-2x.png -------------------------------------------------------------------------------- /images/video/volume-full.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/volume-full.png -------------------------------------------------------------------------------- /images/video/volume-off-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/volume-off-2x.png -------------------------------------------------------------------------------- /images/video/volume-off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jaipandya/gifdeck/de2fdca7758c7da04f37cba63c4a9f1d3ed0b10d/images/video/volume-off.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | GifDeck 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 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 52 | 53 | 54 | 55 | 87 | 88 |
89 |
90 |
91 |
92 |
93 |

GifDeck

94 | 95 | 96 | 97 | 98 |

Convert your SlideShares into beautifully animated GIFs.

99 | 100 | 101 | 102 |
103 |
104 |
105 |
106 |
107 | 108 |
109 |
110 |
111 |
112 |
113 |

Convert your SlideShare into a GIF

114 |
115 |
116 | 117 | 118 |
119 | Submit 120 | 121 |
122 | 124 | 125 |
126 |
127 |
128 |
129 |
130 |
131 | 132 |
133 | 134 |
135 |
136 |
137 | 138 |
139 | 140 |
141 |
142 |
143 | 144 |
145 | 150 |
151 |
152 |
153 |
154 |
155 |
156 | 159 |
160 |
161 |
162 |
163 |
164 | 165 |
166 |
167 |
168 |
169 |
170 | converted GIF 171 |
172 |
173 | Save 174 | 179 |
180 |
181 |
182 |
183 |
184 |
185 |

How can I use a SlideShare GIF?

186 |

Here are some suggestions.

187 |
188 |
189 | 190 | 191 | 192 |
193 |
194 |

195 | Use GIF in your emails to make them more interesting and increase CTR. Many email clients give GIF an auto play functionality. Gmail supports it as inline playable format. 196 |

197 |
198 |
199 |
200 |
201 |

202 | You can upload a GIF directly to Twitter and they will appear as playable media 203 | in your followers profile. Example 204 |

205 |
206 |
207 | 208 | 209 | 210 |
211 |
212 |
213 | 214 |
215 | 216 | 229 |
230 |
231 |
232 |
233 |

Sorry, your browser is not supported.

234 |
235 |
236 |
237 |
238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 262 | 263 | 264 | -------------------------------------------------------------------------------- /js/application.js: -------------------------------------------------------------------------------- 1 | if (!Application) { 2 | Application = {}; 3 | } 4 | 5 | Application.Main = (function() { 6 | function _Class() { 7 | this.proxy = new Application.Proxy({ 8 | url: 'https://image.slidesharecdn.com/proxy/proxy.html?xYu10uB', 9 | application: this 10 | }); 11 | this.reset(); 12 | } 13 | 14 | _Class.prototype.reset = function() { 15 | this.number_of_images_loaded = 0; 16 | } 17 | 18 | _Class.prototype.load_images = function(images, gifdeck, callback) { 19 | this.reset(); 20 | var image, _i, _len, _ref, _results; 21 | this.images = images; 22 | this.wrapper = document.createElement('div') 23 | this.slides = []; 24 | this.gifdeck = gifdeck; 25 | _ref = this.images; 26 | _results = []; 27 | for (_i = 0, _len = _ref.length; _i < _len; _i++) { 28 | image = _ref[_i]; 29 | this.load_image(image.getAttribute('data-path')); 30 | } 31 | this.load_images_callback = callback; 32 | }; 33 | 34 | _Class.prototype.load_image = function(path) { 35 | return this.proxy.send({ 36 | action: 'load', 37 | path: path 38 | }); 39 | }; 40 | 41 | _Class.prototype.from_proxy = function(message) { 42 | switch (message.action) { 43 | case 'loaded': 44 | return this.image_bits_loaded(message.path, message.bits); 45 | } 46 | }; 47 | 48 | _Class.prototype.image_bits_loaded = function(path, bits) { 49 | var image, index, _i, _len, _ref, _results; 50 | _ref = this.images; 51 | _results = []; 52 | for (index = _i = 0, _len = _ref.length; _i < _len; index = ++_i) { 53 | image = _ref[index]; 54 | if (image.getAttribute('data-path') === path) { 55 | image.onload = ((function(_this) { 56 | return function(img, i) { 57 | return function() { 58 | return _this.image_loaded(img, i); 59 | }; 60 | }; 61 | })(this))(image, index); 62 | image.src = bits; 63 | } 64 | } 65 | }; 66 | 67 | _Class.prototype.image_loaded = function(image, index) { 68 | var self = this; 69 | var canvas = document.createElement('canvas'); 70 | self.slides[index] = { 71 | image: image, 72 | canvas: canvas 73 | }; 74 | image.setAttribute('width',self.gifdeck.maxWidth); 75 | self.number_of_images_loaded = self.number_of_images_loaded + 1; 76 | console.log('image ' + index + ' loaded'); 77 | self.gifdeck.progress = Math.ceil(self.number_of_images_loaded * 50 / self.images.length) 78 | self.gifdeck.show_progress('fetching slides'); 79 | 80 | if (self.images.length === self.number_of_images_loaded) { 81 | // Resize all images, callback 82 | self.resize_canvas(self.slides, this.load_images_callback) 83 | } 84 | 85 | }; 86 | 87 | _Class.prototype.resize_canvas = function(image_canvas_map_array, callback) { 88 | self = this; 89 | var caman_callback = function(i){ 90 | return function() { 91 | this.resize({ 92 | width: self.gifdeck.maxWidth 93 | }); 94 | this.brightness(5).render(); 95 | if (i === image_canvas_map_array.length - 1) { 96 | callback(self.wrapper.childNodes); 97 | } 98 | } 99 | } 100 | for (var i = 0; i < image_canvas_map_array.length; i++) { 101 | this.wrapper.appendChild(image_canvas_map_array[i].canvas) 102 | Caman(image_canvas_map_array[i].canvas, image_canvas_map_array[i].image.src, caman_callback.call(this, i)) 103 | 104 | } 105 | 106 | }; 107 | 108 | return _Class; 109 | 110 | })(); 111 | -------------------------------------------------------------------------------- /js/gif.js: -------------------------------------------------------------------------------- 1 | (function(c){function a(b,d){if({}.hasOwnProperty.call(a.cache,b))return a.cache[b];var e=a.resolve(b);if(!e)throw new Error('Failed to resolve module '+b);var c={id:b,require:a,filename:b,exports:{},loaded:!1,parent:d,children:[]};d&&d.children.push(c);var f=b.slice(0,b.lastIndexOf('/')+1);return a.cache[b]=c.exports,e.call(c.exports,c,c.exports,f,b),c.loaded=!0,a.cache[b]=c.exports}a.modules={},a.cache={},a.resolve=function(b){return{}.hasOwnProperty.call(a.modules,b)?a.modules[b]:void 0},a.define=function(b,c){a.modules[b]=c};var b=function(a){return a='/',{title:'browser',version:'v0.10.26',browser:!0,env:{},argv:[],nextTick:c.setImmediate||function(a){setTimeout(a,0)},cwd:function(){return a},chdir:function(b){a=b}}}();a.define('/gif.coffee',function(d,m,l,k){function g(a,b){return{}.hasOwnProperty.call(a,b)}function j(d,b){for(var a=0,c=b.length;athis.frames.length;0<=this.frames.length?++a:--a)b.push(a);return b}.apply(this,arguments),a=0,e=b.length;aa;0<=a?++b:--b)c.push(b);return c}.apply(this,arguments),b=0,e=c.length;ba;this.freeWorkers.length<=a?++b:--b)c.push(b);return c}.apply(this,arguments).forEach(function(a){return function(c){var b;return console.log('spawning worker '+c),b=new Worker(a.options.workerScript),b.onmessage=function(a){return function(c){return a.activeWorkers.splice(a.activeWorkers.indexOf(b),1),a.freeWorkers.push(b),a.frameFinished(c.data)}}(a),a.freeWorkers.push(b)}}(this)),a},a.prototype.frameFinished=function(a){return console.log('frame '+a.index+' finished - '+this.activeWorkers.length+' active'),this.finishedFrames++,this.emit('progress',this.finishedFrames/this.frames.length),this.imageParts[a.index]=a,j(null,this.imageParts)?this.renderNextFrame():this.finishRendering()},a.prototype.finishRendering=function(){var e,a,k,m,b,d,h;b=0;for(var f=0,j=this.imageParts.length;f=this.frames.length?void 0:(c=this.frames[this.nextFrame++],b=this.freeWorkers.shift(),a=this.getTask(c),console.log('starting frame '+(a.index+1)+' of '+this.frames.length),this.activeWorkers.push(b),b.postMessage(a))},a.prototype.getContextData=function(a){return a.getImageData(0,0,this.options.width,this.options.height).data},a.prototype.getImageData=function(b){var a;return null!=this._canvas||(this._canvas=document.createElement('canvas'),this._canvas.width=this.options.width,this._canvas.height=this.options.height),a=this._canvas.getContext('2d'),a.setFill=this.options.background,a.fillRect(0,0,this.options.width,this.options.height),a.drawImage(b,0,0),this.getContextData(a)},a.prototype.getTask=function(a){var c,b;if(c=this.frames.indexOf(a),b={index:c,last:c===this.frames.length-1,delay:a.delay,transparent:a.transparent,width:this.options.width,height:this.options.height,quality:this.options.quality,repeat:this.options.repeat,canTransfer:h.name==='chrome'},null!=a.data)b.data=a.data;else if(null!=a.context)b.data=this.getContextData(a.context);else if(null!=a.image)b.data=this.getImageData(a.image);else throw new Error('Invalid frame');return b},a}(f),d.exports=e}),a.define('/browser.coffee',function(f,g,h,i){var a,d,e,c,b;c=navigator.userAgent.toLowerCase(),e=navigator.platform.toLowerCase(),b=c.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/)||[null,'unknown',0],d=b[1]==='ie'&&document.documentMode,a={name:b[1]==='version'?b[3]:b[1],version:d||parseFloat(b[1]==='opera'&&b[4]?b[4]:b[2]),platform:{name:c.match(/ip(?:ad|od|hone)/)?'ios':(c.match(/(?:webos|android)/)||e.match(/mac|win|linux/)||['other'])[0]}},a[a.name]=!0,a[a.name+parseInt(a.version,10)]=!0,a.platform[a.platform.name]=!0,f.exports=a}),a.define('events',function(f,e,g,h){b.EventEmitter||(b.EventEmitter=function(){});var a=e.EventEmitter=b.EventEmitter,c=typeof Array.isArray==='function'?Array.isArray:function(a){return Object.prototype.toString.call(a)==='[object Array]'},d=10;a.prototype.setMaxListeners=function(a){this._events||(this._events={}),this._events.maxListeners=a},a.prototype.emit=function(f){if(f==='error'&&(!(this._events&&this._events.error)||c(this._events.error)&&!this._events.error.length))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");if(!this._events)return!1;var a=this._events[f];if(!a)return!1;if(!(typeof a=='function'))if(c(a)){var b=Array.prototype.slice.call(arguments,1),e=a.slice();for(var d=0,g=e.length;d0&&this._events[a].length>e&&(this._events[a].warned=!0,console.error('(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.',this._events[a].length),console.trace())}this._events[a].push(b)}else this._events[a]=[this._events[a],b];return this},a.prototype.on=a.prototype.addListener,a.prototype.once=function(b,c){var a=this;return a.on(b,function d(){a.removeListener(b,d),c.apply(this,arguments)}),this},a.prototype.removeListener=function(a,d){if('function'!==typeof d)throw new Error('removeListener only takes instances of Function');if(!(this._events&&this._events[a]))return this;var b=this._events[a];if(c(b)){var e=b.indexOf(d);if(e<0)return this;b.splice(e,1),b.length==0&&delete this._events[a]}else this._events[a]===d&&delete this._events[a];return this},a.prototype.removeAllListeners=function(a){return a&&this._events&&this._events[a]&&(this._events[a]=null),this},a.prototype.listeners=function(a){return this._events||(this._events={}),this._events[a]||(this._events[a]=[]),c(this._events[a])||(this._events[a]=[this._events[a]]),this._events[a]}}),c.GIF=a('/gif.coffee')}.call(this,this)) 2 | //# sourceMappingURL=gif.js.map 3 | // gif.js 0.1.6 - https://github.com/jnordberg/gif.js 4 | -------------------------------------------------------------------------------- /js/gif.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"sources":["/gif.coffee","/browser.coffee","events"],"names":["h","c","f","b","e","a","d","ImageData","CanvasRenderingContext2D","WebGLRenderingContext","Error","console","Math","Worker","Uint8Array","k","m","Blob","document","navigator","parseFloat","parseInt","EventEmitter","Array","isArray","Object","prototype","toString","call","setMaxListeners","_events","maxListeners","emit","error","length","arguments","slice","g","apply","addListener","warned","undefined","trace","push","on","once","removeListener","indexOf","splice","removeAllListeners","listeners"],"mappings":"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","sourceRoot":"../src","sourcesContent":["{EventEmitter} = require 'events'\nbrowser = require './browser.coffee'\n\nclass GIF extends EventEmitter\n\n defaults =\n workerScript: 'gif.worker.js'\n workers: 2\n repeat: 0 # repeat forever, -1 = repeat once\n background: '#fff'\n quality: 10 # pixel sample interval, lower is better\n width: null # size derermined from first frame if possible\n height: null\n transparent: null\n\n frameDefaults =\n delay: 500 # ms\n copy: false\n\n constructor: (options) ->\n @running = false\n\n @options = {}\n @frames = []\n\n @freeWorkers = []\n @activeWorkers = []\n\n @setOptions options\n for key, value of defaults\n @options[key] ?= value\n\n setOption: (key, value) ->\n @options[key] = value\n if @_canvas? and key in ['width', 'height']\n @_canvas[key] = value\n\n setOptions: (options) ->\n @setOption key, value for own key, value of options\n\n addFrame: (image, options={}) ->\n frame = {}\n frame.transparent = @options.transparent\n for key of frameDefaults\n frame[key] = options[key] or frameDefaults[key]\n\n # use the images width and height for options unless already set\n @setOption 'width', image.width unless @options.width?\n @setOption 'height', image.height unless @options.height?\n\n if ImageData? and image instanceof ImageData\n frame.data = image.data\n else if (CanvasRenderingContext2D? and image instanceof CanvasRenderingContext2D) or (WebGLRenderingContext? and image instanceof WebGLRenderingContext)\n if options.copy\n frame.data = @getContextData image\n else\n frame.context = image\n else if image.childNodes?\n if options.copy\n frame.data = @getImageData image\n else\n frame.image = image\n else\n throw new Error 'Invalid image'\n\n @frames.push frame\n\n render: ->\n throw new Error 'Already running' if @running\n\n if not @options.width? or not @options.height?\n throw new Error 'Width and height must be set prior to rendering'\n\n @running = true\n @nextFrame = 0\n @finishedFrames = 0\n\n @imageParts = (null for i in [0...@frames.length])\n numWorkers = @spawnWorkers()\n @renderNextFrame() for i in [0...numWorkers]\n\n @emit 'start'\n @emit 'progress', 0\n\n abort: ->\n loop\n worker = @activeWorkers.shift()\n break unless worker?\n console.log \"killing active worker\"\n worker.terminate()\n @running = false\n @emit 'abort'\n\n # private\n\n spawnWorkers: ->\n numWorkers = Math.min(@options.workers, @frames.length)\n [@freeWorkers.length...numWorkers].forEach (i) =>\n console.log \"spawning worker #{ i }\"\n worker = new Worker @options.workerScript\n worker.onmessage = (event) =>\n @activeWorkers.splice @activeWorkers.indexOf(worker), 1\n @freeWorkers.push worker\n @frameFinished event.data\n @freeWorkers.push worker\n return numWorkers\n\n frameFinished: (frame) ->\n console.log \"frame #{ frame.index } finished - #{ @activeWorkers.length } active\"\n @finishedFrames++\n @emit 'progress', @finishedFrames / @frames.length\n @imageParts[frame.index] = frame\n if null in @imageParts\n @renderNextFrame()\n else\n @finishRendering()\n\n finishRendering: ->\n len = 0\n for frame in @imageParts\n len += (frame.data.length - 1) * frame.pageSize + frame.cursor\n len += frame.pageSize - frame.cursor\n console.log \"rendering finished - filesize #{ Math.round(len / 1000) }kb\"\n data = new Uint8Array len\n offset = 0\n for frame in @imageParts\n for page, i in frame.data\n data.set page, offset\n if i is frame.data.length - 1\n offset += frame.cursor\n else\n offset += frame.pageSize\n\n image = new Blob [data],\n type: 'image/gif'\n\n @emit 'finished', image, data\n\n renderNextFrame: ->\n throw new Error 'No free workers' if @freeWorkers.length is 0\n return if @nextFrame >= @frames.length # no new frame to render\n\n frame = @frames[@nextFrame++]\n worker = @freeWorkers.shift()\n task = @getTask frame\n\n console.log \"starting frame #{ task.index + 1 } of #{ @frames.length }\"\n @activeWorkers.push worker\n worker.postMessage task#, [task.data.buffer]\n\n getContextData: (ctx) ->\n return ctx.getImageData(0, 0, @options.width, @options.height).data\n\n getImageData: (image) ->\n if not @_canvas?\n @_canvas = document.createElement 'canvas'\n @_canvas.width = @options.width\n @_canvas.height = @options.height\n\n ctx = @_canvas.getContext '2d'\n ctx.setFill = @options.background\n ctx.fillRect 0, 0, @options.width, @options.height\n ctx.drawImage image, 0, 0\n\n return @getContextData ctx\n\n getTask: (frame) ->\n index = @frames.indexOf frame\n task =\n index: index\n last: index is (@frames.length - 1)\n delay: frame.delay\n transparent: frame.transparent\n width: @options.width\n height: @options.height\n quality: @options.quality\n repeat: @options.repeat\n canTransfer: (browser.name is 'chrome')\n\n if frame.data?\n task.data = frame.data\n else if frame.context?\n task.data = @getContextData frame.context\n else if frame.image?\n task.data = @getImageData frame.image\n else\n throw new Error 'Invalid frame'\n\n return task\n\nmodule.exports = GIF\n","### CoffeeScript version of the browser detection from MooTools ###\n\nua = navigator.userAgent.toLowerCase()\nplatform = navigator.platform.toLowerCase()\nUA = ua.match(/(opera|ie|firefox|chrome|version)[\\s\\/:]([\\w\\d\\.]+)?.*?(safari|version[\\s\\/:]([\\w\\d\\.]+)|$)/) or [null, 'unknown', 0]\nmode = UA[1] == 'ie' && document.documentMode\n\nbrowser =\n name: if UA[1] is 'version' then UA[3] else UA[1]\n version: mode or parseFloat(if UA[1] is 'opera' && UA[4] then UA[4] else UA[2])\n\n platform:\n name: if ua.match(/ip(?:ad|od|hone)/) then 'ios' else (ua.match(/(?:webos|android)/) or platform.match(/mac|win|linux/) or ['other'])[0]\n\nbrowser[browser.name] = true\nbrowser[browser.name + parseInt(browser.version, 10)] = true\nbrowser.platform[browser.platform.name] = true\n\nmodule.exports = browser\n","if (!process.EventEmitter) process.EventEmitter = function () {};\n\nvar EventEmitter = exports.EventEmitter = process.EventEmitter;\nvar isArray = typeof Array.isArray === 'function'\n ? Array.isArray\n : function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]'\n }\n;\n\n// By default EventEmitters will print a warning if more than\n// 10 listeners are added to it. This is a useful default which\n// helps finding memory leaks.\n//\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nvar defaultMaxListeners = 10;\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!this._events) this._events = {};\n this._events.maxListeners = n;\n};\n\n\nEventEmitter.prototype.emit = function(type) {\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events || !this._events.error ||\n (isArray(this._events.error) && !this._events.error.length))\n {\n if (arguments[1] instanceof Error) {\n throw arguments[1]; // Unhandled 'error' event\n } else {\n throw new Error(\"Uncaught, unspecified 'error' event.\");\n }\n return false;\n }\n }\n\n if (!this._events) return false;\n var handler = this._events[type];\n if (!handler) return false;\n\n if (typeof handler == 'function') {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n var args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n return true;\n\n } else if (isArray(handler)) {\n var args = Array.prototype.slice.call(arguments, 1);\n\n var listeners = handler.slice();\n for (var i = 0, l = listeners.length; i < l; i++) {\n listeners[i].apply(this, args);\n }\n return true;\n\n } else {\n return false;\n }\n};\n\n// EventEmitter is defined in src/node_events.cc\n// EventEmitter.prototype.emit() is also defined there.\nEventEmitter.prototype.addListener = function(type, listener) {\n if ('function' !== typeof listener) {\n throw new Error('addListener only takes instances of Function');\n }\n\n if (!this._events) this._events = {};\n\n // To avoid recursion in the case that type == \"newListeners\"! Before\n // adding it to the listeners, first emit \"newListeners\".\n this.emit('newListener', type, listener);\n\n if (!this._events[type]) {\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n } else if (isArray(this._events[type])) {\n\n // Check for listener leak\n if (!this._events[type].warned) {\n var m;\n if (this._events.maxListeners !== undefined) {\n m = this._events.maxListeners;\n } else {\n m = defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n console.trace();\n }\n }\n\n // If we've already got an array, just append.\n this._events[type].push(listener);\n } else {\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n var self = this;\n self.on(type, function g() {\n self.removeListener(type, g);\n listener.apply(this, arguments);\n });\n\n return this;\n};\n\nEventEmitter.prototype.removeListener = function(type, listener) {\n if ('function' !== typeof listener) {\n throw new Error('removeListener only takes instances of Function');\n }\n\n // does not use listeners(), so no side effect of creating _events[type]\n if (!this._events || !this._events[type]) return this;\n\n var list = this._events[type];\n\n if (isArray(list)) {\n var i = list.indexOf(listener);\n if (i < 0) return this;\n list.splice(i, 1);\n if (list.length == 0)\n delete this._events[type];\n } else if (this._events[type] === listener) {\n delete this._events[type];\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n // does not use listeners(), so no side effect of creating _events[type]\n if (type && this._events && this._events[type]) this._events[type] = null;\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n if (!this._events) this._events = {};\n if (!this._events[type]) this._events[type] = [];\n if (!isArray(this._events[type])) {\n this._events[type] = [this._events[type]];\n }\n return this._events[type];\n};\n"]} -------------------------------------------------------------------------------- /js/gif.worker.js: -------------------------------------------------------------------------------- 1 | (function(b){function a(b,d){if({}.hasOwnProperty.call(a.cache,b))return a.cache[b];var e=a.resolve(b);if(!e)throw new Error('Failed to resolve module '+b);var c={id:b,require:a,filename:b,exports:{},loaded:!1,parent:d,children:[]};d&&d.children.push(c);var f=b.slice(0,b.lastIndexOf('/')+1);return a.cache[b]=c.exports,e.call(c.exports,c,c.exports,f,b),c.loaded=!0,a.cache[b]=c.exports}a.modules={},a.cache={},a.resolve=function(b){return{}.hasOwnProperty.call(a.modules,b)?a.modules[b]:void 0},a.define=function(b,c){a.modules[b]=c},a.define('/gif.worker.coffee',function(d,e,f,g){var b,c;b=a('/GIFEncoder.js',d),c=function(a){var c,e,d,f;return c=new b(a.width,a.height),a.index===0?c.writeHeader():c.firstFrame=!1,c.setTransparent(a.transparent),c.setRepeat(a.repeat),c.setDelay(a.delay),c.setQuality(a.quality),c.addFrame(a.data),a.last&&c.finish(),d=c.stream(),a.data=d.pages,a.cursor=d.cursor,a.pageSize=d.constructor.pageSize,a.canTransfer?(f=function(c){for(var b=0,d=a.data.length;b=c.pageSize&&this.newPage(),this.pages[this.page][this.cursor++]=a},c.prototype.writeUTFBytes=function(b){for(var c=b.length,a=0;a=0&&(this.dispose=a)},b.prototype.setRepeat=function(a){this.repeat=a},b.prototype.setTransparent=function(a){this.transparent=a},b.prototype.addFrame=function(a){this.image=a,this.getImagePixels(),this.analyzePixels(),this.firstFrame&&(this.writeLSD(),this.writePalette(),this.repeat>=0&&this.writeNetscapeExt()),this.writeGraphicCtrlExt(),this.writeImageDesc(),this.firstFrame||this.writePalette(),this.writePixels(),this.firstFrame=!1},b.prototype.finish=function(){this.out.writeByte(59)},b.prototype.setQuality=function(a){a<1&&(a=1),this.sample=a},b.prototype.writeHeader=function(){this.out.writeUTFBytes('GIF89a')},b.prototype.analyzePixels=function(){var g=this.pixels.length,d=g/3;this.indexedPixels=new Uint8Array(d);var a=new f(this.pixels,this.sample);a.buildColormap(),this.colorTab=a.getColormap();var b=0;for(var c=0;c>16,l=(e&65280)>>8,m=e&255,c=0,d=16777216,j=this.colorTab.length;for(var a=0;a=0&&(a=dispose&7),a<<=2,this.out.writeByte(0|a|0|b),this.writeShort(this.delay),this.out.writeByte(this.transIndex),this.out.writeByte(0)},b.prototype.writeImageDesc=function(){this.out.writeByte(44),this.writeShort(0),this.writeShort(0),this.writeShort(this.width),this.writeShort(this.height),this.firstFrame?this.out.writeByte(0):this.out.writeByte(128|this.palSize)},b.prototype.writeLSD=function(){this.writeShort(this.width),this.writeShort(this.height),this.out.writeByte(240|this.palSize),this.out.writeByte(0),this.out.writeByte(0)},b.prototype.writeNetscapeExt=function(){this.out.writeByte(33),this.out.writeByte(255),this.out.writeByte(11),this.out.writeUTFBytes('NETSCAPE2.0'),this.out.writeByte(3),this.out.writeByte(1),this.writeShort(this.repeat),this.out.writeByte(0)},b.prototype.writePalette=function(){this.out.writeBytes(this.colorTab);var b=768-this.colorTab.length;for(var a=0;a>8&255)},b.prototype.writePixels=function(){var a=new g(this.width,this.height,this.indexedPixels,this.colorDepth);a.encode(this.out)},b.prototype.stream=function(){return this.out},e.exports=b}),a.define('/LZWEncoder.js',function(e,g,h,i){function f(y,D,C,B){function w(a,b){r[f++]=a,f>=254&&t(b)}function x(b){u(a),k=i+2,j=!0,l(i,b)}function u(b){for(var a=0;a=0){y=w-d,d===0&&(y=1);do if((d-=y)<0&&(d+=w),h[d]===g){e=n[d];continue a}while(h[d]>=0)}l(e,r),e=t,k<1<0&&(a.writeByte(f),a.writeBytes(r,0,f),f=0)}function p(a){return(1<0?g|=a<=8)w(g&255,c),g>>=8,e-=8;if((k>m||j)&&(j?(m=p(n_bits=q),j=!1):(++n_bits,n_bits==b?m=1<0)w(g&255,c),g>>=8,e-=8;t(c)}}var s=Math.max(2,B),r=new Uint8Array(256),h=new Int32Array(a),n=new Int32Array(a),g,e=0,f,k=0,m,j=!1,q,i,o;this.encode=z}var c=-1,b=12,a=5003,d=[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535];e.exports=f}),a.define('/TypedNeuQuant.js',function(A,F,E,D){function C(A,B){function I(){o=[],q=new Int32Array(256),t=new Int32Array(a),y=new Int32Array(a),z=new Int32Array(a>>3);var c,d;for(c=0;c>=b,o[c][1]>>=b,o[c][2]>>=b,o[c][3]=c}function K(b,a,c,e,f){o[a][0]-=b*(o[a][0]-c)/d,o[a][1]-=b*(o[a][1]-e)/d,o[a][2]-=b*(o[a][2]-f)/d}function L(j,e,n,l,k){var h=Math.abs(e-j),i=Math.min(e+j,a),g=e+1,f=e-1,m=1,b,d;while(gh)d=z[m++],gh&&(b=o[f--],b[0]-=d*(b[0]-n)/c,b[1]-=d*(b[1]-l)/c,b[2]-=d*(b[2]-k)/c)}function C(p,s,q){var h=2147483647,k=h,d=-1,m=d,c,j,e,n,l;for(c=0;c>i-b),n>g,y[c]-=l,t[c]+=l<>1,b=f+1;b>1,b=f+1;b<256;b++)q[b]=n}function E(j,i,k){var b,d,c,e=1e3,h=-1,f=q[i],g=f-1;while(f=0)f=e?f=a:(f++,c<0&&(c=-c),b=d[0]-j,b<0&&(b=-b),c+=b,c=0&&(d=o[g],c=i-d[1],c>=e?g=-1:(g--,c<0&&(c=-c),b=d[0]-j,b<0&&(b=-b),c+=b,c>h;for(a<=1&&(a=0),c=0;c=f&&(g-=f),c++,q===0&&(q=1),c%q===0)for(n-=n/D,o-=o/v,a=o>>h,a<=1&&(a=0),e=0;e>g,r=e<>3,h=6,t=1<");var b=e(a),c=document.createElement("span");c.className="ladda-spinner",a.appendChild(c);var d,f={start:function(){return a.setAttribute("disabled",""),a.setAttribute("data-loading",""),clearTimeout(d),b.spin(c),this.setProgress(0),this},startAfter:function(a){return clearTimeout(d),d=setTimeout(function(){f.start()},a),this},stop:function(){return a.removeAttribute("disabled"),a.removeAttribute("data-loading"),clearTimeout(d),d=setTimeout(function(){b.stop()},1e3),this},toggle:function(){return this.isLoading()?this.stop():this.start(),this},setProgress:function(b){b=Math.max(Math.min(b,1),0);var c=a.querySelector(".ladda-progress");0===b&&c&&c.parentNode?c.parentNode.removeChild(c):(c||(c=document.createElement("div"),c.className="ladda-progress",a.appendChild(c)),c.style.width=(b||0)*a.offsetWidth+"px")},enable:function(){return this.stop(),this},disable:function(){return this.stop(),a.setAttribute("disabled",""),this},isLoading:function(){return a.hasAttribute("data-loading")},getTarget:function(){return a}};return g.push(f),f}function c(a,c){c=c||{};var d=[];"string"==typeof a?d=f(document.querySelectorAll(a)):"object"==typeof a&&"string"==typeof a.nodeName&&(d=[a]);for(var e=0,g=d.length;g>e;e++)!function(){var a=d[e];if("function"==typeof a.addEventListener){var f=b(a),g=-1;a.addEventListener("click",function(){f.startAfter(1),"number"==typeof c.timeout&&(clearTimeout(g),g=setTimeout(f.stop,c.timeout)),"function"==typeof c.callback&&c.callback.apply(null,[f])},!1)}}()}function d(){for(var a=0,b=g.length;b>a;a++)g[a].stop()}function e(b){var c,d=b.offsetHeight;d>32&&(d*=.8),b.hasAttribute("data-spinner-size")&&(d=parseInt(b.getAttribute("data-spinner-size"),10)),b.hasAttribute("data-spinner-color")&&(c=b.getAttribute("data-spinner-color"));var e=12,f=.2*d,g=.6*f,h=7>f?2:3;return new a({color:c||"#fff",lines:e,radius:f,length:g,width:h,zIndex:"auto",top:"50%",left:"50%",className:""})}function f(a){for(var b=[],c=0;cb;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return l[e]||(m.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",m.cssRules.length),l[e]=1),e}function d(a,b){var c,d,e=a.style;for(b=b.charAt(0).toUpperCase()+b.slice(1),d=0;d',c)}m.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.width,left:d.radius,top:-d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.length+d.width,k=2*j,l=2*-(d.width+d.length)+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k 50) { 34 | $(".navbar-fixed-top").addClass("top-nav-collapse"); 35 | } else { 36 | $(".navbar-fixed-top").removeClass("top-nav-collapse"); 37 | } 38 | }); 39 | 40 | 41 | $('a.page-scroll').bind('click', function(event) { 42 | var $anchor = $(this); 43 | $('html, body').stop().animate({ 44 | scrollTop: $($anchor.attr('href')).offset().top 45 | }, 1500, 'easeInOutExpo'); 46 | event.preventDefault(); 47 | }); 48 | 49 | // $('.intro-body .main-image').hover(function(e) { 50 | // this.setAttribute('src', 'images/gif/and.gif'); 51 | // }, function(e) { 52 | // this.setAttribute('src', 'images/gif/hello.gif'); 53 | // $(this).addClass('emboss-glow'); 54 | // }) 55 | 56 | var gifDeckHandler = function(e){ 57 | url = $('#convert input.input-hg').val(); 58 | url = url || 'http://www.slideshare.net/jai/hello-38726339' 59 | e.preventDefault(); 60 | window.ladda = Ladda.create($('#j-convert-to-gif')[0]); 61 | ladda.start(); 62 | gifdeck = new GifDeck(options); 63 | gifdeck.fetchData(url); 64 | ga('send', 'event', 'gif', 'started'); 65 | return false; 66 | } 67 | 68 | // Bhai bhai - bhai bhai 69 | $('#j-convert-to-gif').click(gifDeckHandler); 70 | $('#convert input[type=text]').keypress(function(e){ 71 | if (e.keyCode == 13) { 72 | gifDeckHandler(e); 73 | } 74 | }); 75 | 76 | Ladda.bind('.ladda-button') 77 | }); 78 | 79 | // Closes the Responsive Menu on Menu Item Click 80 | $('.navbar-collapse ul li a').click(function() { 81 | $('.navbar-toggle:visible').click(); 82 | }); 83 | 84 | 85 | $(function($) { 86 | window.app = new Application.Main(); 87 | 88 | var GifDeck = function(options) { 89 | this.slideshare_api_url = 'http://www.slideshare.net/api/oembed/2?callback=?'; 90 | this.config(options) 91 | this.reset(); 92 | } 93 | 94 | GifDeck.prototype.show_progress = function(state) { 95 | var progress = this.progress; 96 | $('.progress').removeClass('hide'); 97 | state = state || 'fetching slides'; 98 | if (state === 'converting to gif') { 99 | progress = this.progress + 50; 100 | } 101 | 102 | $('.progress .progress-bar').css('width', progress + "%"); 103 | 104 | var text = state + ' ' + progress + '%'; 105 | $('.progress .progress-bar span').text(text); 106 | } 107 | 108 | GifDeck.prototype.config = function(config) { 109 | this.maxWidth = +(config && config.size) || 700; 110 | this.slideCount = +(config && config.slideCount) || 500; 111 | this.delay = +(config && config.delay) || 1500; 112 | 113 | } 114 | 115 | GifDeck.prototype.show_error = function(message) { 116 | this.error = message || "Soemthing went horribly wrong, please try again later" 117 | $('#convert .alert').text(this.error).removeClass('hide'); 118 | } 119 | 120 | GifDeck.prototype.hide_error = function(message) { 121 | $('#convert .alert').text(this.error).addClass('hide'); 122 | } 123 | 124 | GifDeck.prototype.hide_progress = function() { 125 | $('.progress').addClass('hide'); 126 | } 127 | 128 | GifDeck.prototype.reset = function() { 129 | this.progress = 0; 130 | this.slides = []; 131 | this.abort_render(); 132 | $('.thumbnail-container').addClass('hide'); 133 | this.hide_progress(); 134 | $('#save-gif').addClass('hide'); 135 | this.hide_error(); 136 | } 137 | 138 | GifDeck.prototype.fetchData = function(url) { 139 | this.reset(); 140 | // given the URL decide a fetching stategy 141 | // If it is a SlideShare URL, it'll fetch images using oEmbed API 142 | var url = url || 'http://www.slideshare.net/Listonic/think-outside-of-the-box-10-non-standard-uses-of-regular-foodstuffs-thatd-never-cross-your-mind'; 143 | var self = this, 144 | _slides = []; 145 | var jqxhr = $.getJSON(this.slideshare_api_url, { 146 | url: url, 147 | format: 'json' 148 | }).done(function(data) { 149 | var totalSlides = data.total_slides; 150 | if (totalSlides && self.slideCount < totalSlides && self.slideCount > 0 ) { 151 | totalSlides = self.slideCount; 152 | } 153 | 154 | 155 | //check header for error status first 156 | if (totalSlides) { 157 | for (var i = 0; i < totalSlides; i++) { 158 | _slides[i] = document.createElement('img'); 159 | _slides[i].setAttribute('data-path', 160 | 'http:' + data.slide_image_baseurl + (i + 1) + data.slide_image_baseurl_suffix); 161 | } 162 | self.show_progress(); 163 | app.load_images(_slides, self, function(slides) { 164 | self.convertToGif(slides) 165 | }); 166 | } 167 | self.slides = _slides; 168 | }) 169 | .fail(function(error) { 170 | self.show_error("Presentation couldn't be fetched"); 171 | }) 172 | .always(function() { 173 | ladda.stop(); 174 | }); 175 | } 176 | 177 | GifDeck.prototype.convertToGif = function(slides) { 178 | var self = this; 179 | this.gif = new GIF({ 180 | workers: 2, 181 | quality: 20, 182 | workerScript: 'js/gif.worker.js' 183 | }); 184 | 185 | try { 186 | for (var count = 0, length = slides.length; count < length; count++) { 187 | // add an image element 188 | this.gif.addFrame(slides[count], { 189 | delay: self.delay 190 | }); 191 | } 192 | } catch (e) { 193 | this.show_error("Error in GIF generation. Frame couldn't be added.") 194 | } 195 | 196 | this.gif.on('finished', function(blob) { 197 | var ojbect_url; 198 | self.progress = 100; 199 | self.show_progress('converted'); 200 | 201 | self.hide_progress(); 202 | object_url = URL.createObjectURL(blob); 203 | $('.thumbnail-container').removeClass('hide'); 204 | $('.converted-gif').attr('src', object_url); 205 | self.showGifDownloadButton(object_url) 206 | ga('send', 'event', 'gif', 'created'); 207 | }); 208 | 209 | this.gif.on('progress', function(p) { 210 | self.progress = (Math.round(p * 50)); 211 | self.show_progress('converting to gif'); 212 | }) 213 | try { 214 | this.gif.render(); 215 | } catch (e) { 216 | ga('send', 'event', 'gif', 'error'); 217 | self.show_error(); 218 | } 219 | }; 220 | 221 | GifDeck.prototype.abort_render = function() { 222 | if (this.gif) { 223 | this.gif.abort(); 224 | } 225 | } 226 | 227 | GifDeck.prototype.showGifDownloadButton = function (object_url) { 228 | // get link anchor tag first 229 | // a 230 | a = $('#save-gif').removeClass('hide'); 231 | a.attr('href', object_url); 232 | a.attr('download','slideshare-as-a.gif'); 233 | } 234 | 235 | window.GifDeck = GifDeck; 236 | 237 | }(jQuery)) -------------------------------------------------------------------------------- /less/mixins.less: -------------------------------------------------------------------------------- 1 | // Mixins -------------------------------------------------------------------------------- /less/style.less: -------------------------------------------------------------------------------- 1 | @import "variables.less"; 2 | @import "mixins.less"; 3 | 4 | body { 5 | width: 100%; 6 | height: 100%; 7 | font-family: "Whitney","Helvetica Neue",Helvetica,Arial,sans-serif; 8 | color: @dark; 9 | background-color: @sky; 10 | } 11 | 12 | html { 13 | width: 100%; 14 | height: 100%; 15 | } 16 | 17 | h1, 18 | h2, 19 | h3, 20 | h4, 21 | h5, 22 | h6 { 23 | margin: 0 0 35px; 24 | text-transform: uppercase; 25 | font-family: "Montserrat","Helvetica Neue",Helvetica,Arial,sans-serif; 26 | font-weight: 700; 27 | letter-spacing: 1px; 28 | } 29 | 30 | p { 31 | margin: 0 0 25px; 32 | font-size: 18px; 33 | line-height: 1.5; 34 | } 35 | 36 | @media(min-width:767px) { 37 | p { 38 | margin: 0 0 35px; 39 | font-size: 20px; 40 | line-height: 1.6; 41 | } 42 | } 43 | 44 | a { 45 | color: @light; 46 | -webkit-transition: all .2s ease-in-out; 47 | -moz-transition: all .2s ease-in-out; 48 | transition: all .2s ease-in-out; 49 | &:hover, 50 | &:focus { 51 | text-decoration: none; 52 | color: darken(@primary,20%); 53 | } 54 | } 55 | 56 | .light { 57 | font-weight: 400; 58 | } 59 | 60 | .navbar-custom { 61 | margin-bottom: 0; 62 | border-bottom: 1px solid fade(@light, 30%); 63 | text-transform: uppercase; 64 | font-family: "Montserrat","Helvetica Neue",Helvetica,Arial,sans-serif; 65 | background-color: @sky; 66 | .navbar-brand { 67 | font-weight: 700; 68 | &:focus { 69 | outline: none; 70 | } 71 | .navbar-toggle { 72 | padding: 4px 6px; 73 | font-size: 16px; 74 | color: @light; 75 | &:focus, 76 | &:active { 77 | outline: none; 78 | } 79 | } 80 | } 81 | a { 82 | color: @light; 83 | } 84 | .nav { 85 | li { 86 | &.active { 87 | outline: nonte; 88 | background-color: fade(@light, 30%); 89 | } 90 | a { 91 | -webkit-transition: background .3s ease-in-out; 92 | -moz-transition: background .3s ease-in-out; 93 | transition: background .3s ease-in-out; 94 | &:hover, 95 | &:focus, 96 | &.active { 97 | outline: none; 98 | background-color: fade(@light, 30%); 99 | } 100 | } 101 | } 102 | } 103 | } 104 | 105 | @media(min-width:767px) { 106 | .navbar { 107 | padding: 20px 0; 108 | border-bottom: none; 109 | letter-spacing: 1px; 110 | background: transparent; 111 | -webkit-transition: background .5s ease-in-out,padding .5s ease-in-out; 112 | -moz-transition: background .5s ease-in-out,padding .5s ease-in-out; 113 | transition: background .5s ease-in-out,padding .5s ease-in-out; 114 | } 115 | 116 | .top-nav-collapse { 117 | padding: 0; 118 | background-color: @sky; 119 | opacity: .9; 120 | } 121 | 122 | .navbar-custom.top-nav-collapse { 123 | border-bottom: 1px solid fade(@light, 30%); 124 | } 125 | } 126 | 127 | .intro { 128 | display: table; 129 | width: 100%; 130 | height: auto; 131 | padding: 100px 0; 132 | text-align: center; 133 | color: @light; 134 | background: @sky no-repeat bottom center scroll; 135 | -webkit-background-size: cover; 136 | -moz-background-size: cover; 137 | background-size: cover; 138 | -o-background-size: cover; 139 | .intro-body { 140 | display: table-cell; 141 | vertical-align: middle; 142 | .brand-heading { 143 | font-size: 40px; 144 | } 145 | 146 | .intro-text { 147 | font-size: 18px; 148 | } 149 | } 150 | } 151 | 152 | @media(min-width:767px) { 153 | .intro { 154 | height: 100%; 155 | padding: 0; 156 | .intro-body { 157 | .brand-heading { 158 | font-size: 100px; 159 | } 160 | 161 | .intro-text { 162 | font-size: 25px; 163 | } 164 | } 165 | } 166 | } 167 | 168 | .btn-circle { 169 | width: 70px; 170 | height: 70px; 171 | margin-top: 15px; 172 | padding: 7px 16px; 173 | border: 2px solid @light; 174 | border-radius: 35px; 175 | font-size: 40px; 176 | color: @light; 177 | background: transparent; 178 | -webkit-transition: background .3s ease-in-out; 179 | -moz-transition: background .3s ease-in-out; 180 | transition: background .3s ease-in-out; 181 | &:hover, 182 | &:focus { 183 | outline: none; 184 | color: @light; 185 | background: fade(@light, 10%); 186 | } 187 | i.animated { 188 | -webkit-transition-property: -webkit-transform; 189 | -webkit-transition-duration: 1s; 190 | -moz-transition-property: -moz-transform; 191 | -moz-transition-duration: 1s; 192 | } 193 | &:hover { 194 | i.animated { 195 | -webkit-animation-name: pulse; 196 | -moz-animation-name: pulse; 197 | -webkit-animation-duration: 1.5s; 198 | -moz-animation-duration: 1.5s; 199 | -webkit-animation-iteration-count: infinite; 200 | -moz-animation-iteration-count: infinite; 201 | -webkit-animation-timing-function: linear; 202 | -moz-animation-timing-function: linear; 203 | } 204 | } 205 | } 206 | 207 | @-webkit-keyframes pulse { 208 | 0 { 209 | -webkit-transform: scale(1); 210 | transform: scale(1); 211 | } 212 | 213 | 50% { 214 | -webkit-transform: scale(1.2); 215 | transform: scale(1.2); 216 | } 217 | 218 | 100% { 219 | -webkit-transform: scale(1); 220 | transform: scale(1); 221 | } 222 | } 223 | 224 | @-moz-keyframes pulse { 225 | 0 { 226 | -moz-transform: scale(1); 227 | transform: scale(1); 228 | } 229 | 230 | 50% { 231 | -moz-transform: scale(1.2); 232 | transform: scale(1.2); 233 | } 234 | 235 | 100% { 236 | -moz-transform: scale(1); 237 | transform: scale(1); 238 | } 239 | } 240 | 241 | .form-section { 242 | width: 100%; 243 | padding: 250px 0; 244 | height: 100%; 245 | color: @lightblack; 246 | background: @light no-repeat center center scroll; 247 | -webkit-background-size: cover; 248 | -moz-background-size: cover; 249 | background-size: cover; 250 | -o-background-size: cover; 251 | 252 | @media (max-width: 768px) { 253 | padding: 100px 0 50px; 254 | } 255 | } 256 | 257 | @media(min-width:767px) { 258 | .content-section { 259 | padding-top: 50px; 260 | } 261 | 262 | .form-section { 263 | padding: 100px 0; 264 | } 265 | } 266 | 267 | .btn { 268 | text-transform: uppercase; 269 | font-family: "Montserrat","Helvetica Neue",Helvetica,Arial,sans-serif; 270 | font-weight: 400; 271 | -webkit-transition: all .3s ease-in-out; 272 | -moz-transition: all .3s ease-in-out; 273 | transition: all .3s ease-in-out; 274 | } 275 | 276 | .btn-default { 277 | border: 1px solid @primary; 278 | color: @lightblack; 279 | background-color: transparent; 280 | &:hover, 281 | &:focus { 282 | border: 1px solid @carrot; 283 | outline: none; 284 | color: @black; 285 | background-color: @carrot; 286 | } 287 | } 288 | 289 | ul.banner-social-buttons { 290 | margin-top: 0; 291 | } 292 | 293 | @media(max-width:1199px) { 294 | ul.banner-social-buttons { 295 | margin-top: 15px; 296 | } 297 | } 298 | 299 | @media(max-width:767px) { 300 | 301 | ul.banner-social-buttons { 302 | li { 303 | display: block; 304 | margin-bottom: 20px; 305 | padding: 0; 306 | &:last-child { 307 | margin-bottom: 0; 308 | } 309 | } 310 | } 311 | } 312 | 313 | footer { 314 | color: @lightwhite; 315 | a { 316 | color: @light; 317 | } 318 | a.btn{ 319 | margin: 30px 20px 10px 20px; 320 | } 321 | a:hover { 322 | color: @light; 323 | } 324 | padding: 50px 0; 325 | p { 326 | margin: 0; 327 | } 328 | } 329 | 330 | ::-moz-selection { 331 | text-shadow: none; 332 | background: #3c3c3c; 333 | background: fade(@dark, 20%); 334 | } 335 | 336 | ::selection { 337 | text-shadow: none; 338 | background: #3c3c3c; 339 | background: fade(@dark, 20%); 340 | } 341 | 342 | img::selection { 343 | background: transparent; 344 | } 345 | 346 | img::-moz-selection { 347 | background: transparent; 348 | } 349 | 350 | body { 351 | webkit-tap-highlight-color: fade(@dark, 20%); 352 | } 353 | 354 | #convert { 355 | background: @light no-repeat center center scroll; 356 | form.slideshare-url-form { 357 | @media (max-width: 768px) { 358 | margin-top: 50px; 359 | } 360 | margin-top: 100px; 361 | } 362 | .progress { 363 | .progress-bar { 364 | min-width: 30%; 365 | @media (max-width: 768px) { 366 | min-width: 40%; 367 | } 368 | } 369 | span { 370 | margin: 14px; 371 | font-size: 1.5em; 372 | display: block; 373 | } 374 | margin-top: 100px; 375 | margin-left: 20px; 376 | height: 50px; 377 | } 378 | .btn-default { 379 | padding-top: 15px; 380 | padding-bottom: 14px; 381 | @media (max-width: 768px) { 382 | margin-top: 40px; 383 | } 384 | } 385 | .glyphicon { 386 | font-size: 38px; 387 | padding-top: 10px; 388 | margin-left: 12px; 389 | @media (max-width: 768px) { 390 | margin-top: 40px; 391 | } 392 | } 393 | .ladda-button[data-loading] { 394 | color: #aaa; 395 | } 396 | #save-gif { 397 | margin-top: 40px; 398 | } 399 | min-height: 100%; 400 | input[type=url] { 401 | padding: 22px; 402 | float: left; 403 | width: 65%; 404 | } 405 | margin-top: 100px; 406 | .thumbnail { 407 | img { 408 | width: 100%; 409 | } 410 | box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); 411 | margin-top:55px; 412 | } 413 | .imgur-button-container { 414 | margin-top:20%; 415 | width: 80%; 416 | } 417 | a { 418 | color: #111; 419 | } 420 | 421 | .settings { 422 | margin-top: 15px; 423 | display: none; 424 | } 425 | } 426 | 427 | .main-image { 428 | margin: 70px auto 20px; 429 | } 430 | 431 | .input-hg { 432 | height: 53px; 433 | padding: 10px 16px; 434 | font-size: 15px; 435 | line-height: 1.318; 436 | border-radius: 6px; 437 | } 438 | 439 | .not-supported-message { 440 | display: none; 441 | } 442 | 443 | html.not-supported { 444 | body > * { 445 | display: none; 446 | } 447 | body .not-supported-message { 448 | display: block; 449 | 450 | } 451 | } 452 | 453 | div.alert { 454 | margin-top: 5%; 455 | } 456 | 457 | .slideshare-url-form .form-group .form-control { 458 | border: 1px solid #666 459 | } 460 | 461 | #faq { 462 | background-color: @light; 463 | a { 464 | color: @turquoise; 465 | } 466 | .row { 467 | margin-top: 12%; 468 | margin-bottom: 12%; 469 | div p{ 470 | margin-top: 50%; 471 | display: inline-block; 472 | vertical-align: middle; 473 | @media(max-width:767px) { 474 | margin-top: 50px; 475 | } 476 | } 477 | } 478 | } -------------------------------------------------------------------------------- /less/variables.less: -------------------------------------------------------------------------------- 1 | // Variables 2 | 3 | @primary: #34495E; 4 | @dark: #2C3E50; 5 | @light: #FFF; 6 | 7 | @turquoise: #1ABC9C; 8 | @greensea: #16A085; 9 | 10 | @pumpkin: #D35400; 11 | @carrot: #E67E22; 12 | 13 | @lightgreen: #86D794; 14 | @darkgreen: #569962; 15 | 16 | @sky: #4899EA; 17 | @darksky: #3c8ddf; 18 | 19 | @lightwhite: #eee; 20 | @lightblack: #222; 21 | @black: #222; 22 | 23 | -------------------------------------------------------------------------------- /s3/proxy/proxy.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | S3 proxy 6 | 7 | 8 | 9 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /s3/proxy/proxy.js: -------------------------------------------------------------------------------- 1 | var Proxy; 2 | var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; 3 | Proxy = { 4 | Proxy: (function() { 5 | function _Class(args) { 6 | this.send = __bind(this.send, this); 7 | this.message_received = __bind(this.message_received, this); 8 | this.end_point = args.end_point; 9 | this.expected_domain = args.from; 10 | this.worker = new args.worker_class(this); 11 | window.addEventListener('message', this.message_received, false); 12 | this.send({ 13 | action: 'init' 14 | }); 15 | } 16 | _Class.prototype.message_received = function(event) { 17 | // if (event.origin !== this.expected_domain) { 18 | // return; 19 | // } 20 | return this.worker.execute(JSON.parse(event.data)); 21 | }; 22 | _Class.prototype.send = function(message) { 23 | return this.end_point.postMessage(JSON.stringify(message), '*' /*this.expected_domain */); 24 | }; 25 | return _Class; 26 | })(), 27 | ImageLoader: (function() { 28 | function _Class(proxy) { 29 | this.loaded = __bind(this.loaded, this); 30 | this.proxy = proxy; 31 | } 32 | _Class.prototype.execute = function(message) { 33 | switch (message.action) { 34 | case 'load': 35 | return this.load_image(message.path); 36 | } 37 | }; 38 | _Class.prototype.load_image = function(path) { 39 | var image; 40 | image = document.createElement('img'); 41 | image.setAttribute('data-path', path); 42 | image.onload = image.onerror = image.onabort = this.loaded; 43 | image.src = path; 44 | return document.body.appendChild(image); 45 | }; 46 | _Class.prototype.loaded = function(e) { 47 | var bits, canvas, image, path; 48 | image = e.target; 49 | canvas = document.createElement('canvas'); 50 | canvas.width = image.width; 51 | canvas.height = image.height; 52 | canvas.getContext('2d').drawImage(image, 0, 0); 53 | bits = canvas.toDataURL(); 54 | path = image.getAttribute('data-path'); 55 | return this.proxy.send({ 56 | action: 'loaded', 57 | path: path, 58 | bits: bits 59 | }); 60 | }; 61 | return _Class; 62 | })() 63 | }; --------------------------------------------------------------------------------