Update vendors.

This commit is contained in:
jdalton
2015-04-15 08:44:02 -07:00
parent f05a5a3abb
commit 53326bef33
72 changed files with 273 additions and 196 deletions

0
vendor/firebug-lite/license.txt vendored Executable file → Normal file
View File

0
vendor/firebug-lite/skin/xp/blank.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

0
vendor/firebug-lite/skin/xp/buttonBg.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 167 B

After

Width:  |  Height:  |  Size: 167 B

0
vendor/firebug-lite/skin/xp/buttonBgHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 171 B

After

Width:  |  Height:  |  Size: 171 B

0
vendor/firebug-lite/skin/xp/debugger.css vendored Executable file → Normal file
View File

0
vendor/firebug-lite/skin/xp/detach.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 655 B

After

Width:  |  Height:  |  Size: 655 B

0
vendor/firebug-lite/skin/xp/detachHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 586 B

After

Width:  |  Height:  |  Size: 586 B

0
vendor/firebug-lite/skin/xp/disable.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 340 B

After

Width:  |  Height:  |  Size: 340 B

0
vendor/firebug-lite/skin/xp/disable.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 543 B

0
vendor/firebug-lite/skin/xp/disableHover.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 344 B

After

Width:  |  Height:  |  Size: 344 B

0
vendor/firebug-lite/skin/xp/disableHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 512 B

After

Width:  |  Height:  |  Size: 512 B

0
vendor/firebug-lite/skin/xp/down.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 637 B

After

Width:  |  Height:  |  Size: 637 B

0
vendor/firebug-lite/skin/xp/downActive.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 543 B

After

Width:  |  Height:  |  Size: 543 B

0
vendor/firebug-lite/skin/xp/downHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 526 B

After

Width:  |  Height:  |  Size: 526 B

0
vendor/firebug-lite/skin/xp/errorIcon-sm.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 447 B

0
vendor/firebug-lite/skin/xp/errorIcon.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 365 B

0
vendor/firebug-lite/skin/xp/errorIcon.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 457 B

After

Width:  |  Height:  |  Size: 457 B

28
vendor/firebug-lite/skin/xp/firebug-1.3a2.css vendored Executable file → Normal file
View File

