hg_diff_binary_and_normal.diff
556 lines
| 14.8 KiB
| text/x-diff
|
DiffLexer
r2995 | diff --git a/img/baseline-10px.png b/img/baseline-10px.png | |||
new file mode 100644 | ||||
index 0000000000000000000000000000000000000000..16095dcbf5c9ea41caeb1e3e41d647d425222ed1 | ||||
GIT binary patch | ||||
literal 152 | ||||
zc%17D@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0lw^r(L`iUdT1k0gQ7VIDN`6wR | ||||
zf@f}GdTLN=VoGJ<$y6JlA}dc9$B>F!Nx%O8w`Ue+77%bXFxq5j_~-xsZV_1~1zCBH | ||||
y)y@U((_~Lrb!=|_@`K?vV_&A58+!u-Gs6x+MGjBnI|qTLFnGH9xvX<aXaWHBd@WW0 | ||||
diff --git a/img/baseline-20px.png b/img/baseline-20px.png | ||||
deleted file mode 100644 | ||||
r3821 | index f76dd238ade08917e6712764a16a22005a50573d..0000000000000000000000000000000000000000 | |||
GIT binary patch | ||||
literal 0 | ||||
Hc$@<O00001 | ||||
r2995 | diff --git a/index.html b/index.html | |||
--- a/index.html | ||||
+++ b/index.html | ||||
@@ -2,7 +2,7 @@ | ||||
<html lang="en"> | ||||
<head> | ||||
<meta charset="utf-8"> | ||||
- <title>Baseline</title> | ||||
+ <title>Twitter Baseline</title> | ||||
<!-- // Less.js at the ready! --> | ||||
<link rel="stylesheet/less" type="text/css" media="all" href="less/baseline.less" /> | ||||
@@ -11,6 +11,7 @@ | ||||
<!-- // jQuery! --> | ||||
<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script> | ||||
<script type="text/javascript" src="http://tablesorter.com/jquery.tablesorter.min.js"></script> | ||||
+ <script type="text/javascript" src="js/jquery/hashgrid.js"></script> | ||||
<script type="text/javascript"> | ||||
$(document).ready(function(){ | ||||
// Active state in top nav | ||||
@@ -36,7 +37,7 @@ | ||||
<!-- | ||||
<style> | ||||
body { | ||||
- background: url(img/baseline-20px.png) repeat 0 0, url(img/grid-940px.png) repeat-y top center; | ||||
+ background: url(img/baseline-10px.png) repeat 0 0, url(img/grid-940px.png) repeat-y top center; | ||||
background-color: #fff; | ||||
} | ||||
</style> | ||||
diff --git a/js/global.js b/js/global.js | ||||
deleted file mode 100644 | ||||
--- a/js/global.js | ||||
+++ /dev/null | ||||
@@ -1,75 +0,0 @@ | ||||
-$(document).ready(function(){ | ||||
- // Get Heights | ||||
- windowHeight = $(window).height(); | ||||
- documentHeight = $(document).height(); | ||||
- sidebarHeight = windowHeight - 40; | ||||
- containerHeight = windowHeight - 40; | ||||
- | ||||
- // Get Widths | ||||
- windowWidth = $(window).width(); | ||||
- containerWidth = windowWidth - 200; | ||||
- | ||||
- if (windowHeight < containerHeight) { | ||||
- | ||||
- // Set Dimensions for default state (before resize) | ||||
- $('div#sidebar').css({ | ||||
- height: sidebarHeight | ||||
- }); | ||||
- $('div#container').css({ | ||||
- width: containerWidth, | ||||
- height: containerHeight | ||||
- }); | ||||
- | ||||
- } else { | ||||
- | ||||
- // During resize, set widths | ||||
- $(window).resize(function() { | ||||
- console.log('Window Height: ' + $(window).height() + ', Sidebar Height:' + ($(window).height() - 40)); | ||||
- | ||||
- // Get Heights | ||||
- windowHeight = $(window).height(); | ||||
- sidebarHeight = windowHeight - 40; | ||||
- containerHeight = windowHeight - 40; | ||||
- | ||||
- // Get Widths | ||||
- windowWidth = $(window).width(); | ||||
- containerWidth = windowWidth - 200; | ||||
- | ||||
- // Set Dimensions for default state (before resize) | ||||
- $('div#sidebar').css({ | ||||
- height: sidebarHeight | ||||
- }); | ||||
- $('div#container').css({ | ||||
- width: containerWidth, | ||||
- height: containerHeight | ||||
- }); | ||||
- }); | ||||
- // console.log('omgz window is less than container so... fuck.'); | ||||
- $('div#sidebar').css({ | ||||
- height: documentHeight - 40 | ||||
- }); | ||||
- | ||||
- } | ||||
- | ||||
- | ||||
- | ||||
-/* | ||||
- // Toggle Calendars | ||||
- $('div#sidebar ul li a').click(function() { | ||||
- if ($(this).is('#toggleMonthView')) { | ||||
- console.log('toggle month'); | ||||
- $(this).addClass('active'); | ||||
- $('#toggleListView').removeClass('active'); | ||||
- $('table#monthView').show(); | ||||
- $('table#listView').hide(); | ||||
- } else { | ||||
- console.log('toggle list'); | ||||
- $(this).addClass('active'); | ||||
- $('#toggleMonthView').removeClass('active'); | ||||
- $('table#listView').show(); | ||||
- $('table#monthView').hide(); | ||||
- } | ||||
- return false; | ||||
- }); | ||||
-*/ | ||||
-}); | ||||
diff --git a/js/jquery/hashgrid.js b/js/jquery/hashgrid.js | ||||
new file mode 100755 | ||||
--- /dev/null | ||||
+++ b/js/jquery/hashgrid.js | ||||
@@ -0,0 +1,340 @@ | ||||
+/** | ||||
+ * hashgrid (jQuery version) | ||||
+ * http://github.com/dotjay/hashgrid | ||||
+ * Version 5, 3 Nov 2010 | ||||
+ * Written by Jon Gibbins, dotjay.co.uk, accessibility.co.uk | ||||
+ * Contibutors: | ||||
+ * Sean Coates, seancoates.com | ||||
+ * Phil Dokas, jetless.org | ||||
+ * | ||||
+ * // Using a basic #grid setup | ||||
+ * var grid = new hashgrid(); | ||||
+ * | ||||
+ * // Using #grid with a custom id (e.g. #mygrid) | ||||
+ * var grid = new hashgrid("mygrid"); | ||||
+ * | ||||
+ * // Using #grid with additional options | ||||
+ * var grid = new hashgrid({ | ||||
+ * id: 'mygrid', // id for the grid container | ||||
+ * modifierKey: 'alt', // optional 'ctrl', 'alt' or 'shift' | ||||
+ * showGridKey: 's', // key to show the grid | ||||
+ * holdGridKey: 'enter', // key to hold the grid in place | ||||
+ * foregroundKey: 'f', // key to toggle foreground/background | ||||
+ * jumpGridsKey: 'd', // key to cycle through the grid classes | ||||
+ * numberOfGrids: 2, // number of grid classes used | ||||
+ * classPrefix: 'class', // prefix for the grid classes | ||||
+ * cookiePrefix: 'mygrid' // prefix for the cookie name | ||||
+ * }); | ||||
+ */ | ||||
+if (typeof jQuery == "undefined") { | ||||
+ alert("Hashgrid: jQuery not loaded. Make sure it's linked to your pages."); | ||||
+} | ||||
+ | ||||
+ | ||||
+/** | ||||
+ * hashgrid overlay | ||||
+ */ | ||||
+var hashgrid = function(set) { | ||||
+ | ||||
+ var options = { | ||||
+ id: 'grid', // id for the grid container | ||||
+ modifierKey: null, // optional 'ctrl', 'alt' or 'shift' | ||||
+ showGridKey: 'g', // key to show the grid | ||||
+ holdGridKey: 'h', // key to hold the grid in place | ||||
+ foregroundKey: 'f', // key to toggle foreground/background | ||||
+ jumpGridsKey: 'j', // key to cycle through the grid classes | ||||
+ numberOfGrids: 1, // number of grid classes used | ||||
+ classPrefix: 'grid-', // prefix for the grid classes | ||||
+ cookiePrefix: 'hashgrid'// prefix for the cookie name | ||||
+ }; | ||||
+ var overlayOn = false, | ||||
+ sticky = false, | ||||
+ overlayZState = 'B', | ||||
+ overlayZBackground = -1, | ||||
+ overlayZForeground = 9999, | ||||
+ classNumber = 1; | ||||
+ | ||||
+ // Apply options | ||||
+ if (typeof set == 'object') { | ||||
+ var k; | ||||
+ for (k in set) options[k] = set[k]; | ||||
+ } | ||||
+ else if (typeof set == 'string') { | ||||
+ options.id = set; | ||||
+ } | ||||
+ | ||||
+ // Remove any conflicting overlay | ||||
+ if ($('#' + options.id).length > 0) { | ||||
+ $('#' + options.id).remove(); | ||||
+ } | ||||
+ | ||||
+ // Create overlay, hidden before adding to DOM | ||||
+ var overlayEl = $('<div></div>'); | ||||
+ overlayEl | ||||
+ .attr('id', options.id) | ||||
+ .css({ | ||||
+ display: 'none', | ||||
+ 'pointer-events': 'none' | ||||
+ }); | ||||
+ $("body").prepend(overlayEl); | ||||
+ var overlay = $('#' + options.id); | ||||
+ | ||||
+ // Unless a custom z-index is set, ensure the overlay will be behind everything | ||||
+ if (overlay.css('z-index') == 'auto') overlay.css('z-index', overlayZBackground); | ||||
+ | ||||
+ // Override the default overlay height with the actual page height | ||||
+ var pageHeight = parseFloat($(document).height()); | ||||
+ overlay.height(pageHeight); | ||||
+ | ||||
+ // Add the first grid line so that we can measure it | ||||
+ overlay.append('<div id="' + options.id + '-horiz" class="horiz first-line">'); | ||||
+ | ||||
+ // Position off-screen and display to calculate height | ||||
+ var top = overlay.css("top"); | ||||
+ overlay.css({ | ||||
+ top: "-999px", | ||||
+ display: "block" | ||||
+ }); | ||||
+ | ||||
+ // Calculate the number of grid lines needed | ||||
+ var line = $('#' + options.id + '-horiz'), | ||||
+ lineHeight = line.outerHeight(); | ||||
+ | ||||
+ // Hide and reset top | ||||
+ overlay.css({ | ||||
+ display: "none", | ||||
+ top: top | ||||
+ }); | ||||
+ | ||||
+ // Break on zero line height | ||||
+ if (lineHeight <= 0) return true; | ||||
+ | ||||
+ // Add the remaining grid lines | ||||
+ var i, numGridLines = Math.floor(pageHeight / lineHeight); | ||||
+ for (i = numGridLines - 1; i >= 1; i--) { | ||||
+ overlay.append('<div class="horiz"></div>'); | ||||
+ } | ||||
+ | ||||
+ // vertical grid | ||||
+ overlay.append($('<div class="vert-container"></div>')); | ||||
+ var overlayVert = overlay.children('.vert-container'); | ||||
+ var gridWidth = overlay.width(); | ||||
+ overlayVert.css({width: gridWidth, position: 'absolute', top: 0}); | ||||
+ overlayVert.append('<div class="vert first-line"> </div>'); | ||||
+ | ||||
+ // 30 is an arbitrarily large number... | ||||
+ // can't calculate the margin width properly | ||||
+ for (i = 0; i < 30; i++) { | ||||
+ overlayVert.append('<div class="vert"> </div>'); | ||||
+ } | ||||
+ | ||||
+ overlayVert.children() | ||||
+ .height(pageHeight) | ||||
+ .css({display: 'inline-block'}); | ||||
+ | ||||
+ // Check for saved state | ||||
+ var overlayCookie = readCookie(options.cookiePrefix + options.id); | ||||
+ if (typeof overlayCookie == 'string') { | ||||
+ var state = overlayCookie.split(','); | ||||
+ state[2] = Number(state[2]); | ||||
+ if ((typeof state[2] == 'number') && !isNaN(state[2])) { | ||||
+ classNumber = state[2].toFixed(0); | ||||
+ overlay.addClass(options.classPrefix + classNumber); | ||||
+ } | ||||
+ if (state[1] == 'F') { | ||||
+ overlayZState = 'F'; | ||||
+ overlay.css('z-index', overlayZForeground); | ||||
+ } | ||||
+ if (state[0] == '1') { | ||||
+ overlayOn = true; | ||||
+ sticky = true; | ||||
+ showOverlay(); | ||||
+ } | ||||
+ } | ||||
+ else { | ||||
+ overlay.addClass(options.classPrefix + classNumber); | ||||
+ } | ||||
+ | ||||
+ // Keyboard controls | ||||
+ $(document).bind('keydown', keydownHandler); | ||||
+ $(document).bind('keyup', keyupHandler); | ||||
+ | ||||
+ /** | ||||
+ * Helpers | ||||
+ */ | ||||
+ | ||||
+ function getModifier(e) { | ||||
+ if (options.modifierKey == null) return true; // Bypass by default | ||||
+ var m = true; | ||||
+ switch(options.modifierKey) { | ||||
+ case 'ctrl': | ||||
+ m = (e.ctrlKey ? e.ctrlKey : false); | ||||
+ break; | ||||
+ | ||||
+ case 'alt': | ||||
+ m = (e.altKey ? e.altKey : false); | ||||
+ break; | ||||
+ | ||||
+ case 'shift': | ||||
+ m = (e.shiftKey ? e.shiftKey : false); | ||||
+ break; | ||||
+ } | ||||
+ return m; | ||||
+ } | ||||
+ | ||||
+ function getKey(e) { | ||||
+ var k = false, c = (e.keyCode ? e.keyCode : e.which); | ||||
+ // Handle keywords | ||||
+ if (c == 13) k = 'enter'; | ||||
+ // Handle letters | ||||
+ else k = String.fromCharCode(c).toLowerCase(); | ||||
+ return k; | ||||
+ } | ||||
+ | ||||
+ function saveState() { | ||||
+ createCookie(options.cookiePrefix + options.id, (sticky ? '1' : '0') + ',' + overlayZState + ',' + classNumber, 1); | ||||
+ } | ||||
+ | ||||
+ function showOverlay() { | ||||
+ overlay.show(); | ||||
+ overlayVert.css({width: overlay.width()}); | ||||
+ // hide any vertical blocks that aren't at the top of the viewport | ||||
+ overlayVert.children('.vert').each(function () { | ||||
+ $(this).css('display','inline-block'); | ||||
+ if ($(this).offset().top > 0) { | ||||
+ $(this).hide(); | ||||
+ } | ||||
+ }); | ||||
+ } | ||||
+ | ||||
+ /** | ||||
+ * Event handlers | ||||
+ */ | ||||
+ | ||||
+ function keydownHandler(e) { | ||||
+ var source = e.target.tagName.toLowerCase(); | ||||
+ if ((source == 'input') || (source == 'textarea') || (source == 'select')) return true; | ||||
+ var m = getModifier(e); | ||||
+ if (!m) return true; | ||||
+ var k = getKey(e); | ||||
+ if (!k) return true; | ||||
+ switch(k) { | ||||
+ case options.showGridKey: | ||||
+ if (!overlayOn) { | ||||
+ showOverlay(); | ||||
+ overlayOn = true; | ||||
+ } | ||||
+ else if (sticky) { | ||||
+ overlay.hide(); | ||||
+ overlayOn = false; | ||||
+ sticky = false; | ||||
+ saveState(); | ||||
+ } | ||||
+ break; | ||||
+ case options.holdGridKey: | ||||
+ if (overlayOn && !sticky) { | ||||
+ // Turn sticky overlay on | ||||
+ sticky = true; | ||||
+ saveState(); | ||||
+ } | ||||
+ break; | ||||
+ case options.foregroundKey: | ||||
+ if (overlayOn) { | ||||
+ // Toggle sticky overlay z-index | ||||
+ if (overlay.css('z-index') == overlayZForeground) { | ||||
+ overlay.css('z-index', overlayZBackground); | ||||
+ overlayZState = 'B'; | ||||
+ } | ||||
+ else { | ||||
+ overlay.css('z-index', overlayZForeground); | ||||
+ overlayZState = 'F'; | ||||
+ } | ||||
+ saveState(); | ||||
+ } | ||||
+ break; | ||||
+ case options.jumpGridsKey: | ||||
+ if (overlayOn && (options.numberOfGrids > 1)) { | ||||
+ // Cycle through the available grids | ||||
+ overlay.removeClass(options.classPrefix + classNumber); | ||||
+ classNumber++; | ||||
+ if (classNumber > options.numberOfGrids) classNumber = 1; | ||||
+ overlay.addClass(options.classPrefix + classNumber); | ||||
+ showOverlay(); | ||||
+ if (/webkit/.test( navigator.userAgent.toLowerCase() )) { | ||||
+ forceRepaint(); | ||||
+ } | ||||
+ saveState(); | ||||
+ } | ||||
+ break; | ||||
+ } | ||||
+ } | ||||
+ | ||||
+ function keyupHandler(e) { | ||||
+ var m = getModifier(e); | ||||
+ if (!m) return true; | ||||
+ var k = getKey(e); | ||||
+ if (!k) return true; | ||||
+ if ((k == options.showGridKey) && !sticky) { | ||||
+ overlay.hide(); | ||||
+ overlayOn = false; | ||||
+ } | ||||
+ } | ||||
+ | ||||
+ /** | ||||
+ * Cookie functions | ||||
+ * | ||||
+ * By Peter-Paul Koch: | ||||
+ * http://www.quirksmode.org/js/cookies.html | ||||
+ */ | ||||
+ function createCookie(name,value,days) { | ||||
+ if (days) { | ||||
+ var date = new Date(); | ||||
+ date.setTime(date.getTime()+(days*24*60*60*1000)); | ||||
+ var expires = "; expires="+date.toGMTString(); | ||||
+ } | ||||
+ else var expires = ""; | ||||
+ document.cookie = name+"="+value+expires+"; path=/"; | ||||
+ } | ||||
+ | ||||
+ function readCookie(name) { | ||||
+ var nameEQ = name + "="; | ||||
+ var ca = document.cookie.split(';'); | ||||
+ for(var i=0;i < ca.length;i++) { | ||||
+ var c = ca[i]; | ||||
+ while (c.charAt(0)==' ') c = c.substring(1,c.length); | ||||
+ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length); | ||||
+ } | ||||
+ return null; | ||||
+ } | ||||
+ | ||||
+ function eraseCookie(name) { | ||||
+ createCookie(name,"",-1); | ||||
+ } | ||||
+ | ||||
+ /** | ||||
+ * Forces a repaint (because WebKit has issues) | ||||
+ * http://www.sitepoint.com/forums/showthread.php?p=4538763 | ||||
+ * http://www.phpied.com/the-new-game-show-will-it-reflow/ | ||||
+ */ | ||||
+ function forceRepaint() { | ||||
+ var ss = document.styleSheets[0]; | ||||
+ try { | ||||
+ ss.addRule('.xxxxxx', 'position: relative'); | ||||
+ ss.removeRule(ss.rules.length - 1); | ||||
+ } catch(e){} | ||||
+ } | ||||
+ | ||||
+} | ||||
+ | ||||
+ | ||||
+/** | ||||
+ * You can call hashgrid from your own code, but it's loaded here as | ||||
+ * an example for your convenience. | ||||
+ */ | ||||
+$(document).ready(function() { | ||||
+ | ||||
+ var grid = new hashgrid({ | ||||
+ numberOfGrids: 2 | ||||
+ }); | ||||
+ | ||||
+}); | ||||
diff --git a/less/docs.less b/less/docs.less | ||||
--- a/less/docs.less | ||||
+++ b/less/docs.less | ||||
@@ -1,3 +1,10 @@ | ||||
+body { | ||||
+ #gradient > .vertical-three-colors(#eee, #fff, 0.15, #fff); | ||||
+ background-attachment: fixed; | ||||
+ background-position: 0 40px; | ||||
+ position: relative; | ||||
+} | ||||
+ | ||||
// Give us some love | ||||
header, | ||||
section, | ||||
@@ -77,3 +84,30 @@ | ||||
section { | ||||
margin-bottom: 40px; | ||||
} | ||||
+ | ||||
+// Hashgrid grid | ||||
+/** | ||||
+ * Grid | ||||
+ */ | ||||
+#grid { | ||||
+ width: 980px; | ||||
+ position: absolute; | ||||
+ top: 0; | ||||
+ left: 50%; | ||||
+ margin-left: -490px; | ||||
+} | ||||
+#grid div.vert { | ||||
+ width: 39px; | ||||
+ border: solid darkturquoise; | ||||
+ border-width: 0 1px; | ||||
+ margin-right: 19px; | ||||
+} | ||||
+#grid div.vert.first-line { | ||||
+ margin-left: 19px; | ||||
+} | ||||
+#grid div.horiz { | ||||
+ height: 19px; | ||||
+ border-bottom: 1px dotted rgba(255,0,0,.25); | ||||
+ margin: 0; | ||||
+ padding: 0; | ||||
+} | ||||
diff --git a/less/scaffolding.less b/less/scaffolding.less | ||||
--- a/less/scaffolding.less | ||||
+++ b/less/scaffolding.less | ||||
@@ -7,7 +7,7 @@ | ||||
-------------------------------------------------- */ | ||||
div.row { | ||||
- .clearfix; | ||||
+ .clearfix(); | ||||
div.span1 { .columns(1); } | ||||
div.span2 { .columns(2); } | ||||
div.span3 { .columns(3); } | ||||
@@ -34,8 +34,6 @@ | ||||
background-color: #fff; | ||||
} | ||||
body { | ||||
- #gradient > .vertical-three-colors(#eee, #fff, 0.25, #fff); | ||||
- background-attachment: fixed; | ||||
margin: 0; | ||||
.sans-serif(normal,14px,20px); | ||||
color: @gray; | ||||
diff --git a/readme.markdown b/readme.markdown | ||||
--- a/readme.markdown | ||||
+++ b/readme.markdown | ||||
@@ -1,13 +1,4 @@ | ||||
TODOS | ||||
-* Write "Using Twitter BP" section | ||||
-** Two ways to use: LESS.js or compiled | ||||
-** Not meant to be 100% bulletproof, but is 90% bulletproof (stats?) | ||||
-** Advanced framework for fast prototyping, internal app development, bootstraping new websites | ||||
-** Can be easily modified to provide more legacy support | ||||
- | ||||
-* Add grid examples back in | ||||
* Cross browser checks? Show this anywhere? | ||||
-* Add layouts section back in | ||||
- | ||||
-* Point JS libraries to public library links instead of within the repo | ||||
\ No newline at end of file | ||||
+* Add layouts section back in | ||||
\ No newline at end of file | ||||