@@ -70,7 +70,7 @@ html, body {
body { body {
font-family: Lucida Grande, Tahoma, sans-serif; font-family: Lucida Grande, Tahoma, sans-serif;
font-size: 11px; font-size: 11px;
background: #fff; background: #fff;
} }
.clear { .clear {
@@ -103,7 +103,7 @@ body {
border: 1px solid #ccc; border: 1px solid #ccc;
margin: 0 5px 0 0; margin: 0 5px 0 0;
background: #fff url(search.png) no-repeat 4px 2px; background: #fff url(search.png) no-repeat 4px 2px;
padding-left: 20px; padding-left: 20px;
font-size: 11px; font-size: 11px;
} }
@@ -124,7 +124,7 @@ body {
height: 14px; height: 14px;
background: url(errorIcon.png) no-repeat; background: url(errorIcon.png) no-repeat;
color: #f00; color: #f00;
font-weight: bold; font-weight: bold;
} }
#fbMiniErrors { #fbMiniErrors {
@@ -139,7 +139,7 @@ body {
margin: 3px 4px 0; margin: 3px 4px 0;
height: 20px; height: 20px;
width: 20px; width: 20px;
float: right; float: right;
background: url(sprite.png) 0 -135px; background: url(sprite.png) 0 -135px;
cursor: pointer; cursor: pointer;
} }
@@ -192,10 +192,10 @@ body {
} }
/************************************************************************************************ /************************************************************************************************
Sub-Layout Sub-Layout
*************************************************************************************************/ *************************************************************************************************/
/* fbToolbar /* fbToolbar
*************************************************************************************************/ *************************************************************************************************/
#fbToolbarIcon { #fbToolbarIcon {
float: left; float: left;
@@ -237,7 +237,7 @@ body {
position: relative; position: relative;
top: 5px; top: 5px;
line-height: 19px; line-height: 19px;
cursor: default; cursor: default;
} }
.fbToolbarSeparator{ .fbToolbarSeparator{
@@ -262,7 +262,7 @@ body {
.fbStatusBar span a:hover { .fbStatusBar span a:hover {
color: blue; color: blue;
cursor: pointer; cursor: pointer;
} }
@@ -307,7 +307,7 @@ body {
padding-left: 10px; padding-left: 10px;
} }
/* body /* body
*************************************************************************************************/ *************************************************************************************************/
.fbPanel { .fbPanel {
display: none; display: none;
@@ -340,7 +340,7 @@ body {
visibility: hidden !important; visibility: hidden !important;
} }
/* fbBottom /* fbBottom
*************************************************************************************************/ *************************************************************************************************/
#fbCommand { #fbCommand {
@@ -391,7 +391,7 @@ div.fbFitHeight {
Layout Controls Layout Controls
*************************************************************************************************/ *************************************************************************************************/
/* fbToolbar buttons /* fbToolbar buttons
*************************************************************************************************/ *************************************************************************************************/
#fbWindowButtons a { #fbWindowButtons a {
font-size: 1px; font-size: 1px;
@@ -420,7 +420,7 @@ div.fbFitHeight {
background: url(sprite.png) -48px -119px; background: url(sprite.png) -48px -119px;
} }
/* fbPanelBarBox tabs /* fbPanelBarBox tabs
*************************************************************************************************/ *************************************************************************************************/
.fbTab { .fbTab {
text-decoration: none; text-decoration: none;
@@ -475,7 +475,7 @@ a.fbTab:hover .fbTabR {
background: url(sprite.png) -8px -96px !important; background: url(sprite.png) -8px -96px !important;
} }
/* splitters /* splitters
*************************************************************************************************/ *************************************************************************************************/
#fbHSplitter { #fbHSplitter {
position: absolute; position: absolute;
@@ -571,7 +571,7 @@ div.objectBox-element {
color: #fff !important; color: #fff !important;
} }
/* Webkit CSS Hack - bug in "highlight" named color */ /* Webkit CSS Hack - bug in "highlight" named color */
@media screen and (-webkit-min-device-pixel-ratio:0) { @media screen and (-webkit-min-device-pixel-ratio:0) {
.selectedElement{ .selectedElement{
background: #316AC5; background: #316AC5;

0
vendor/firebug-lite/skin/xp/firebug.IE6.css vendored Executable file → Normal file
View File

68
vendor/firebug-lite/skin/xp/firebug.css vendored Executable file → Normal file
View File

@@ -136,10 +136,10 @@ h1.groupHeader {
position: relative; position: relative;
top: -7px; top: -7px;
left: -5px; left: -5px;
outline: none; outline: none;
resize: none; resize: none;
/* /*
_border: 1px solid #999 !important; _border: 1px solid #999 !important;
_padding: 1px !important; _padding: 1px !important;
@@ -311,17 +311,17 @@ h1.groupHeader {
outline: none; outline: none;
background-color: transparent background-color: transparent
} }
.useA11y .a11yCSSView .focusRow:focus .cssSelector, .useA11y .a11yCSSView .focusRow:focus .cssSelector,
.useA11y .a11yCSSView .focusRow:focus .cssPropName, .useA11y .a11yCSSView .focusRow:focus .cssPropName,
.useA11y .a11yCSSView .focusRow:focus .cssPropValue, .useA11y .a11yCSSView .focusRow:focus .cssPropValue,
.useA11y .a11yCSSView .computedStyleRow:focus, .useA11y .a11yCSSView .computedStyleRow:focus,
.useA11y .a11yCSSView .groupHeader:focus { .useA11y .a11yCSSView .groupHeader:focus {
outline: 2px solid #FF9933; outline: 2px solid #FF9933;
outline-offset: -2px; outline-offset: -2px;
background-color: #FFFFD6; background-color: #FFFFD6;
} }
.useA11y .a11yCSSView .groupHeader:focus { .useA11y .a11yCSSView .groupHeader:focus {
outline-offset: -2px; outline-offset: -2px;
} }
@@ -731,7 +731,7 @@ h1.groupHeader {
/* Time Info tip */ /* Time Info tip */
.timeInfoTip { .timeInfoTip {
width: 150px; width: 150px;
height: 40px height: 40px
} }
@@ -944,7 +944,7 @@ h1.groupHeader {
/*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */ /*overflow-x: auto; HTML is damaged in case of big (2-3MB) responses */
} }
/* replaced by .netInfoTextSelected for IE6 support /* replaced by .netInfoTextSelected for IE6 support
.netInfoText[selected="true"] { .netInfoText[selected="true"] {
display: block; display: block;
} }
@@ -963,7 +963,7 @@ h1.groupHeader {
} }
.netInfoPostText .netInfoParamName { .netInfoPostText .netInfoParamName {
width: 1px; /* Google Chrome need this otherwise the first column of width: 1px; /* Google Chrome need this otherwise the first column of
the post variables table will be larger than expected */ the post variables table will be larger than expected */
} }
@@ -1148,7 +1148,7 @@ h1.groupHeader {
} }
* html .opened .spyHead .spyTitle, * html .opened .spyHead .spyTitle,
* html .opened .logGroupLabel, * html .opened .logGroupLabel,
* html .opened .memberLabelCell .memberLabel { * html .opened .memberLabelCell .memberLabel {
background-image: url(tree_close.gif); background-image: url(tree_close.gif);
background-repeat: no-repeat; background-repeat: no-repeat;
@@ -1677,7 +1677,7 @@ h1.groupHeader {
/* /*
.logRow-errorMessage > .hasTwisty > .errorTitle, .logRow-errorMessage > .hasTwisty > .errorTitle,
.logRow-spy .spyHead .spyTitle, .logRow-spy .spyHead .spyTitle,
.logGroup > .logRow .logGroup > .logRow
*/ */
.logRow-errorMessage .hasTwisty .errorTitle, .logRow-errorMessage .hasTwisty .errorTitle,
.logRow-spy .spyHead .spyTitle, .logRow-spy .spyHead .spyTitle,
@@ -2056,11 +2056,11 @@ h1.groupHeader {
width: 10px; width: 10px;
height: 10px; height: 10px;
margin-top: 6px; margin-top: 6px;
background: url(tabMenuTarget.png); background: url(tabMenuTarget.png);
} }
.fbTabMenuTarget:hover { .fbTabMenuTarget:hover {
background: url(tabMenuTargetHover.png); background: url(tabMenuTargetHover.png);
} }
.fbShadow { .fbShadow {
@@ -2098,7 +2098,7 @@ h1.groupHeader {
padding: 1px 18px 0; padding: 1px 18px 0;
text-decoration: none; text-decoration: none;
color: #000; color: #000;
cursor: default; cursor: default;
background: #ACA899; background: #ACA899;
margin: 4px 0; margin: 4px 0;
} }
@@ -2149,7 +2149,7 @@ h1.groupHeader {
} }
.fbMenuShortcut { .fbMenuShortcut {
padding-right: 85px; padding-right: 85px;
} }
.fbMenuShortcutKey { .fbMenuShortcutKey {
@@ -2274,7 +2274,7 @@ h1.groupHeader {
margin: 0; margin: 0;
padding: 0; padding: 0;
overflow: hidden; overflow: hidden;
font-family: Lucida Grande, Tahoma, sans-serif; font-family: Lucida Grande, Tahoma, sans-serif;
font-size: 11px; font-size: 11px;
background: #fff; background: #fff;
@@ -2311,7 +2311,7 @@ h1.groupHeader {
margin: 0 5px 0 0; margin: 0 5px 0 0;
background: #fff url(search.png) no-repeat 4px 2px !important; background: #fff url(search.png) no-repeat 4px 2px !important;
background: #fff url(search.gif) no-repeat 4px 2px; background: #fff url(search.gif) no-repeat 4px 2px;
padding-left: 20px; padding-left: 20px;
font-size: 11px; font-size: 11px;
} }
@@ -2333,7 +2333,7 @@ h1.groupHeader {
background: url(errorIcon.png) no-repeat !important; background: url(errorIcon.png) no-repeat !important;
background: url(errorIcon.gif) no-repeat; background: url(errorIcon.gif) no-repeat;
color: #f00; color: #f00;
font-weight: bold; font-weight: bold;
} }
#fbMiniErrors { #fbMiniErrors {
@@ -2348,7 +2348,7 @@ h1.groupHeader {
margin: 3px 4px 0; margin: 3px 4px 0;
height: 20px; height: 20px;
width: 20px; width: 20px;
float: right; float: right;
background: url(sprite.png) 0 -135px; background: url(sprite.png) 0 -135px;
cursor: pointer; cursor: pointer;
} }
@@ -2403,10 +2403,10 @@ h1.groupHeader {
} }
/************************************************************************************************ /************************************************************************************************
Sub-Layout Sub-Layout
*************************************************************************************************/ *************************************************************************************************/
/* fbToolbar /* fbToolbar
*************************************************************************************************/ *************************************************************************************************/
#fbToolbarIcon { #fbToolbarIcon {
float: left; float: left;
@@ -2472,7 +2472,7 @@ h1.groupHeader {
#fbStatusBarBox { #fbStatusBarBox {
top: 4px; top: 4px;
cursor: default; cursor: default;
} }
.fbToolbarSeparator { .fbToolbarSeparator {
@@ -2500,7 +2500,7 @@ h1.groupHeader {
.fbStatusBar a:hover { .fbStatusBar a:hover {
color: blue; color: blue;
cursor: pointer; cursor: pointer;
} }
@@ -2545,7 +2545,7 @@ h1.groupHeader {
padding-left: 4px; padding-left: 4px;
} }
/* body /* body
*************************************************************************************************/ *************************************************************************************************/
.fbPanel { .fbPanel {
display: none; display: none;
@@ -2609,7 +2609,7 @@ h1.groupHeader {
position: absolute; position: absolute;
right: 2px; right: 2px;
bottom: 3px; bottom: 3px;
z-index: 99; z-index: 99;
} }
@@ -2624,7 +2624,7 @@ h1.groupHeader {
visibility: hidden !important; visibility: hidden !important;
} }
/* fbBottom /* fbBottom
*************************************************************************************************/ *************************************************************************************************/
#fbCommand { #fbCommand {
@@ -2689,7 +2689,7 @@ div.fbFitHeight {
Layout Controls Layout Controls
*************************************************************************************************/ *************************************************************************************************/
/* fbToolbar buttons /* fbToolbar buttons
*************************************************************************************************/ *************************************************************************************************/
.fbSmallButton { .fbSmallButton {
overflow: hidden; overflow: hidden;
@@ -2729,7 +2729,7 @@ div.fbFitHeight {
} }
/* fbPanelBarBox tabs /* fbPanelBarBox tabs
*************************************************************************************************/ *************************************************************************************************/
.fbTab { .fbTab {
text-decoration: none; text-decoration: none;
@@ -2785,7 +2785,7 @@ a.fbTab:hover .fbTabR {
background: url(sprite.png) -8px -96px !important; background: url(sprite.png) -8px -96px !important;
} }
/* splitters /* splitters
*************************************************************************************************/ *************************************************************************************************/
#fbHSplitter { #fbHSplitter {
position: fixed; position: fixed;
@@ -2888,7 +2888,7 @@ div.objectBox-element {
position: relative; position: relative;
} }
/* Webkit CSS Hack - bug in "highlight" named color */ /* Webkit CSS Hack - bug in "highlight" named color */
@media screen and (-webkit-min-device-pixel-ratio:0) { @media screen and (-webkit-min-device-pixel-ratio:0) {
.selectedElement{ .selectedElement{
background: #316AC5; background: #316AC5;
@@ -2903,7 +2903,7 @@ div.objectBox-element {
} }
/* TODO: remove this? */ /* TODO: remove this? */
/* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to /* TODO: xxxpedro - IE need this in windowless mode (cnn.com) check if the issue is related to
position. if so, override it at chrome.js initialization when creating the div */ position. if so, override it at chrome.js initialization when creating the div */
.logRow { .logRow {
position: relative; position: relative;
@@ -2939,9 +2939,9 @@ position. if so, override it at chrome.js initialization when creating the div *
.objectBox-string { .objectBox-string {
color: red; color: red;
/* TODO: xxxpedro make long strings break line */ /* TODO: xxxpedro make long strings break line */
/*white-space: pre; */ /*white-space: pre; */
} }
.objectBox-number { .objectBox-number {

80
vendor/firebug-lite/skin/xp/firebug.html vendored Executable file → Normal file
View File

@@ -14,71 +14,71 @@
<tr> <tr>
<!-- Interface - Top Area --> <!-- Interface - Top Area -->
<td id="fbTop" colspan="2"> <td id="fbTop" colspan="2">
<!-- <!--
<div> <div>
--><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!-- --><!-- <span id="fbToolbarErrors" class="fbErrors">2 errors</span> --><!--
<input type="text" id="fbToolbarSearch" /> <input type="text" id="fbToolbarSearch" />
</div> </div>
--> -->
<!-- Window Buttons --> <!-- Window Buttons -->
<div id="fbWindowButtons"> <div id="fbWindowButtons">
<a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a> <a id="fbWindow_btDeactivate" class="fbSmallButton fbHover" title="Deactivate Firebug for this web page">&nbsp;</a>
<a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a> <a id="fbWindow_btDetach" class="fbSmallButton fbHover" title="Open Firebug in popup window">&nbsp;</a>
<a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a> <a id="fbWindow_btClose" class="fbSmallButton fbHover" title="Minimize Firebug">&nbsp;</a>
</div> </div>
<!-- Toolbar buttons and Status Bar --> <!-- Toolbar buttons and Status Bar -->
<div id="fbToolbar"> <div id="fbToolbar">
<div id="fbToolbarContent"> <div id="fbToolbarContent">
<!-- Firebug Button --> <!-- Firebug Button -->
<span id="fbToolbarIcon"> <span id="fbToolbarIcon">
<a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a> <a id="fbFirebugButton" class="fbIconButton" class="fbHover" target="_blank">&nbsp;</a>
</span> </span>
<!-- <!--
<span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span> <span id="fbLeftToolbarErrors" class="fbErrors">2 errors</span>
--> -->
<!-- Toolbar Buttons --> <!-- Toolbar Buttons -->
<span id="fbToolbarButtons"> <span id="fbToolbarButtons">
<!-- Fixed Toolbar Buttons --> <!-- Fixed Toolbar Buttons -->
<span id="fbFixedButtons"> <span id="fbFixedButtons">
<a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a> <a id="fbChrome_btInspect" class="fbButton fbHover" title="Click an element in the page to inspect">Inspect</a>
</span> </span>
<!-- Console Panel Toolbar Buttons --> <!-- Console Panel Toolbar Buttons -->
<span id="fbConsoleButtons" class="fbToolbarButtons"> <span id="fbConsoleButtons" class="fbToolbarButtons">
<a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a> <a id="fbConsole_btClear" class="fbButton fbHover" title="Clear the console">Clear</a>
</span> </span>
<!-- HTML Panel Toolbar Buttons --> <!-- HTML Panel Toolbar Buttons -->
<!-- <!--
<span id="fbHTMLButtons" class="fbToolbarButtons"> <span id="fbHTMLButtons" class="fbToolbarButtons">
<a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a> <a id="fbHTML_btEdit" class="fbHover" title="Edit this HTML">Edit</a>
</span> </span>
--> -->
</span> </span>
<!-- Status Bar --> <!-- Status Bar -->
<span id="fbStatusBarBox"> <span id="fbStatusBarBox">
<span class="fbToolbarSeparator"></span> <span class="fbToolbarSeparator"></span>
<!-- HTML Panel Status Bar --> <!-- HTML Panel Status Bar -->
<!-- <!--
<span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons"> <span id="fbHTMLStatusBar" class="fbStatusBar fbToolbarButtons">
</span> </span>
--> -->
</span> </span>
</div> </div>
</div> </div>
<!-- PanelBars --> <!-- PanelBars -->
<div id="fbPanelBarBox"> <div id="fbPanelBarBox">
<!-- Main PanelBar --> <!-- Main PanelBar -->
<div id="fbPanelBar1" class="fbPanelBar"> <div id="fbPanelBar1" class="fbPanelBar">
<a id="fbConsoleTab" class="fbTab fbHover"> <a id="fbConsoleTab" class="fbTab fbHover">
@@ -112,7 +112,7 @@
<!-- Side PanelBars --> <!-- Side PanelBars -->
<div id="fbPanelBar2Box" class="hide"> <div id="fbPanelBar2Box" class="hide">
<div id="fbPanelBar2" class="fbPanelBar"> <div id="fbPanelBar2" class="fbPanelBar">
<!-- <!--
<a class="fbTab fbHover"> <a class="fbTab fbHover">
<span class="fbTabL"></span> <span class="fbTabL"></span>
<span class="fbTabText">Style</span> <span class="fbTabText">Style</span>
@@ -131,18 +131,18 @@
--> -->
</div> </div>
</div> </div>
</div> </div>
<!-- Horizontal Splitter --> <!-- Horizontal Splitter -->
<div id="fbHSplitter">&nbsp;</div> <div id="fbHSplitter">&nbsp;</div>
</td> </td>
</tr> </tr>
<!-- Interface - Main Area --> <!-- Interface - Main Area -->
<tr id="fbContent"> <tr id="fbContent">
<!-- Panels --> <!-- Panels -->
<td id="fbPanelBox1"> <td id="fbPanelBox1">
<div id="fbPanel1" class="fbFitHeight"> <div id="fbPanel1" class="fbFitHeight">
@@ -150,41 +150,41 @@
<div id="fbHTML" class="fbPanel"></div> <div id="fbHTML" class="fbPanel"></div>
</div> </div>
</td> </td>
<!-- Side Panel Box --> <!-- Side Panel Box -->
<td id="fbPanelBox2" class="hide"> <td id="fbPanelBox2" class="hide">
<!-- VerticalSplitter --> <!-- VerticalSplitter -->
<div id="fbVSplitter" class="fbVSplitter">&nbsp;</div> <div id="fbVSplitter" class="fbVSplitter">&nbsp;</div>
<!-- Side Panels --> <!-- Side Panels -->
<div id="fbPanel2" class="fbFitHeight"> <div id="fbPanel2" class="fbFitHeight">
<!-- HTML Side Panels --> <!-- HTML Side Panels -->
<div id="fbHTML_Style" class="fbPanel"></div> <div id="fbHTML_Style" class="fbPanel"></div>
<div id="fbHTML_Layout" class="fbPanel"></div> <div id="fbHTML_Layout" class="fbPanel"></div>
<div id="fbHTML_DOM" class="fbPanel"></div> <div id="fbHTML_DOM" class="fbPanel"></div>
</div> </div>
<!-- Large Command Line --> <!-- Large Command Line -->
<textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea> <textarea id="fbLargeCommandLine" class="fbFitHeight"></textarea>
<!-- Large Command Line Buttons --> <!-- Large Command Line Buttons -->
<div id="fbLargeCommandButtons"> <div id="fbLargeCommandButtons">
<a id="fbCommand_btRun" class="fbButton fbHover">Run</a> <a id="fbCommand_btRun" class="fbButton fbHover">Run</a>
<a id="fbCommand_btClear" class="fbButton fbHover">Clear</a> <a id="fbCommand_btClear" class="fbButton fbHover">Clear</a>
<a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a> <a id="fbSmallCommandLineIcon" class="fbSmallButton fbHover"></a>
</div> </div>
</td> </td>
</tr> </tr>
<!-- Interface - Bottom Area --> <!-- Interface - Bottom Area -->
<tr id="fbBottom" class="hide"> <tr id="fbBottom" class="hide">
<!-- Command Line --> <!-- Command Line -->
<td id="fbCommand" colspan="2"> <td id="fbCommand" colspan="2">
<div id="fbCommandBox"> <div id="fbCommandBox">
@@ -193,18 +193,18 @@
<a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a> <a id="fbLargeCommandLineIcon" class="fbSmallButton fbHover"></a>
</div> </div>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
<span id="fbMiniChrome"> <span id="fbMiniChrome">
<span id="fbMiniContent"> <span id="fbMiniContent">
<span id="fbMiniIcon" title="Open Firebug Lite"></span> <span id="fbMiniIcon" title="Open Firebug Lite"></span>
<span id="fbMiniErrors" class="fbErrors"><!-- 2 errors --></span> <span id="fbMiniErrors" class="fbErrors"><!-- 2 errors --></span>
</span> </span>
</span> </span>
<!-- <!--
<div id="fbErrorPopup"> <div id="fbErrorPopup">
<div id="fbErrorPopupContent"> <div id="fbErrorPopupContent">
<div id="fbErrorIndicator" class="fbErrors">2 errors</div> <div id="fbErrorIndicator" class="fbErrors">2 errors</div>

0
vendor/firebug-lite/skin/xp/firebug.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
vendor/firebug-lite/skin/xp/group.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 158 B

After

Width:  |  Height:  |  Size: 158 B

0
vendor/firebug-lite/skin/xp/html.css vendored Executable file → Normal file
View File

0
vendor/firebug-lite/skin/xp/infoIcon.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 359 B

0
vendor/firebug-lite/skin/xp/infoIcon.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 524 B

After

Width:  |  Height:  |  Size: 524 B

0
vendor/firebug-lite/skin/xp/loading_16.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
vendor/firebug-lite/skin/xp/min.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 552 B

After

Width:  |  Height:  |  Size: 552 B

0
vendor/firebug-lite/skin/xp/minHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 485 B

After

Width:  |  Height:  |  Size: 485 B

0
vendor/firebug-lite/skin/xp/off.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 742 B

After

Width:  |  Height:  |  Size: 742 B

0
vendor/firebug-lite/skin/xp/offHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 680 B

After

Width:  |  Height:  |  Size: 680 B

0
vendor/firebug-lite/skin/xp/pixel_transparent.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 43 B

After

Width:  |  Height:  |  Size: 43 B

0
vendor/firebug-lite/skin/xp/roundCorner.svg vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 228 B

0
vendor/firebug-lite/skin/xp/search.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 550 B

After

Width:  |  Height:  |  Size: 550 B

0
vendor/firebug-lite/skin/xp/search.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 685 B

After

Width:  |  Height:  |  Size: 685 B

0
vendor/firebug-lite/skin/xp/shadow.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 4.3 KiB

After

Width:  |  Height:  |  Size: 4.3 KiB

0
vendor/firebug-lite/skin/xp/shadow2.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

0
vendor/firebug-lite/skin/xp/shadowAlpha.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

0
vendor/firebug-lite/skin/xp/sprite.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

0
vendor/firebug-lite/skin/xp/tabHoverLeft.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 438 B

After

Width:  |  Height:  |  Size: 438 B

0
vendor/firebug-lite/skin/xp/tabHoverMid.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 261 B

After

Width:  |  Height:  |  Size: 261 B

0
vendor/firebug-lite/skin/xp/tabHoverRight.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 436 B

After

Width:  |  Height:  |  Size: 436 B

0
vendor/firebug-lite/skin/xp/tabLeft.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 449 B

0
vendor/firebug-lite/skin/xp/tabMenuCheckbox.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

0
vendor/firebug-lite/skin/xp/tabMenuPin.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 207 B

After

Width:  |  Height:  |  Size: 207 B

0
vendor/firebug-lite/skin/xp/tabMenuRadio.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 192 B

After

Width:  |  Height:  |  Size: 192 B

0
vendor/firebug-lite/skin/xp/tabMenuTarget.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 142 B

After

Width:  |  Height:  |  Size: 142 B

0
vendor/firebug-lite/skin/xp/tabMenuTargetHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 148 B

After

Width:  |  Height:  |  Size: 148 B

0
vendor/firebug-lite/skin/xp/tabMid.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 262 B

After

Width:  |  Height:  |  Size: 262 B

0
vendor/firebug-lite/skin/xp/tabRight.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 448 B

After

Width:  |  Height:  |  Size: 448 B

0
vendor/firebug-lite/skin/xp/textEditorBorders.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 117 B

After

Width:  |  Height:  |  Size: 117 B

0
vendor/firebug-lite/skin/xp/textEditorBorders.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

0
vendor/firebug-lite/skin/xp/textEditorCorners.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

0
vendor/firebug-lite/skin/xp/textEditorCorners.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

0
vendor/firebug-lite/skin/xp/titlebarMid.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 273 B

After

Width:  |  Height:  |  Size: 273 B

0
vendor/firebug-lite/skin/xp/toolbarMid.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 242 B

After

Width:  |  Height:  |  Size: 242 B

0
vendor/firebug-lite/skin/xp/tree_close.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 300 B

0
vendor/firebug-lite/skin/xp/tree_open.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 202 B

0
vendor/firebug-lite/skin/xp/twistyClosed.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 334 B

After

Width:  |  Height:  |  Size: 334 B

0
vendor/firebug-lite/skin/xp/twistyOpen.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 309 B

After

Width:  |  Height:  |  Size: 309 B

0
vendor/firebug-lite/skin/xp/up.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 619 B

After

Width:  |  Height:  |  Size: 619 B

0
vendor/firebug-lite/skin/xp/upActive.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 551 B

After

Width:  |  Height:  |  Size: 551 B

0
vendor/firebug-lite/skin/xp/upHover.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 526 B

After

Width:  |  Height:  |  Size: 526 B

0
vendor/firebug-lite/skin/xp/warningIcon.gif vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 357 B

After

Width:  |  Height:  |  Size: 357 B

0
vendor/firebug-lite/skin/xp/warningIcon.png vendored Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 516 B

After

Width:  |  Height:  |  Size: 516 B

2
vendor/firebug-lite/src/firebug-lite-debug.js vendored Executable file → Normal file
View File

@@ -6258,7 +6258,7 @@ FBL.Firebug =
{ {
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
version: "Firebug Lite 1.4.0", version: "Firebug Lite 1.4.0",
revision: "$Revision: 11967 $", revision: "$Revision$",
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
modules: modules, modules: modules,

View File

@@ -1,6 +1,6 @@
/* /*
json2.js json2.js
2014-02-04 2015-02-25
Public Domain. Public Domain.
@@ -48,7 +48,9 @@
Date.prototype.toJSON = function (key) { Date.prototype.toJSON = function (key) {
function f(n) { function f(n) {
// Format integers to have at least two digits. // Format integers to have at least two digits.
return n < 10 ? '0' + n : n; return n < 10
? '0' + n
: n;
} }
return this.getUTCFullYear() + '-' + return this.getUTCFullYear() + '-' +
@@ -146,10 +148,12 @@
redistribute. redistribute.
*/ */
/*jslint evil: true, regexp: true */ /*jslint
eval, for, this
*/
/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply, /*property
call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours, JSON, apply, call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join, getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
lastIndex, length, parse, prototype, push, replace, slice, stringify, lastIndex, length, parse, prototype, push, replace, slice, stringify,
test, toJSON, toString, valueOf test, toJSON, toString, valueOf
@@ -168,7 +172,13 @@ if (typeof JSON !== 'object') {
function f(n) { function f(n) {
// Format integers to have at least two digits. // Format integers to have at least two digits.
return n < 10 ? '0' + n : n; return n < 10
? '0' + n
: n;
}
function this_value() {
return this.valueOf();
} }
if (typeof Date.prototype.toJSON !== 'function') { if (typeof Date.prototype.toJSON !== 'function') {
@@ -176,20 +186,18 @@ if (typeof JSON !== 'object') {
Date.prototype.toJSON = function () { Date.prototype.toJSON = function () {
return isFinite(this.valueOf()) return isFinite(this.valueOf())
? this.getUTCFullYear() + '-' + ? this.getUTCFullYear() + '-' +
f(this.getUTCMonth() + 1) + '-' + f(this.getUTCMonth() + 1) + '-' +
f(this.getUTCDate()) + 'T' + f(this.getUTCDate()) + 'T' +
f(this.getUTCHours()) + ':' + f(this.getUTCHours()) + ':' +
f(this.getUTCMinutes()) + ':' + f(this.getUTCMinutes()) + ':' +
f(this.getUTCSeconds()) + 'Z' f(this.getUTCSeconds()) + 'Z'
: null; : null;
}; };
String.prototype.toJSON = Boolean.prototype.toJSON = this_value;
Number.prototype.toJSON = Number.prototype.toJSON = this_value;
Boolean.prototype.toJSON = function () { String.prototype.toJSON = this_value;
return this.valueOf();
};
} }
var cx, var cx,
@@ -208,12 +216,14 @@ if (typeof JSON !== 'object') {
// sequences. // sequences.
escapable.lastIndex = 0; escapable.lastIndex = 0;
return escapable.test(string) ? '"' + string.replace(escapable, function (a) { return escapable.test(string)
? '"' + string.replace(escapable, function (a) {
var c = meta[a]; var c = meta[a];
return typeof c === 'string' return typeof c === 'string'
? c ? c
: '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); : '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}) + '"' : '"' + string + '"'; }) + '"'
: '"' + string + '"';
} }
@@ -253,7 +263,9 @@ if (typeof JSON !== 'object') {
// JSON numbers must be finite. Encode non-finite numbers as null. // JSON numbers must be finite. Encode non-finite numbers as null.
return isFinite(value) ? String(value) : 'null'; return isFinite(value)
? String(value)
: 'null';
case 'boolean': case 'boolean':
case 'null': case 'null':
@@ -297,10 +309,10 @@ if (typeof JSON !== 'object') {
// brackets. // brackets.
v = partial.length === 0 v = partial.length === 0
? '[]' ? '[]'
: gap : gap
? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']'
: '[' + partial.join(',') + ']'; : '[' + partial.join(',') + ']';
gap = mind; gap = mind;
return v; return v;
} }
@@ -314,7 +326,11 @@ if (typeof JSON !== 'object') {
k = rep[i]; k = rep[i];
v = str(k, value); v = str(k, value);
if (v) { if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v); partial.push(quote(k) + (
gap
? ': '
: ':'
) + v);
} }
} }
} }
@@ -326,7 +342,11 @@ if (typeof JSON !== 'object') {
if (Object.prototype.hasOwnProperty.call(value, k)) { if (Object.prototype.hasOwnProperty.call(value, k)) {
v = str(k, value); v = str(k, value);
if (v) { if (v) {
partial.push(quote(k) + (gap ? ': ' : ':') + v); partial.push(quote(k) + (
gap
? ': '
: ':'
) + v);
} }
} }
} }
@@ -336,10 +356,10 @@ if (typeof JSON !== 'object') {
// and wrap them in braces. // and wrap them in braces.
v = partial.length === 0 v = partial.length === 0
? '{}' ? '{}'
: gap : gap
? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}'
: '{' + partial.join(',') + '}'; : '{' + partial.join(',') + '}';
gap = mind; gap = mind;
return v; return v;
} }
@@ -348,14 +368,14 @@ if (typeof JSON !== 'object') {
// If the JSON object does not yet have a stringify method, give it one. // If the JSON object does not yet have a stringify method, give it one.
if (typeof JSON.stringify !== 'function') { if (typeof JSON.stringify !== 'function') {
escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g; escapable = /[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;
meta = { // table of character substitutions meta = { // table of character substitutions
'\b': '\\b', '\b': '\\b',
'\t': '\\t', '\t': '\\t',
'\n': '\\n', '\n': '\\n',
'\f': '\\f', '\f': '\\f',
'\r': '\\r', '\r': '\\r',
'"' : '\\"', '"': '\\"',
'\\': '\\\\' '\\': '\\\\'
}; };
JSON.stringify = function (value, replacer, space) { JSON.stringify = function (value, replacer, space) {
@@ -444,7 +464,7 @@ if (typeof JSON !== 'object') {
if (cx.test(text)) { if (cx.test(text)) {
text = text.replace(cx, function (a) { text = text.replace(cx, function (a) {
return '\\u' + return '\\u' +
('0000' + a.charCodeAt(0).toString(16)).slice(-4); ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
}); });
} }
@@ -461,10 +481,13 @@ if (typeof JSON !== 'object') {
// we look to see that the remaining characters are only whitespace or ']' or // we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval. // ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.
if (/^[\],:{}\s]*$/ if (
.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@') /^[\],:{}\s]*$/.test(
text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']') .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
.replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) { .replace(/(?:^|:|,)(?:\s*\[)+/g, '')
)
) {
// In the third stage we use the eval function to compile the text into a // In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity // JavaScript structure. The '{' operator is subject to a syntactic ambiguity
@@ -477,8 +500,8 @@ if (typeof JSON !== 'object') {
// each name/value pair to a reviver function for possible transformation. // each name/value pair to a reviver function for possible transformation.
return typeof reviver === 'function' return typeof reviver === 'function'
? walk({'': j}, '') ? walk({'': j}, '')
: j; : j;
} }
// If the text is not JSON parseable, then a SyntaxError is thrown. // If the text is not JSON parseable, then a SyntaxError is thrown.

View File

@@ -344,6 +344,9 @@
strictEqual(_.indexOf([1, 2, NaN, NaN], NaN), 2, 'Expected [1, 2, NaN] to contain NaN'); strictEqual(_.indexOf([1, 2, NaN, NaN], NaN), 2, 'Expected [1, 2, NaN] to contain NaN');
strictEqual(_.indexOf([1, 2, Infinity], NaN), -1, 'Expected [1, 2, NaN] to contain NaN'); strictEqual(_.indexOf([1, 2, Infinity], NaN), -1, 'Expected [1, 2, NaN] to contain NaN');
strictEqual(_.indexOf([1, 2, NaN, NaN], NaN, 1), 2, 'startIndex does not affect result');
strictEqual(_.indexOf([1, 2, NaN, NaN], NaN, -2), 2, 'startIndex does not affect result');
(function() { (function() {
strictEqual(_.indexOf(arguments, NaN), 2, 'Expected arguments [1, 2, NaN] to contain NaN'); strictEqual(_.indexOf(arguments, NaN), 2, 'Expected arguments [1, 2, NaN] to contain NaN');
}(1, 2, NaN, NaN)); }(1, 2, NaN, NaN));
@@ -418,6 +421,9 @@
strictEqual(_.lastIndexOf([1, 2, NaN, NaN], NaN), 3, 'Expected [1, 2, NaN] to contain NaN'); strictEqual(_.lastIndexOf([1, 2, NaN, NaN], NaN), 3, 'Expected [1, 2, NaN] to contain NaN');
strictEqual(_.lastIndexOf([1, 2, Infinity], NaN), -1, 'Expected [1, 2, NaN] to contain NaN'); strictEqual(_.lastIndexOf([1, 2, Infinity], NaN), -1, 'Expected [1, 2, NaN] to contain NaN');
strictEqual(_.lastIndexOf([1, 2, NaN, NaN], NaN, 2), 2, 'fromIndex does not affect result');
strictEqual(_.lastIndexOf([1, 2, NaN, NaN], NaN, -2), 2, 'fromIndex does not affect result');
(function() { (function() {
strictEqual(_.lastIndexOf(arguments, NaN), 3, 'Expected arguments [1, 2, NaN] to contain NaN'); strictEqual(_.lastIndexOf(arguments, NaN), 3, 'Expected arguments [1, 2, NaN] to contain NaN');
}(1, 2, NaN, NaN)); }(1, 2, NaN, NaN));

View File

@@ -23,6 +23,13 @@
deepEqual(answers, ['one', 'two', 'three'], 'iterating over objects works, and ignores the object prototype.'); deepEqual(answers, ['one', 'two', 'three'], 'iterating over objects works, and ignores the object prototype.');
delete obj.constructor.prototype.four; delete obj.constructor.prototype.four;
// ensure the each function is JITed
_(1000).times(function() { _.each([], function(){}); });
var count = 0;
obj = {1 : 'foo', 2 : 'bar', 3 : 'baz'};
_.each(obj, function(value, key){ count++; });
equal(count, 3, 'the fun should be called only 3 times');
var answer = null; var answer = null;
_.each([1, 2, 3], function(num, index, arr){ if (_.include(arr, num)) answer = true; }); _.each([1, 2, 3], function(num, index, arr){ if (_.include(arr, num)) answer = true; });
ok(answer, 'can reference the original collection from inside the iterator'); ok(answer, 'can reference the original collection from inside the iterator');
@@ -420,12 +427,14 @@
strictEqual(_.includes, _.contains, 'alias for includes'); strictEqual(_.includes, _.contains, 'alias for includes');
var numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3]; var numbers = [1, 2, 3, 1, 2, 3, 1, 2, 3];
strictEqual(_.includes(numbers, 1, 1), true); strictEqual(_.includes(numbers, 1, 1), true, 'contains takes a fromIndex');
strictEqual(_.includes(numbers, 1, -1), false); strictEqual(_.includes(numbers, 1, -1), false, 'contains takes a fromIndex');
strictEqual(_.includes(numbers, 1, -2), false); strictEqual(_.includes(numbers, 1, -2), false, 'contains takes a fromIndex');
strictEqual(_.includes(numbers, 1, -3), true); strictEqual(_.includes(numbers, 1, -3), true, 'contains takes a fromIndex');
strictEqual(_.includes(numbers, 1, 6), true); strictEqual(_.includes(numbers, 1, 6), true, 'contains takes a fromIndex');
strictEqual(_.includes(numbers, 1, 7), false); strictEqual(_.includes(numbers, 1, 7), false, 'contains takes a fromIndex');
ok(_.every([1, 2, 3], _.partial(_.contains, numbers)), 'fromIndex is guarded');
}); });
test('includes with NaN', function() { test('includes with NaN', function() {
@@ -789,6 +798,7 @@
equal(_.size(new String('hello')), 5, 'can compute the size of string object'); equal(_.size(new String('hello')), 5, 'can compute the size of string object');
equal(_.size(null), 0, 'handles nulls'); equal(_.size(null), 0, 'handles nulls');
equal(_.size(0), 0, 'handles numbers');
}); });
test('partition', function() { test('partition', function() {

View File

@@ -282,6 +282,32 @@
equal(_.clone(null), null, 'non objects should not be changed by clone'); equal(_.clone(null), null, 'non objects should not be changed by clone');
}); });
test('create', function() {
var Parent = function() {};
Parent.prototype = {foo: function() {}, bar: 2};
_.each(['foo', null, undefined, 1], function(val) {
deepEqual(_.create(val), {}, 'should return empty object when a non-object is provided');
});
ok(_.create([]) instanceof Array, 'should return new instance of array when array is provided');
var Child = function() {};
Child.prototype = _.create(Parent.prototype);
ok(new Child instanceof Parent, 'object should inherit prototype');
var func = function() {};
Child.prototype = _.create(Parent.prototype, {func: func});
strictEqual(Child.prototype.func, func, 'properties should be added to object');
Child.prototype = _.create(Parent.prototype, {constructor: Child});
strictEqual(Child.prototype.constructor, Child);
Child.prototype.foo = 'foo';
var created = _.create(Child.prototype, new Child);
ok(!created.hasOwnProperty('foo'), 'should only add own properties');
});
test('isEqual', function() { test('isEqual', function() {
function First() { function First() {
this.value = 1; this.value = 1;

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,4 @@
// Underscore.js 1.8.2 // Underscore.js 1.8.3
// http://underscorejs.org // http://underscorejs.org
// (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
// Underscore may be freely distributed under the MIT license. // Underscore may be freely distributed under the MIT license.
@@ -55,7 +55,7 @@
} }
// Current version. // Current version.
_.VERSION = '1.8.2'; _.VERSION = '1.8.3';
// Internal function that returns an efficient (for current engines) version // Internal function that returns an efficient (for current engines) version
// of the passed-in callback, to be repeatedly applied in other Underscore // of the passed-in callback, to be repeatedly applied in other Underscore
@@ -122,12 +122,20 @@
return result; return result;
}; };
var property = function(key) {
return function(obj) {
return obj == null ? void 0 : obj[key];
};
};
// Helper for collection methods to determine whether a collection // Helper for collection methods to determine whether a collection
// should be iterated as an array or as an object // should be iterated as an array or as an object
// Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength
// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094
var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;
var getLength = property('length');
var isArrayLike = function(collection) { var isArrayLike = function(collection) {
var length = collection && collection.length; var length = getLength(collection);
return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX;
}; };
@@ -252,11 +260,12 @@
return false; return false;
}; };
// Determine if the array or object contains a given value (using `===`). // Determine if the array or object contains a given item (using `===`).
// Aliased as `includes` and `include`. // Aliased as `includes` and `include`.
_.contains = _.includes = _.include = function(obj, target, fromIndex) { _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) {
if (!isArrayLike(obj)) obj = _.values(obj); if (!isArrayLike(obj)) obj = _.values(obj);
return _.indexOf(obj, target, typeof fromIndex == 'number' && fromIndex) >= 0; if (typeof fromIndex != 'number' || guard) fromIndex = 0;
return _.indexOf(obj, item, fromIndex) >= 0;
}; };
// Invoke a method (with arguments) on every item in a collection. // Invoke a method (with arguments) on every item in a collection.
@@ -480,7 +489,7 @@
// Internal implementation of a recursive `flatten` function. // Internal implementation of a recursive `flatten` function.
var flatten = function(input, shallow, strict, startIndex) { var flatten = function(input, shallow, strict, startIndex) {
var output = [], idx = 0; var output = [], idx = 0;
for (var i = startIndex || 0, length = input && input.length; i < length; i++) { for (var i = startIndex || 0, length = getLength(input); i < length; i++) {
var value = input[i]; var value = input[i];
if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) {
//flatten current level of array or arguments object //flatten current level of array or arguments object
@@ -511,7 +520,6 @@
// been sorted, you have the option of using a faster algorithm. // been sorted, you have the option of using a faster algorithm.
// Aliased as `unique`. // Aliased as `unique`.
_.uniq = _.unique = function(array, isSorted, iteratee, context) { _.uniq = _.unique = function(array, isSorted, iteratee, context) {
if (array == null) return [];
if (!_.isBoolean(isSorted)) { if (!_.isBoolean(isSorted)) {
context = iteratee; context = iteratee;
iteratee = isSorted; iteratee = isSorted;
@@ -520,7 +528,7 @@
if (iteratee != null) iteratee = cb(iteratee, context); if (iteratee != null) iteratee = cb(iteratee, context);
var result = []; var result = [];
var seen = []; var seen = [];
for (var i = 0, length = array.length; i < length; i++) { for (var i = 0, length = getLength(array); i < length; i++) {
var value = array[i], var value = array[i],
computed = iteratee ? iteratee(value, i, array) : value; computed = iteratee ? iteratee(value, i, array) : value;
if (isSorted) { if (isSorted) {
@@ -547,10 +555,9 @@
// Produce an array that contains every item shared between all the // Produce an array that contains every item shared between all the
// passed-in arrays. // passed-in arrays.
_.intersection = function(array) { _.intersection = function(array) {
if (array == null) return [];
var result = []; var result = [];
var argsLength = arguments.length; var argsLength = arguments.length;
for (var i = 0, length = array.length; i < length; i++) { for (var i = 0, length = getLength(array); i < length; i++) {
var item = array[i]; var item = array[i];
if (_.contains(result, item)) continue; if (_.contains(result, item)) continue;
for (var j = 1; j < argsLength; j++) { for (var j = 1; j < argsLength; j++) {
@@ -579,7 +586,7 @@
// Complement of _.zip. Unzip accepts an array of arrays and groups // Complement of _.zip. Unzip accepts an array of arrays and groups
// each array's elements on shared indices // each array's elements on shared indices
_.unzip = function(array) { _.unzip = function(array) {
var length = array && _.max(array, 'length').length || 0; var length = array && _.max(array, getLength).length || 0;
var result = Array(length); var result = Array(length);
for (var index = 0; index < length; index++) { for (var index = 0; index < length; index++) {
@@ -593,7 +600,7 @@
// the corresponding values. // the corresponding values.
_.object = function(list, values) { _.object = function(list, values) {
var result = {}; var result = {};
for (var i = 0, length = list && list.length; i < length; i++) { for (var i = 0, length = getLength(list); i < length; i++) {
if (values) { if (values) {
result[list[i]] = values[i]; result[list[i]] = values[i];
} else { } else {
@@ -603,42 +610,11 @@
return result; return result;
}; };
// Return the position of the first occurrence of an item in an array,
// or -1 if the item is not included in the array.
// If the array is large and already in sort order, pass `true`
// for **isSorted** to use binary search.
_.indexOf = function(array, item, isSorted) {
var i = 0, length = array && array.length;
if (typeof isSorted == 'number') {
i = isSorted < 0 ? Math.max(0, length + isSorted) : isSorted;
} else if (isSorted && length) {
i = _.sortedIndex(array, item);
return array[i] === item ? i : -1;
}
if (item !== item) {
return _.findIndex(slice.call(array, i), _.isNaN);
}
for (; i < length; i++) if (array[i] === item) return i;
return -1;
};
_.lastIndexOf = function(array, item, from) {
var idx = array ? array.length : 0;
if (typeof from == 'number') {
idx = from < 0 ? idx + from + 1 : Math.min(idx, from + 1);
}
if (item !== item) {
return _.findLastIndex(slice.call(array, 0, idx), _.isNaN);
}
while (--idx >= 0) if (array[idx] === item) return idx;
return -1;
};
// Generator function to create the findIndex and findLastIndex functions // Generator function to create the findIndex and findLastIndex functions
function createIndexFinder(dir) { function createPredicateIndexFinder(dir) {
return function(array, predicate, context) { return function(array, predicate, context) {
predicate = cb(predicate, context); predicate = cb(predicate, context);
var length = array != null && array.length; var length = getLength(array);
var index = dir > 0 ? 0 : length - 1; var index = dir > 0 ? 0 : length - 1;
for (; index >= 0 && index < length; index += dir) { for (; index >= 0 && index < length; index += dir) {
if (predicate(array[index], index, array)) return index; if (predicate(array[index], index, array)) return index;
@@ -648,16 +624,15 @@
} }
// Returns the first index on an array-like that passes a predicate test // Returns the first index on an array-like that passes a predicate test
_.findIndex = createIndexFinder(1); _.findIndex = createPredicateIndexFinder(1);
_.findLastIndex = createPredicateIndexFinder(-1);
_.findLastIndex = createIndexFinder(-1);
// Use a comparator function to figure out the smallest index at which // Use a comparator function to figure out the smallest index at which
// an object should be inserted so as to maintain order. Uses binary search. // an object should be inserted so as to maintain order. Uses binary search.
_.sortedIndex = function(array, obj, iteratee, context) { _.sortedIndex = function(array, obj, iteratee, context) {
iteratee = cb(iteratee, context, 1); iteratee = cb(iteratee, context, 1);
var value = iteratee(obj); var value = iteratee(obj);
var low = 0, high = array.length; var low = 0, high = getLength(array);
while (low < high) { while (low < high) {
var mid = Math.floor((low + high) / 2); var mid = Math.floor((low + high) / 2);
if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;
@@ -665,11 +640,43 @@
return low; return low;
}; };
// Generator function to create the indexOf and lastIndexOf functions
function createIndexFinder(dir, predicateFind, sortedIndex) {
return function(array, item, idx) {
var i = 0, length = getLength(array);
if (typeof idx == 'number') {
if (dir > 0) {
i = idx >= 0 ? idx : Math.max(idx + length, i);
} else {
length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;
}
} else if (sortedIndex && idx && length) {
idx = sortedIndex(array, item);
return array[idx] === item ? idx : -1;
}
if (item !== item) {
idx = predicateFind(slice.call(array, i, length), _.isNaN);
return idx >= 0 ? idx + i : -1;
}
for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {
if (array[idx] === item) return idx;
}
return -1;
};
}
// Return the position of the first occurrence of an item in an array,
// or -1 if the item is not included in the array.
// If the array is large and already in sort order, pass `true`
// for **isSorted** to use binary search.
_.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex);
_.lastIndexOf = createIndexFinder(-1, _.findLastIndex);
// Generate an integer Array containing an arithmetic progression. A port of // Generate an integer Array containing an arithmetic progression. A port of
// the native Python `range()` function. See // the native Python `range()` function. See
// [the Python documentation](http://docs.python.org/library/functions.html#range). // [the Python documentation](http://docs.python.org/library/functions.html#range).
_.range = function(start, stop, step) { _.range = function(start, stop, step) {
if (arguments.length <= 1) { if (stop == null) {
stop = start || 0; stop = start || 0;
start = 0; start = 0;
} }
@@ -1048,6 +1055,15 @@
// Fill in a given object with default properties. // Fill in a given object with default properties.
_.defaults = createAssigner(_.allKeys, true); _.defaults = createAssigner(_.allKeys, true);
// Creates an object that inherits from the given prototype object.
// If additional properties are provided then they will be added to the
// created object.
_.create = function(prototype, props) {
var result = baseCreate(prototype);
if (props) _.extendOwn(result, props);
return result;
};
// Create a (shallow-cloned) duplicate of an object. // Create a (shallow-cloned) duplicate of an object.
_.clone = function(obj) { _.clone = function(obj) {
if (!_.isObject(obj)) return obj; if (!_.isObject(obj)) return obj;
@@ -1125,7 +1141,7 @@
} }
// Assume equality for cyclic structures. The algorithm for detecting cyclic // Assume equality for cyclic structures. The algorithm for detecting cyclic
// structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.
// Initializing stack of traversed objects. // Initializing stack of traversed objects.
// It's done here since we only need them for objects and arrays comparison. // It's done here since we only need them for objects and arrays comparison.
aStack = aStack || []; aStack = aStack || [];
@@ -1276,11 +1292,7 @@
_.noop = function(){}; _.noop = function(){};
_.property = function(key) { _.property = property;
return function(obj) {
return obj == null ? void 0 : obj[key];
};
};
// Generates a function for a given object that returns a given property. // Generates a function for a given object that returns a given property.
_.propertyOf = function(obj) { _.propertyOf = function(obj) {
@@ -1289,7 +1301,7 @@
}; };
}; };
// Returns a predicate for checking whether an object has a given set of // Returns a predicate for checking whether an object has a given set of
// `key:value` pairs. // `key:value` pairs.
_.matcher = _.matches = function(attrs) { _.matcher = _.matches = function(attrs) {
attrs = _.extendOwn({}, attrs); attrs = _.extendOwn({}, attrs);
@@ -1516,7 +1528,7 @@
// Provide unwrapping proxy for some methods used in engine operations // Provide unwrapping proxy for some methods used in engine operations
// such as arithmetic and JSON stringification. // such as arithmetic and JSON stringification.
_.prototype.valueOf = _.prototype.toJSON = _.prototype.value; _.prototype.valueOf = _.prototype.toJSON = _.prototype.value;
_.prototype.toString = function() { _.prototype.toString = function() {
return '' + this._wrapped; return '' + this._wrapped;
}; };