mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2024-11-22 07:08:10 +00:00
use bowser-installer
This commit is contained in:
parent
2842f25b82
commit
b59234e25d
1
.gitignore
vendored
1
.gitignore
vendored
@ -21,4 +21,5 @@ libpathod
|
|||||||
# UI
|
# UI
|
||||||
|
|
||||||
node_modules
|
node_modules
|
||||||
|
bower_components
|
||||||
*.map
|
*.map
|
7
libmproxy/onboarding/static/bootstrap.min.js
vendored
7
libmproxy/onboarding/static/bootstrap.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -1,9 +0,0 @@
|
|||||||
/**
|
|
||||||
* jQuery.LocalScroll - Animated scrolling navigation, using anchors.
|
|
||||||
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
|
|
||||||
* Dual licensed under MIT and GPL.
|
|
||||||
* Date: 3/11/2009
|
|
||||||
* @author Ariel Flesler
|
|
||||||
* @version 1.2.7
|
|
||||||
**/
|
|
||||||
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);
|
|
@ -1,11 +0,0 @@
|
|||||||
/**
|
|
||||||
* jQuery.ScrollTo - Easy element scrolling using jQuery.
|
|
||||||
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
|
|
||||||
* Dual licensed under MIT and GPL.
|
|
||||||
* Date: 3/9/2009
|
|
||||||
* @author Ariel Flesler
|
|
||||||
* @version 1.4.1
|
|
||||||
*
|
|
||||||
* http://flesler.blogspot.com/2007/10/jqueryscrollto.html
|
|
||||||
*/
|
|
||||||
;(function($){var m=$.scrollTo=function(b,h,f){$(window).scrollTo(b,h,f)};m.defaults={axis:'xy',duration:parseFloat($.fn.jquery)>=1.3?0:1};m.window=function(b){return $(window).scrollable()};$.fn.scrollable=function(){return this.map(function(){var b=this,h=!b.nodeName||$.inArray(b.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!h)return b;var f=(b.contentWindow||b).document||b.ownerDocument||b;return $.browser.safari||f.compatMode=='BackCompat'?f.body:f.documentElement})};$.fn.scrollTo=function(l,j,a){if(typeof j=='object'){a=j;j=0}if(typeof a=='function')a={onAfter:a};if(l=='max')l=9e9;a=$.extend({},m.defaults,a);j=j||a.speed||a.duration;a.queue=a.queue&&a.axis.length>1;if(a.queue)j/=2;a.offset=n(a.offset);a.over=n(a.over);return this.scrollable().each(function(){var k=this,o=$(k),d=l,p,g={},q=o.is('html,body');switch(typeof d){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px)?$/.test(d)){d=n(d);break}d=$(d,this);case'object':if(d.is||d.style)p=(d=$(d)).offset()}$.each(a.axis.split(''),function(b,h){var f=h=='x'?'Left':'Top',i=f.toLowerCase(),c='scroll'+f,r=k[c],s=h=='x'?'Width':'Height';if(p){g[c]=p[i]+(q?0:r-o.offset()[i]);if(a.margin){g[c]-=parseInt(d.css('margin'+f))||0;g[c]-=parseInt(d.css('border'+f+'Width'))||0}g[c]+=a.offset[i]||0;if(a.over[i])g[c]+=d[s.toLowerCase()]()*a.over[i]}else g[c]=d[i];if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],u(s));if(!b&&a.queue){if(r!=g[c])t(a.onAfterFirst);delete g[c]}});t(a.onAfter);function t(b){o.animate(g,j,a.easing,b&&function(){b.call(this,l,a)})};function u(b){var h='scroll'+b;if(!q)return k[h];var f='client'+b,i=k.ownerDocument.documentElement,c=k.ownerDocument.body;return Math.max(i[h],c[h])-Math.min(i[f],c[f])}}).end()};function n(b){return typeof b=='object'?b:{top:b,left:b}}})(jQuery);
|
|
@ -1,14 +0,0 @@
|
|||||||
{% extends "frame.html" %}
|
|
||||||
{% block body %}
|
|
||||||
|
|
||||||
|
|
||||||
<div class="masthead">
|
|
||||||
<div class="container">
|
|
||||||
<h1>mitmproxy: pathological HTTP</h1>
|
|
||||||
|
|
||||||
<p>Here are some certs.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
{% endblock %}
|
|
@ -12,7 +12,6 @@
|
|||||||
<link href="/static/bootstrap.min.css" rel="stylesheet">
|
<link href="/static/bootstrap.min.css" rel="stylesheet">
|
||||||
<link href="/static/mitmproxy.css" rel="stylesheet">
|
<link href="/static/mitmproxy.css" rel="stylesheet">
|
||||||
<link href="/static/fontawesome/css/font-awesome.min.css" rel="stylesheet">
|
<link href="/static/fontawesome/css/font-awesome.min.css" rel="stylesheet">
|
||||||
<script src="/static/bootstrap.min.js"></script>
|
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
{
|
{
|
||||||
"directory" : "src/vendor"
|
"directory" : "bower_components"
|
||||||
}
|
}
|
@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "mitmproxy",
|
"name": "mitmproxy",
|
||||||
"version": "0.1.0",
|
"version": "0.12",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jquery": "components/jquery",
|
"jquery": "",
|
||||||
"lodash": "",
|
"lodash": "",
|
||||||
"react": "",
|
"react": "",
|
||||||
"react-router": "",
|
"react-router": "",
|
||||||
@ -10,5 +10,12 @@
|
|||||||
"qunit": "",
|
"qunit": "",
|
||||||
"benchmark": "",
|
"benchmark": "",
|
||||||
"benchmarkjs-runner": ""
|
"benchmarkjs-runner": ""
|
||||||
|
},
|
||||||
|
"install": {
|
||||||
|
"path": "src/vendor",
|
||||||
|
"sources": {
|
||||||
|
"lodash": "bower_components/lodash/dist/lodash.js",
|
||||||
|
"react": "bower_components/react/react-with-addons.js"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
7
web/src/css/app.less
Normal file
7
web/src/css/app.less
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
.certinstall {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
background-color: green;
|
||||||
|
}
|
6296
web/src/css/bootstrap.css
vendored
6296
web/src/css/bootstrap.css
vendored
File diff suppressed because it is too large
Load Diff
@ -1,7 +0,0 @@
|
|||||||
@import (less) 'bootstrap.css';
|
|
||||||
@import (less) '../vendor/fontawesome/css/font-awesome.css';
|
|
||||||
|
|
||||||
.certinstall {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
14
web/src/vendor/benchmark/.bower.json
vendored
14
web/src/vendor/benchmark/.bower.json
vendored
@ -1,14 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "benchmark",
|
|
||||||
"homepage": "https://github.com/bestiejs/benchmark.js",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"_release": "1.0.0",
|
|
||||||
"_resolution": {
|
|
||||||
"type": "version",
|
|
||||||
"tag": "v1.0.0",
|
|
||||||
"commit": "f3c1476cfac950b186b167843077f2cf7014f080"
|
|
||||||
},
|
|
||||||
"_source": "git://github.com/bestiejs/benchmark.js.git",
|
|
||||||
"_target": "*",
|
|
||||||
"_originalSource": "benchmark"
|
|
||||||
}
|
|
1
web/src/vendor/benchmark/.gitattributes
vendored
1
web/src/vendor/benchmark/.gitattributes
vendored
@ -1 +0,0 @@
|
|||||||
* text=auto
|
|
4
web/src/vendor/benchmark/.gitignore
vendored
4
web/src/vendor/benchmark/.gitignore
vendored
@ -1,4 +0,0 @@
|
|||||||
.DS_Store
|
|
||||||
node_modules/
|
|
||||||
tests/benchmark.air/src/*.js
|
|
||||||
tests/benchmark.air/bin-debug/
|
|
8
web/src/vendor/benchmark/.npmignore
vendored
8
web/src/vendor/benchmark/.npmignore
vendored
@ -1,8 +0,0 @@
|
|||||||
.*
|
|
||||||
nano.*
|
|
||||||
example/
|
|
||||||
plugin/
|
|
||||||
vendor/
|
|
||||||
doc/*.php
|
|
||||||
test/*.air
|
|
||||||
test/*.html
|
|
22
web/src/vendor/benchmark/LICENSE.txt
vendored
22
web/src/vendor/benchmark/LICENSE.txt
vendored
@ -1,22 +0,0 @@
|
|||||||
Copyright 2010-2012 Mathias Bynens <http://mathiasbynens.be/>
|
|
||||||
Based on JSLitmus.js, copyright Robert Kieffer <http://broofa.com/>
|
|
||||||
Modified by John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
135
web/src/vendor/benchmark/README.md
vendored
135
web/src/vendor/benchmark/README.md
vendored
@ -1,135 +0,0 @@
|
|||||||
# Benchmark.js <sup>v1.0.0</sup>
|
|
||||||
|
|
||||||
A [robust](http://calendar.perfplanet.com/2010/bulletproof-javascript-benchmarks/ "Bulletproof JavaScript benchmarks") benchmarking library that works on nearly all JavaScript platforms<sup><a name="fnref1" href="#fn1">1</a></sup>, supports high-resolution timers, and returns statistically significant results. As seen on [jsPerf](http://jsperf.com/).
|
|
||||||
|
|
||||||
## Download
|
|
||||||
|
|
||||||
* [Development source](https://raw.github.com/bestiejs/benchmark.js/v1.0.0/benchmark.js)
|
|
||||||
|
|
||||||
## Dive in
|
|
||||||
|
|
||||||
We’ve got [API docs](http://benchmarkjs.com/docs) and [unit tests](http://benchmarkjs.com/tests).
|
|
||||||
|
|
||||||
For a list of upcoming features, check out our [roadmap](https://github.com/bestiejs/benchmark.js/wiki/Roadmap).
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
Benchmark.js has been tested in at least Adobe AIR 3.1, Chrome 5-21, Firefox 1.5-13, IE 6-9, Opera 9.25-12.01, Safari 3-6, Node.js 0.8.6, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC5.
|
|
||||||
|
|
||||||
## Installation and usage
|
|
||||||
|
|
||||||
In a browser or Adobe AIR:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script src="benchmark.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
Optionally, expose Java’s nanosecond timer by adding the `nano` applet to the `<body>`:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<applet code="nano" archive="nano.jar"></applet>
|
|
||||||
```
|
|
||||||
|
|
||||||
Or enable Chrome’s microsecond timer by using the [command line switch](http://peter.sh/experiments/chromium-command-line-switches/#enable-benchmarking):
|
|
||||||
|
|
||||||
--enable-benchmarking
|
|
||||||
|
|
||||||
Via [npm](http://npmjs.org/):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install benchmark
|
|
||||||
```
|
|
||||||
|
|
||||||
In [Node.js](http://nodejs.org/) and [RingoJS v0.8.0+](http://ringojs.org/):
|
|
||||||
|
|
||||||
```js
|
|
||||||
var Benchmark = require('benchmark');
|
|
||||||
```
|
|
||||||
|
|
||||||
Optionally, use the [microtime module](https://github.com/wadey/node-microtime) by Wade Simmons:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install microtime
|
|
||||||
```
|
|
||||||
|
|
||||||
In [RingoJS v0.7.0-](http://ringojs.org/):
|
|
||||||
|
|
||||||
```js
|
|
||||||
var Benchmark = require('benchmark').Benchmark;
|
|
||||||
```
|
|
||||||
|
|
||||||
In [Rhino](http://www.mozilla.org/rhino/):
|
|
||||||
|
|
||||||
```js
|
|
||||||
load('benchmark.js');
|
|
||||||
```
|
|
||||||
|
|
||||||
In an AMD loader like [RequireJS](http://requirejs.org/):
|
|
||||||
|
|
||||||
```js
|
|
||||||
require({
|
|
||||||
'paths': {
|
|
||||||
'benchmark': 'path/to/benchmark'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
['benchmark'], function(Benchmark) {
|
|
||||||
console.log(Benchmark.version);
|
|
||||||
});
|
|
||||||
|
|
||||||
// or with platform.js
|
|
||||||
// https://github.com/bestiejs/platform.js
|
|
||||||
require({
|
|
||||||
'paths': {
|
|
||||||
'benchmark': 'path/to/benchmark',
|
|
||||||
'platform': 'path/to/platform'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
['benchmark', 'platform'], function(Benchmark, platform) {
|
|
||||||
Benchmark.platform = platform;
|
|
||||||
console.log(Benchmark.platform.name);
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
Usage example:
|
|
||||||
|
|
||||||
```js
|
|
||||||
var suite = new Benchmark.Suite;
|
|
||||||
|
|
||||||
// add tests
|
|
||||||
suite.add('RegExp#test', function() {
|
|
||||||
/o/.test('Hello World!');
|
|
||||||
})
|
|
||||||
.add('String#indexOf', function() {
|
|
||||||
'Hello World!'.indexOf('o') > -1;
|
|
||||||
})
|
|
||||||
// add listeners
|
|
||||||
.on('cycle', function(event) {
|
|
||||||
console.log(String(event.target));
|
|
||||||
})
|
|
||||||
.on('complete', function() {
|
|
||||||
console.log('Fastest is ' + this.filter('fastest').pluck('name'));
|
|
||||||
})
|
|
||||||
// run async
|
|
||||||
.run({ 'async': true });
|
|
||||||
|
|
||||||
// logs:
|
|
||||||
// > RegExp#test x 4,161,532 +-0.99% (59 cycles)
|
|
||||||
// > String#indexOf x 6,139,623 +-1.00% (131 cycles)
|
|
||||||
// > Fastest is String#indexOf
|
|
||||||
```
|
|
||||||
|
|
||||||
## BestieJS
|
|
||||||
|
|
||||||
Benchmark.js is part of the BestieJS *"Best in Class"* module collection. This means we promote solid browser/environment support, ES5 precedents, unit testing, and plenty of documentation.
|
|
||||||
|
|
||||||
## Authors
|
|
||||||
|
|
||||||
* [Mathias Bynens](http://mathiasbynens.be/)
|
|
||||||
[![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter")
|
|
||||||
* [John-David Dalton](http://allyoucanleet.com/)
|
|
||||||
[![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter")
|
|
||||||
|
|
||||||
## Contributors
|
|
||||||
|
|
||||||
* [Kit Cambridge](http://kitcambridge.github.com/)
|
|
||||||
[![twitter/kitcambridge](http://gravatar.com/avatar/6662a1d02f351b5ef2f8b4d815804661?s=70)](https://twitter.com/kitcambridge "Follow @kitcambridge on Twitter")
|
|
3919
web/src/vendor/benchmark/benchmark.js
vendored
3919
web/src/vendor/benchmark/benchmark.js
vendored
File diff suppressed because it is too large
Load Diff
2629
web/src/vendor/benchmark/doc/README.md
vendored
2629
web/src/vendor/benchmark/doc/README.md
vendored
File diff suppressed because it is too large
Load Diff
35
web/src/vendor/benchmark/doc/parse.php
vendored
35
web/src/vendor/benchmark/doc/parse.php
vendored
@ -1,35 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
// cleanup requested filepath
|
|
||||||
$file = isset($_GET['f']) ? $_GET['f'] : 'benchmark';
|
|
||||||
$file = preg_replace('#(\.*[\/])+#', '', $file);
|
|
||||||
$file .= preg_match('/\.[a-z]+$/', $file) ? '' : '.js';
|
|
||||||
|
|
||||||
// output filename
|
|
||||||
if (isset($_GET['o'])) {
|
|
||||||
$output = $_GET['o'];
|
|
||||||
} else if (isset($_SERVER['argv'][1])) {
|
|
||||||
$output = $_SERVER['argv'][1];
|
|
||||||
} else {
|
|
||||||
$output = basename($file);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
require('../vendor/docdown/docdown.php');
|
|
||||||
|
|
||||||
// generate Markdown
|
|
||||||
$markdown = docdown(array(
|
|
||||||
'path' => '../' . $file,
|
|
||||||
'title' => 'Benchmark.js <sup>v1.0.0</sup>',
|
|
||||||
'url' => 'https://github.com/bestiejs/benchmark.js/blob/master/benchmark.js'
|
|
||||||
));
|
|
||||||
|
|
||||||
// save to a .md file
|
|
||||||
file_put_contents($output . '.md', $markdown);
|
|
||||||
|
|
||||||
// print
|
|
||||||
header('Content-Type: text/plain;charset=utf-8');
|
|
||||||
echo $markdown . PHP_EOL;
|
|
||||||
|
|
||||||
?>
|
|
287
web/src/vendor/benchmark/example/jsperf/index.html
vendored
287
web/src/vendor/benchmark/example/jsperf/index.html
vendored
@ -1,287 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="description" content="This is just a test document for Benchmark.js.">
|
|
||||||
<title>Benchmark.js test page | jsPerf</title>
|
|
||||||
<!-- http://jsperf.com/benchmark-js-test-page -->
|
|
||||||
<link rel="stylesheet" href="main.css">
|
|
||||||
<script>document.documentElement.className = 'js'</script>
|
|
||||||
<!--[if lt IE 9]><script src="https://raw.github.com/bestiejs/html5.js/master/html5.js"></script><![endif]-->
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<article>
|
|
||||||
<hgroup>
|
|
||||||
<h1>Benchmark.js test page</h1>
|
|
||||||
<h2>JavaScript performance comparison</h2>
|
|
||||||
</hgroup>
|
|
||||||
|
|
||||||
<p class="meta">
|
|
||||||
Test case created by <a href="http://mathiasbynens.be/">Mathias</a>
|
|
||||||
<time datetime="2010-08-02T18:45:23+02:00" pubdate>40 seconds ago</time>
|
|
||||||
and last updated <time datetime="2010-08-02T18:45:51+02:00">12 seconds ago</time>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<h2>Info</h2>
|
|
||||||
<p>
|
|
||||||
This is just a test document for Benchmark.js.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="prep-code">
|
|
||||||
<h2>Preparation code</h2>
|
|
||||||
<pre><code><span
|
|
||||||
class="sc2"><<span class="kw2">div</span>></span>Lorem ipsum<span
|
|
||||||
class="sc2"><<span class="sy0">/</span><span class="kw2">div</span>></span><br><span
|
|
||||||
class="sc2"><<span class="kw2">script</span>></span><br> <span
|
|
||||||
class="kw2">var</span> arr <span class="sy0">=</span> <span class="br0">[</span><span
|
|
||||||
class="nu0">1</span><span class="sy0">,</span> <span class="nu0">5</span><span
|
|
||||||
class="sy0">,</span> <span class="nu0">4</span><span class="sy0">,</span> <span
|
|
||||||
class="nu0">2</span><span class="sy0">,</span> <span class="nu0">3</span><span
|
|
||||||
class="br0">]</span><span class="sy0">;</span><br><br> <span
|
|
||||||
class="kw2">function</span> init<span class="br0">(</span><span
|
|
||||||
class="br0">)</span> <span class="br0">{</span><br> window.<span
|
|
||||||
class="me1">console</span> <span class="sy0">&&</span> console.<span
|
|
||||||
class="me1">log</span><span class="br0">(</span><span class="st0">'init called'</span><span
|
|
||||||
class="br0">)</span><span class="sy0">;</span><br> <span
|
|
||||||
class="br0">}</span><br><span class="sc2"><<span class="sy0">/</span><span
|
|
||||||
class="kw2">script</span>></span><br><span class="sc2"><<span
|
|
||||||
class="kw2">script</span>></span><br>Benchmark.<span class="me1">prototype</span>.<span
|
|
||||||
class="me1">setup</span> <span class="sy0">=</span> <span class="kw2">function</span><span
|
|
||||||
class="br0">(</span><span class="br0">)</span> <span class="br0">{</span><br> window.<span
|
|
||||||
class="me1">foo</span> <span class="sy0">=</span> <span class="nu0">42</span><span
|
|
||||||
class="sy0">;</span><br> <span class="kw2">var</span> x <span
|
|
||||||
class="sy0">=</span> arr<span class="sy0">;</span><br><span class="br0">}</span><span
|
|
||||||
class="sy0">;</span><br><br>Benchmark.<span class="me1">prototype</span>.<span
|
|
||||||
class="me1">teardown</span> <span class="sy0">=</span> <span class="kw2">function</span><span
|
|
||||||
class="br0">(</span><span class="br0">) </span><span class="br0">{</span><br> window.<span
|
|
||||||
class="me1">foo</span> <span class="sy0">=</span> <span class="nu0">24</span><span
|
|
||||||
class="sy0">;</span><br><span class="br0">}</span><span class="sy0">;</span><br><span
|
|
||||||
class="sc2"><<span class="sy0">/</span><span class="kw2">script</span>></span></code></pre>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<h2>Preparation code output</h2>
|
|
||||||
<div class="user-output">
|
|
||||||
<div>Lorem ipsum</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="runner">
|
|
||||||
<h2>Test runner</h2>
|
|
||||||
<p id="firebug">
|
|
||||||
<strong>Warning! For accurate results, please disable Firebug before running the tests. <a href="http://jsperf.com/faq#firebug-warning">(Why?)</a></strong>
|
|
||||||
</p>
|
|
||||||
<p id="java">
|
|
||||||
<strong>Java applet disabled.</strong>
|
|
||||||
</p>
|
|
||||||
<p id="status">
|
|
||||||
<noscript>
|
|
||||||
<strong>To run the tests, please <a href="http://enable-javascript.com/">enable JavaScript</a> and reload the page.</strong>
|
|
||||||
</noscript>
|
|
||||||
</p>
|
|
||||||
<div id="controls">
|
|
||||||
<button id="run" type="button"></button>
|
|
||||||
</div>
|
|
||||||
<table id="test-table">
|
|
||||||
<caption>Testing in <span id="user-agent"></span></caption>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th colspan="2">Test</th>
|
|
||||||
<th title="Operations per second (higher is better)">Ops/sec</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<th scope="row" id="title-1">
|
|
||||||
<div>Normal</div>
|
|
||||||
</th>
|
|
||||||
<td class="code">
|
|
||||||
<pre><code>x.<span class="me1">sort</span><span class="br0">(</span><span
|
|
||||||
class="kw2">function</span><span class="br0">(</span>a<span
|
|
||||||
class="sy0">,</span> b<span class="br0">)</span> <span
|
|
||||||
class="br0">{</span><br> <span class="kw1">return</span> a <span
|
|
||||||
class="sy0">-</span> b<span class="sy0">;</span><br><span
|
|
||||||
class="br0">}</span><span class="br0">)</span><span
|
|
||||||
class="sy0">;</span></code></pre>
|
|
||||||
</td>
|
|
||||||
<td id="results-1" class="results"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th scope="row" id="title-2">
|
|
||||||
<div>Exit Early</div>
|
|
||||||
</th>
|
|
||||||
<td class="code">
|
|
||||||
<pre><code>x.<span class="me1">sort</span><span class="br0">(</span><span
|
|
||||||
class="kw2">function</span><span class="br0">(</span>a<span
|
|
||||||
class="sy0">,</span> b<span class="br0">)</span> <span
|
|
||||||
class="br0">{</span><br> <span class="kw1">return</span> a <span
|
|
||||||
class="sy0">-</span> b<span class="sy0">;</span><br><span
|
|
||||||
class="br0">}</span><span class="br0">)</span><span
|
|
||||||
class="sy0">;</span><br><span class="kw1">return</span><span
|
|
||||||
class="sy0">;</span></code></pre>
|
|
||||||
</td>
|
|
||||||
<td id="results-2" class="results"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th scope="row" id="title-3">
|
|
||||||
<div>Async</div>
|
|
||||||
</th>
|
|
||||||
<td class="code">
|
|
||||||
<pre><code><strong class="co1">// async test</strong><br>setTimeout<span
|
|
||||||
class="br0">(</span><span class="kw2">function</span><span
|
|
||||||
class="br0">(</span><span class="br0">)</span> <span
|
|
||||||
class="br0">{</span><br> deferred.<span
|
|
||||||
class="me1">resolve</span><span class="br0">(</span><span
|
|
||||||
class="br0">)</span><span class="sy0">;</span><br><span
|
|
||||||
class="br0">}</span><span class="sy0">,</span> <span
|
|
||||||
class="nu0">10</span><span class="br0">)</span><span
|
|
||||||
class="sy0">;</span></code></pre>
|
|
||||||
</td>
|
|
||||||
<td id="results-3" class="results"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th scope="row" id="title-4">
|
|
||||||
<div>Error</div>
|
|
||||||
</th>
|
|
||||||
<td class="code">
|
|
||||||
<pre><code>x.<span class="me1">foo</span><span class="br0">(</span><span
|
|
||||||
class="br0">)</span><span class="sy0">;</span> <span
|
|
||||||
class="co1">// unknown method</span></code></pre>
|
|
||||||
</td>
|
|
||||||
<td id="results-4" class="results"></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<th scope="row" id="title-5">
|
|
||||||
<div>Comments</div>
|
|
||||||
</th>
|
|
||||||
<td class="code">
|
|
||||||
<pre><code><span class="co1">// comments at start</span><br>x.<span
|
|
||||||
class="me1">reverse</span><span class="br0">(</span><span
|
|
||||||
class="br0">)</span>.<span class="me1">sort</span><span
|
|
||||||
class="br0">(</span><span class="kw2">function</span><span
|
|
||||||
class="br0">(</span>a<span class="sy0">,</span> b<span
|
|
||||||
class="br0">)</span> <span class="br0">{</span><br> <span
|
|
||||||
class="kw1">return</span> a <span class="sy0">-</span> b<span
|
|
||||||
class="sy0">;</span><br><span class="br0">}</span><span
|
|
||||||
class="br0">)</span><span class="sy0">;</span><br><span
|
|
||||||
class="co1">// comments at end</span></code></pre>
|
|
||||||
</td>
|
|
||||||
<td id="results-5" class="results"></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
You can <a href="#" rel="nofollow">edit these tests or add even more tests to this page</a>
|
|
||||||
by appending <code>/edit</code> to the URL.
|
|
||||||
</p>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<h2 id="results">Compare results of other browsers</h2>
|
|
||||||
<div id="bs-results"></div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<section id="comments">
|
|
||||||
<h1>0 comments</h1>
|
|
||||||
<div id="comments-wrapper">
|
|
||||||
<form action="#comment-form" method="post" id="comment-form">
|
|
||||||
<fieldset>
|
|
||||||
<h2>Add a comment</h2>
|
|
||||||
<div>
|
|
||||||
<label for="author">Name <em title="This field is required">*</em></label>
|
|
||||||
<input type="text" name="author" id="author" required>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label for="author-email">Email <em title="This field is required">*</em></label>
|
|
||||||
<label class="inline">
|
|
||||||
<input type="email" name="author-email" id="author-email" required> (only used for Gravatar)
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label for="author-url">URL </label>
|
|
||||||
<input type="url" name="author-url" id="author-url">
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<label for="message">Message <em title="This field is required">*</em><span>Markdown syntax is allowed</span></label>
|
|
||||||
<textarea name="message" id="message" required></textarea>
|
|
||||||
</div>
|
|
||||||
<div class="question">
|
|
||||||
<label for="question">Are you a spammer? <span>(just answer the question)</span></label>
|
|
||||||
<input type="text" name="question" id="question">
|
|
||||||
</div>
|
|
||||||
<div class="buttons">
|
|
||||||
<input type="submit" class="submit" value="Add comment">
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
</article>
|
|
||||||
|
|
||||||
<footer>
|
|
||||||
© 2011 <a href="http://jsperf.com/">jsPerf.com</a>
|
|
||||||
· <a href="http://jsperf.com/browse">Browse</a>
|
|
||||||
· <a href="http://jsperf.com/popular">Popular tests</a>
|
|
||||||
· <a href="http://jsperf.com/faq">FAQ</a>
|
|
||||||
· <a href="http://jsperf.com/faq#donate">Donate</a>
|
|
||||||
· <a href="http://twitter.com/jsprf" rel="nofollow">twitter: @jsprf</a>
|
|
||||||
· <a href="http://benchmarkjs.com/">Benchmark.js</a>
|
|
||||||
· by <a href="http://mathiasbynens.be/" title="Mathias Bynens, front-end web developer">@mathias</a>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<script src="../../vendor/platform.js/platform.js"></script>
|
|
||||||
<script src="../../benchmark.js"></script>
|
|
||||||
<script src="ui.js"></script>
|
|
||||||
<script src="../../plugin/ui.browserscope.js"></script>
|
|
||||||
<script>
|
|
||||||
var arr = [1, 5, 4, 2, 3];
|
|
||||||
|
|
||||||
function init() {
|
|
||||||
window.console && console.log('init called');
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
ui.browserscope.key = 'agt1YS1wcm9maWxlcnINCxIEVGVzdBjR6NELDA';
|
|
||||||
ui.browserscope.selector = '#bs-results';
|
|
||||||
|
|
||||||
ui.add('Normal', '\
|
|
||||||
x.sort(function(a, b) {\n\
|
|
||||||
return a - b;\n\
|
|
||||||
});'
|
|
||||||
)
|
|
||||||
.add('Exit Early', '\
|
|
||||||
x.sort(function(a, b) {\n\
|
|
||||||
return a - b;\n\
|
|
||||||
});\n\
|
|
||||||
return;'
|
|
||||||
)
|
|
||||||
.add('Async', {
|
|
||||||
'defer': true,
|
|
||||||
'fn': '\
|
|
||||||
setTimeout(function() {\n\
|
|
||||||
deferred.resolve();\n\
|
|
||||||
}, 10);'
|
|
||||||
})
|
|
||||||
.add('Error', '\
|
|
||||||
x.foo(); // unknown method'
|
|
||||||
)
|
|
||||||
.add('Comments', '\
|
|
||||||
// comments at start\n\
|
|
||||||
x.reverse().sort(function(a, b) {\n\
|
|
||||||
return a - b;\n\
|
|
||||||
});\n\
|
|
||||||
// comments at end'
|
|
||||||
);
|
|
||||||
|
|
||||||
Benchmark.prototype.setup = '\
|
|
||||||
window.foo = 42;\n\
|
|
||||||
var x = arr;';
|
|
||||||
|
|
||||||
Benchmark.prototype.teardown = '\
|
|
||||||
window.foo = 24;';
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
588
web/src/vendor/benchmark/example/jsperf/main.css
vendored
588
web/src/vendor/benchmark/example/jsperf/main.css
vendored
@ -1,588 +0,0 @@
|
|||||||
html, body, h1, h2, h3, fieldset, #faq, #faq dt, #faq dd {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
table, p, ul, h1, h2, h3, #error-info, form div, #faq, .bs-rt {
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
button, input, textarea, a, .bs-rt {
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
-webkit-border-radius: 4px;
|
|
||||||
border-radius: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
html, input, textarea, button {
|
|
||||||
font: 1em/1.5 sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
html {
|
|
||||||
background: #c4c4c4;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background: #fff;
|
|
||||||
border: solid #aaa;
|
|
||||||
border-width: 0 1px;
|
|
||||||
width: 60em;
|
|
||||||
padding: 0 2.5em;
|
|
||||||
margin: 0 auto;
|
|
||||||
min-height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
color: #357ab0;
|
|
||||||
padding: .2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover, a:focus {
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
blockquote {
|
|
||||||
margin: 0 0 1em;
|
|
||||||
border-left: 5px solid #b4b4b4;
|
|
||||||
padding-left: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
table {
|
|
||||||
width: 100%;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead th, button:hover, button:focus, .submit:hover, .submit:focus, a:hover, a:focus, #comments .meta a:hover, #comments .meta a:focus, li.current a:hover, li.current a:focus, form h3, #comments .owner .meta {
|
|
||||||
background: #1a6ab9;
|
|
||||||
background-image: -moz-linear-gradient(top, #6ca5dd, #1a6ab9);
|
|
||||||
background-image: -o-linear-gradient(top, #6ca5dd, #1a6ab9);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#6ca5dd), to(#1a6ab9));
|
|
||||||
background-image: -webkit-linear-gradient(#6ca5dd, #1a6ab9);
|
|
||||||
background-image: linear-gradient(top, #6ca5dd, #1a6ab9);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#6ca5dd', EndColorStr='#1a6ab9');
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
caption, #comments .meta {
|
|
||||||
background: #bcbcbc;
|
|
||||||
background-image: -moz-linear-gradient(top, #d0d0d0, #a7a7a7);
|
|
||||||
background-image: -o-linear-gradient(top, #d0d0d0, #a7a7a7);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#d0d0d0), to(#a7a7a7));
|
|
||||||
background-image: -webkit-linear-gradient(#d0d0d0, #a7a7a7);
|
|
||||||
background-image: linear-gradient(top, #d0d0d0, #a7a7a7);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#d0d0d0', EndColorStr='#a7a7a7');
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
thead th, caption {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.js tbody th:hover, .js tbody th:focus {
|
|
||||||
text-decoration: underline;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
tbody th, td {
|
|
||||||
border: solid #b4b4b4;
|
|
||||||
border-width: 0 1px 1px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
tbody th {
|
|
||||||
background: #dde4ea;
|
|
||||||
min-width: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
tbody th div {
|
|
||||||
max-width: 200px;
|
|
||||||
word-wrap: break-word;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.results {
|
|
||||||
text-align: center;
|
|
||||||
border-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.results span, small {
|
|
||||||
display: block;
|
|
||||||
font-size: .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
td, th, caption {
|
|
||||||
padding: .2em .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.fastest {
|
|
||||||
background: #9cee82;
|
|
||||||
}
|
|
||||||
|
|
||||||
tr:last-child td, tr:last-child th {
|
|
||||||
border-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.slowest, td.error, .invalid {
|
|
||||||
background: pink;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* needs its own rule because of buggy IE */
|
|
||||||
:focus:invalid {
|
|
||||||
background: pink;
|
|
||||||
}
|
|
||||||
|
|
||||||
td.error {
|
|
||||||
text-transform: uppercase;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
button, .submit {
|
|
||||||
padding: .35em .5em;
|
|
||||||
cursor: pointer;
|
|
||||||
color: #000;
|
|
||||||
border: 1px solid #999;
|
|
||||||
background: #dadada;
|
|
||||||
background-image: -moz-linear-gradient(top, #ebebeb, #b8b8b8);
|
|
||||||
background-image: -o-linear-gradient(top, #ebebeb, #b8b8b8);
|
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#b8b8b8));
|
|
||||||
background-image: -webkit-linear-gradient(top, #ebebeb, #b8b8b8);
|
|
||||||
background-image: linear-gradient(top, #ebebeb, #b8b8b8);
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#ebebeb', EndColorStr='#b8b8b8');
|
|
||||||
}
|
|
||||||
|
|
||||||
a:hover span, a:focus span, #comments .owner .meta a {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#controls, #run, .buttons {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover, button:focus, .submit:hover, .submit:focus {
|
|
||||||
border-color: #357ab0
|
|
||||||
}
|
|
||||||
|
|
||||||
#add-buttons button {
|
|
||||||
padding: .15em .4em;
|
|
||||||
font-size: 11px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
form label {
|
|
||||||
float: left;
|
|
||||||
width: 14em;
|
|
||||||
cursor: pointer;
|
|
||||||
text-align: right;
|
|
||||||
margin-right: 1em;
|
|
||||||
padding: .4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
label.inline {
|
|
||||||
float: none;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
label[for="visible"], label[for$="][defer]"] {
|
|
||||||
position: relative;
|
|
||||||
top: -.37em;
|
|
||||||
}
|
|
||||||
|
|
||||||
label span {
|
|
||||||
display: block;
|
|
||||||
font-size: 90%;
|
|
||||||
color: #b4b4b4;
|
|
||||||
}
|
|
||||||
|
|
||||||
label em {
|
|
||||||
color: red;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.js #advanced {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#show-advanced {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.js #show-advanced {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
section {
|
|
||||||
display: block;
|
|
||||||
border-top: 1px solid #ccc;
|
|
||||||
padding-top: 2em;
|
|
||||||
margin: 2em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
textarea {
|
|
||||||
resize: vertical;
|
|
||||||
height: 15em;
|
|
||||||
width: 42.6em;
|
|
||||||
*width: 42.4em; /* IE < 8 */
|
|
||||||
}
|
|
||||||
|
|
||||||
input, textarea {
|
|
||||||
border: 1px solid #b4b4b4;
|
|
||||||
padding: .4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#visible, #calibrate { /* checkboxes, for IE */
|
|
||||||
border: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
form h2, form h3, form h4, p.error, .preview, #add-libraries, #add-buttons {
|
|
||||||
padding-left: 250px;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.js .question, hgroup h2, #controls, #firebug, #java {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
width: 100%;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
table #results-1 {
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
table pre {
|
|
||||||
*padding: 1.5em 0; /* IE < 8 */
|
|
||||||
*overflow-y: hidden; /* IE < 8 */
|
|
||||||
}
|
|
||||||
|
|
||||||
table pre, table td.code {
|
|
||||||
width: 650px;
|
|
||||||
}
|
|
||||||
|
|
||||||
mark {
|
|
||||||
background: #ff9;
|
|
||||||
padding: .2em .1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1, h2, h3, h4 {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
padding-top: 1em;
|
|
||||||
font-size: 1.4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
form h3 {
|
|
||||||
padding-top: .2em;
|
|
||||||
padding-bottom: .2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 em {
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 strong {
|
|
||||||
font-style: italic;
|
|
||||||
font-family: Monaco, 'Lucida Console', monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
li.current a {
|
|
||||||
background: #90ee85;
|
|
||||||
}
|
|
||||||
|
|
||||||
#donate {
|
|
||||||
display: block;
|
|
||||||
background: #ffffdc;
|
|
||||||
border: 1px solid #faa700;
|
|
||||||
padding: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#donate h1 {
|
|
||||||
padding-top: 0;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#paypal {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer {
|
|
||||||
display: block;
|
|
||||||
margin-top: 2em;
|
|
||||||
padding: .5em 0 1.5em;
|
|
||||||
border-top: 2px solid #c4c4c4;
|
|
||||||
}
|
|
||||||
|
|
||||||
#add-test {
|
|
||||||
margin-right: .3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-chart {
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-logo {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-logo span, applet {
|
|
||||||
position: absolute;
|
|
||||||
left: -9999em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-logo a {
|
|
||||||
display: block;
|
|
||||||
width: 232px;
|
|
||||||
height: 39px;
|
|
||||||
filter: none;
|
|
||||||
background: url(//www.browserscope.org/static/img/logo.png) 0 0 no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-ua {
|
|
||||||
padding: .5em .5em 0;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-results .bs-rt {
|
|
||||||
font-size: 10pt;
|
|
||||||
padding: .5em;
|
|
||||||
background: #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-results td {
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
padding: .4em;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-results .rt-ua-cur {
|
|
||||||
font-style: italic;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-results .bs-rt-message {
|
|
||||||
padding: 3em;
|
|
||||||
text-align: center;
|
|
||||||
font-weight: bold;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bs-results .google-visualization-table-tr-head td {
|
|
||||||
white-space: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
#controls {
|
|
||||||
margin-top: -3.35em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments h1 {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments .meta img {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments .meta img {
|
|
||||||
top: 2px;
|
|
||||||
left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments .meta {
|
|
||||||
padding-left: 35px;
|
|
||||||
margin-top: 0;
|
|
||||||
width: 923px;
|
|
||||||
line-height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments .meta a {
|
|
||||||
font-weight: bold;
|
|
||||||
color: #555;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments article div {
|
|
||||||
padding: 0 1em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#comments article {
|
|
||||||
display: block;
|
|
||||||
border: 1px solid #b4b4b4;
|
|
||||||
position: relative;
|
|
||||||
margin-bottom: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* needs its own rule (cannot be grouped with `tbody th`) because of buggy IE */
|
|
||||||
#comments article:target {
|
|
||||||
background: #dde4ea;
|
|
||||||
}
|
|
||||||
|
|
||||||
#error-info.show, .meta strong, #firebug strong, #java strong, #status strong {
|
|
||||||
background: pink;
|
|
||||||
border: 1px solid #b00b00;
|
|
||||||
padding: .4em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#error-info.show {
|
|
||||||
padding: .5em 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#error-info, code, samp, var, textarea, #slug {
|
|
||||||
font-family: Monaco, monospace;
|
|
||||||
font-size: .9em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#java strong {
|
|
||||||
background: #ffffdc;
|
|
||||||
border: 1px solid #faa700;
|
|
||||||
}
|
|
||||||
|
|
||||||
#slug {
|
|
||||||
font-size: 1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#faq dt {
|
|
||||||
margin-top: 1em;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
#faq dt a {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#faq dt:hover a {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
#faq dt:target, #faq dt:target + dd {
|
|
||||||
background: #90ee85;
|
|
||||||
margin: 0 -.8em;
|
|
||||||
padding: 0 .8em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#faq dt:target + dd {
|
|
||||||
padding-bottom: .5em;
|
|
||||||
margin-bottom: -.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#faq dt:target {
|
|
||||||
margin-top: .5em;
|
|
||||||
padding-top: .5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#firebug, #java, #status {
|
|
||||||
margin: 0 0 1em;
|
|
||||||
padding: .3em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#prep-code pre {
|
|
||||||
max-height: 500px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
#controls.show, #firebug.show, #java.show {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.co1, .co2, .coMULTI {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.error {
|
|
||||||
color: #b00b00;
|
|
||||||
}
|
|
||||||
|
|
||||||
.imp {
|
|
||||||
color: red;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kw1, .kw3 {
|
|
||||||
color: #006;
|
|
||||||
}
|
|
||||||
|
|
||||||
.kw2 {
|
|
||||||
color: #036;
|
|
||||||
}
|
|
||||||
|
|
||||||
.co1, .coMULTI {
|
|
||||||
color: #060;
|
|
||||||
}
|
|
||||||
|
|
||||||
.co2 {
|
|
||||||
color: #096;
|
|
||||||
}
|
|
||||||
|
|
||||||
.es0 {
|
|
||||||
color: #009;
|
|
||||||
}
|
|
||||||
|
|
||||||
.br0 {
|
|
||||||
color: #090;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sy0 {
|
|
||||||
color: #393;
|
|
||||||
}
|
|
||||||
|
|
||||||
.st0 {
|
|
||||||
color: #36c;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nu0 {
|
|
||||||
color: #c00;
|
|
||||||
}
|
|
||||||
|
|
||||||
.me1 {
|
|
||||||
color: #606;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* < 1051px */
|
|
||||||
@media (max-width: 1050px) {
|
|
||||||
table pre, table td.code {
|
|
||||||
width: 550px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* < 1041px */
|
|
||||||
@media (max-width: 1040px) {
|
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
body, #comments .meta {
|
|
||||||
width: 100%;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/* < 801px */
|
|
||||||
@media (max-width: 800px) {
|
|
||||||
table pre, table td.code {
|
|
||||||
width: 450px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* < 681px */
|
|
||||||
@media (max-width: 680px) {
|
|
||||||
table pre, table td.code {
|
|
||||||
width: 350px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* < 651px */
|
|
||||||
@media (max-width: 650px) {
|
|
||||||
table pre, table td.code {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
}
|
|
745
web/src/vendor/benchmark/example/jsperf/ui.js
vendored
745
web/src/vendor/benchmark/example/jsperf/ui.js
vendored
@ -1,745 +0,0 @@
|
|||||||
/*!
|
|
||||||
* ui.js
|
|
||||||
* Copyright Mathias Bynens <http://mths.be/>
|
|
||||||
* Modified by John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
* Available under MIT license <http://mths.be/mit>
|
|
||||||
*/
|
|
||||||
(function(window, document) {
|
|
||||||
|
|
||||||
/** Java applet archive path */
|
|
||||||
var archive = '../../nano.jar';
|
|
||||||
|
|
||||||
/** Cache of error messages */
|
|
||||||
var errors = [];
|
|
||||||
|
|
||||||
/** Google Analytics account id */
|
|
||||||
var gaId = '';
|
|
||||||
|
|
||||||
/** Cache of event handlers */
|
|
||||||
var handlers = {};
|
|
||||||
|
|
||||||
/** A flag to indicate that the page has loaded */
|
|
||||||
var pageLoaded = false;
|
|
||||||
|
|
||||||
/** Benchmark results element id prefix (e.g. `results-1`) */
|
|
||||||
var prefix = 'results-';
|
|
||||||
|
|
||||||
/** The element responsible for scrolling the page (assumes ui.js is just before </body>) */
|
|
||||||
var scrollEl = document.body;
|
|
||||||
|
|
||||||
/** Used to resolve a value's internal [[Class]] */
|
|
||||||
var toString = {}.toString;
|
|
||||||
|
|
||||||
/** Namespace */
|
|
||||||
var ui = new Benchmark.Suite;
|
|
||||||
|
|
||||||
/** Object containing various CSS class names */
|
|
||||||
var classNames = {
|
|
||||||
// used for error styles
|
|
||||||
'error': 'error',
|
|
||||||
// used to make content visible
|
|
||||||
'show': 'show',
|
|
||||||
// used to reset result styles
|
|
||||||
'results': 'results'
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Used to flag environments/features */
|
|
||||||
var has = {
|
|
||||||
// used for pre-populating form fields
|
|
||||||
'localStorage': !!function() {
|
|
||||||
try {
|
|
||||||
return !localStorage.getItem(+new Date);
|
|
||||||
} catch(e) { }
|
|
||||||
}(),
|
|
||||||
// used to distinguish between a regular test page and an embedded chart
|
|
||||||
'runner': !!$('runner')
|
|
||||||
};
|
|
||||||
|
|
||||||
/** Object containing various text messages */
|
|
||||||
var texts = {
|
|
||||||
// inner text for the various run button states
|
|
||||||
'run': {
|
|
||||||
'again': 'Run again',
|
|
||||||
'ready': 'Run tests',
|
|
||||||
'running': 'Stop running'
|
|
||||||
},
|
|
||||||
// common status values
|
|
||||||
'status': {
|
|
||||||
'again': 'Done. Ready to run again.',
|
|
||||||
'ready': 'Ready to run.'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/** The options object for Benchmark.Suite#run */
|
|
||||||
var runOptions = {
|
|
||||||
'async': true,
|
|
||||||
'queued': true
|
|
||||||
};
|
|
||||||
|
|
||||||
/** API shortcuts */
|
|
||||||
var each = Benchmark.each,
|
|
||||||
extend = Benchmark.extend,
|
|
||||||
filter = Benchmark.filter,
|
|
||||||
forOwn = Benchmark.forOwn,
|
|
||||||
formatNumber = Benchmark.formatNumber,
|
|
||||||
indexOf = Benchmark.indexOf,
|
|
||||||
invoke = Benchmark.invoke,
|
|
||||||
join = Benchmark.join;
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
handlers.benchmark = {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The onCycle callback, used for onStart as well, assigned to new benchmarks.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
'cycle': function() {
|
|
||||||
var bench = this,
|
|
||||||
size = bench.stats.sample.length;
|
|
||||||
|
|
||||||
if (!bench.aborted) {
|
|
||||||
setStatus(bench.name + ' × ' + formatNumber(bench.count) + ' (' +
|
|
||||||
size + ' sample' + (size == 1 ? '' : 's') + ')');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The onStart callback assigned to new benchmarks.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
'start': function() {
|
|
||||||
// call user provided init() function
|
|
||||||
if (isFunction(window.init)) {
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
handlers.button = {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The "run" button click event handler used to run or abort the benchmarks.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
'run': function() {
|
|
||||||
var stopped = !ui.running;
|
|
||||||
ui.abort();
|
|
||||||
ui.length = 0;
|
|
||||||
|
|
||||||
if (stopped) {
|
|
||||||
logError({ 'clear': true });
|
|
||||||
ui.push.apply(ui, filter(ui.benchmarks, function(bench) {
|
|
||||||
return !bench.error && bench.reset();
|
|
||||||
}));
|
|
||||||
ui.run(runOptions);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
handlers.title = {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The title table cell click event handler used to run the corresponding benchmark.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Object} event The event object.
|
|
||||||
*/
|
|
||||||
'click': function(event) {
|
|
||||||
event || (event = window.event);
|
|
||||||
|
|
||||||
var id,
|
|
||||||
index,
|
|
||||||
target = event.target || event.srcElement;
|
|
||||||
|
|
||||||
while (target && !(id = target.id)) {
|
|
||||||
target = target.parentNode;
|
|
||||||
}
|
|
||||||
index = id && --id.split('-')[1] || 0;
|
|
||||||
ui.push(ui.benchmarks[index].reset());
|
|
||||||
ui.running ? ui.render(index) : ui.run(runOptions);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The title cell keyup event handler used to simulate a mouse click when hitting the ENTER key.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Object} event The event object.
|
|
||||||
*/
|
|
||||||
'keyup': function(event) {
|
|
||||||
if (13 == (event || window.event).keyCode) {
|
|
||||||
handlers.title.click(event);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
handlers.window = {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The window hashchange event handler supported by Chrome 5+, Firefox 3.6+, and IE8+.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
'hashchange': function() {
|
|
||||||
ui.parseHash();
|
|
||||||
|
|
||||||
var scrollTop,
|
|
||||||
params = ui.params,
|
|
||||||
chart = params.chart,
|
|
||||||
filterBy = params.filterby;
|
|
||||||
|
|
||||||
if (pageLoaded) {
|
|
||||||
// configure posting
|
|
||||||
ui.browserscope.postable = has.runner && !('nopost' in params);
|
|
||||||
|
|
||||||
// configure chart renderer
|
|
||||||
if (chart || filterBy) {
|
|
||||||
scrollTop = $('results').offsetTop;
|
|
||||||
ui.browserscope.render({ 'chart': chart, 'filterBy': filterBy });
|
|
||||||
}
|
|
||||||
if (has.runner) {
|
|
||||||
// call user provided init() function
|
|
||||||
if (isFunction(window.init)) {
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
// auto-run
|
|
||||||
if ('run' in params) {
|
|
||||||
scrollTop = $('runner').offsetTop;
|
|
||||||
setTimeout(handlers.button.run, 1);
|
|
||||||
}
|
|
||||||
// scroll to the relevant section
|
|
||||||
if (scrollTop) {
|
|
||||||
scrollEl.scrollTop = scrollTop;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The window load event handler used to initialize the UI.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
'load': function() {
|
|
||||||
// only for pages with a comment form
|
|
||||||
if (has.runner) {
|
|
||||||
// init the ui
|
|
||||||
addClass('controls', classNames.show);
|
|
||||||
addListener('run', 'click', handlers.button.run);
|
|
||||||
|
|
||||||
setHTML('run', texts.run.ready);
|
|
||||||
setHTML('user-agent', Benchmark.platform);
|
|
||||||
setStatus(texts.status.ready);
|
|
||||||
|
|
||||||
// answer spammer question
|
|
||||||
$('question').value = 'no';
|
|
||||||
|
|
||||||
// prefill author details
|
|
||||||
if (has.localStorage) {
|
|
||||||
each([$('author'), $('author-email'), $('author-url')], function(element) {
|
|
||||||
element.value = localStorage[element.id] || '';
|
|
||||||
element.oninput = element.onkeydown = function(event) {
|
|
||||||
event && event.type < 'k' && (element.onkeydown = null);
|
|
||||||
localStorage[element.id] = element.value;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// show warning when Firebug is enabled (avoids showing for Firebug Lite)
|
|
||||||
try {
|
|
||||||
// Firebug 1.9 no longer has `console.firebug`
|
|
||||||
if (console.firebug || /firebug/i.test(console.table())) {
|
|
||||||
addClass('firebug', classNames.show);
|
|
||||||
}
|
|
||||||
} catch(e) { }
|
|
||||||
}
|
|
||||||
// evaluate hash values
|
|
||||||
// (delay in an attempt to ensure this is executed after all other window load handlers)
|
|
||||||
setTimeout(function() {
|
|
||||||
pageLoaded = true;
|
|
||||||
handlers.window.hashchange();
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shortcut for document.getElementById().
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Element|String} id The id of the element to retrieve.
|
|
||||||
* @returns {Element} The element, if found, or null.
|
|
||||||
*/
|
|
||||||
function $(id) {
|
|
||||||
return typeof id == 'string' ? document.getElementById(id) : id;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Adds a CSS class name to an element's className property.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Element|String} element The element or id of the element.
|
|
||||||
* @param {String} className The class name.
|
|
||||||
* @returns {Element} The element.
|
|
||||||
*/
|
|
||||||
function addClass(element, className) {
|
|
||||||
if ((element = $(element)) && !hasClass(element, className)) {
|
|
||||||
element.className += (element.className ? ' ' : '') + className;
|
|
||||||
}
|
|
||||||
return element;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Registers an event listener on an element.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Element|String} element The element or id of the element.
|
|
||||||
* @param {String} eventName The name of the event.
|
|
||||||
* @param {Function} handler The event handler.
|
|
||||||
* @returns {Element} The element.
|
|
||||||
*/
|
|
||||||
function addListener(element, eventName, handler) {
|
|
||||||
if ((element = $(element))) {
|
|
||||||
if (typeof element.addEventListener != 'undefined') {
|
|
||||||
element.addEventListener(eventName, handler, false);
|
|
||||||
} else if (typeof element.attachEvent != 'undefined') {
|
|
||||||
element.attachEvent('on' + eventName, handler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return element;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Appends to an element's innerHTML property.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Element|String} element The element or id of the element.
|
|
||||||
* @param {String} html The HTML to append.
|
|
||||||
* @returns {Element} The element.
|
|
||||||
*/
|
|
||||||
function appendHTML(element, html) {
|
|
||||||
if ((element = $(element)) && html != null) {
|
|
||||||
element.innerHTML += html;
|
|
||||||
}
|
|
||||||
return element;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Shortcut for document.createElement().
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {String} tag The tag name of the element to create.
|
|
||||||
* @returns {Element} A new element of the given tag name.
|
|
||||||
*/
|
|
||||||
function createElement(tagName) {
|
|
||||||
return document.createElement(tagName);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if an element is assigned the given class name.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Element|String} element The element or id of the element.
|
|
||||||
* @param {String} className The class name.
|
|
||||||
* @returns {Boolean} If assigned the class name return true, else false.
|
|
||||||
*/
|
|
||||||
function hasClass(element, className) {
|
|
||||||
return !!(element = $(element)) &&
|
|
||||||
(' ' + element.className + ' ').indexOf(' ' + className + ' ') > -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set an element's innerHTML property.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Element|String} element The element or id of the element.
|
|
||||||
* @param {String} html The HTML to set.
|
|
||||||
* @returns {Element} The element.
|
|
||||||
*/
|
|
||||||
function setHTML(element, html) {
|
|
||||||
if ((element = $(element))) {
|
|
||||||
element.innerHTML = html == null ? '' : html;
|
|
||||||
}
|
|
||||||
return element;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the Hz, i.e. operations per second, of `bench` adjusted for the
|
|
||||||
* margin of error.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Object} bench The benchmark object.
|
|
||||||
* @returns {Number} Returns the adjusted Hz.
|
|
||||||
*/
|
|
||||||
function getHz(bench) {
|
|
||||||
return 1 / (bench.stats.mean + bench.stats.moe);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if a value has an internal [[Class]] of Function.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Mixed} value The value to check.
|
|
||||||
* @returns {Boolean} Returns `true` if the value is a function, else `false`.
|
|
||||||
*/
|
|
||||||
function isFunction(value) {
|
|
||||||
return toString.call(value) == '[object Function]';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Appends to or clears the error log.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {String|Object} text The text to append or options object.
|
|
||||||
*/
|
|
||||||
function logError(text) {
|
|
||||||
var table,
|
|
||||||
div = $('error-info'),
|
|
||||||
options = {};
|
|
||||||
|
|
||||||
// juggle arguments
|
|
||||||
if (typeof text == 'object' && text) {
|
|
||||||
options = text;
|
|
||||||
text = options.text;
|
|
||||||
}
|
|
||||||
else if (arguments.length) {
|
|
||||||
options.text = text;
|
|
||||||
}
|
|
||||||
if (!div) {
|
|
||||||
table = $('test-table');
|
|
||||||
div = createElement('div');
|
|
||||||
div.id = 'error-info';
|
|
||||||
table.parentNode.insertBefore(div, table.nextSibling);
|
|
||||||
}
|
|
||||||
if (options.clear) {
|
|
||||||
div.className = div.innerHTML = '';
|
|
||||||
errors.length = 0;
|
|
||||||
}
|
|
||||||
if ('text' in options && indexOf(errors, text) < 0) {
|
|
||||||
errors.push(text);
|
|
||||||
addClass(div, classNames.show);
|
|
||||||
appendHTML(div, text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the status text.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {String} text The text to write to the status.
|
|
||||||
*/
|
|
||||||
function setStatus(text) {
|
|
||||||
setHTML('status', text);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Parses the window.location.hash value into an object assigned to `ui.params`.
|
|
||||||
*
|
|
||||||
* @static
|
|
||||||
* @memberOf ui
|
|
||||||
* @returns {Object} The suite instance.
|
|
||||||
*/
|
|
||||||
function parseHash() {
|
|
||||||
var me = this,
|
|
||||||
hashes = location.hash.slice(1).split('&'),
|
|
||||||
params = me.params || (me.params = {});
|
|
||||||
|
|
||||||
// remove old params
|
|
||||||
forOwn(params, function(value, key) {
|
|
||||||
delete params[key];
|
|
||||||
});
|
|
||||||
|
|
||||||
// add new params
|
|
||||||
each(hashes[0] && hashes, function(value) {
|
|
||||||
value = value.split('=');
|
|
||||||
params[value[0].toLowerCase()] = (value[1] || '').toLowerCase();
|
|
||||||
});
|
|
||||||
return me;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Renders the results table cell of the corresponding benchmark(s).
|
|
||||||
*
|
|
||||||
* @static
|
|
||||||
* @memberOf ui
|
|
||||||
* @param {Number} [index] The index of the benchmark to render.
|
|
||||||
* @returns {Object} The suite instance.
|
|
||||||
*/
|
|
||||||
function render(index) {
|
|
||||||
each(index == null ? (index = 0, ui.benchmarks) : [ui.benchmarks[index]], function(bench) {
|
|
||||||
var parsed,
|
|
||||||
cell = $(prefix + (++index)),
|
|
||||||
error = bench.error,
|
|
||||||
hz = bench.hz;
|
|
||||||
|
|
||||||
// reset title and class
|
|
||||||
cell.title = '';
|
|
||||||
cell.className = classNames.results;
|
|
||||||
|
|
||||||
// status: error
|
|
||||||
if (error) {
|
|
||||||
setHTML(cell, 'Error');
|
|
||||||
addClass(cell, classNames.error);
|
|
||||||
parsed = join(error, '</li><li>');
|
|
||||||
logError('<p>' + error + '.</p>' + (parsed ? '<ul><li>' + parsed + '</li></ul>' : ''));
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// status: running
|
|
||||||
if (bench.running) {
|
|
||||||
setHTML(cell, 'running…');
|
|
||||||
}
|
|
||||||
// status: completed
|
|
||||||
else if (bench.cycles) {
|
|
||||||
// obscure details until the suite has completed
|
|
||||||
if (ui.running) {
|
|
||||||
setHTML(cell, 'completed');
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cell.title = 'Ran ' + formatNumber(bench.count) + ' times in ' +
|
|
||||||
bench.times.cycle.toFixed(3) + ' seconds.';
|
|
||||||
setHTML(cell, formatNumber(hz.toFixed(hz < 100 ? 2 : 0)) +
|
|
||||||
' <small>±' + bench.stats.rme.toFixed(2) + '%</small>');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// status: pending
|
|
||||||
if (ui.running && ui.indexOf(bench) > -1) {
|
|
||||||
setHTML(cell, 'pending…');
|
|
||||||
}
|
|
||||||
// status: ready
|
|
||||||
else {
|
|
||||||
setHTML(cell, 'ready');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return ui;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
ui.on('add', function(event) {
|
|
||||||
var bench = event.target,
|
|
||||||
index = ui.benchmarks.length,
|
|
||||||
id = index + 1,
|
|
||||||
title = $('title-' + id);
|
|
||||||
|
|
||||||
delete ui[--ui.length];
|
|
||||||
ui.benchmarks.push(bench);
|
|
||||||
|
|
||||||
if (has.runner) {
|
|
||||||
title.tabIndex = 0;
|
|
||||||
title.title = 'Click to run this test again.';
|
|
||||||
|
|
||||||
addListener(title, 'click', handlers.title.click);
|
|
||||||
addListener(title, 'keyup', handlers.title.keyup);
|
|
||||||
|
|
||||||
bench.on('start', handlers.benchmark.start);
|
|
||||||
bench.on('start cycle', handlers.benchmark.cycle);
|
|
||||||
ui.render(index);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.on('start cycle', function() {
|
|
||||||
ui.render();
|
|
||||||
setHTML('run', texts.run.running);
|
|
||||||
})
|
|
||||||
.on('complete', function() {
|
|
||||||
var benches = filter(ui.benchmarks, 'successful'),
|
|
||||||
fastest = filter(benches, 'fastest'),
|
|
||||||
slowest = filter(benches, 'slowest');
|
|
||||||
|
|
||||||
ui.render();
|
|
||||||
setHTML('run', texts.run.again);
|
|
||||||
setStatus(texts.status.again);
|
|
||||||
|
|
||||||
// highlight result cells
|
|
||||||
each(benches, function(bench) {
|
|
||||||
var cell = $(prefix + (indexOf(ui.benchmarks, bench) + 1)),
|
|
||||||
fastestHz = getHz(fastest[0]),
|
|
||||||
hz = getHz(bench),
|
|
||||||
percent = (1 - (hz / fastestHz)) * 100,
|
|
||||||
span = cell.getElementsByTagName('span')[0],
|
|
||||||
text = 'fastest';
|
|
||||||
|
|
||||||
if (indexOf(fastest, bench) > -1) {
|
|
||||||
// mark fastest
|
|
||||||
addClass(cell, text);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
text = isFinite(hz)
|
|
||||||
? formatNumber(percent < 1 ? percent.toFixed(2) : Math.round(percent)) + '% slower'
|
|
||||||
: '';
|
|
||||||
|
|
||||||
// mark slowest
|
|
||||||
if (indexOf(slowest, bench) > -1) {
|
|
||||||
addClass(cell, 'slowest');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// write ranking
|
|
||||||
if (span) {
|
|
||||||
setHTML(span, text);
|
|
||||||
} else {
|
|
||||||
appendHTML(cell, '<span>' + text + '</span>');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
ui.browserscope.post();
|
|
||||||
});
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of benchmarks created from test cases.
|
|
||||||
*
|
|
||||||
* @memberOf ui
|
|
||||||
* @type Array
|
|
||||||
*/
|
|
||||||
ui.benchmarks = [];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The parsed query parameters of the pages url hash.
|
|
||||||
*
|
|
||||||
* @memberOf ui
|
|
||||||
* @type Object
|
|
||||||
*/
|
|
||||||
ui.params = {};
|
|
||||||
|
|
||||||
// parse query params into ui.params hash
|
|
||||||
ui.parseHash = parseHash;
|
|
||||||
|
|
||||||
// (re)render the results of one or more benchmarks
|
|
||||||
ui.render = render;
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// expose
|
|
||||||
window.ui = ui;
|
|
||||||
|
|
||||||
// don't let users alert, confirm, prompt, or open new windows
|
|
||||||
window.alert = window.confirm = window.prompt = window.open = function() { };
|
|
||||||
|
|
||||||
// parse hash query params when it changes
|
|
||||||
addListener(window, 'hashchange', handlers.window.hashchange);
|
|
||||||
|
|
||||||
// bootstrap onload
|
|
||||||
addListener(window, 'load', handlers.window.load);
|
|
||||||
|
|
||||||
// parse location hash string
|
|
||||||
ui.parseHash();
|
|
||||||
|
|
||||||
// provide a simple UI for toggling between chart types and filtering results
|
|
||||||
// (assumes ui.js is just before </body>)
|
|
||||||
(function() {
|
|
||||||
var sibling = $('bs-results'),
|
|
||||||
p = createElement('p');
|
|
||||||
|
|
||||||
p.innerHTML =
|
|
||||||
'<span id=charts><strong>Chart type:</strong> <a href=#>bar</a>, ' +
|
|
||||||
'<a href=#>column</a>, <a href=#>line</a>, <a href=#>pie</a>, ' +
|
|
||||||
'<a href=#>table</a></span><br>' +
|
|
||||||
'<span id=filters><strong>Filter:</strong> <a href=#>popular</a>, ' +
|
|
||||||
'<a href=#>all</a>, <a href=#>desktop</a>, <a href=#>family</a>, ' +
|
|
||||||
'<a href=#>major</a>, <a href=#>minor</a>, <a href=#>mobile</a>, ' +
|
|
||||||
'<a href=#>prerelease</a></span>';
|
|
||||||
|
|
||||||
sibling.parentNode.insertBefore(p, sibling);
|
|
||||||
|
|
||||||
// use DOM0 event handler to simplify canceling the default action
|
|
||||||
$('charts').onclick =
|
|
||||||
$('filters').onclick = function(event) {
|
|
||||||
event || (event = window.event);
|
|
||||||
var target = event.target || event.srcElement;
|
|
||||||
if (target.href || (target = target.parentNode).href) {
|
|
||||||
ui.browserscope.render(
|
|
||||||
target.parentNode.id == 'charts'
|
|
||||||
? { 'chart': target.innerHTML }
|
|
||||||
: { 'filterBy': target.innerHTML }
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// cancel the default action
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
}());
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// fork for runner or embedded chart
|
|
||||||
if (has.runner) {
|
|
||||||
// detect the scroll element
|
|
||||||
(function() {
|
|
||||||
var scrollTop,
|
|
||||||
div = document.createElement('div'),
|
|
||||||
body = document.body,
|
|
||||||
bodyStyle = body.style,
|
|
||||||
bodyHeight = bodyStyle.height,
|
|
||||||
html = document.documentElement,
|
|
||||||
htmlStyle = html.style,
|
|
||||||
htmlHeight = htmlStyle.height;
|
|
||||||
|
|
||||||
bodyStyle.height = htmlStyle.height = 'auto';
|
|
||||||
div.style.cssText = 'display:block;height:9001px;';
|
|
||||||
body.insertBefore(div, body.firstChild);
|
|
||||||
scrollTop = html.scrollTop;
|
|
||||||
|
|
||||||
// set `scrollEl` that's used in `handlers.window.hashchange()`
|
|
||||||
if (html.clientWidth !== 0 && ++html.scrollTop && html.scrollTop == scrollTop + 1) {
|
|
||||||
scrollEl = html;
|
|
||||||
}
|
|
||||||
body.removeChild(div);
|
|
||||||
bodyStyle.height = bodyHeight;
|
|
||||||
htmlStyle.height = htmlHeight;
|
|
||||||
html.scrollTop = scrollTop;
|
|
||||||
}());
|
|
||||||
|
|
||||||
// catch and display errors from the "preparation code"
|
|
||||||
window.onerror = function(message, fileName, lineNumber) {
|
|
||||||
logError('<p>' + message + '.</p><ul><li>' + join({
|
|
||||||
'message': message,
|
|
||||||
'fileName': fileName,
|
|
||||||
'lineNumber': lineNumber
|
|
||||||
}, '</li><li>') + '</li></ul>');
|
|
||||||
scrollEl.scrollTop = $('error-info').offsetTop;
|
|
||||||
};
|
|
||||||
// inject nano applet
|
|
||||||
// (assumes ui.js is just before </body>)
|
|
||||||
if ('nojava' in ui.params) {
|
|
||||||
addClass('java', classNames.show);
|
|
||||||
} else {
|
|
||||||
// using innerHTML avoids an alert in some versions of IE6
|
|
||||||
document.body.insertBefore(setHTML(createElement('div'),
|
|
||||||
'<applet code=nano archive=' + archive + '>').lastChild, document.body.firstChild);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// short circuit unusable methods
|
|
||||||
ui.render = function() { };
|
|
||||||
ui.off('start cycle complete');
|
|
||||||
setTimeout(function() {
|
|
||||||
ui.off();
|
|
||||||
ui.browserscope.post = function() { };
|
|
||||||
invoke(ui.benchmarks, 'off');
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// optimized asynchronous Google Analytics snippet based on
|
|
||||||
// http://mathiasbynens.be/notes/async-analytics-snippet
|
|
||||||
if (gaId) {
|
|
||||||
(function() {
|
|
||||||
var script = createElement('script'),
|
|
||||||
sibling = document.getElementsByTagName('script')[0];
|
|
||||||
|
|
||||||
window._gaq = [['_setAccount', gaId], ['_trackPageview']];
|
|
||||||
script.src = '//www.google-analytics.com/ga.js';
|
|
||||||
sibling.parentNode.insertBefore(script, sibling);
|
|
||||||
}());
|
|
||||||
}
|
|
||||||
}(this, document));
|
|
BIN
web/src/vendor/benchmark/nano.jar
vendored
BIN
web/src/vendor/benchmark/nano.jar
vendored
Binary file not shown.
23
web/src/vendor/benchmark/nano.java
vendored
23
web/src/vendor/benchmark/nano.java
vendored
@ -1,23 +0,0 @@
|
|||||||
/**
|
|
||||||
* Simple class to expose nanoTime() to JavaScript.
|
|
||||||
*
|
|
||||||
* Compile using
|
|
||||||
* javac -g:none -target 1.5 nano.java
|
|
||||||
* jar cfM nano.jar nano.class
|
|
||||||
* java -jar proguard.jar @options.txt
|
|
||||||
*
|
|
||||||
* ProGuard (http://proguard.sourceforge.net)
|
|
||||||
* options.txt
|
|
||||||
* -injars nano.jar
|
|
||||||
* -outjars nano_s.jar
|
|
||||||
* -libraryjars <java.home>/jre/lib/rt.jar
|
|
||||||
* -keep public class nano {
|
|
||||||
* public long nanoTime();
|
|
||||||
* }
|
|
||||||
*/
|
|
||||||
import java.applet.Applet;
|
|
||||||
public class nano extends Applet {
|
|
||||||
public long nanoTime() {
|
|
||||||
return System.nanoTime();
|
|
||||||
}
|
|
||||||
}
|
|
54
web/src/vendor/benchmark/package.json
vendored
54
web/src/vendor/benchmark/package.json
vendored
@ -1,54 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "benchmark",
|
|
||||||
"version": "1.0.0",
|
|
||||||
"description": "A benchmarking library that works on nearly all JavaScript platforms, supports high-resolution timers, and returns statistically significant results.",
|
|
||||||
"homepage": "http://benchmarkjs.com/",
|
|
||||||
"main": "benchmark",
|
|
||||||
"keywords": [
|
|
||||||
"benchmark",
|
|
||||||
"narwhal",
|
|
||||||
"node",
|
|
||||||
"performance",
|
|
||||||
"ringo",
|
|
||||||
"speed"
|
|
||||||
],
|
|
||||||
"licenses": [
|
|
||||||
{
|
|
||||||
"type": "MIT",
|
|
||||||
"url": "http://mths.be/mit"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"author": {
|
|
||||||
"name": "Mathias Bynens",
|
|
||||||
"email": "mathias@benchmarkjs.com",
|
|
||||||
"web": "http://mathiasbynens.be/"
|
|
||||||
},
|
|
||||||
"maintainers": [
|
|
||||||
{
|
|
||||||
"name": "John-David Dalton",
|
|
||||||
"email": "john.david.dalton@gmail.com",
|
|
||||||
"web": "http://allyoucanleet.com/"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Mathias Bynens",
|
|
||||||
"email": "mathias@benchmarkjs.com",
|
|
||||||
"web": "http://mathiasbynens.be/"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"bugs": {
|
|
||||||
"email": "bugs@benchmarkjs.com",
|
|
||||||
"url": "https://github.com/bestiejs/benchmark.js/issues"
|
|
||||||
},
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "https://github.com/bestiejs/benchmark.js.git"
|
|
||||||
},
|
|
||||||
"engines": [
|
|
||||||
"node",
|
|
||||||
"rhino"
|
|
||||||
],
|
|
||||||
"directories": {
|
|
||||||
"doc": "./doc",
|
|
||||||
"test": "./test"
|
|
||||||
}
|
|
||||||
}
|
|
1052
web/src/vendor/benchmark/plugin/ui.browserscope.js
vendored
1052
web/src/vendor/benchmark/plugin/ui.browserscope.js
vendored
File diff suppressed because it is too large
Load Diff
@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<actionScriptProperties analytics="false" mainApplicationPath="air.mxml" projectUUID="f1d53a64-add9-48c3-9e81-bd3b388963e7" version="10">
|
|
||||||
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="true" fteInMXComponents="false" generateAccessible="true" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin-debug" removeUnusedRSL="true" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="true" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
|
|
||||||
<compilerSourcePath/>
|
|
||||||
<libraryPath defaultLinkType="0"/>
|
|
||||||
<sourceAttachmentPath/>
|
|
||||||
</compiler>
|
|
||||||
<applications>
|
|
||||||
<application path="air.mxml">
|
|
||||||
<airExcludes/>
|
|
||||||
</application>
|
|
||||||
</applications>
|
|
||||||
<modules/>
|
|
||||||
<buildCSSFiles/>
|
|
||||||
<flashCatalyst validateFlashCatalystCompatibility="false"/>
|
|
||||||
<buildTargets>
|
|
||||||
<buildTarget buildTargetName="default">
|
|
||||||
<airSettings airCertificatePath="" airTimestamp="true" version="1">
|
|
||||||
<airExcludes/>
|
|
||||||
</airSettings>
|
|
||||||
<actionScriptSettings version="1"/>
|
|
||||||
</buildTarget>
|
|
||||||
</buildTargets>
|
|
||||||
</actionScriptProperties>
|
|
@ -1,2 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<flexProperties enableServiceManager="false" flexServerFeatures="0" flexServerType="0" toolCompile="true" useServerFlexSDK="false" version="2"/>
|
|
@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<projectDescription>
|
|
||||||
<name>benchmark.air</name>
|
|
||||||
<comment></comment>
|
|
||||||
<projects>
|
|
||||||
</projects>
|
|
||||||
<buildSpec>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.adobe.flexbuilder.project.flexbuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
<buildCommand>
|
|
||||||
<name>com.adobe.flexbuilder.project.apollobuilder</name>
|
|
||||||
<arguments>
|
|
||||||
</arguments>
|
|
||||||
</buildCommand>
|
|
||||||
</buildSpec>
|
|
||||||
<natures>
|
|
||||||
<nature>com.adobe.flexbuilder.project.apollonature</nature>
|
|
||||||
<nature>com.adobe.flexbuilder.project.flexnature</nature>
|
|
||||||
<nature>com.adobe.flexbuilder.project.actionscriptnature</nature>
|
|
||||||
</natures>
|
|
||||||
</projectDescription>
|
|
@ -1,6 +0,0 @@
|
|||||||
# Instructions
|
|
||||||
|
|
||||||
Before importing the Flash Builder project please perform the following steps:
|
|
||||||
|
|
||||||
1. Copy/paste `benchmark.js` into the `src` folder.
|
|
||||||
2. Copy/paste `AIRIntrospector.js` from some place like `C:\Program Files\Adobe\Adobe Flash Builder 4.5\sdks\4.5.0\frameworks\libs\air\AIRIntrospector.js` into the `src` folder.
|
|
Binary file not shown.
@ -1,16 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
|
||||||
<application xmlns="http://ns.adobe.com/air/application/2.6">
|
|
||||||
<id>air</id>
|
|
||||||
<filename>air</filename>
|
|
||||||
<name>air</name>
|
|
||||||
<versionNumber>0.0.0</versionNumber>
|
|
||||||
<initialWindow>
|
|
||||||
<content>index.html</content>
|
|
||||||
<resizable>true</resizable>
|
|
||||||
<width>320</width>
|
|
||||||
<height>240</height>
|
|
||||||
<autoOrients>false</autoOrients>
|
|
||||||
<fullScreen>false</fullScreen>
|
|
||||||
<visible>true</visible>
|
|
||||||
</initialWindow>
|
|
||||||
</application>
|
|
@ -1,7 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
|
|
||||||
xmlns:s="library://ns.adobe.com/flex/spark"
|
|
||||||
xmlns:mx="library://ns.adobe.com/flex/mx">
|
|
||||||
<fx:Declarations>
|
|
||||||
</fx:Declarations>
|
|
||||||
</s:WindowedApplication>
|
|
@ -1,37 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Benchmark.js Adobe AIR Test Suite</title>
|
|
||||||
<script src="AIRIntrospector.js"></script>
|
|
||||||
<script>
|
|
||||||
var console = air.Introspector.Console;
|
|
||||||
</script>
|
|
||||||
<script src="benchmark.js"></script>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<script>
|
|
||||||
(function() {
|
|
||||||
var suite = new Benchmark.Suite;
|
|
||||||
|
|
||||||
// add tests
|
|
||||||
suite.add('RegExp#test', function() {
|
|
||||||
/o/.test('Hello World!');
|
|
||||||
})
|
|
||||||
.add('String#indexOf', function() {
|
|
||||||
'Hello World!'.indexOf('o') > -1;
|
|
||||||
})
|
|
||||||
// add listeners
|
|
||||||
.on('cycle', function(event) {
|
|
||||||
console.log(event.target);
|
|
||||||
})
|
|
||||||
.on('complete', function() {
|
|
||||||
console.log('Fastest is ' + this.filter('fastest').pluck('name'));
|
|
||||||
})
|
|
||||||
// don't run async to avoid JavaScript security errors
|
|
||||||
// http://help.adobe.com/en_US/AIR/1.5/devappshtml/WS5b3ccc516d4fbf351e63e3d118666ade46-7f0e.html
|
|
||||||
.run({ 'async': false });
|
|
||||||
}());
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
85
web/src/vendor/benchmark/test/index.html
vendored
85
web/src/vendor/benchmark/test/index.html
vendored
@ -1,85 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<title>Benchmark.js Test Suite</title>
|
|
||||||
<link rel="stylesheet" href="../vendor/qunit/qunit/qunit.css">
|
|
||||||
<style>
|
|
||||||
applet {
|
|
||||||
position: absolute;
|
|
||||||
left: -9999em;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="qunit"></div>
|
|
||||||
<script src="../benchmark.js"></script>
|
|
||||||
<script src="../vendor/platform.js/platform.js"></script>
|
|
||||||
<script>
|
|
||||||
(function() {
|
|
||||||
var hasOwnProperty = function hasOwnProperty(key) {
|
|
||||||
var parent = (this.constructor || Object).prototype;
|
|
||||||
return key in this && !(key in parent && this[key] === parent[key]);
|
|
||||||
};
|
|
||||||
if (typeof {}.hasOwnProperty != 'function') {
|
|
||||||
// redefine for Safari 2, else use the less accurate fallback for others
|
|
||||||
if ({}.__proto__ == Object.prototype) {
|
|
||||||
hasOwnProperty = function hasOwnProperty(key) {
|
|
||||||
var result;
|
|
||||||
this.__proto__ = [this.__proto__, this.__proto__ = null, result = key in this][0];
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
Object.prototype.hasOwnProperty = hasOwnProperty;
|
|
||||||
}
|
|
||||||
}());
|
|
||||||
|
|
||||||
// load the nanosecond timer
|
|
||||||
if (!/[?&]nojava=true(?:&|$)/.test(location.search)) {
|
|
||||||
document.write('<applet code="nano" archive="../nano.jar"></applet>');
|
|
||||||
}
|
|
||||||
|
|
||||||
// avoid syntax errors for `QUnit.throws` in older Firefoxes
|
|
||||||
document.write(platform.name == 'Firefox' && /^1\b/.test(platform.version)
|
|
||||||
? '<script src="../vendor/qunit/qunit/qunit-1.8.0.js"><\/script>'
|
|
||||||
: '<script src="../vendor/qunit/qunit/qunit.js"><\/script>'
|
|
||||||
);
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
// load test.js if not using require.js
|
|
||||||
document.write(/[?&]norequire=true(?:&|$)/.test(location.search)
|
|
||||||
? '<script src="test.js"><\/script>'
|
|
||||||
: '<script src="../vendor/requirejs/require.js"><\/script>'
|
|
||||||
);
|
|
||||||
</script>
|
|
||||||
<script>
|
|
||||||
// load Benchmark as a module
|
|
||||||
var Benchmark2;
|
|
||||||
|
|
||||||
window.require && require({
|
|
||||||
'baseUrl': '../vendor/requirejs/',
|
|
||||||
'urlArgs': 't=' + (+new Date),
|
|
||||||
'paths': {
|
|
||||||
'benchmark': '../../benchmark',
|
|
||||||
'platform': '../platform.js/platform'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
['benchmark', 'platform'], function(Benchmark, platform) {
|
|
||||||
Benchmark2 = Benchmark;
|
|
||||||
Benchmark2.platform = platform;
|
|
||||||
require(['test.js']);
|
|
||||||
});
|
|
||||||
|
|
||||||
// set a more readable browser name
|
|
||||||
window.onload = function() {
|
|
||||||
var timeoutId = setInterval(function() {
|
|
||||||
var ua = document.getElementById('qunit-userAgent');
|
|
||||||
if (ua) {
|
|
||||||
ua.innerHTML = platform;
|
|
||||||
clearInterval(timeoutId);
|
|
||||||
}
|
|
||||||
}, 15);
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
9
web/src/vendor/benchmark/test/run-test.sh
vendored
9
web/src/vendor/benchmark/test/run-test.sh
vendored
@ -1,9 +0,0 @@
|
|||||||
cd "$(dirname "$0")"
|
|
||||||
for cmd in rhino ringo narwhal node; do
|
|
||||||
echo ""
|
|
||||||
echo "Testing in $cmd..."
|
|
||||||
$cmd test.js
|
|
||||||
done
|
|
||||||
echo ""
|
|
||||||
echo "Testing in a browser..."
|
|
||||||
open index.html
|
|
2074
web/src/vendor/benchmark/test/test.js
vendored
2074
web/src/vendor/benchmark/test/test.js
vendored
File diff suppressed because it is too large
Load Diff
@ -1,20 +0,0 @@
|
|||||||
Copyright 2011-2012 John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -1,33 +0,0 @@
|
|||||||
# Docdown <sup>v1.0.0</sup>
|
|
||||||
|
|
||||||
A simple JSDoc to Markdown documentation generator.
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
The documentation for Docdown can be viewed here: [/doc/README.md](https://github.com/jdalton/docdown/blob/master/doc/README.md#readme)
|
|
||||||
|
|
||||||
For a list of upcoming features, check out our [roadmap](https://github.com/jdalton/docdown/wiki/Roadmap).
|
|
||||||
|
|
||||||
## Installation and usage
|
|
||||||
|
|
||||||
Usage example:
|
|
||||||
|
|
||||||
```php
|
|
||||||
require("docdown.php");
|
|
||||||
|
|
||||||
// generate Markdown
|
|
||||||
$markdown = docdown(array(
|
|
||||||
"path" => $filepath,
|
|
||||||
"url" => "https://github.com/username/project/blob/master/my.js"
|
|
||||||
));
|
|
||||||
```
|
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
* [John-David Dalton](http://allyoucanleet.com/)
|
|
||||||
[![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter")
|
|
||||||
|
|
||||||
## Contributors
|
|
||||||
|
|
||||||
* [Mathias Bynens](http://mathiasbynens.be/)
|
|
||||||
[![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter")
|
|
@ -1,38 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*!
|
|
||||||
* Docdown v1.0.0-pre
|
|
||||||
* Copyright 2011-2012 John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
* Available under MIT license <http://mths.be/mit>
|
|
||||||
*/
|
|
||||||
require(dirname(__FILE__) . '/src/DocDown/Generator.php');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates Markdown from JSDoc entries in a given file.
|
|
||||||
*
|
|
||||||
* @param {Array} [$options=array()] The options array.
|
|
||||||
* @returns {String} The generated Markdown.
|
|
||||||
* @example
|
|
||||||
*
|
|
||||||
* // specify a file path
|
|
||||||
* $markdown = docdown(array(
|
|
||||||
* // path to js file
|
|
||||||
* 'path' => $filepath,
|
|
||||||
* // url used to reference line numbers in code
|
|
||||||
* 'url' => 'https://github.com/username/project/blob/master/my.js'
|
|
||||||
* ));
|
|
||||||
*
|
|
||||||
* // or pass raw js
|
|
||||||
* $markdown = docdown(array(
|
|
||||||
* // raw JavaScript source
|
|
||||||
* 'source' => $rawJS,
|
|
||||||
* // documentation title
|
|
||||||
* 'title' => 'My API Documentation',
|
|
||||||
* // url used to reference line numbers in code
|
|
||||||
* 'url' => 'https://github.com/username/project/blob/master/my.js'
|
|
||||||
* ));
|
|
||||||
*/
|
|
||||||
function docdown( $options = array() ) {
|
|
||||||
$gen = new Generator($options);
|
|
||||||
return $gen->generate();
|
|
||||||
}
|
|
||||||
?>
|
|
@ -1,304 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A class to simplify parsing a single JSDoc entry.
|
|
||||||
*/
|
|
||||||
class Entry {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The documentation entry.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @type String
|
|
||||||
*/
|
|
||||||
public $entry = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The language highlighter used for code examples.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @type String
|
|
||||||
*/
|
|
||||||
public $lang = '';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The source code.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @type String
|
|
||||||
*/
|
|
||||||
public $source = '';
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Entry constructor.
|
|
||||||
*
|
|
||||||
* @constructor
|
|
||||||
* @param {String} $entry The documentation entry to analyse.
|
|
||||||
* @param {String} $source The source code.
|
|
||||||
* @param {String} $lang The language highlighter used for code examples.
|
|
||||||
*/
|
|
||||||
public function __construct( $entry, $source, $lang = 'js' ) {
|
|
||||||
$this->entry = $entry;
|
|
||||||
$this->lang = $lang;
|
|
||||||
$this->source = str_replace(PHP_EOL, "\n", $source);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the documentation entries from source code.
|
|
||||||
*
|
|
||||||
* @static
|
|
||||||
* @memberOf Entry
|
|
||||||
* @param {String} $source The source code.
|
|
||||||
* @returns {Array} The array of entries.
|
|
||||||
*/
|
|
||||||
public static function getEntries( $source ) {
|
|
||||||
preg_match_all('#/\*\*(?![-!])[\s\S]*?\*/\s*[^\n]+#', $source, $result);
|
|
||||||
return array_pop($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the entry is a function reference.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {Boolean} Returns `true` if the entry is a function reference, else `false`.
|
|
||||||
*/
|
|
||||||
private function isFunction() {
|
|
||||||
return !!(
|
|
||||||
$this->isCtor() ||
|
|
||||||
count($this->getParams()) ||
|
|
||||||
count($this->getReturns()) ||
|
|
||||||
preg_match('/\*\s*@function\b/', $this->entry)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the function call from the entry.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {String} The function call.
|
|
||||||
*/
|
|
||||||
public function getCall() {
|
|
||||||
preg_match('#\*/\s*(?:function ([^(]*)|(.*?)(?=[:=,]|return\b))#', $this->entry, $result);
|
|
||||||
if ($result = array_pop($result)) {
|
|
||||||
$result = array_pop(explode('var ', trim(trim(array_pop(explode('.', $result))), "'")));
|
|
||||||
}
|
|
||||||
// resolve name
|
|
||||||
// avoid $this->getName() because it calls $this->getCall()
|
|
||||||
preg_match('#\*\s*@name\s+([^\n]+)#', $this->entry, $name);
|
|
||||||
if (count($name)) {
|
|
||||||
$name = trim($name[1]);
|
|
||||||
} else {
|
|
||||||
$name = $result;
|
|
||||||
}
|
|
||||||
// compile function call syntax
|
|
||||||
if ($this->isFunction()) {
|
|
||||||
// compose parts
|
|
||||||
$result = array($result);
|
|
||||||
$params = $this->getParams();
|
|
||||||
foreach ($params as $param) {
|
|
||||||
$result[] = $param[1];
|
|
||||||
}
|
|
||||||
// format
|
|
||||||
$result = $name .'('. implode(array_slice($result, 1), ', ') .')';
|
|
||||||
$result = str_replace(', [', ' [, ', str_replace('], [', ', ', $result));
|
|
||||||
}
|
|
||||||
return $result ? $result : $name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the entry description.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {String} The entry description.
|
|
||||||
*/
|
|
||||||
public function getDesc() {
|
|
||||||
preg_match('#/\*\*(?:\s*\*)?([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
|
|
||||||
if (count($result)) {
|
|
||||||
$type = $this->getType();
|
|
||||||
$result = trim(preg_replace('/(?:^|\n)\s*\* ?/', ' ', $result[1]));
|
|
||||||
$result = ($type == 'Function' ? '' : '(' . str_replace('|', ', ', trim($type, '{}')) . '): ') . $result;
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the entry `example` data.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {String} The entry `example` data.
|
|
||||||
*/
|
|
||||||
public function getExample() {
|
|
||||||
preg_match('#\*\s*@example\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
|
|
||||||
if (count($result)) {
|
|
||||||
$result = trim(preg_replace('/(?:^|\n)\s*\* ?/', "\n", $result[1]));
|
|
||||||
$result = '```' . $this->lang . "\n" . $result . "\n```";
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolves the line number of the entry.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {Number} The line number.
|
|
||||||
*/
|
|
||||||
public function getLineNumber() {
|
|
||||||
preg_match_all('/\n/', substr($this->source, 0, strrpos($this->source, $this->entry) + strlen($this->entry)), $lines);
|
|
||||||
return count(array_pop($lines)) + 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the entry `member` data.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @param {Number} $index The index of the array value to return.
|
|
||||||
* @returns {Array|String} The entry `member` data.
|
|
||||||
*/
|
|
||||||
public function getMembers( $index = null ) {
|
|
||||||
preg_match('#\*\s*@member(?:Of)?\s+([^\n]+)#', $this->entry, $result);
|
|
||||||
if (count($result)) {
|
|
||||||
$result = trim(preg_replace('/(?:^|\n)\s*\* ?/', ' ', $result[1]));
|
|
||||||
$result = preg_split('/,\s*/', $result);
|
|
||||||
}
|
|
||||||
return $index !== null ? @$result[$index] : $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the entry `name` data.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {String} The entry `name` data.
|
|
||||||
*/
|
|
||||||
public function getName() {
|
|
||||||
preg_match('#\*\s*@name\s+([^\n]+)#', $this->entry, $result);
|
|
||||||
if (count($result)) {
|
|
||||||
$result = trim(preg_replace('/(?:^|\n)\s*\* ?/', ' ', $result[1]));
|
|
||||||
} else {
|
|
||||||
$result = array_shift(explode('(', $this->getCall()));
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the entry `param` data.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @param {Number} $index The index of the array value to return.
|
|
||||||
* @returns {Array} The entry `param` data.
|
|
||||||
*/
|
|
||||||
public function getParams( $index = null ) {
|
|
||||||
preg_match_all('#\*\s*@param\s+\{([^}]+)\}\s+(\[.+\]|[$\w]+)\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#i', $this->entry, $result);
|
|
||||||
if (count($result = array_filter(array_slice($result, 1)))) {
|
|
||||||
// repurpose array
|
|
||||||
foreach ($result as $param) {
|
|
||||||
foreach ($param as $key => $value) {
|
|
||||||
if (!is_array($result[0][$key])) {
|
|
||||||
$result[0][$key] = array();
|
|
||||||
}
|
|
||||||
$result[0][$key][] = trim(preg_replace('/(?:^|\n)\s*\* ?/', ' ', $value));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$result = $result[0];
|
|
||||||
}
|
|
||||||
return $index !== null ? @$result[$index] : $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the entry `returns` data.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {String} The entry `returns` data.
|
|
||||||
*/
|
|
||||||
public function getReturns() {
|
|
||||||
preg_match('#\*\s*@returns\s+\{([^}]+)\}\s+([\s\S]*?)(?=\*\s\@[a-z]|\*/)#', $this->entry, $result);
|
|
||||||
if (count($result)) {
|
|
||||||
$result = array_map('trim', array_slice($result, 1));
|
|
||||||
$result[0] = str_replace('|', ', ', $result[0]);
|
|
||||||
$result[1] = preg_replace('/(?:^|\n)\s*\* ?/', ' ', $result[1]);
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the entry `type` data.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {String} The entry `type` data.
|
|
||||||
*/
|
|
||||||
public function getType() {
|
|
||||||
preg_match('#\*\s*@type\s+([^\n]+)#', $this->entry, $result);
|
|
||||||
if (count($result)) {
|
|
||||||
$result = trim(preg_replace('/(?:^|\n)\s*\* ?/', ' ', $result[1]));
|
|
||||||
} else {
|
|
||||||
$result = $this->isFunction() ? 'Function' : 'Unknown';
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if an entry is a constructor.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {Boolean} Returns true if a constructor, else false.
|
|
||||||
*/
|
|
||||||
public function isCtor() {
|
|
||||||
return !!preg_match('/\*\s*@constructor\b/', $this->entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if an entry *is* assigned to a prototype.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {Boolean} Returns true if assigned to a prototype, else false.
|
|
||||||
*/
|
|
||||||
public function isPlugin() {
|
|
||||||
return !$this->isCtor() && !$this->isPrivate() && !$this->isStatic();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if an entry is private.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {Boolean} Returns true if private, else false.
|
|
||||||
*/
|
|
||||||
public function isPrivate() {
|
|
||||||
return !!preg_match('/\*\s*@private\b/', $this->entry) || strrpos($this->entry, '@') === false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if an entry is *not* assigned to a prototype.
|
|
||||||
*
|
|
||||||
* @memberOf Entry
|
|
||||||
* @returns {Boolean} Returns true if not assigned to a prototype, else false.
|
|
||||||
*/
|
|
||||||
public function isStatic() {
|
|
||||||
$public = !$this->isPrivate();
|
|
||||||
$result = $public && !!preg_match('/\*\s*@static\b/', $this->entry);
|
|
||||||
|
|
||||||
// set in cases where it isn't explicitly stated
|
|
||||||
if ($public && !$result) {
|
|
||||||
if ($parent = array_pop(preg_split('/[#.]/', $this->getMembers(0)))) {
|
|
||||||
foreach (Entry::getEntries($this->source) as $entry) {
|
|
||||||
$entry = new Entry($entry, $this->source);
|
|
||||||
if ($entry->getName() == $parent) {
|
|
||||||
$result = !$entry->isCtor();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$result = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
@ -1,416 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
require(dirname(__FILE__) . "/Entry.php");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates Markdown from JSDoc entries.
|
|
||||||
*/
|
|
||||||
class Generator {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of JSDoc entries.
|
|
||||||
*
|
|
||||||
* @memberOf Generator
|
|
||||||
* @type Array
|
|
||||||
*/
|
|
||||||
public $entries = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An options array used to configure the generator.
|
|
||||||
*
|
|
||||||
* @memberOf Generator
|
|
||||||
* @type Array
|
|
||||||
*/
|
|
||||||
public $options = array();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The entire file's source code.
|
|
||||||
*
|
|
||||||
* @memberOf Generator
|
|
||||||
* @type String
|
|
||||||
*/
|
|
||||||
public $source = '';
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The Generator constructor.
|
|
||||||
*
|
|
||||||
* @constructor
|
|
||||||
* @param {String} $source The source code to parse.
|
|
||||||
* @param {Array} $options The options array.
|
|
||||||
*/
|
|
||||||
public function __construct( $source, $options = array() ) {
|
|
||||||
// juggle arguments
|
|
||||||
if (is_array($source)) {
|
|
||||||
$options = $source;
|
|
||||||
} else {
|
|
||||||
$options['source'] = $source;
|
|
||||||
}
|
|
||||||
if (isset($options['source']) && realpath($options['source'])) {
|
|
||||||
$options['path'] = $options['source'];
|
|
||||||
}
|
|
||||||
if (isset($options['path'])) {
|
|
||||||
preg_match('/(?<=\.)[a-z]+$/', $options['path'], $ext);
|
|
||||||
$options['source'] = file_get_contents($options['path']);
|
|
||||||
$ext = array_pop($ext);
|
|
||||||
|
|
||||||
if (!isset($options['lang']) && $ext) {
|
|
||||||
$options['lang'] = $ext;
|
|
||||||
}
|
|
||||||
if (!isset($options['title'])) {
|
|
||||||
$options['title'] = ucfirst(basename($options['path'])) . ' API documentation';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!isset($options['lang'])) {
|
|
||||||
$options['lang'] = 'js';
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->options = $options;
|
|
||||||
$this->source = str_replace(PHP_EOL, "\n", $options['source']);
|
|
||||||
$this->entries = Entry::getEntries($this->source);
|
|
||||||
|
|
||||||
foreach ($this->entries as $index => $value) {
|
|
||||||
$this->entries[$index] = new Entry($value, $this->source, $options['lang']);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Performs common string formatting operations.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @static
|
|
||||||
* @memberOf Generator
|
|
||||||
* @param {String} $string The string to format.
|
|
||||||
* @returns {String} The formatted string.
|
|
||||||
*/
|
|
||||||
private static function format($string) {
|
|
||||||
$counter = 0;
|
|
||||||
|
|
||||||
// tokenize inline code snippets
|
|
||||||
preg_match_all('/`[^`]+`/', $string, $tokenized);
|
|
||||||
$tokenized = $tokenized[0];
|
|
||||||
foreach ($tokenized as $snippet) {
|
|
||||||
$string = str_replace($snippet, '__token' . ($counter++) .'__', $string);
|
|
||||||
}
|
|
||||||
|
|
||||||
// italicize parentheses
|
|
||||||
$string = preg_replace('/(^|\s)(\([^)]+\))/', '$1*$2*', $string);
|
|
||||||
|
|
||||||
// mark numbers as inline code
|
|
||||||
$string = preg_replace('/ (-?\d+(?:.\d+)?)(?!\.[^\n])/', ' `$1`', $string);
|
|
||||||
|
|
||||||
// detokenize inline code snippets
|
|
||||||
$counter = 0;
|
|
||||||
foreach ($tokenized as $snippet) {
|
|
||||||
$string = str_replace('__token' . ($counter++) . '__', $snippet, $string);
|
|
||||||
}
|
|
||||||
|
|
||||||
return trim($string);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Modify a string by replacing named tokens with matching assoc. array values.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @static
|
|
||||||
* @memberOf Generator
|
|
||||||
* @param {String} $string The string to modify.
|
|
||||||
* @param {Array|Object} $object The template object.
|
|
||||||
* @returns {String} The modified string.
|
|
||||||
*/
|
|
||||||
private static function interpolate($string, $object) {
|
|
||||||
preg_match_all('/#\{([^}]+)\}/', $string, $tokens);
|
|
||||||
$tokens = array_unique(array_pop($tokens));
|
|
||||||
|
|
||||||
foreach ($tokens as $token) {
|
|
||||||
$pattern = '/#\{' . $token . '\}/';
|
|
||||||
$replacement = '';
|
|
||||||
|
|
||||||
if (is_object($object)) {
|
|
||||||
preg_match('/\(([^)]+?)\)$/', $token, $args);
|
|
||||||
$args = preg_split('/,\s*/', array_pop($args));
|
|
||||||
$method = 'get' . ucfirst(str_replace('/\([^)]+?\)$/', '', $token));
|
|
||||||
|
|
||||||
if (method_exists($object, $method)) {
|
|
||||||
$replacement = (string) call_user_func_array(array($object, $method), $args);
|
|
||||||
} else if (isset($object->{$token})) {
|
|
||||||
$replacement = (string) $object->{$token};
|
|
||||||
}
|
|
||||||
} else if (isset($object[$token])) {
|
|
||||||
$replacement = (string) $object[$token];
|
|
||||||
}
|
|
||||||
$string = preg_replace($pattern, trim($replacement), $string);
|
|
||||||
}
|
|
||||||
return Generator::format($string);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolves the entry's hash used to navigate the documentation.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @memberOf Generator
|
|
||||||
* @param {Number|Object} $entry The entry object.
|
|
||||||
* @param {String} $member The name of the member.
|
|
||||||
* @returns {String} The url hash.
|
|
||||||
*/
|
|
||||||
private function getHash( $entry, $member = '' ) {
|
|
||||||
$entry = is_numeric($entry) ? $this->entries[$entry] : $entry;
|
|
||||||
$member = !$member ? $entry->getMembers(0) : $member;
|
|
||||||
$result = ($member ? $member . ($entry->isPlugin() ? 'prototype' : '') : '') . $entry->getCall();
|
|
||||||
$result = preg_replace('/\(\[|\[\]/', '', $result);
|
|
||||||
$result = preg_replace('/[ =\'"{}.()\]]/', '', $result);
|
|
||||||
$result = preg_replace('/[[#,]/', '-', $result);
|
|
||||||
return strtolower($result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolves the entry's url for the specific line number.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @memberOf Generator
|
|
||||||
* @param {Number|Object} $entry The entry object.
|
|
||||||
* @returns {String} The url.
|
|
||||||
*/
|
|
||||||
private function getLineUrl( $entry ) {
|
|
||||||
$entry = is_numeric($entry) ? $this->entries($entry) : $entry;
|
|
||||||
return $this->options['url'] . '#L' . $entry->getLineNumber();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Extracts the character used to separate the entry's name from its member.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @memberOf Generator
|
|
||||||
* @param {Number|Object} $entry The entry object.
|
|
||||||
* @returns {String} The separator.
|
|
||||||
*/
|
|
||||||
private function getSeparator( $entry ) {
|
|
||||||
$entry = is_numeric($entry) ? $this->entries($entry) : $entry;
|
|
||||||
return $entry->isPlugin() ? '.prototype.' : '.';
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Generates Markdown from JSDoc entries.
|
|
||||||
*
|
|
||||||
* @memberOf Generator
|
|
||||||
* @returns {String} The rendered Markdown.
|
|
||||||
*/
|
|
||||||
public function generate() {
|
|
||||||
$api = array();
|
|
||||||
$compiling = false;
|
|
||||||
$openTag = "\n<!-- div -->\n";
|
|
||||||
$closeTag = "\n<!-- /div -->\n";
|
|
||||||
$result = array('# ' . $this->options['title']);
|
|
||||||
$toc = 'toc';
|
|
||||||
|
|
||||||
// initialize $api array
|
|
||||||
foreach ($this->entries as $entry) {
|
|
||||||
|
|
||||||
if (!$entry->isPrivate()) {
|
|
||||||
$name = $entry->getName();
|
|
||||||
$members = $entry->getMembers();
|
|
||||||
$members = count($members) ? $members : array('');
|
|
||||||
|
|
||||||
foreach ($members as $member) {
|
|
||||||
// create api category arrays
|
|
||||||
if (!isset($api[$member]) && $member) {
|
|
||||||
$api[$member] = new Entry('', '', $entry->lang);
|
|
||||||
$api[$member]->static = array();
|
|
||||||
$api[$member]->plugin = array();
|
|
||||||
}
|
|
||||||
// append entry to api category
|
|
||||||
if (!$member || $entry->isCtor() || ($entry->getType() == 'Object' &&
|
|
||||||
!preg_match('/[=:]\s*null\s*[,;]?$/', $entry->entry))) {
|
|
||||||
$member = ($member ? $member . ($entry->isPlugin() ? '#' : '.') : '') . $name;
|
|
||||||
$entry->static = @$api[$member] ? $api[$member]->static : array();
|
|
||||||
$entry->plugin = @$api[$member] ? $api[$member]->plugin : array();
|
|
||||||
$api[$member] = $entry;
|
|
||||||
}
|
|
||||||
else if ($entry->isStatic()) {
|
|
||||||
$api[$member]->static[] = $entry;
|
|
||||||
} else if (!$entry->isCtor()) {
|
|
||||||
$api[$member]->plugin[] = $entry;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// custom sort for root level entries
|
|
||||||
// TODO: see how well it handles deeper namespace traversal
|
|
||||||
function sortCompare($a, $b) {
|
|
||||||
$score = array( 'a' => 0, 'b' => 0);
|
|
||||||
foreach (array( 'a' => $a, 'b' => $b) as $key => $value) {
|
|
||||||
// capitalized keys that represent constructor properties are last
|
|
||||||
if (preg_match('/[#.][A-Z]/', $value)) {
|
|
||||||
$score[$key] = 0;
|
|
||||||
}
|
|
||||||
// lowercase keys with prototype properties are next to last
|
|
||||||
else if (preg_match('/#[a-z]/', $value)) {
|
|
||||||
$score[$key] = 1;
|
|
||||||
}
|
|
||||||
// lowercase keys with static properties next to first
|
|
||||||
else if (preg_match('/\.[a-z]/', $value)) {
|
|
||||||
$score[$key] = 2;
|
|
||||||
}
|
|
||||||
// lowercase keys with no properties are first
|
|
||||||
else if (preg_match('/^[^#.]+$/', $value)) {
|
|
||||||
$score[$key] = 3;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$score = $score['b'] - $score['a'];
|
|
||||||
return $score ? $score : strcasecmp($a, $b);
|
|
||||||
}
|
|
||||||
|
|
||||||
uksort($api, 'sortCompare');
|
|
||||||
|
|
||||||
// sort static and plugin sub-entries
|
|
||||||
foreach ($api as $entry) {
|
|
||||||
foreach (array('static', 'plugin') as $kind) {
|
|
||||||
$sortBy = array( 'a' => array(), 'b' => array(), 'c' => array() );
|
|
||||||
foreach ($entry->{$kind} as $subentry) {
|
|
||||||
$name = $subentry->getName();
|
|
||||||
// functions w/o ALL-CAPs names are last
|
|
||||||
$sortBy['a'][] = $subentry->getType() == 'Function' && !preg_match('/^[A-Z_]+$/', $name);
|
|
||||||
// ALL-CAPs properties first
|
|
||||||
$sortBy['b'][] = preg_match('/^[A-Z_]+$/', $name);
|
|
||||||
// lowercase alphanumeric sort
|
|
||||||
$sortBy['c'][] = strtolower($name);
|
|
||||||
}
|
|
||||||
array_multisort($sortBy['a'], SORT_ASC, $sortBy['b'], SORT_DESC, $sortBy['c'], SORT_ASC, $entry->{$kind});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// compile TOC
|
|
||||||
$result[] = $openTag;
|
|
||||||
|
|
||||||
foreach ($api as $key => $entry) {
|
|
||||||
$entry->hash = $this->getHash($entry);
|
|
||||||
$entry->href = $this->getLineUrl($entry);
|
|
||||||
|
|
||||||
$member = $entry->getMembers(0);
|
|
||||||
$member = ($member ? $member . ($entry->isPlugin() ? '.prototype.' : '.') : '') . $entry->getName();
|
|
||||||
|
|
||||||
$entry->member = preg_replace('/' . $entry->getName() . '$/', '', $member);
|
|
||||||
|
|
||||||
$compiling = $compiling ? ($result[] = $closeTag) : true;
|
|
||||||
|
|
||||||
// assign TOC hash
|
|
||||||
if (count($result) == 2) {
|
|
||||||
$toc = $member;
|
|
||||||
}
|
|
||||||
|
|
||||||
// add root entry
|
|
||||||
array_push(
|
|
||||||
$result,
|
|
||||||
$openTag, '## ' . (count($result) == 2 ? '<a id="' . $toc . '"></a>' : '') . '`' . $member . '`',
|
|
||||||
Generator::interpolate('* [`' . $member . '`](##{hash})', $entry)
|
|
||||||
);
|
|
||||||
|
|
||||||
// add static and plugin sub-entries
|
|
||||||
foreach (array('static', 'plugin') as $kind) {
|
|
||||||
if ($kind == 'plugin' && count($entry->plugin)) {
|
|
||||||
array_push(
|
|
||||||
$result,
|
|
||||||
$closeTag,
|
|
||||||
$openTag,
|
|
||||||
'## `' . $member . ($entry->isCtor() ? '.prototype`' : '`')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
foreach ($entry->{$kind} as $subentry) {
|
|
||||||
$subentry->hash = $this->getHash($subentry);
|
|
||||||
$subentry->href = $this->getLineUrl($subentry);
|
|
||||||
$subentry->member = $member;
|
|
||||||
$subentry->separator = $this->getSeparator($subentry);
|
|
||||||
$result[] = Generator::interpolate('* [`#{member}#{separator}#{name}`](##{hash})', $subentry);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
array_push($result, $closeTag, $closeTag);
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// compile content
|
|
||||||
$compiling = false;
|
|
||||||
$result[] = $openTag;
|
|
||||||
|
|
||||||
foreach ($api as $entry) {
|
|
||||||
// add root entry
|
|
||||||
$member = $entry->member . $entry->getName();
|
|
||||||
$compiling = $compiling ? ($result[] = $closeTag) : true;
|
|
||||||
|
|
||||||
array_push($result, $openTag, '## `' . $member . '`');
|
|
||||||
|
|
||||||
foreach (array($entry, 'static', 'plugin') as $kind) {
|
|
||||||
$subentries = is_string($kind) ? $entry->{$kind} : array($kind);
|
|
||||||
|
|
||||||
// title
|
|
||||||
if ($kind != 'static' && $entry->getType() != 'Object' &&
|
|
||||||
count($subentries) && $subentries[0] != $kind) {
|
|
||||||
if ($kind == 'plugin') {
|
|
||||||
$result[] = $closeTag;
|
|
||||||
}
|
|
||||||
array_push(
|
|
||||||
$result,
|
|
||||||
$openTag,
|
|
||||||
'## `' . $member . ($kind == 'plugin' ? '.prototype`' : '`')
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// body
|
|
||||||
foreach ($subentries as $subentry) {
|
|
||||||
// description
|
|
||||||
array_push(
|
|
||||||
$result,
|
|
||||||
$openTag,
|
|
||||||
Generator::interpolate("### <a id=\"#{hash}\"></a>`#{member}#{separator}#{call}`\n<a href=\"##{hash}\">#</a> [Ⓢ](#{href} \"View in source\") [Ⓣ][1]\n\n#{desc}", $subentry)
|
|
||||||
);
|
|
||||||
|
|
||||||
// @param
|
|
||||||
if (count($params = $subentry->getParams())) {
|
|
||||||
array_push($result, '', '#### Arguments');
|
|
||||||
foreach ($params as $index => $param) {
|
|
||||||
$result[] = Generator::interpolate('#{num}. `#{name}` (#{type}): #{desc}', array(
|
|
||||||
'desc' => $param[2],
|
|
||||||
'name' => $param[1],
|
|
||||||
'num' => $index + 1,
|
|
||||||
'type' => $param[0]
|
|
||||||
));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// @returns
|
|
||||||
if (count($returns = $subentry->getReturns())) {
|
|
||||||
array_push(
|
|
||||||
$result, '',
|
|
||||||
'#### Returns',
|
|
||||||
Generator::interpolate('(#{type}): #{desc}', array('desc' => $returns[1], 'type' => $returns[0]))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
// @example
|
|
||||||
if ($example = $subentry->getExample()) {
|
|
||||||
array_push($result, '', '#### Example', $example);
|
|
||||||
}
|
|
||||||
array_push($result, "\n* * *", $closeTag);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// close tags add TOC link reference
|
|
||||||
array_push($result, $closeTag, $closeTag, '', ' [1]: #' . $toc . ' "Jump back to the TOC."');
|
|
||||||
|
|
||||||
// cleanup whitespace
|
|
||||||
return trim(preg_replace('/ +\n/', "\n", join($result, "\n")));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
@ -1,20 +0,0 @@
|
|||||||
Copyright 2011-2012 John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -1,98 +0,0 @@
|
|||||||
# Platform.js <sup>v1.0.0</sup>
|
|
||||||
|
|
||||||
A platform detection library that works on nearly all JavaScript platforms<sup><a name="fnref1" href="#fn1">1</a></sup>.
|
|
||||||
|
|
||||||
## Disclaimer
|
|
||||||
|
|
||||||
Platform.js is for informational purposes only and **not** intended as a substitution for [feature detection/inference](http://allyoucanleet.com/post/18087210413/feature-testing-costs#screencast2) checks.
|
|
||||||
|
|
||||||
## BestieJS
|
|
||||||
|
|
||||||
Platform.js is part of the BestieJS *"Best in Class"* module collection. This means we promote solid browser/environment support, ES5 precedents, unit testing, and plenty of documentation.
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
The documentation for Platform.js can be viewed here: [/doc/README.md](https://github.com/bestiejs/platform.js/blob/master/doc/README.md#readme)
|
|
||||||
|
|
||||||
For a list of upcoming features, check out our [roadmap](https://github.com/bestiejs/platform.js/wiki/Roadmap).
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
Platform.js has been tested in at least Adobe AIR 3.1, Chrome 5-21, Firefox 1.5-13, IE 6-9, Opera 9.25-12.01, Safari 3-6, Node.js 0.8.6, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC5.
|
|
||||||
|
|
||||||
## Installation and usage
|
|
||||||
|
|
||||||
In a browser or Adobe AIR:
|
|
||||||
|
|
||||||
```html
|
|
||||||
<script src="platform.js"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
Via [npm](http://npmjs.org/):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install platform
|
|
||||||
```
|
|
||||||
|
|
||||||
In [Node.js](http://nodejs.org/) and [RingoJS](http://ringojs.org/):
|
|
||||||
|
|
||||||
```js
|
|
||||||
var platform = require('platform');
|
|
||||||
```
|
|
||||||
|
|
||||||
In [Rhino](http://www.mozilla.org/rhino/):
|
|
||||||
|
|
||||||
```js
|
|
||||||
load('platform.js');
|
|
||||||
```
|
|
||||||
|
|
||||||
In an AMD loader like [RequireJS](http://requirejs.org/):
|
|
||||||
|
|
||||||
```js
|
|
||||||
require({
|
|
||||||
'paths': {
|
|
||||||
'platform': 'path/to/platform'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
['platform'], function(platform) {
|
|
||||||
console.log(platform.name);
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
Usage example:
|
|
||||||
|
|
||||||
```js
|
|
||||||
// on IE10 x86 platform preview running in IE7 compatibility mode on Windows 7 64 bit edition
|
|
||||||
platform.name; // 'IE'
|
|
||||||
platform.version; // '10.0'
|
|
||||||
platform.layout; // 'Trident'
|
|
||||||
platform.os; // 'Windows Server 2008 R2 / 7 x64'
|
|
||||||
platform.description; // 'IE 10.0 x86 (platform preview; running in IE 7 mode) on Windows Server 2008 R2 / 7 x64'
|
|
||||||
|
|
||||||
// or on an iPad
|
|
||||||
platform.name; // 'Safari'
|
|
||||||
platform.version; // '5.1'
|
|
||||||
platform.product; // 'iPad'
|
|
||||||
platform.manufacturer; // 'Apple'
|
|
||||||
platform.layout; // 'WebKit'
|
|
||||||
platform.os; // 'iOS 5.0'
|
|
||||||
platform.description; // 'Safari 5.1 on Apple iPad (iOS 5.0)'
|
|
||||||
|
|
||||||
// or parsing a given UA string
|
|
||||||
var info = platform.parse('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7.2; en; rv:2.0) Gecko/20100101 Firefox/4.0 Opera 11.52');
|
|
||||||
info.name; // 'Opera'
|
|
||||||
info.version; // '11.52'
|
|
||||||
info.layout; // 'Presto'
|
|
||||||
info.os; // 'Mac OS X 10.7.2'
|
|
||||||
info.description; // 'Opera 11.52 (identifying as Firefox 4.0) on Mac OS X 10.7.2'
|
|
||||||
```
|
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
* [John-David Dalton](http://allyoucanleet.com/)
|
|
||||||
[![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter")
|
|
||||||
|
|
||||||
## Contributors
|
|
||||||
|
|
||||||
* [Mathias Bynens](http://mathiasbynens.be/)
|
|
||||||
[![twitter/mathias](http://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter")
|
|
@ -1,996 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Platform.js v1.0.0 <http://mths.be/platform>
|
|
||||||
* Copyright 2010-2012 John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
* Available under MIT license <http://mths.be/mit>
|
|
||||||
*/
|
|
||||||
;(function(window) {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/** Backup possible window/global object */
|
|
||||||
var oldWin = window;
|
|
||||||
|
|
||||||
/** Detect free variable `exports` */
|
|
||||||
var freeExports = typeof exports == 'object' && exports;
|
|
||||||
|
|
||||||
/** Detect free variable `global` */
|
|
||||||
var freeGlobal = typeof global == 'object' && global &&
|
|
||||||
(global == global.global ? (window = global) : global);
|
|
||||||
|
|
||||||
/** Opera regexp */
|
|
||||||
var reOpera = /Opera/;
|
|
||||||
|
|
||||||
/** Used to resolve a value's internal [[Class]] */
|
|
||||||
var toString = {}.toString;
|
|
||||||
|
|
||||||
/** Detect Java environment */
|
|
||||||
var java = /Java/.test(getClassOf(window.java)) && window.java;
|
|
||||||
|
|
||||||
/** A character to represent alpha */
|
|
||||||
var alpha = java ? 'a' : '\u03b1';
|
|
||||||
|
|
||||||
/** A character to represent beta */
|
|
||||||
var beta = java ? 'b' : '\u03b2';
|
|
||||||
|
|
||||||
/** Browser document object */
|
|
||||||
var doc = window.document || {};
|
|
||||||
|
|
||||||
/** Used to check for own properties of an object */
|
|
||||||
var hasOwnProperty = {}.hasOwnProperty;
|
|
||||||
|
|
||||||
/** Browser navigator object */
|
|
||||||
var nav = window.navigator || {};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Detect Opera browser
|
|
||||||
* http://www.howtocreate.co.uk/operaStuff/operaObject.html
|
|
||||||
* http://dev.opera.com/articles/view/opera-mini-web-content-authoring-guidelines/#operamini
|
|
||||||
*/
|
|
||||||
var opera = window.operamini || window.opera;
|
|
||||||
|
|
||||||
/** Opera [[Class]] */
|
|
||||||
var operaClass = reOpera.test(operaClass = getClassOf(opera)) ? operaClass : (opera = null);
|
|
||||||
|
|
||||||
/** Possible global object */
|
|
||||||
var thisBinding = this;
|
|
||||||
|
|
||||||
/** Browser user agent string */
|
|
||||||
var userAgent = nav.userAgent || '';
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Capitalizes a string value.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {String} string The string to capitalize.
|
|
||||||
* @returns {String} The capitalized string.
|
|
||||||
*/
|
|
||||||
function capitalize(string) {
|
|
||||||
string = String(string);
|
|
||||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An iteration utility for arrays and objects.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array|Object} object The object to iterate over.
|
|
||||||
* @param {Function} callback The function called per iteration.
|
|
||||||
*/
|
|
||||||
function each(object, callback) {
|
|
||||||
var index = -1,
|
|
||||||
length = object.length;
|
|
||||||
|
|
||||||
if (length == length >>> 0) {
|
|
||||||
while (++index < length) {
|
|
||||||
callback(object[index], index, object);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
forOwn(object, callback);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Trim and conditionally capitalize string values.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {String} string The string to format.
|
|
||||||
* @returns {String} The formatted string.
|
|
||||||
*/
|
|
||||||
function format(string) {
|
|
||||||
string = trim(string);
|
|
||||||
return /^(?:webOS|i(?:OS|P))/.test(string)
|
|
||||||
? string
|
|
||||||
: capitalize(string);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Iterates over an object's own properties, executing the `callback` for each.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Object} object The object to iterate over.
|
|
||||||
* @param {Function} callback The function executed per own property.
|
|
||||||
*/
|
|
||||||
function forOwn(object, callback) {
|
|
||||||
for (var key in object) {
|
|
||||||
hasKey(object, key) && callback(object[key], key, object);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the internal [[Class]] of a value.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Mixed} value The value.
|
|
||||||
* @returns {String} The [[Class]].
|
|
||||||
*/
|
|
||||||
function getClassOf(value) {
|
|
||||||
return value == null
|
|
||||||
? capitalize(value)
|
|
||||||
: toString.call(value).slice(8, -1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if an object has the specified key as a direct property.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Object} object The object to check.
|
|
||||||
* @param {String} key The key to check for.
|
|
||||||
* @returns {Boolean} Returns `true` if key is a direct property, else `false`.
|
|
||||||
*/
|
|
||||||
function hasKey() {
|
|
||||||
// lazy define for others (not as accurate)
|
|
||||||
hasKey = function(object, key) {
|
|
||||||
var parent = object != null && (object.constructor || Object).prototype;
|
|
||||||
return !!parent && key in Object(object) && !(key in parent && object[key] === parent[key]);
|
|
||||||
};
|
|
||||||
// for modern browsers
|
|
||||||
if (getClassOf(hasOwnProperty) == 'Function') {
|
|
||||||
hasKey = function(object, key) {
|
|
||||||
return object != null && hasOwnProperty.call(object, key);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// for Safari 2
|
|
||||||
else if ({}.__proto__ == Object.prototype) {
|
|
||||||
hasKey = function(object, key) {
|
|
||||||
var result = false;
|
|
||||||
if (object != null) {
|
|
||||||
object = Object(object);
|
|
||||||
object.__proto__ = [object.__proto__, object.__proto__ = null, result = key in object][0];
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return hasKey.apply(this, arguments);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Host objects can return type values that are different from their actual
|
|
||||||
* data type. The objects we are concerned with usually return non-primitive
|
|
||||||
* types of object, function, or unknown.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Mixed} object The owner of the property.
|
|
||||||
* @param {String} property The property to check.
|
|
||||||
* @returns {Boolean} Returns `true` if the property value is a non-primitive, else `false`.
|
|
||||||
*/
|
|
||||||
function isHostType(object, property) {
|
|
||||||
var type = object != null ? typeof object[property] : 'number';
|
|
||||||
return !/^(?:boolean|number|string|undefined)$/.test(type) &&
|
|
||||||
(type == 'object' ? !!object[property] : true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Prepares a string for use in a RegExp constructor by making hyphens and
|
|
||||||
* spaces optional.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {String} string The string to qualify.
|
|
||||||
* @returns {String} The qualified string.
|
|
||||||
*/
|
|
||||||
function qualify(string) {
|
|
||||||
return String(string).replace(/([ -])(?!$)/g, '$1?');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A bare-bones` Array#reduce` like utility function.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} array The array to iterate over.
|
|
||||||
* @param {Function} callback The function called per iteration.
|
|
||||||
* @param {Mixed} accumulator Initial value of the accumulator.
|
|
||||||
* @returns {Mixed} The accumulator.
|
|
||||||
*/
|
|
||||||
function reduce(array, callback) {
|
|
||||||
var accumulator = null;
|
|
||||||
each(array, function(value, index) {
|
|
||||||
accumulator = callback(accumulator, value, index, array);
|
|
||||||
});
|
|
||||||
return accumulator;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Removes leading and trailing whitespace from a string.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {String} string The string to trim.
|
|
||||||
* @returns {String} The trimmed string.
|
|
||||||
*/
|
|
||||||
function trim(string) {
|
|
||||||
return String(string).replace(/^ +| +$/g, '');
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new platform object.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @param {String} [ua = navigator.userAgent] The user agent string.
|
|
||||||
* @returns {Object} A platform object.
|
|
||||||
*/
|
|
||||||
function parse(ua) {
|
|
||||||
|
|
||||||
ua || (ua = userAgent);
|
|
||||||
|
|
||||||
/** Temporary variable used over the script's lifetime */
|
|
||||||
var data;
|
|
||||||
|
|
||||||
/** The CPU architecture */
|
|
||||||
var arch = ua;
|
|
||||||
|
|
||||||
/** Platform description array */
|
|
||||||
var description = [];
|
|
||||||
|
|
||||||
/** Platform alpha/beta indicator */
|
|
||||||
var prerelease = null;
|
|
||||||
|
|
||||||
/** A flag to indicate that environment features should be used to resolve the platform */
|
|
||||||
var useFeatures = ua == userAgent;
|
|
||||||
|
|
||||||
/** The browser/environment version */
|
|
||||||
var version = useFeatures && opera && typeof opera.version == 'function' && opera.version();
|
|
||||||
|
|
||||||
/* Detectable layout engines (order is important) */
|
|
||||||
var layout = getLayout([
|
|
||||||
{ 'label': 'WebKit', 'pattern': 'AppleWebKit' },
|
|
||||||
'iCab',
|
|
||||||
'Presto',
|
|
||||||
'NetFront',
|
|
||||||
'Tasman',
|
|
||||||
'Trident',
|
|
||||||
'KHTML',
|
|
||||||
'Gecko'
|
|
||||||
]);
|
|
||||||
|
|
||||||
/* Detectable browser names (order is important) */
|
|
||||||
var name = getName([
|
|
||||||
'Adobe AIR',
|
|
||||||
'Arora',
|
|
||||||
'Avant Browser',
|
|
||||||
'Camino',
|
|
||||||
'Epiphany',
|
|
||||||
'Fennec',
|
|
||||||
'Flock',
|
|
||||||
'Galeon',
|
|
||||||
'GreenBrowser',
|
|
||||||
'iCab',
|
|
||||||
'Iceweasel',
|
|
||||||
'Iron',
|
|
||||||
'K-Meleon',
|
|
||||||
'Konqueror',
|
|
||||||
'Lunascape',
|
|
||||||
'Maxthon',
|
|
||||||
'Midori',
|
|
||||||
'Nook Browser',
|
|
||||||
'PhantomJS',
|
|
||||||
'Raven',
|
|
||||||
'Rekonq',
|
|
||||||
'RockMelt',
|
|
||||||
'SeaMonkey',
|
|
||||||
{ 'label': 'Silk', 'pattern': '(?:Cloud9|Silk-Accelerated)' },
|
|
||||||
'Sleipnir',
|
|
||||||
'SlimBrowser',
|
|
||||||
'Sunrise',
|
|
||||||
'Swiftfox',
|
|
||||||
'WebPositive',
|
|
||||||
'Opera Mini',
|
|
||||||
'Opera',
|
|
||||||
'Chrome',
|
|
||||||
{ 'label': 'Chrome Mobile', 'pattern': '(?:CriOS|CrMo)' },
|
|
||||||
{ 'label': 'Firefox', 'pattern': '(?:Firefox|Minefield)' },
|
|
||||||
{ 'label': 'IE', 'pattern': 'MSIE' },
|
|
||||||
'Safari'
|
|
||||||
]);
|
|
||||||
|
|
||||||
/* Detectable products (order is important) */
|
|
||||||
var product = getProduct([
|
|
||||||
'BlackBerry',
|
|
||||||
{ 'label': 'Galaxy S', 'pattern': 'GT-I9000' },
|
|
||||||
{ 'label': 'Galaxy S2', 'pattern': 'GT-I9100' },
|
|
||||||
'Google TV',
|
|
||||||
'iPad',
|
|
||||||
'iPod',
|
|
||||||
'iPhone',
|
|
||||||
'Kindle',
|
|
||||||
{ 'label': 'Kindle Fire', 'pattern': '(?:Cloud9|Silk-Accelerated)' },
|
|
||||||
'Nook',
|
|
||||||
'PlayBook',
|
|
||||||
'PlayStation Vita',
|
|
||||||
'TouchPad',
|
|
||||||
'Transformer',
|
|
||||||
'Xoom'
|
|
||||||
]);
|
|
||||||
|
|
||||||
/* Detectable manufacturers */
|
|
||||||
var manufacturer = getManufacturer({
|
|
||||||
'Apple': { 'iPad': 1, 'iPhone': 1, 'iPod': 1 },
|
|
||||||
'Amazon': { 'Kindle': 1, 'Kindle Fire': 1 },
|
|
||||||
'Asus': { 'Transformer': 1 },
|
|
||||||
'Barnes & Noble': { 'Nook': 1 },
|
|
||||||
'BlackBerry': { 'PlayBook': 1 },
|
|
||||||
'Google': { 'Google TV': 1 },
|
|
||||||
'HP': { 'TouchPad': 1 },
|
|
||||||
'LG': { },
|
|
||||||
'Motorola': { 'Xoom': 1 },
|
|
||||||
'Nokia': { },
|
|
||||||
'Samsung': { 'Galaxy S': 1, 'Galaxy S2': 1 },
|
|
||||||
'Sony': { 'PlayStation Vita': 1 }
|
|
||||||
});
|
|
||||||
|
|
||||||
/* Detectable OSes (order is important) */
|
|
||||||
var os = getOS([
|
|
||||||
'Android',
|
|
||||||
'CentOS',
|
|
||||||
'Debian',
|
|
||||||
'Fedora',
|
|
||||||
'FreeBSD',
|
|
||||||
'Gentoo',
|
|
||||||
'Haiku',
|
|
||||||
'Kubuntu',
|
|
||||||
'Linux Mint',
|
|
||||||
'Red Hat',
|
|
||||||
'SuSE',
|
|
||||||
'Ubuntu',
|
|
||||||
'Xubuntu',
|
|
||||||
'Cygwin',
|
|
||||||
'Symbian OS',
|
|
||||||
'hpwOS',
|
|
||||||
'webOS ',
|
|
||||||
'webOS',
|
|
||||||
'Tablet OS',
|
|
||||||
'Linux',
|
|
||||||
'Mac OS X',
|
|
||||||
'Macintosh',
|
|
||||||
'Mac',
|
|
||||||
'Windows 98;',
|
|
||||||
'Windows '
|
|
||||||
]);
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Picks the layout engine from an array of guesses.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} guesses An array of guesses.
|
|
||||||
* @returns {String|Null} The detected layout engine.
|
|
||||||
*/
|
|
||||||
function getLayout(guesses) {
|
|
||||||
return reduce(guesses, function(result, guess) {
|
|
||||||
return result || RegExp('\\b' + (
|
|
||||||
guess.pattern || qualify(guess)
|
|
||||||
) + '\\b', 'i').exec(ua) && (guess.label || guess);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Picks the manufacturer from an array of guesses.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} guesses An array of guesses.
|
|
||||||
* @returns {String|Null} The detected manufacturer.
|
|
||||||
*/
|
|
||||||
function getManufacturer(guesses) {
|
|
||||||
return reduce(guesses, function(result, value, key) {
|
|
||||||
// lookup the manufacturer by product or scan the UA for the manufacturer
|
|
||||||
return result || (
|
|
||||||
value[product] ||
|
|
||||||
value[0/*Opera 9.25 fix*/, /^[a-z]+(?: +[a-z]+\b)*/i.exec(product)] ||
|
|
||||||
RegExp('\\b' + (key.pattern || qualify(key)) + '(?:\\b|\\w*\\d)', 'i').exec(ua)
|
|
||||||
) && (key.label || key);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Picks the browser name from an array of guesses.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} guesses An array of guesses.
|
|
||||||
* @returns {String|Null} The detected browser name.
|
|
||||||
*/
|
|
||||||
function getName(guesses) {
|
|
||||||
return reduce(guesses, function(result, guess) {
|
|
||||||
return result || RegExp('\\b' + (
|
|
||||||
guess.pattern || qualify(guess)
|
|
||||||
) + '\\b', 'i').exec(ua) && (guess.label || guess);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Picks the OS name from an array of guesses.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} guesses An array of guesses.
|
|
||||||
* @returns {String|Null} The detected OS name.
|
|
||||||
*/
|
|
||||||
function getOS(guesses) {
|
|
||||||
return reduce(guesses, function(result, guess) {
|
|
||||||
var pattern = guess.pattern || qualify(guess);
|
|
||||||
if (!result && (result =
|
|
||||||
RegExp('\\b' + pattern + '(?:/[\\d.]+|[ \\w.]*)', 'i').exec(ua))) {
|
|
||||||
// platform tokens defined at
|
|
||||||
// http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
|
|
||||||
// http://web.archive.org/web/20081122053950/http://msdn.microsoft.com/en-us/library/ms537503(VS.85).aspx
|
|
||||||
data = {
|
|
||||||
'6.2': '8',
|
|
||||||
'6.1': 'Server 2008 R2 / 7',
|
|
||||||
'6.0': 'Server 2008 / Vista',
|
|
||||||
'5.2': 'Server 2003 / XP 64-bit',
|
|
||||||
'5.1': 'XP',
|
|
||||||
'5.01': '2000 SP1',
|
|
||||||
'5.0': '2000',
|
|
||||||
'4.0': 'NT',
|
|
||||||
'4.90': 'ME'
|
|
||||||
};
|
|
||||||
// detect Windows version from platform tokens
|
|
||||||
if (/^Win/i.test(result) &&
|
|
||||||
(data = data[0/*Opera 9.25 fix*/, /[\d.]+$/.exec(result)])) {
|
|
||||||
result = 'Windows ' + data;
|
|
||||||
}
|
|
||||||
// correct character case and cleanup
|
|
||||||
result = format(String(result)
|
|
||||||
.replace(RegExp(pattern, 'i'), guess.label || guess)
|
|
||||||
.replace(/ ce$/i, ' CE')
|
|
||||||
.replace(/hpw/i, 'web')
|
|
||||||
.replace(/Macintosh/, 'Mac OS')
|
|
||||||
.replace(/_PowerPC/i, ' OS')
|
|
||||||
.replace(/(OS X) [^ \d]+/i, '$1')
|
|
||||||
.replace(/\/(\d)/, ' $1')
|
|
||||||
.replace(/_/g, '.')
|
|
||||||
.replace(/(?: BePC|[ .]*fc[ \d.]+)$/i, '')
|
|
||||||
.replace(/x86\.64/gi, 'x86_64')
|
|
||||||
.split(' on ')[0]);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Picks the product name from an array of guesses.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} guesses An array of guesses.
|
|
||||||
* @returns {String|Null} The detected product name.
|
|
||||||
*/
|
|
||||||
function getProduct(guesses) {
|
|
||||||
return reduce(guesses, function(result, guess) {
|
|
||||||
var pattern = guess.pattern || qualify(guess);
|
|
||||||
if (!result && (result =
|
|
||||||
RegExp('\\b' + pattern + ' *\\d+[.\\w_]*', 'i').exec(ua) ||
|
|
||||||
RegExp('\\b' + pattern + '(?:; *(?:[a-z]+[_-])?[a-z]+\\d+|[^ ();-]*)', 'i').exec(ua)
|
|
||||||
)) {
|
|
||||||
// split by forward slash and append product version if needed
|
|
||||||
if ((result = String(guess.label || result).split('/'))[1] && !/[\d.]+/.test(result[0])) {
|
|
||||||
result[0] += ' ' + result[1];
|
|
||||||
}
|
|
||||||
// correct character case and cleanup
|
|
||||||
guess = guess.label || guess;
|
|
||||||
result = format(result[0]
|
|
||||||
.replace(RegExp(pattern, 'i'), guess)
|
|
||||||
.replace(RegExp('; *(?:' + guess + '[_-])?', 'i'), ' ')
|
|
||||||
.replace(RegExp('(' + guess + ')(\\w)', 'i'), '$1 $2'));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Resolves the version using an array of UA patterns.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} patterns An array of UA patterns.
|
|
||||||
* @returns {String|Null} The detected version.
|
|
||||||
*/
|
|
||||||
function getVersion(patterns) {
|
|
||||||
return reduce(patterns, function(result, pattern) {
|
|
||||||
return result || (RegExp(pattern +
|
|
||||||
'(?:-[\\d.]+/|(?: for [\\w-]+)?[ /-])([\\d.]+[^ ();/_-]*)', 'i').exec(ua) || 0)[1] || null;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns `platform.description` when the platform object is coerced to a string.
|
|
||||||
*
|
|
||||||
* @name toString
|
|
||||||
* @memberOf platform
|
|
||||||
* @returns {String} Returns `platform.description` if available, else an empty string.
|
|
||||||
*/
|
|
||||||
function toStringPlatform() {
|
|
||||||
return this.description || '';
|
|
||||||
}
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// convert layout to an array so we can add extra details
|
|
||||||
layout && (layout = [layout]);
|
|
||||||
|
|
||||||
// detect product names that contain their manufacturer's name
|
|
||||||
if (manufacturer && !product) {
|
|
||||||
product = getProduct([manufacturer]);
|
|
||||||
}
|
|
||||||
// clean up Google TV
|
|
||||||
if ((data = /Google TV/.exec(product))) {
|
|
||||||
product = data[0];
|
|
||||||
}
|
|
||||||
// detect simulators
|
|
||||||
if (/\bSimulator\b/i.test(ua)) {
|
|
||||||
product = (product ? product + ' ' : '') + 'Simulator';
|
|
||||||
}
|
|
||||||
// detect iOS
|
|
||||||
if (/^iP/.test(product)) {
|
|
||||||
name || (name = 'Safari');
|
|
||||||
os = 'iOS' + ((data = / OS ([\d_]+)/i.exec(ua))
|
|
||||||
? ' ' + data[1].replace(/_/g, '.')
|
|
||||||
: '');
|
|
||||||
}
|
|
||||||
// detect Kubuntu
|
|
||||||
else if (name == 'Konqueror' && !/buntu/i.test(os)) {
|
|
||||||
os = 'Kubuntu';
|
|
||||||
}
|
|
||||||
// detect Android browsers
|
|
||||||
else if (manufacturer && manufacturer != 'Google' &&
|
|
||||||
/Chrome|Vita/.test(name + ';' + product)) {
|
|
||||||
name = 'Android Browser';
|
|
||||||
os = /Android/.test(os) ? os : 'Android';
|
|
||||||
}
|
|
||||||
// detect false positives for Firefox/Safari
|
|
||||||
else if (!name || (data = !/\bMinefield\b/i.test(ua) && /Firefox|Safari/.exec(name))) {
|
|
||||||
// escape the `/` for Firefox 1
|
|
||||||
if (name && !product && /[\/,]|^[^(]+?\)/.test(ua.slice(ua.indexOf(data + '/') + 8))) {
|
|
||||||
// clear name of false positives
|
|
||||||
name = null;
|
|
||||||
}
|
|
||||||
// reassign a generic name
|
|
||||||
if ((data = product || manufacturer || os) &&
|
|
||||||
(product || manufacturer || /Android|Symbian OS|Tablet OS|webOS/.test(os))) {
|
|
||||||
name = /[a-z]+(?: Hat)?/i.exec(/Android/.test(os) ? os : data) + ' Browser';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// detect non-Opera versions (order is important)
|
|
||||||
if (!version) {
|
|
||||||
version = getVersion([
|
|
||||||
'(?:Cloud9|CriOS|CrMo|Opera ?Mini|Raven|Silk(?!/[\\d.]+$))',
|
|
||||||
'Version',
|
|
||||||
qualify(name),
|
|
||||||
'(?:Firefox|Minefield|NetFront)'
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
// detect stubborn layout engines
|
|
||||||
if (layout == 'iCab' && parseFloat(version) > 3) {
|
|
||||||
layout = ['WebKit'];
|
|
||||||
} else if (data =
|
|
||||||
/Opera/.test(name) && 'Presto' ||
|
|
||||||
/\b(?:Midori|Nook|Safari)\b/i.test(ua) && 'WebKit' ||
|
|
||||||
!layout && /\bMSIE\b/i.test(ua) && (/^Mac/.test(os) ? 'Tasman' : 'Trident')) {
|
|
||||||
layout = [data];
|
|
||||||
}
|
|
||||||
// leverage environment features
|
|
||||||
if (useFeatures) {
|
|
||||||
// detect server-side environments
|
|
||||||
// Rhino has a global function while others have a global object
|
|
||||||
if (isHostType(window, 'global')) {
|
|
||||||
if (java) {
|
|
||||||
data = java.lang.System;
|
|
||||||
arch = data.getProperty('os.arch');
|
|
||||||
os = os || data.getProperty('os.name') + ' ' + data.getProperty('os.version');
|
|
||||||
}
|
|
||||||
if (typeof exports == 'object' && exports) {
|
|
||||||
// if `thisBinding` is the [ModuleScope]
|
|
||||||
if (thisBinding == oldWin && typeof system == 'object' && (data = [system])[0]) {
|
|
||||||
os || (os = data[0].os || null);
|
|
||||||
try {
|
|
||||||
data[1] = require('ringo/engine').version;
|
|
||||||
version = data[1].join('.');
|
|
||||||
name = 'RingoJS';
|
|
||||||
} catch(e) {
|
|
||||||
if (data[0].global == freeGlobal) {
|
|
||||||
name = 'Narwhal';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (typeof process == 'object' && (data = process)) {
|
|
||||||
name = 'Node.js';
|
|
||||||
arch = data.arch;
|
|
||||||
os = data.platform;
|
|
||||||
version = /[\d.]+/.exec(data.version)[0];
|
|
||||||
}
|
|
||||||
} else if (getClassOf(window.environment) == 'Environment') {
|
|
||||||
name = 'Rhino';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// detect Adobe AIR
|
|
||||||
else if (getClassOf(data = window.runtime) == 'ScriptBridgingProxyObject') {
|
|
||||||
name = 'Adobe AIR';
|
|
||||||
os = data.flash.system.Capabilities.os;
|
|
||||||
}
|
|
||||||
// detect PhantomJS
|
|
||||||
else if (getClassOf(data = window.phantom) == 'RuntimeObject') {
|
|
||||||
name = 'PhantomJS';
|
|
||||||
version = (data = data.version || null) && (data.major + '.' + data.minor + '.' + data.patch);
|
|
||||||
}
|
|
||||||
// detect IE compatibility modes
|
|
||||||
else if (typeof doc.documentMode == 'number' && (data = /\bTrident\/(\d+)/i.exec(ua))) {
|
|
||||||
// we're in compatibility mode when the Trident version + 4 doesn't
|
|
||||||
// equal the document mode
|
|
||||||
version = [version, doc.documentMode];
|
|
||||||
if ((data = +data[1] + 4) != version[1]) {
|
|
||||||
description.push('IE ' + version[1] + ' mode');
|
|
||||||
layout[1] = '';
|
|
||||||
version[1] = data;
|
|
||||||
}
|
|
||||||
version = name == 'IE' ? String(version[1].toFixed(1)) : version[0];
|
|
||||||
}
|
|
||||||
os = os && format(os);
|
|
||||||
}
|
|
||||||
// detect prerelease phases
|
|
||||||
if (version && (data =
|
|
||||||
/(?:[ab]|dp|pre|[ab]\d+pre)(?:\d+\+?)?$/i.exec(version) ||
|
|
||||||
/(?:alpha|beta)(?: ?\d)?/i.exec(ua + ';' + (useFeatures && nav.appMinorVersion)) ||
|
|
||||||
/\bMinefield\b/i.test(ua) && 'a')) {
|
|
||||||
prerelease = /b/i.test(data) ? 'beta' : 'alpha';
|
|
||||||
version = version.replace(RegExp(data + '\\+?$'), '') +
|
|
||||||
(prerelease == 'beta' ? beta : alpha) + (/\d+\+?/.exec(data) || '');
|
|
||||||
}
|
|
||||||
// rename code name "Fennec"
|
|
||||||
if (name == 'Fennec') {
|
|
||||||
name = 'Firefox Mobile';
|
|
||||||
}
|
|
||||||
// obscure Maxthon's unreliable version
|
|
||||||
else if (name == 'Maxthon' && version) {
|
|
||||||
version = version.replace(/\.[\d.]+/, '.x');
|
|
||||||
}
|
|
||||||
// detect Silk desktop/accelerated modes
|
|
||||||
else if (name == 'Silk') {
|
|
||||||
if (!/Mobi/i.test(ua)) {
|
|
||||||
os = 'Android';
|
|
||||||
description.unshift('desktop mode');
|
|
||||||
}
|
|
||||||
if (/Accelerated *= *true/i.test(ua)) {
|
|
||||||
description.unshift('accelerated');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// detect Windows Phone desktop mode
|
|
||||||
else if (name == 'IE' && (data = (/; *(?:XBLWP|ZuneWP)(\d+)/i.exec(ua) || 0)[1])) {
|
|
||||||
name += ' Mobile';
|
|
||||||
os = 'Windows Phone OS ' + data + '.x';
|
|
||||||
description.unshift('desktop mode');
|
|
||||||
}
|
|
||||||
// add mobile postfix
|
|
||||||
else if ((name == 'IE' || name && !product && !/Browser|Mobi/.test(name)) &&
|
|
||||||
(os == 'Windows CE' || /Mobi/i.test(ua))) {
|
|
||||||
name += ' Mobile';
|
|
||||||
}
|
|
||||||
// detect IE platform preview
|
|
||||||
else if (name == 'IE' && useFeatures && typeof external == 'object' && !external) {
|
|
||||||
description.unshift('platform preview');
|
|
||||||
}
|
|
||||||
// detect BlackBerry OS version
|
|
||||||
// http://docs.blackberry.com/en/developers/deliverables/18169/HTTP_headers_sent_by_BB_Browser_1234911_11.jsp
|
|
||||||
else if (/BlackBerry/.test(product) && (data =
|
|
||||||
(RegExp(product.replace(/ +/g, ' *') + '/([.\\d]+)', 'i').exec(ua) || 0)[1] ||
|
|
||||||
version)) {
|
|
||||||
os = 'Device Software ' + data;
|
|
||||||
version = null;
|
|
||||||
}
|
|
||||||
// detect Opera identifying/masking itself as another browser
|
|
||||||
// http://www.opera.com/support/kb/view/843/
|
|
||||||
else if (this != forOwn && (
|
|
||||||
(useFeatures && opera) ||
|
|
||||||
(/Opera/.test(name) && /\b(?:MSIE|Firefox)\b/i.test(ua)) ||
|
|
||||||
(name == 'Firefox' && /OS X (?:\d+\.){2,}/.test(os)) ||
|
|
||||||
(name == 'IE' && (
|
|
||||||
(os && !/^Win/.test(os) && version > 5.5) ||
|
|
||||||
/Windows XP/.test(os) && version > 8 ||
|
|
||||||
version == 8 && !/Trident/.test(ua)
|
|
||||||
))
|
|
||||||
) && !reOpera.test(data = parse.call(forOwn, ua.replace(reOpera, '') + ';')) && data.name) {
|
|
||||||
|
|
||||||
// when "indentifying", the UA contains both Opera and the other browser's name
|
|
||||||
data = 'ing as ' + data.name + ((data = data.version) ? ' ' + data : '');
|
|
||||||
if (reOpera.test(name)) {
|
|
||||||
if (/IE/.test(data) && os == 'Mac OS') {
|
|
||||||
os = null;
|
|
||||||
}
|
|
||||||
data = 'identify' + data;
|
|
||||||
}
|
|
||||||
// when "masking", the UA contains only the other browser's name
|
|
||||||
else {
|
|
||||||
data = 'mask' + data;
|
|
||||||
if (operaClass) {
|
|
||||||
name = format(operaClass.replace(/([a-z])([A-Z])/g, '$1 $2'));
|
|
||||||
} else {
|
|
||||||
name = 'Opera';
|
|
||||||
}
|
|
||||||
if (/IE/.test(data)) {
|
|
||||||
os = null;
|
|
||||||
}
|
|
||||||
if (!useFeatures) {
|
|
||||||
version = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
layout = ['Presto'];
|
|
||||||
description.push(data);
|
|
||||||
}
|
|
||||||
// detect WebKit Nightly and approximate Chrome/Safari versions
|
|
||||||
if ((data = (/\bAppleWebKit\/([\d.]+\+?)/i.exec(ua) || 0)[1])) {
|
|
||||||
// correct build for numeric comparison
|
|
||||||
// (e.g. "532.5" becomes "532.05")
|
|
||||||
data = [parseFloat(data.replace(/\.(\d)$/, '.0$1')), data];
|
|
||||||
// nightly builds are postfixed with a `+`
|
|
||||||
if (name == 'Safari' && data[1].slice(-1) == '+') {
|
|
||||||
name = 'WebKit Nightly';
|
|
||||||
prerelease = 'alpha';
|
|
||||||
version = data[1].slice(0, -1);
|
|
||||||
}
|
|
||||||
// clear incorrect browser versions
|
|
||||||
else if (version == data[1] ||
|
|
||||||
version == (/\bSafari\/([\d.]+\+?)/i.exec(ua) || 0)[1]) {
|
|
||||||
version = null;
|
|
||||||
}
|
|
||||||
// use the full Chrome version when available
|
|
||||||
data = [data[0], (/\bChrome\/([\d.]+)/i.exec(ua) || 0)[1]];
|
|
||||||
|
|
||||||
// detect JavaScriptCore
|
|
||||||
// http://stackoverflow.com/questions/6768474/how-can-i-detect-which-javascript-engine-v8-or-jsc-is-used-at-runtime-in-androi
|
|
||||||
if (!useFeatures || (/internal|\n/i.test(toString.toString()) && !data[1])) {
|
|
||||||
layout[1] = 'like Safari';
|
|
||||||
data = (data = data[0], data < 400 ? 1 : data < 500 ? 2 : data < 526 ? 3 : data < 533 ? 4 : data < 534 ? '4+' : data < 535 ? 5 : '5');
|
|
||||||
} else {
|
|
||||||
layout[1] = 'like Chrome';
|
|
||||||
data = data[1] || (data = data[0], data < 530 ? 1 : data < 532 ? 2 : data < 532.05 ? 3 : data < 533 ? 4 : data < 534.03 ? 5 : data < 534.07 ? 6 : data < 534.10 ? 7 : data < 534.13 ? 8 : data < 534.16 ? 9 : data < 534.24 ? 10 : data < 534.30 ? 11 : data < 535.01 ? 12 : data < 535.02 ? '13+' : data < 535.07 ? 15 : data < 535.11 ? 16 : data < 535.19 ? 17 : data < 536.05 ? 18 : data < 536.10 ? 19 : data < 537.01 ? 20 : '21');
|
|
||||||
}
|
|
||||||
// add the postfix of ".x" or "+" for approximate versions
|
|
||||||
layout[1] += ' ' + (data += typeof data == 'number' ? '.x' : /[.+]/.test(data) ? '' : '+');
|
|
||||||
// obscure version for some Safari 1-2 releases
|
|
||||||
if (name == 'Safari' && (!version || parseInt(version) > 45)) {
|
|
||||||
version = data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// detect Opera desktop modes
|
|
||||||
if (name == 'Opera' && (data = /(?:zbov|zvav)$/.exec(os))) {
|
|
||||||
name += ' ';
|
|
||||||
description.unshift('desktop mode');
|
|
||||||
if (data == 'zvav') {
|
|
||||||
name += 'Mini';
|
|
||||||
version = null;
|
|
||||||
} else {
|
|
||||||
name += 'Mobile';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// detect Chrome desktop mode
|
|
||||||
else if (name == 'Safari' && /Chrome/.exec(layout[1])) {
|
|
||||||
description.unshift('desktop mode');
|
|
||||||
name = 'Chrome Mobile';
|
|
||||||
version = null;
|
|
||||||
|
|
||||||
if (/Mac OS X/.test(os)) {
|
|
||||||
manufacturer = 'Apple';
|
|
||||||
os = 'iOS 4.3+';
|
|
||||||
} else {
|
|
||||||
os = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// strip incorrect OS versions
|
|
||||||
if (version && version.indexOf(data = /[\d.]+$/.exec(os)) == 0 &&
|
|
||||||
ua.indexOf('/' + data + '-') > -1) {
|
|
||||||
os = trim(os.replace(data, ''));
|
|
||||||
}
|
|
||||||
// add layout engine
|
|
||||||
if (layout && !/Avant|Nook/.test(name) && (
|
|
||||||
/Browser|Lunascape|Maxthon/.test(name) ||
|
|
||||||
/^(?:Adobe|Arora|Midori|Phantom|Rekonq|Rock|Sleipnir|Web)/.test(name) && layout[1])) {
|
|
||||||
// don't add layout details to description if they are falsey
|
|
||||||
(data = layout[layout.length - 1]) && description.push(data);
|
|
||||||
}
|
|
||||||
// combine contextual information
|
|
||||||
if (description.length) {
|
|
||||||
description = ['(' + description.join('; ') + ')'];
|
|
||||||
}
|
|
||||||
// append manufacturer
|
|
||||||
if (manufacturer && product && product.indexOf(manufacturer) < 0) {
|
|
||||||
description.push('on ' + manufacturer);
|
|
||||||
}
|
|
||||||
// append product
|
|
||||||
if (product) {
|
|
||||||
description.push((/^on /.test(description[description.length -1]) ? '' : 'on ') + product);
|
|
||||||
}
|
|
||||||
// parse OS into an object
|
|
||||||
if (os) {
|
|
||||||
data = / ([\d.+]+)$/.exec(os);
|
|
||||||
os = {
|
|
||||||
'architecture': 32,
|
|
||||||
'family': data ? os.replace(data[0], '') : os,
|
|
||||||
'version': data ? data[1] : null,
|
|
||||||
'toString': function() {
|
|
||||||
var version = this.version;
|
|
||||||
return this.family + (version ? ' ' + version : '') + (this.architecture == 64 ? ' 64-bit' : '');
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
// add browser/OS architecture
|
|
||||||
if ((data = / (?:AMD|IA|Win|WOW|x86_|x)64\b/i.exec(arch)) && !/\bi686\b/i.test(arch)) {
|
|
||||||
if (os) {
|
|
||||||
os.architecture = 64;
|
|
||||||
os.family = os.family.replace(data, '');
|
|
||||||
}
|
|
||||||
if (name && (/WOW64/i.test(ua) ||
|
|
||||||
(useFeatures && /\w(?:86|32)$/.test(nav.cpuClass || nav.platform)))) {
|
|
||||||
description.unshift('32-bit');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ua || (ua = null);
|
|
||||||
|
|
||||||
/*------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The platform object.
|
|
||||||
*
|
|
||||||
* @name platform
|
|
||||||
* @type Object
|
|
||||||
*/
|
|
||||||
return {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The browser/environment version.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'version': name && version && (description.unshift(version), version),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the browser/environment.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'name': name && (description.unshift(name), name),
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the operating system.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type Object
|
|
||||||
*/
|
|
||||||
'os': os
|
|
||||||
? (name &&
|
|
||||||
!(os == String(os).split(' ')[0] && (os == name.split(' ')[0] || product)) &&
|
|
||||||
description.push(product ? '(' + os + ')' : 'on ' + os), os)
|
|
||||||
: {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The CPU architecture the OS is built for.
|
|
||||||
*
|
|
||||||
* @memberOf platform.os
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'architecture': null,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The family of the OS.
|
|
||||||
*
|
|
||||||
* @memberOf platform.os
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'family': null,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The version of the OS.
|
|
||||||
*
|
|
||||||
* @memberOf platform.os
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'version': null,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the OS string.
|
|
||||||
*
|
|
||||||
* @memberOf platform.os
|
|
||||||
* @returns {String} The OS string.
|
|
||||||
*/
|
|
||||||
'toString': function() { return 'null'; }
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The platform description.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'description': description.length ? description.join(' ') : ua,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the browser layout engine.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'layout': layout && layout[0],
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the product's manufacturer.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'manufacturer': manufacturer,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The alpha/beta release indicator.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'prerelease': prerelease,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The name of the product hosting the browser.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'product': product,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The browser's user agent string.
|
|
||||||
*
|
|
||||||
* @memberOf platform
|
|
||||||
* @type String|Null
|
|
||||||
*/
|
|
||||||
'ua': ua,
|
|
||||||
|
|
||||||
// parses a user agent string into a platform object
|
|
||||||
'parse': parse,
|
|
||||||
|
|
||||||
// returns the platform description
|
|
||||||
'toString': toStringPlatform
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
// expose platform
|
|
||||||
// some AMD build optimizers, like r.js, check for specific condition patterns like the following:
|
|
||||||
if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {
|
|
||||||
// define as an anonymous module so, through path mapping, it can be aliased
|
|
||||||
define(function() {
|
|
||||||
return parse();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// check for `exports` after `define` in case a build optimizer adds an `exports` object
|
|
||||||
else if (freeExports) {
|
|
||||||
// in Narwhal, Node.js, or RingoJS
|
|
||||||
forOwn(parse(), function(value, key) {
|
|
||||||
freeExports[key] = value;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// in a browser or Rhino
|
|
||||||
else {
|
|
||||||
// use square bracket notation so Closure Compiler won't munge `platform`
|
|
||||||
// http://code.google.com/closure/compiler/docs/api-tutorial3.html#export
|
|
||||||
window['platform'] = parse();
|
|
||||||
}
|
|
||||||
}(this));
|
|
@ -1,20 +0,0 @@
|
|||||||
Copyright 2011-2012 John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the
|
|
||||||
"Software"), to deal in the Software without restriction, including
|
|
||||||
without limitation the rights to use, copy, modify, merge, publish,
|
|
||||||
distribute, sublicense, and/or sell copies of the Software, and to
|
|
||||||
permit persons to whom the Software is furnished to do so, subject to
|
|
||||||
the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be
|
|
||||||
included in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@ -1,57 +0,0 @@
|
|||||||
# QUnit CLIB <sup>v1.0.0</sup>
|
|
||||||
## command-line interface boilerplate
|
|
||||||
|
|
||||||
QUnit CLIB helps extend QUnit's CLI support to many common CLI environments.
|
|
||||||
|
|
||||||
## Screenshot
|
|
||||||
|
|
||||||
![QUnit CLIB brings QUnit to your favorite shell.](http://i.imgur.com/jpu9l.png)
|
|
||||||
|
|
||||||
## Support
|
|
||||||
|
|
||||||
QUnit CLIB has been tested in at least Node.js 0.4.8-0.8.6, Narwhal v0.3.2, RingoJS v0.8.0, and Rhino v1.7RC3-RC5.
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
```js
|
|
||||||
(function(window) {
|
|
||||||
|
|
||||||
// use a single load function
|
|
||||||
var load = typeof require == 'function' ? require : window.load;
|
|
||||||
|
|
||||||
// load QUnit and CLIB if needed
|
|
||||||
var QUnit =
|
|
||||||
window.QUnit || (
|
|
||||||
window.setTimeout || (window.addEventListener = window.setTimeout = / /),
|
|
||||||
window.QUnit = load('path/to/qunit.js') || window.QUnit,
|
|
||||||
load('path/to/qunit-clib.js'),
|
|
||||||
(window.addEventListener || 0).test && delete window.addEventListener,
|
|
||||||
window.QUnit
|
|
||||||
);
|
|
||||||
|
|
||||||
// explicitly call `QUnit.module()` instead of `module()`
|
|
||||||
// in case we are in a CLI environment
|
|
||||||
QUnit.module('A Test Module');
|
|
||||||
|
|
||||||
test('A Test', function() {
|
|
||||||
// ...
|
|
||||||
});
|
|
||||||
|
|
||||||
// must call `QUnit.start()` if using QUnit < 1.3.0 with Node.js or any
|
|
||||||
// version of QUnit with Narwhal, Rhino, or RingoJS
|
|
||||||
if (!window.document) {
|
|
||||||
QUnit.start();
|
|
||||||
}
|
|
||||||
}(typeof global == 'object' && global || this));
|
|
||||||
```
|
|
||||||
|
|
||||||
## Footnotes
|
|
||||||
|
|
||||||
1. QUnit v1.3.0 does not work with Narwhal or Ringo < v0.8.0
|
|
||||||
|
|
||||||
2. Rhino v1.7RC4 does not support timeout fallbacks `clearTimeout` and `setTimeout`
|
|
||||||
|
|
||||||
## Author
|
|
||||||
|
|
||||||
* [John-David Dalton](http://allyoucanleet.com/)
|
|
||||||
[![twitter/jdalton](http://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter")
|
|
@ -1,319 +0,0 @@
|
|||||||
/*!
|
|
||||||
* QUnit CLI Boilerplate v1.0.0
|
|
||||||
* Copyright 2011-2012 John-David Dalton <http://allyoucanleet.com/>
|
|
||||||
* Based on a gist by Jörn Zaefferer <https://gist.github.com/722381>
|
|
||||||
* Available under MIT license <http://mths.be/mit>
|
|
||||||
*/
|
|
||||||
;(function(global) {
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/** Add `console.log()` support for Narwhal, Rhino, and RingoJS */
|
|
||||||
global.console || (global.console = { 'log': global.print });
|
|
||||||
|
|
||||||
/** Reduce global.QUnit.QUnit -> global.QUnit */
|
|
||||||
global.QUnit && (QUnit = QUnit.QUnit || QUnit);
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/** Used as a horizontal rule in console output */
|
|
||||||
var hr = '----------------------------------------';
|
|
||||||
|
|
||||||
/** Shortcut used to convert array-like objects to arrays */
|
|
||||||
var slice = [].slice;
|
|
||||||
|
|
||||||
/** Used to resolve a value's internal [[Class]] */
|
|
||||||
var toString = {}.toString;
|
|
||||||
|
|
||||||
/** Used by timer methods */
|
|
||||||
var doneCalled,
|
|
||||||
timer,
|
|
||||||
counter = 0,
|
|
||||||
ids = {};
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An iteration utility for arrays.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Array} array The array to iterate over.
|
|
||||||
* @param {Function} callback The function called per iteration.
|
|
||||||
*/
|
|
||||||
function each(array, callback) {
|
|
||||||
var index = -1,
|
|
||||||
length = array.length;
|
|
||||||
|
|
||||||
while (++index < length) {
|
|
||||||
callback(array[index], index, array);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks if the specified `value` is a function.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Mixed} value The value to check.
|
|
||||||
* @returns {Boolean} Returns `true` if `value` is a function, else `false`.
|
|
||||||
*/
|
|
||||||
function isFunction(value) {
|
|
||||||
return toString.call(value) == '[object Function]';
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Timeout fallbacks based on the work of Andrea Giammarchi and Weston C.
|
|
||||||
* https://github.com/WebReflection/wru/blob/master/src/rhinoTimers.js
|
|
||||||
* http://stackoverflow.com/questions/2261705/how-to-run-a-javascript-function-asynchronously-without-using-settimeout
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clears the delay set by `setInterval` or `setTimeout`.
|
|
||||||
*
|
|
||||||
* @memberOf global
|
|
||||||
* @param {Number} id The ID of the timeout to be cleared.
|
|
||||||
*/
|
|
||||||
function clearTimer(id) {
|
|
||||||
if (ids[id]) {
|
|
||||||
ids[id].cancel();
|
|
||||||
timer.purge();
|
|
||||||
delete ids[id];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Schedules timer-based callbacks.
|
|
||||||
*
|
|
||||||
* @private
|
|
||||||
* @param {Function} fn The function to call.
|
|
||||||
* @oaram {Number} delay The number of milliseconds to delay the `fn` call.
|
|
||||||
* @param [arg1, arg2, ...] Arguments to invoke `fn` with.
|
|
||||||
* @param {Boolean} repeated A flag to specify whether `fn` is called repeatedly.
|
|
||||||
* @returns {Number} The the ID of the timeout.
|
|
||||||
*/
|
|
||||||
function schedule(fn, delay, args, repeated) {
|
|
||||||
// Rhino 1.7RC4 will error assigning `task` below
|
|
||||||
// https://bugzilla.mozilla.org/show_bug.cgi?id=775566
|
|
||||||
var task = ids[++counter] = new JavaAdapter(java.util.TimerTask, {
|
|
||||||
'run': function() {
|
|
||||||
fn.apply(global, args);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
// support non-functions
|
|
||||||
if (!isFunction(fn)) {
|
|
||||||
fn = (function(code) {
|
|
||||||
code = String(code);
|
|
||||||
return function() { eval(code); };
|
|
||||||
}(fn));
|
|
||||||
}
|
|
||||||
// used by setInterval
|
|
||||||
if (repeated) {
|
|
||||||
timer.schedule(task, delay, delay);
|
|
||||||
}
|
|
||||||
// used by setTimeout
|
|
||||||
else {
|
|
||||||
timer.schedule(task, delay);
|
|
||||||
}
|
|
||||||
return counter;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Executes a code snippet or function repeatedly, with a delay between each call.
|
|
||||||
*
|
|
||||||
* @memberOf global
|
|
||||||
* @param {Function|String} fn The function to call or string to evaluate.
|
|
||||||
* @oaram {Number} delay The number of milliseconds to delay each `fn` call.
|
|
||||||
* @param [arg1, arg2, ...] Arguments to invoke `fn` with.
|
|
||||||
* @returns {Number} The the ID of the timeout.
|
|
||||||
*/
|
|
||||||
function setInterval(fn, delay) {
|
|
||||||
return schedule(fn, delay, slice.call(arguments, 2), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Executes a code snippet or a function after specified delay.
|
|
||||||
*
|
|
||||||
* @memberOf global
|
|
||||||
* @param {Function|String} fn The function to call or string to evaluate.
|
|
||||||
* @oaram {Number} delay The number of milliseconds to delay the `fn` call.
|
|
||||||
* @param [arg1, arg2, ...] Arguments to invoke `fn` with.
|
|
||||||
* @returns {Number} The the ID of the timeout.
|
|
||||||
*/
|
|
||||||
function setTimeout(fn, delay) {
|
|
||||||
return schedule(fn, delay, slice.call(arguments, 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A logging callback triggered when all testing is completed.
|
|
||||||
*
|
|
||||||
* @memberOf QUnit
|
|
||||||
* @param {Object} details An object with properties `failed`, `passed`,
|
|
||||||
* `runtime`, and `total`.
|
|
||||||
*/
|
|
||||||
function done(details) {
|
|
||||||
// stop `asyncTest()` from erroneously calling `done()` twice in
|
|
||||||
// environments w/o timeouts
|
|
||||||
if (doneCalled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
doneCalled = true;
|
|
||||||
console.log(hr);
|
|
||||||
console.log(' PASS: ' + details.passed + ' FAIL: ' + details.failed + ' TOTAL: ' + details.total);
|
|
||||||
console.log(' Finished in ' + details.runtime + ' milliseconds.');
|
|
||||||
console.log(hr);
|
|
||||||
|
|
||||||
// exit out of Rhino
|
|
||||||
try {
|
|
||||||
quit();
|
|
||||||
} catch(e) { }
|
|
||||||
|
|
||||||
// exit out of Node.js
|
|
||||||
try {
|
|
||||||
process.exit();
|
|
||||||
} catch(e) { }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A logging callback triggered after every assertion.
|
|
||||||
*
|
|
||||||
* @memberOf QUnit
|
|
||||||
* @param {Object} details An object with properties `actual`, `expected`,
|
|
||||||
* `message`, and `result`.
|
|
||||||
*/
|
|
||||||
function log(details) {
|
|
||||||
var expected = details.expected,
|
|
||||||
result = details.result,
|
|
||||||
type = typeof expected != 'undefined' ? 'EQ' : 'OK';
|
|
||||||
|
|
||||||
var assertion = [
|
|
||||||
result ? 'PASS' : 'FAIL',
|
|
||||||
type,
|
|
||||||
details.message || 'ok'
|
|
||||||
];
|
|
||||||
|
|
||||||
if (!result && type == 'EQ') {
|
|
||||||
assertion.push('Expected: ' + expected + ', Actual: ' + details.actual);
|
|
||||||
}
|
|
||||||
QUnit.config.testStats.assertions.push(assertion.join(' | '));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A logging callback triggered at the start of every test module.
|
|
||||||
*
|
|
||||||
* @memberOf QUnit
|
|
||||||
* @param {Object} details An object with property `name`.
|
|
||||||
*/
|
|
||||||
function moduleStart(details) {
|
|
||||||
console.log(hr);
|
|
||||||
console.log(details.name);
|
|
||||||
console.log(hr);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts an object into a string representation.
|
|
||||||
*
|
|
||||||
* @memberOf QUnit
|
|
||||||
* @type Function
|
|
||||||
* @param {Object} object The object to stringify.
|
|
||||||
* @returns {String} The result string.
|
|
||||||
*/
|
|
||||||
var parseObject = (function() {
|
|
||||||
var func = QUnit.jsDump.parsers.object;
|
|
||||||
return function(object) {
|
|
||||||
// fork to support Rhino's error objects
|
|
||||||
if (typeof object.rhinoException == 'object') {
|
|
||||||
return object.name +
|
|
||||||
' { message: "' + object.message +
|
|
||||||
'", fileName: "' + object.fileName +
|
|
||||||
'", lineNumber: ' + object.lineNumber + ' }';
|
|
||||||
}
|
|
||||||
return func(object);
|
|
||||||
};
|
|
||||||
}());
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A logging callback triggered after a test is completed.
|
|
||||||
*
|
|
||||||
* @memberOf QUnit
|
|
||||||
* @param {Object} details An object with properties `failed`, `name`,
|
|
||||||
* `passed`, and `total`.
|
|
||||||
*/
|
|
||||||
function testDone(details) {
|
|
||||||
var assertions = QUnit.config.testStats.assertions,
|
|
||||||
testName = details.name;
|
|
||||||
|
|
||||||
if (details.failed > 0) {
|
|
||||||
console.log(' FAIL - '+ testName);
|
|
||||||
each(assertions, function(value) {
|
|
||||||
console.log(' ' + value);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.log(' PASS - ' + testName);
|
|
||||||
}
|
|
||||||
assertions.length = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*--------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An object used to hold information about the current running test.
|
|
||||||
*
|
|
||||||
* @memberOf QUnit.config
|
|
||||||
* @type Object
|
|
||||||
*/
|
|
||||||
QUnit.config.testStats = {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An array of test summaries (pipe separated).
|
|
||||||
*
|
|
||||||
* @memberOf QUnit.config.testStats
|
|
||||||
* @type Array
|
|
||||||
*/
|
|
||||||
'assertions': []
|
|
||||||
};
|
|
||||||
|
|
||||||
// add shortcuts to the global
|
|
||||||
// exclude `module` because some environments have it as a built-in object
|
|
||||||
each(['asyncTest', 'deepEqual', 'equal', 'equals', 'expect', 'notDeepEqual',
|
|
||||||
'notEqual', 'notStrictEqual', 'ok', 'raises', 'same', 'start', 'stop',
|
|
||||||
'strictEqual', 'test', 'throws'], function(funcName) {
|
|
||||||
var func = QUnit[funcName];
|
|
||||||
if (func) {
|
|
||||||
global[funcName] = func;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// expose timer methods to global
|
|
||||||
try {
|
|
||||||
timer = new java.util.Timer;
|
|
||||||
if (!isFunction(global.clearInterval)) {
|
|
||||||
global.clearInterval = clearTimer;
|
|
||||||
}
|
|
||||||
if (!isFunction(global.clearTimeout)) {
|
|
||||||
global.clearTimeout = clearTimer;
|
|
||||||
}
|
|
||||||
if (!isFunction(global.setInterval)) {
|
|
||||||
global.setInterval = setInterval;
|
|
||||||
}
|
|
||||||
if (!isFunction(global.setTimeout)) {
|
|
||||||
global.setTimeout = setTimeout;
|
|
||||||
}
|
|
||||||
} catch(e) { }
|
|
||||||
|
|
||||||
// add callbacks
|
|
||||||
QUnit.done(done);
|
|
||||||
QUnit.log(log);
|
|
||||||
QUnit.moduleStart(moduleStart);
|
|
||||||
QUnit.testDone(testDone);
|
|
||||||
|
|
||||||
// add wrapped function
|
|
||||||
QUnit.jsDump.parsers.object = parseObject;
|
|
||||||
|
|
||||||
// must call `QUnit.start()` in the test file if using QUnit < 1.3.0 with
|
|
||||||
// Node.js or any version of QUnit with Narwhal, Rhino, or RingoJS
|
|
||||||
QUnit.init();
|
|
||||||
|
|
||||||
}(typeof global == 'object' && global || this));
|
|
49
web/src/vendor/benchmark/vendor/qunit/README.md
vendored
49
web/src/vendor/benchmark/vendor/qunit/README.md
vendored
@ -1,49 +0,0 @@
|
|||||||
[QUnit](http://docs.jquery.com/QUnit) - A JavaScript Unit Testing framework.
|
|
||||||
================================
|
|
||||||
|
|
||||||
QUnit is a powerful, easy-to-use, JavaScript test suite. It's used by the jQuery
|
|
||||||
project to test its code and plugins but is capable of testing any generic
|
|
||||||
JavaScript code (and even capable of testing JavaScript code on the server-side).
|
|
||||||
|
|
||||||
QUnit is especially useful for regression testing: Whenever a bug is reported,
|
|
||||||
write a test that asserts the existence of that particular bug. Then fix it and
|
|
||||||
commit both. Every time you work on the code again, run the tests. If the bug
|
|
||||||
comes up again - a regression - you'll spot it immediately and know how to fix
|
|
||||||
it, because you know what code you just changed.
|
|
||||||
|
|
||||||
Having good unit test coverage makes safe refactoring easy and cheap. You can
|
|
||||||
run the tests after each small refactoring step and always know what change
|
|
||||||
broke something.
|
|
||||||
|
|
||||||
QUnit is similar to other unit testing frameworks like JUnit, but makes use of
|
|
||||||
the features JavaScript provides and helps with testing code in the browser, e.g.
|
|
||||||
with its stop/start facilities for testing asynchronous code.
|
|
||||||
|
|
||||||
If you are interested in helping developing QUnit, you are in the right place.
|
|
||||||
For related discussions, visit the
|
|
||||||
[QUnit and Testing forum](http://forum.jquery.com/qunit-and-testing).
|
|
||||||
|
|
||||||
Planning for a qunitjs.com site and other testing tools related work now happens
|
|
||||||
on the [jQuery Testing Team planning wiki](http://jquerytesting.pbworks.com/w/page/41556026/FrontPage).
|
|
||||||
|
|
||||||
Development
|
|
||||||
-----------
|
|
||||||
|
|
||||||
To submit patches, fork the repository, create a branch for the change. Then implement
|
|
||||||
the change, run `grunt` to lint and test it, then commit, push and create a pull request.
|
|
||||||
|
|
||||||
Include some background for the change in the commit message and `Fixes #nnn`, referring
|
|
||||||
to the issue number you're addressing.
|
|
||||||
|
|
||||||
To run `grunt`, you need `node` and `npm`, then `npm install grunt -g`.
|
|
||||||
|
|
||||||
Releases
|
|
||||||
--------
|
|
||||||
|
|
||||||
Install git-extras and run `git changelog` to update History.md.
|
|
||||||
Update qunit/qunit.js|css and package.json to the release version, commit and
|
|
||||||
tag, update them again to the next version, commit and push commits and tags
|
|
||||||
(`git push --tags origin master`).
|
|
||||||
|
|
||||||
Put the 'v' in front of the tag, e.g. `v1.8.0`. Clean up the changelog, removing merge commits
|
|
||||||
or whitespace cleanups.
|
|
File diff suppressed because it is too large
Load Diff
@ -1,231 +0,0 @@
|
|||||||
/**
|
|
||||||
* QUnit v1.9.0 - A JavaScript Unit Testing Framework
|
|
||||||
*
|
|
||||||
* http://docs.jquery.com/QUnit
|
|
||||||
*
|
|
||||||
* Copyright (c) 2012 John Resig, Jörn Zaefferer
|
|
||||||
* Dual licensed under the MIT (MIT-LICENSE.txt)
|
|
||||||
* or GPL (GPL-LICENSE.txt) licenses.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** Font Family and Sizes */
|
|
||||||
|
|
||||||
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
|
|
||||||
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
|
|
||||||
#qunit-tests { font-size: smaller; }
|
|
||||||
|
|
||||||
|
|
||||||
/** Resets */
|
|
||||||
|
|
||||||
#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Header */
|
|
||||||
|
|
||||||
#qunit-header {
|
|
||||||
padding: 0.5em 0 0.5em 1em;
|
|
||||||
|
|
||||||
color: #8699a4;
|
|
||||||
background-color: #0d3349;
|
|
||||||
|
|
||||||
font-size: 1.5em;
|
|
||||||
line-height: 1em;
|
|
||||||
font-weight: normal;
|
|
||||||
|
|
||||||
border-radius: 5px 5px 0 0;
|
|
||||||
-moz-border-radius: 5px 5px 0 0;
|
|
||||||
-webkit-border-top-right-radius: 5px;
|
|
||||||
-webkit-border-top-left-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-header a {
|
|
||||||
text-decoration: none;
|
|
||||||
color: #c2ccd1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-header a:hover,
|
|
||||||
#qunit-header a:focus {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-testrunner-toolbar label {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0 .5em 0 .1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-banner {
|
|
||||||
height: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-testrunner-toolbar {
|
|
||||||
padding: 0.5em 0 0.5em 2em;
|
|
||||||
color: #5E740B;
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-userAgent {
|
|
||||||
padding: 0.5em 0 0.5em 2.5em;
|
|
||||||
background-color: #2b81af;
|
|
||||||
color: #fff;
|
|
||||||
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/** Tests: Pass/Fail */
|
|
||||||
|
|
||||||
#qunit-tests {
|
|
||||||
list-style-position: inside;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests li {
|
|
||||||
padding: 0.4em 0.5em 0.4em 2.5em;
|
|
||||||
border-bottom: 1px solid #fff;
|
|
||||||
list-style-position: inside;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests li strong {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests li a {
|
|
||||||
padding: 0.5em;
|
|
||||||
color: #c2ccd1;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
#qunit-tests li a:hover,
|
|
||||||
#qunit-tests li a:focus {
|
|
||||||
color: #000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests ol {
|
|
||||||
margin-top: 0.5em;
|
|
||||||
padding: 0.5em;
|
|
||||||
|
|
||||||
background-color: #fff;
|
|
||||||
|
|
||||||
border-radius: 5px;
|
|
||||||
-moz-border-radius: 5px;
|
|
||||||
-webkit-border-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests table {
|
|
||||||
border-collapse: collapse;
|
|
||||||
margin-top: .2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests th {
|
|
||||||
text-align: right;
|
|
||||||
vertical-align: top;
|
|
||||||
padding: 0 .5em 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests td {
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests pre {
|
|
||||||
margin: 0;
|
|
||||||
white-space: pre-wrap;
|
|
||||||
word-wrap: break-word;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests del {
|
|
||||||
background-color: #e0f2be;
|
|
||||||
color: #374e0c;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests ins {
|
|
||||||
background-color: #ffcaca;
|
|
||||||
color: #500;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** Test Counts */
|
|
||||||
|
|
||||||
#qunit-tests b.counts { color: black; }
|
|
||||||
#qunit-tests b.passed { color: #5E740B; }
|
|
||||||
#qunit-tests b.failed { color: #710909; }
|
|
||||||
|
|
||||||
#qunit-tests li li {
|
|
||||||
padding: 5px;
|
|
||||||
background-color: #fff;
|
|
||||||
border-bottom: none;
|
|
||||||
list-style-position: inside;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*** Passing Styles */
|
|
||||||
|
|
||||||
#qunit-tests li li.pass {
|
|
||||||
color: #3c510c;
|
|
||||||
background-color: #fff;
|
|
||||||
border-left: 10px solid #C6E746;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
|
|
||||||
#qunit-tests .pass .test-name { color: #366097; }
|
|
||||||
|
|
||||||
#qunit-tests .pass .test-actual,
|
|
||||||
#qunit-tests .pass .test-expected { color: #999999; }
|
|
||||||
|
|
||||||
#qunit-banner.qunit-pass { background-color: #C6E746; }
|
|
||||||
|
|
||||||
/*** Failing Styles */
|
|
||||||
|
|
||||||
#qunit-tests li li.fail {
|
|
||||||
color: #710909;
|
|
||||||
background-color: #fff;
|
|
||||||
border-left: 10px solid #EE5757;
|
|
||||||
white-space: pre;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests > li:last-child {
|
|
||||||
border-radius: 0 0 5px 5px;
|
|
||||||
-moz-border-radius: 0 0 5px 5px;
|
|
||||||
-webkit-border-bottom-right-radius: 5px;
|
|
||||||
-webkit-border-bottom-left-radius: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#qunit-tests .fail { color: #000000; background-color: #EE5757; }
|
|
||||||
#qunit-tests .fail .test-name,
|
|
||||||
#qunit-tests .fail .module-name { color: #000000; }
|
|
||||||
|
|
||||||
#qunit-tests .fail .test-actual { color: #EE5757; }
|
|
||||||
#qunit-tests .fail .test-expected { color: green; }
|
|
||||||
|
|
||||||
#qunit-banner.qunit-fail { background-color: #EE5757; }
|
|
||||||
|
|
||||||
|
|
||||||
/** Result */
|
|
||||||
|
|
||||||
#qunit-testresult {
|
|
||||||
padding: 0.5em 0.5em 0.5em 2.5em;
|
|
||||||
|
|
||||||
color: #2b81af;
|
|
||||||
background-color: #D2E0E6;
|
|
||||||
|
|
||||||
border-bottom: 1px solid white;
|
|
||||||
}
|
|
||||||
#qunit-testresult .module-name {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Fixture */
|
|
||||||
|
|
||||||
#qunit-fixture {
|
|
||||||
position: absolute;
|
|
||||||
top: -10000px;
|
|
||||||
left: -10000px;
|
|
||||||
width: 1000px;
|
|
||||||
height: 1000px;
|
|
||||||
}
|
|
1932
web/src/vendor/benchmark/vendor/qunit/qunit/qunit.js
vendored
1932
web/src/vendor/benchmark/vendor/qunit/qunit/qunit.js
vendored
File diff suppressed because it is too large
Load Diff
@ -1,58 +0,0 @@
|
|||||||
RequireJS is released under two licenses: new BSD, and MIT. You may pick the
|
|
||||||
license that best suits your development needs. The text of both licenses are
|
|
||||||
provided below.
|
|
||||||
|
|
||||||
|
|
||||||
The "New" BSD License:
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Copyright (c) 2010-2011, The Dojo Foundation
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright notice, this
|
|
||||||
list of conditions and the following disclaimer.
|
|
||||||
* Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation
|
|
||||||
and/or other materials provided with the distribution.
|
|
||||||
* Neither the name of the Dojo Foundation nor the names of its contributors
|
|
||||||
may be used to endorse or promote products derived from this software
|
|
||||||
without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
|
||||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
||||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
MIT License
|
|
||||||
-----------
|
|
||||||
|
|
||||||
Copyright (c) 2010-2011, The Dojo Foundation
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in
|
|
||||||
all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
||||||
THE SOFTWARE.
|
|
@ -1,51 +0,0 @@
|
|||||||
# RequireJS
|
|
||||||
|
|
||||||
RequireJS loads plain JavaScript files as well as more defined modules. It is
|
|
||||||
optimized for in-browser use, including in
|
|
||||||
[a Web Worker](http://requirejs.org/docs/api.html#webworker), but it can be used
|
|
||||||
in other JavaScript environments, like Rhino and
|
|
||||||
[Node](http://requirejs.org/docs/node.html). It implements the
|
|
||||||
[Asynchronous Module](https://github.com/amdjs/amdjs-api/wiki/AMD)
|
|
||||||
API.
|
|
||||||
|
|
||||||
RequireJS uses plain script tags to load modules/files, so it should allow for
|
|
||||||
easy debugging. It can be used
|
|
||||||
[simply to load existing JavaScript files](http://requirejs.org/docs/api.html#jsfiles),
|
|
||||||
so you can add it to your existing project without having to re-write your
|
|
||||||
JavaScript files.
|
|
||||||
|
|
||||||
RequireJS includes [an optimization tool](http://requirejs.org/docs/optimization.html)
|
|
||||||
you can run as part of your packaging steps for deploying your code. The
|
|
||||||
optimization tool can combine and minify your JavaScript files to allow for
|
|
||||||
better performance.
|
|
||||||
|
|
||||||
If the JavaScript file defines a JavaScript module via
|
|
||||||
[define()](http://requirejs.org/docs/api.html#define), then there are other benefits
|
|
||||||
RequireJS can offer: [improvements over traditional CommonJS modules](http://requirejs.org/docs/commonjs.html)
|
|
||||||
and [loading multiple versions](http://requirejs.org/docs/api.html#multiversion)
|
|
||||||
of a module in a page. RequireJS also has a plugin system that supports features like
|
|
||||||
[i18n string bundles](http://requirejs.org/docs/api.html#i18n), and
|
|
||||||
[text file dependencies](http://requirejs.org/docs/api.html#text).
|
|
||||||
|
|
||||||
RequireJS does not have any dependencies on a JavaScript framework.
|
|
||||||
It is dual-licensed -- new BSD or MIT.
|
|
||||||
|
|
||||||
The standard require.js file is around 5.5KB when minified via Closure Compiler
|
|
||||||
and gzipped.
|
|
||||||
|
|
||||||
RequireJS works in IE 6+, Firefox 2+, Safari 3.2+, Chrome 3+, and Opera 10+.
|
|
||||||
|
|
||||||
[Latest Release](http://requirejs.org/docs/download.html)
|
|
||||||
|
|
||||||
## Directories
|
|
||||||
|
|
||||||
* **dist**: Scripts and assets to generate the requirejs.org docs, and for
|
|
||||||
generating a require.js release.
|
|
||||||
* **docs**: The raw HTML files for the requirejs.org docs. Only includes the
|
|
||||||
body of each page. Files in **dist** are used to generate a complete HTML page.
|
|
||||||
* **tests**: Tests for require.js.
|
|
||||||
* **testBaseUrl.js**: A file used in the tests inside **tests**. Purposely
|
|
||||||
placed outside the tests directory for testing paths that go outside a baseUrl.
|
|
||||||
* **updatesubs.sh**: Updates projects that depend on require.js Assumes the
|
|
||||||
projects are siblings to this directory and have specific names. Useful to
|
|
||||||
copy require.js to dependent projects easily while in development.
|
|
2053
web/src/vendor/benchmark/vendor/requirejs/require.js
vendored
2053
web/src/vendor/benchmark/vendor/requirejs/require.js
vendored
File diff suppressed because it is too large
Load Diff
30
web/src/vendor/benchmarkjs-runner/.bower.json
vendored
30
web/src/vendor/benchmarkjs-runner/.bower.json
vendored
@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "benchmark-runner",
|
|
||||||
"version": "0.0.2",
|
|
||||||
"homepage": "https://github.com/rstacruz/benchmarkjs-runner",
|
|
||||||
"authors": [
|
|
||||||
"Rico Sta. Cruz <hi@ricostacruz.com>"
|
|
||||||
],
|
|
||||||
"main": "runner.js",
|
|
||||||
"devDependencies": {
|
|
||||||
"jquery": "*",
|
|
||||||
"benchmark": "*"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"ignore": [
|
|
||||||
"**/.*",
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"test",
|
|
||||||
"tests"
|
|
||||||
],
|
|
||||||
"_release": "0.0.2",
|
|
||||||
"_resolution": {
|
|
||||||
"type": "version",
|
|
||||||
"tag": "v0.0.2",
|
|
||||||
"commit": "b01c67643150bc4eb6f712a03c3b463023997b00"
|
|
||||||
},
|
|
||||||
"_source": "git://github.com/rstacruz/benchmarkjs-runner.git",
|
|
||||||
"_target": "*",
|
|
||||||
"_originalSource": "benchmarkjs-runner"
|
|
||||||
}
|
|
7
web/src/vendor/benchmarkjs-runner/History.md
vendored
7
web/src/vendor/benchmarkjs-runner/History.md
vendored
@ -1,7 +0,0 @@
|
|||||||
## v0.0.2 - Sept 9, 2013
|
|
||||||
|
|
||||||
Added source code display.
|
|
||||||
|
|
||||||
## v0.0.1 - Sept 9, 2013
|
|
||||||
|
|
||||||
Initial release.
|
|
12
web/src/vendor/benchmarkjs-runner/Makefile
vendored
12
web/src/vendor/benchmarkjs-runner/Makefile
vendored
@ -1,12 +0,0 @@
|
|||||||
runner.js: \
|
|
||||||
bower_components/jquery/jquery.js \
|
|
||||||
bower_components/benchmark/benchmark.js \
|
|
||||||
src/runner.js
|
|
||||||
cat $^ > $@
|
|
||||||
|
|
||||||
bower_components/jquery/jquery.js: bower_components
|
|
||||||
bower_components/benchmark/benchmark.js: bower_components
|
|
||||||
|
|
||||||
bower_components: bower.json
|
|
||||||
bower install
|
|
||||||
touch bower_components
|
|
64
web/src/vendor/benchmarkjs-runner/Readme.md
vendored
64
web/src/vendor/benchmarkjs-runner/Readme.md
vendored
@ -1,64 +0,0 @@
|
|||||||
# Benchmark.js runner [(demo)](http://rstacruz.github.io/benchmarkjs-runner/example.html)
|
|
||||||
|
|
||||||
Easy way to create performance tests for browser JS performance using
|
|
||||||
[Benchmark.js]. Think of it like an easy-to-use version of [jsperf.com].
|
|
||||||
|
|
||||||
![Screenshot](http://rstacruz.github.io/benchmarkjs-runner/support/screenshot.png?v=0852)
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
Simply create a plain HTML file that includes the `benchmark-runner` script,
|
|
||||||
like below. Also see [example.html](example.html) for more detailed
|
|
||||||
examples.
|
|
||||||
|
|
||||||
~~~ html
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<meta charset='utf-8' />
|
|
||||||
<title>Benchmarks</title>
|
|
||||||
<script src='http://rstacruz.github.io/benchmarkjs-runner/runner.js'></script>
|
|
||||||
<script>
|
|
||||||
|
|
||||||
suite("String matching", function() {
|
|
||||||
bench("String#indexOf", function() {
|
|
||||||
"Hello world".indexOf('o') > -1;
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("String#match", function() {
|
|
||||||
!! "Hello world".match(/o/);
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("RegExp#test", function() {
|
|
||||||
!! /o/.test("Hello world");
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
</script>
|
|
||||||
~~~
|
|
||||||
|
|
||||||
## API
|
|
||||||
|
|
||||||
* `suite(name, [options], function)` -- Defines a Benchmark suite. You may
|
|
||||||
optionally pass *options* to be used by Benchmark.js.
|
|
||||||
|
|
||||||
* `bench(name, function, [options])` -- Defines a Benchmark. You may optionally
|
|
||||||
pass *options* to be used by Benchmark.js.
|
|
||||||
|
|
||||||
* `afterEach(function)` -- Defines a function to be called after each benchmark
|
|
||||||
cycle. These routines do not contribute to the elapsed time of the benchmarks.
|
|
||||||
|
|
||||||
* `before(function)` -- Defines a function to be called *before* all benchmarks in
|
|
||||||
the suite are to be invoked. These routines do not contribute to the elapsed
|
|
||||||
time of the benchmarks.
|
|
||||||
|
|
||||||
* `after(function)` -- Defines a function to be called *after* all benchmarks in
|
|
||||||
the suite are invoked.
|
|
||||||
|
|
||||||
## Acknowledgements
|
|
||||||
|
|
||||||
Disclaimer: hastily cobbled together out of a need. Expect support to be sparse.
|
|
||||||
|
|
||||||
© 2013, Rico Sta. Cruz. Released under the [MIT License].
|
|
||||||
|
|
||||||
[MIT License]: http://www.opensource.org/licenses/mit-license.php
|
|
||||||
[jsperf.com]: http://jsperf.com/
|
|
||||||
[benchmark.js]: http://benchmarkjs.com/
|
|
21
web/src/vendor/benchmarkjs-runner/bower.json
vendored
21
web/src/vendor/benchmarkjs-runner/bower.json
vendored
@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "benchmark-runner",
|
|
||||||
"version": "0.0.2",
|
|
||||||
"homepage": "https://github.com/rstacruz/benchmarkjs-runner",
|
|
||||||
"authors": [
|
|
||||||
"Rico Sta. Cruz <hi@ricostacruz.com>"
|
|
||||||
],
|
|
||||||
"main": "runner.js",
|
|
||||||
"devDependencies": {
|
|
||||||
"jquery": "*",
|
|
||||||
"benchmark": "*"
|
|
||||||
},
|
|
||||||
"license": "MIT",
|
|
||||||
"ignore": [
|
|
||||||
"**/.*",
|
|
||||||
"node_modules",
|
|
||||||
"bower_components",
|
|
||||||
"test",
|
|
||||||
"tests"
|
|
||||||
]
|
|
||||||
}
|
|
44
web/src/vendor/benchmarkjs-runner/example.html
vendored
44
web/src/vendor/benchmarkjs-runner/example.html
vendored
@ -1,44 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<meta charset='utf-8' />
|
|
||||||
<title>Benchmarks</title>
|
|
||||||
<script src='runner.js'></script>
|
|
||||||
<script>
|
|
||||||
suite("String matching", function() {
|
|
||||||
bench("String#match", function() {
|
|
||||||
!! "Hello world".match(/o/);
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("String#indexOf", function() {
|
|
||||||
"Hello world".indexOf('o') > -1;
|
|
||||||
});
|
|
||||||
|
|
||||||
bench("RegExp#test", function() {
|
|
||||||
!! /o/.test("Hello world");
|
|
||||||
});
|
|
||||||
|
|
||||||
before(function() {
|
|
||||||
// Things to execute before all benchmarks in the suite.
|
|
||||||
// Does not count into a benchmark's elapsed time.
|
|
||||||
});
|
|
||||||
|
|
||||||
afterEach(function() {
|
|
||||||
// Things to execute after each benchmark cycle.
|
|
||||||
// Does not count into a benchmark's elapsed time.
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
|
||||||
// Advanced examples
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// You can specify Benchmark.js options in suite() and bench().
|
|
||||||
suite("My suite", { maxTime: 10 }, function() {
|
|
||||||
|
|
||||||
bench("My benchmark", function() {
|
|
||||||
}, {
|
|
||||||
onCycle: ...
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
</script>
|
|
271
web/src/vendor/benchmarkjs-runner/src/runner.js
vendored
271
web/src/vendor/benchmarkjs-runner/src/runner.js
vendored
@ -1,271 +0,0 @@
|
|||||||
(function($) {
|
|
||||||
|
|
||||||
var Runner = window.Runner = {};
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* JSON Data.
|
|
||||||
*/
|
|
||||||
|
|
||||||
var Data = Runner.data = {
|
|
||||||
suites: [],
|
|
||||||
current: { suite: null }
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Defines a new suite.
|
|
||||||
*/
|
|
||||||
|
|
||||||
window.suite = function(name, options, fn) {
|
|
||||||
if (!fn) {fn = options; options = undefined; }
|
|
||||||
|
|
||||||
var mySuite = new Benchmark.Suite(name, options);
|
|
||||||
mySuite.afterEach = [];
|
|
||||||
|
|
||||||
Data.suites.push(mySuite);
|
|
||||||
Data.current.suite = mySuite;
|
|
||||||
|
|
||||||
fn(); /* yield */
|
|
||||||
|
|
||||||
each(mySuite.afterEach, function(fn) {
|
|
||||||
each(mySuite, function(bench) {
|
|
||||||
bench.on('cycle', fn);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For things to run before an entire suite
|
|
||||||
*/
|
|
||||||
|
|
||||||
window.before = function(fn) {
|
|
||||||
if (!Data.current.suite) throw new Error("No suite");
|
|
||||||
var suite = Data.current.suite;
|
|
||||||
|
|
||||||
suite.on('start', fn);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* For things to run after an entire suite
|
|
||||||
*/
|
|
||||||
|
|
||||||
window.after = function(fn) {
|
|
||||||
if (!Data.current.suite) throw new Error("No suite");
|
|
||||||
var suite = Data.current.suite;
|
|
||||||
|
|
||||||
suite.on('complete', fn);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Something to do after each.
|
|
||||||
*/
|
|
||||||
|
|
||||||
window.afterEach = function(fn) {
|
|
||||||
if (!Data.current.suite) throw new Error("No suite");
|
|
||||||
var suite = Data.current.suite;
|
|
||||||
|
|
||||||
suite.afterEach.push(fn);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Starts a new benchmark inside a suite.
|
|
||||||
*/
|
|
||||||
|
|
||||||
window.benchmark = window.bench = function(name, fn, options) {
|
|
||||||
if (!Data.current.suite) throw new Error("No suite");
|
|
||||||
var suite = Data.current.suite;
|
|
||||||
|
|
||||||
var bench = suite.add(name, fn, options);
|
|
||||||
};
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Templates
|
|
||||||
*/
|
|
||||||
|
|
||||||
var Tpl = Runner.templates = {
|
|
||||||
style: function() {
|
|
||||||
return "" +
|
|
||||||
"html { background: #fff; color: #111; margin: 40px; padding: 0; }" +
|
|
||||||
"body { font-size: 12pt; }" +
|
|
||||||
"input, button, body { font-family: Helvetica Neue, sans-serif; line-height: 1.5; }" +
|
|
||||||
"button { cursor: pointer; }" +
|
|
||||||
"button { margin: 0; padding: 0; outline: 0; background: transparent; border: 0; }" +
|
|
||||||
"h1, h2, h3 { font-weight: 200; font-size: 1em; margin: 0; padding: 0; }" +
|
|
||||||
".b-suite { margin-bottom: 20px; }" +
|
|
||||||
".b-header { margin-bottom: 10px; }" +
|
|
||||||
".b-header h2 { font-size: 1.2em; font-weight: 200; display: inline-block; margin-right: 15px; }" +
|
|
||||||
".b-header button { display: inline-block; vertical-align: middle; position: relative; top: -2px; }" +
|
|
||||||
".b-header button { padding: 1px 10px; border: solid 1px #eee; border-radius: 2px; }" +
|
|
||||||
".b-header button { border: solid 1px #1bd; border-radius: 15px; color: #1bd; }" +
|
|
||||||
".b-header button:hover { background: #1bd; border-color: #1bd; color: white; }" +
|
|
||||||
".b-header button:active { background: #222; border-color: #222; color: white; }" +
|
|
||||||
".b-header button.disabled { background: white; border-color: #e0e0e0; color: #bbb; cursor: not-allowed; pointer-events: none; -webkit-pointer-events: none; opacity: 0.2; }" +
|
|
||||||
".b-bench-status { margin-right: 15px; color: #1bd; font-size: 0.7em; }" +
|
|
||||||
".b-bench { padding: 3px 0; }" +
|
|
||||||
".b-bench h3 { display: inline-block; margin-right: 15px; font-size: 0.9em; }" +
|
|
||||||
".b-progress { display: inline-block; width: 50px; height: 4px; border: solid 1px #ddd; position: relative; border-radius: 2px; margin-right: 10px; padding: 1px; overflow: hidden; }" +
|
|
||||||
".b-progress { -webkit-transform: translate3d(0,0,0); }" +
|
|
||||||
".b-progress-bar { width: 0; background: #ccc; height: 100%; -webkit-transition: width 100ms ease; -moz-transition: width 100ms ease; transition: width 100ms ease; }" +
|
|
||||||
".b-running .b-progress-bar { background: #eee; }" +
|
|
||||||
".b-expand { background: #f4f4f4; padding: 0 5px; letter-spacing: 1px; line-height: 12px; border: solid 1px transparent; color: #999; border-radius: 2px; }" +
|
|
||||||
".b-expand:hover { background: #eaeaea; }" +
|
|
||||||
".b-expand:active { background: #1bd; color: white; } " +
|
|
||||||
".b-code { padding: 20px; background: #fcfcfc; box-shadow: inset 1px 1px 0 rgba(0, 0, 0, 0.05), inset 0 0 3px rgba(0, 0, 0, 0.05); margin: 10px 0; }" +
|
|
||||||
".b-code pre { margin: 0; padding: 0; font-family: menlo, ubuntu mono, monospace; font-size: 0.7em; }" +
|
|
||||||
"pre .string, pre .number { color: #1bd; }" +
|
|
||||||
"pre .comment { color: #80808a; }" +
|
|
||||||
"pre .keyword { color: #5a3; }" +
|
|
||||||
"";
|
|
||||||
},
|
|
||||||
|
|
||||||
suite: function(data) {
|
|
||||||
return "" +
|
|
||||||
"<div class='b-suite'>" +
|
|
||||||
"<div class='b-header'>" +
|
|
||||||
"<h2>" + data.name + "</h2>" +
|
|
||||||
"<button class='b-run'>Run</button>" +
|
|
||||||
"</div>" +
|
|
||||||
"<div class='b-benchmarks'></div>" +
|
|
||||||
"</div>";
|
|
||||||
},
|
|
||||||
|
|
||||||
bench: function(data) {
|
|
||||||
return "" +
|
|
||||||
"<div class='b-bench'>" +
|
|
||||||
"<div class='b-progress'><div class='b-progress-bar'></div></div>" +
|
|
||||||
"<span class='b-bench-status'></span>" +
|
|
||||||
"<h3>" + data.name + "</h3>" +
|
|
||||||
"<button class='b-expand'>···</button>" +
|
|
||||||
"<div class='b-code' style='display:none'><pre>" + hilite(data.fn.toString().replace(/ +}$/, '}')) + "</pre></div>" +
|
|
||||||
"</div>";
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
|
||||||
// View stuff
|
|
||||||
|
|
||||||
$(function() {
|
|
||||||
$("<style>").text(Tpl.style()).appendTo("head");
|
|
||||||
|
|
||||||
each(Data.suites, function(suite) {
|
|
||||||
// Create DOM for suite
|
|
||||||
var $suite = $(Tpl.suite(suite)).appendTo('body');
|
|
||||||
|
|
||||||
var timer;
|
|
||||||
|
|
||||||
// Create DOM for benchmarks
|
|
||||||
each(suite, function(bench) {
|
|
||||||
var $bench = $(Tpl.bench(bench)).appendTo($suite.find('.b-benchmarks'));
|
|
||||||
});
|
|
||||||
|
|
||||||
// Bind DOM -> model events
|
|
||||||
$suite.find('.b-run').on('click', function() {
|
|
||||||
suite.reset();
|
|
||||||
suite.run({ async: true });
|
|
||||||
});
|
|
||||||
|
|
||||||
$suite.find('.b-expand').on('click', function() {
|
|
||||||
$(this).closest('.b-bench').find('.b-code').toggle();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Bind model -> DOM events
|
|
||||||
suite
|
|
||||||
.on('start', function() {
|
|
||||||
$suite.find('.b-run').addClass('disabled');
|
|
||||||
})
|
|
||||||
|
|
||||||
.on('complete', function() {
|
|
||||||
$suite.find('.b-run').removeClass('disabled');
|
|
||||||
updateSuite(suite, $suite);
|
|
||||||
});
|
|
||||||
|
|
||||||
each(suite, function(bench, i) {
|
|
||||||
var $bench = $suite.find('.b-bench').eq(i);
|
|
||||||
|
|
||||||
bench
|
|
||||||
.on('start', function() {
|
|
||||||
updateSuite(suite, $suite);
|
|
||||||
$bench.find('.b-progress').addClass('b-running');
|
|
||||||
$bench.find('.b-progress-bar').css({ width: '5%' });
|
|
||||||
$bench.find('.b-bench-status').html('running...');
|
|
||||||
})
|
|
||||||
.on('error complete', function() {
|
|
||||||
updateSuite(suite, $suite);
|
|
||||||
$bench.find('.b-progress').removeClass('b-running');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
function updateSuite(suite, $suite) {
|
|
||||||
each(suite, function(bench, i) {
|
|
||||||
var $bench = $suite.find('.b-bench').eq(i);
|
|
||||||
|
|
||||||
updateBench(suite, bench, $bench);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateBench(suite, bench, $bench) {
|
|
||||||
var fastest = suite.filter('fastest').pluck('hz')[0];
|
|
||||||
|
|
||||||
var str = '', tip = '';
|
|
||||||
|
|
||||||
if (bench.error) {
|
|
||||||
str = "ERROR";
|
|
||||||
console.log(bench.error);
|
|
||||||
}
|
|
||||||
|
|
||||||
else if (!bench.running && bench.count > 0) {
|
|
||||||
str = n(bench.hz) + " per sec";
|
|
||||||
tip = "Executed " + n(bench.count) + "x, took ";
|
|
||||||
tip += n(bench.times.elapsed, 2) + "s";
|
|
||||||
|
|
||||||
var percent = bench.hz / fastest;
|
|
||||||
$bench.find('.b-progress').attr('title', n(percent*100) + "%");
|
|
||||||
$bench.find('.b-progress-bar').css({ width: percent*100 + "%" });
|
|
||||||
}
|
|
||||||
|
|
||||||
$bench
|
|
||||||
.find('.b-bench-status').show().html(str).attr('title', tip).end();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper for each
|
|
||||||
*/
|
|
||||||
|
|
||||||
function each(list, fn) {
|
|
||||||
var len = list.length;
|
|
||||||
for (var i=0; i<len; ++i) { fn(list[i], i); }
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper for comma-separating numbebrs
|
|
||||||
*/
|
|
||||||
|
|
||||||
function n(x, round) {
|
|
||||||
if (round > 0) {
|
|
||||||
var exp = Math.pow(10, round);
|
|
||||||
return Math.round(x * exp)/exp;
|
|
||||||
}
|
|
||||||
// http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript
|
|
||||||
return parseInt(x, 10).toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
||||||
}
|
|
||||||
|
|
||||||
function hilite(str) {
|
|
||||||
return str
|
|
||||||
.replace(/</g, '<')
|
|
||||||
.replace(/>/g, '>')
|
|
||||||
.replace(/(".*?")/gm, '<span class="string">$1</span>')
|
|
||||||
.replace(/\/\/(.*)/gm, '<span class="comment">//$1</span>')
|
|
||||||
.replace(/('.*?')/gm, '<span class="string">$1</span>')
|
|
||||||
.replace(/(\d+\.\d+)/gm, '<span class="number">$1</span>')
|
|
||||||
.replace(/(\d+)/gm, '<span class="number">$1</span>')
|
|
||||||
.replace(/\bnew *(\w+)/gm, '<span class="keyword">new</span> <span class="init">$1</span>')
|
|
||||||
.replace(/\b(function|new|throw|return|var|if|else)\b/gm, '<span class="keyword">$1</span>');
|
|
||||||
}
|
|
||||||
|
|
||||||
})(jQuery);
|
|
Binary file not shown.
Before Width: | Height: | Size: 39 KiB |
36
web/src/vendor/fontawesome/.bower.json
vendored
36
web/src/vendor/fontawesome/.bower.json
vendored
@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "font-awesome",
|
|
||||||
"description": "Font Awesome",
|
|
||||||
"version": "4.2.0",
|
|
||||||
"keywords": [],
|
|
||||||
"homepage": "http://fontawesome.io",
|
|
||||||
"dependencies": {},
|
|
||||||
"devDependencies": {},
|
|
||||||
"license": [
|
|
||||||
"OFL-1.1",
|
|
||||||
"MIT",
|
|
||||||
"CC-BY-3.0"
|
|
||||||
],
|
|
||||||
"main": [
|
|
||||||
"./css/font-awesome.css",
|
|
||||||
"./fonts/*"
|
|
||||||
],
|
|
||||||
"ignore": [
|
|
||||||
"*/.*",
|
|
||||||
"*.json",
|
|
||||||
"src",
|
|
||||||
"*.yml",
|
|
||||||
"Gemfile",
|
|
||||||
"Gemfile.lock",
|
|
||||||
"*.md"
|
|
||||||
],
|
|
||||||
"_release": "4.2.0",
|
|
||||||
"_resolution": {
|
|
||||||
"type": "version",
|
|
||||||
"tag": "v4.2.0",
|
|
||||||
"commit": "0b924144a95a54fa738d0450ff66c1dabd11ae74"
|
|
||||||
},
|
|
||||||
"_source": "git://github.com/FortAwesome/Font-Awesome.git",
|
|
||||||
"_target": "*",
|
|
||||||
"_originalSource": "fontawesome"
|
|
||||||
}
|
|
32
web/src/vendor/fontawesome/.gitignore
vendored
32
web/src/vendor/fontawesome/.gitignore
vendored
@ -1,32 +0,0 @@
|
|||||||
*.pyc
|
|
||||||
*.egg-info
|
|
||||||
*.db
|
|
||||||
*.db.old
|
|
||||||
*.swp
|
|
||||||
*.db-journal
|
|
||||||
|
|
||||||
.coverage
|
|
||||||
.DS_Store
|
|
||||||
.installed.cfg
|
|
||||||
_gh_pages/*
|
|
||||||
|
|
||||||
.idea/*
|
|
||||||
.svn/*
|
|
||||||
src/website/static/*
|
|
||||||
src/website/media/*
|
|
||||||
|
|
||||||
bin
|
|
||||||
cfcache
|
|
||||||
develop-eggs
|
|
||||||
dist
|
|
||||||
downloads
|
|
||||||
eggs
|
|
||||||
parts
|
|
||||||
tmp
|
|
||||||
.sass-cache
|
|
||||||
node_modules
|
|
||||||
|
|
||||||
src/website/settingslocal.py
|
|
||||||
stunnel.log
|
|
||||||
|
|
||||||
.ruby-version
|
|
42
web/src/vendor/fontawesome/.npmignore
vendored
42
web/src/vendor/fontawesome/.npmignore
vendored
@ -1,42 +0,0 @@
|
|||||||
*.pyc
|
|
||||||
*.egg-info
|
|
||||||
*.db
|
|
||||||
*.db.old
|
|
||||||
*.swp
|
|
||||||
*.db-journal
|
|
||||||
|
|
||||||
.coverage
|
|
||||||
.DS_Store
|
|
||||||
.installed.cfg
|
|
||||||
_gh_pages/*
|
|
||||||
|
|
||||||
.idea/*
|
|
||||||
.svn/*
|
|
||||||
src/website/static/*
|
|
||||||
src/website/media/*
|
|
||||||
|
|
||||||
bin
|
|
||||||
cfcache
|
|
||||||
develop-eggs
|
|
||||||
dist
|
|
||||||
downloads
|
|
||||||
eggs
|
|
||||||
parts
|
|
||||||
tmp
|
|
||||||
.sass-cache
|
|
||||||
node_modules
|
|
||||||
|
|
||||||
src/website/settingslocal.py
|
|
||||||
stunnel.log
|
|
||||||
|
|
||||||
.ruby-version
|
|
||||||
|
|
||||||
# don't need these in the npm package.
|
|
||||||
src/
|
|
||||||
_config.yml
|
|
||||||
bower.json
|
|
||||||
component.json
|
|
||||||
composer.json
|
|
||||||
CONTRIBUTING.md
|
|
||||||
Gemfile
|
|
||||||
Gemfile.lock
|
|
23
web/src/vendor/fontawesome/bower.json
vendored
23
web/src/vendor/fontawesome/bower.json
vendored
@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "font-awesome",
|
|
||||||
"description": "Font Awesome",
|
|
||||||
"version": "4.2.0",
|
|
||||||
"keywords": [],
|
|
||||||
"homepage": "http://fontawesome.io",
|
|
||||||
"dependencies": {},
|
|
||||||
"devDependencies": {},
|
|
||||||
"license": ["OFL-1.1", "MIT", "CC-BY-3.0"],
|
|
||||||
"main": [
|
|
||||||
"./css/font-awesome.css",
|
|
||||||
"./fonts/*"
|
|
||||||
],
|
|
||||||
"ignore": [
|
|
||||||
"*/.*",
|
|
||||||
"*.json",
|
|
||||||
"src",
|
|
||||||
"*.yml",
|
|
||||||
"Gemfile",
|
|
||||||
"Gemfile.lock",
|
|
||||||
"*.md"
|
|
||||||
]
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
@ -6,8 +6,8 @@
|
|||||||
* -------------------------- */
|
* -------------------------- */
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: 'FontAwesome';
|
font-family: 'FontAwesome';
|
||||||
src: url('fonts/fontawesome-webfont.eot?v=4.2.0');
|
src: url('../fonts/fontawesome-webfont.eot?v=4.2.0');
|
||||||
src: url('fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
|
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
Before Width: | Height: | Size: 280 KiB After Width: | Height: | Size: 280 KiB |
@ -1,16 +0,0 @@
|
|||||||
// Bordered & Pulled
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.@{fa-css-prefix}-border {
|
|
||||||
padding: .2em .25em .15em;
|
|
||||||
border: solid .08em @fa-border-color;
|
|
||||||
border-radius: .1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pull-right { float: right; }
|
|
||||||
.pull-left { float: left; }
|
|
||||||
|
|
||||||
.@{fa-css-prefix} {
|
|
||||||
&.pull-left { margin-right: .3em; }
|
|
||||||
&.pull-right { margin-left: .3em; }
|
|
||||||
}
|
|
11
web/src/vendor/fontawesome/less/core.less
vendored
11
web/src/vendor/fontawesome/less/core.less
vendored
@ -1,11 +0,0 @@
|
|||||||
// Base Class Definition
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.@{fa-css-prefix} {
|
|
||||||
display: inline-block;
|
|
||||||
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
|
|
||||||
font-size: inherit; // can't have font-size inherit on line above, so need to override
|
|
||||||
text-rendering: auto; // optimizelegibility throws things off #1094
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
2
web/src/vendor/fontawesome/less/extras.less
vendored
2
web/src/vendor/fontawesome/less/extras.less
vendored
@ -1,2 +0,0 @@
|
|||||||
// Extras
|
|
||||||
// --------------------------
|
|
@ -1,6 +0,0 @@
|
|||||||
// Fixed Width Icons
|
|
||||||
// -------------------------
|
|
||||||
.@{fa-css-prefix}-fw {
|
|
||||||
width: (18em / 14);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
/*!
|
|
||||||
* Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
|
|
||||||
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
|
||||||
*/
|
|
||||||
|
|
||||||
@import "variables.less";
|
|
||||||
@import "mixins.less";
|
|
||||||
@import "path.less";
|
|
||||||
@import "core.less";
|
|
||||||
@import "larger.less";
|
|
||||||
@import "fixed-width.less";
|
|
||||||
@import "list.less";
|
|
||||||
@import "bordered-pulled.less";
|
|
||||||
@import "spinning.less";
|
|
||||||
@import "rotated-flipped.less";
|
|
||||||
@import "stacked.less";
|
|
||||||
@import "icons.less";
|
|
552
web/src/vendor/fontawesome/less/icons.less
vendored
552
web/src/vendor/fontawesome/less/icons.less
vendored
@ -1,552 +0,0 @@
|
|||||||
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
|
|
||||||
readers do not read off random characters that represent icons */
|
|
||||||
|
|
||||||
.@{fa-css-prefix}-glass:before { content: @fa-var-glass; }
|
|
||||||
.@{fa-css-prefix}-music:before { content: @fa-var-music; }
|
|
||||||
.@{fa-css-prefix}-search:before { content: @fa-var-search; }
|
|
||||||
.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; }
|
|
||||||
.@{fa-css-prefix}-heart:before { content: @fa-var-heart; }
|
|
||||||
.@{fa-css-prefix}-star:before { content: @fa-var-star; }
|
|
||||||
.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; }
|
|
||||||
.@{fa-css-prefix}-user:before { content: @fa-var-user; }
|
|
||||||
.@{fa-css-prefix}-film:before { content: @fa-var-film; }
|
|
||||||
.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; }
|
|
||||||
.@{fa-css-prefix}-th:before { content: @fa-var-th; }
|
|
||||||
.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; }
|
|
||||||
.@{fa-css-prefix}-check:before { content: @fa-var-check; }
|
|
||||||
.@{fa-css-prefix}-remove:before,
|
|
||||||
.@{fa-css-prefix}-close:before,
|
|
||||||
.@{fa-css-prefix}-times:before { content: @fa-var-times; }
|
|
||||||
.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; }
|
|
||||||
.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; }
|
|
||||||
.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; }
|
|
||||||
.@{fa-css-prefix}-signal:before { content: @fa-var-signal; }
|
|
||||||
.@{fa-css-prefix}-gear:before,
|
|
||||||
.@{fa-css-prefix}-cog:before { content: @fa-var-cog; }
|
|
||||||
.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; }
|
|
||||||
.@{fa-css-prefix}-home:before { content: @fa-var-home; }
|
|
||||||
.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; }
|
|
||||||
.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; }
|
|
||||||
.@{fa-css-prefix}-road:before { content: @fa-var-road; }
|
|
||||||
.@{fa-css-prefix}-download:before { content: @fa-var-download; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; }
|
|
||||||
.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; }
|
|
||||||
.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; }
|
|
||||||
.@{fa-css-prefix}-rotate-right:before,
|
|
||||||
.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; }
|
|
||||||
.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; }
|
|
||||||
.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; }
|
|
||||||
.@{fa-css-prefix}-lock:before { content: @fa-var-lock; }
|
|
||||||
.@{fa-css-prefix}-flag:before { content: @fa-var-flag; }
|
|
||||||
.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; }
|
|
||||||
.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; }
|
|
||||||
.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; }
|
|
||||||
.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; }
|
|
||||||
.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; }
|
|
||||||
.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; }
|
|
||||||
.@{fa-css-prefix}-tag:before { content: @fa-var-tag; }
|
|
||||||
.@{fa-css-prefix}-tags:before { content: @fa-var-tags; }
|
|
||||||
.@{fa-css-prefix}-book:before { content: @fa-var-book; }
|
|
||||||
.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; }
|
|
||||||
.@{fa-css-prefix}-print:before { content: @fa-var-print; }
|
|
||||||
.@{fa-css-prefix}-camera:before { content: @fa-var-camera; }
|
|
||||||
.@{fa-css-prefix}-font:before { content: @fa-var-font; }
|
|
||||||
.@{fa-css-prefix}-bold:before { content: @fa-var-bold; }
|
|
||||||
.@{fa-css-prefix}-italic:before { content: @fa-var-italic; }
|
|
||||||
.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; }
|
|
||||||
.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; }
|
|
||||||
.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; }
|
|
||||||
.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; }
|
|
||||||
.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; }
|
|
||||||
.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; }
|
|
||||||
.@{fa-css-prefix}-list:before { content: @fa-var-list; }
|
|
||||||
.@{fa-css-prefix}-dedent:before,
|
|
||||||
.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; }
|
|
||||||
.@{fa-css-prefix}-indent:before { content: @fa-var-indent; }
|
|
||||||
.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; }
|
|
||||||
.@{fa-css-prefix}-photo:before,
|
|
||||||
.@{fa-css-prefix}-image:before,
|
|
||||||
.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; }
|
|
||||||
.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; }
|
|
||||||
.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; }
|
|
||||||
.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; }
|
|
||||||
.@{fa-css-prefix}-tint:before { content: @fa-var-tint; }
|
|
||||||
.@{fa-css-prefix}-edit:before,
|
|
||||||
.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; }
|
|
||||||
.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; }
|
|
||||||
.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; }
|
|
||||||
.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; }
|
|
||||||
.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; }
|
|
||||||
.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; }
|
|
||||||
.@{fa-css-prefix}-backward:before { content: @fa-var-backward; }
|
|
||||||
.@{fa-css-prefix}-play:before { content: @fa-var-play; }
|
|
||||||
.@{fa-css-prefix}-pause:before { content: @fa-var-pause; }
|
|
||||||
.@{fa-css-prefix}-stop:before { content: @fa-var-stop; }
|
|
||||||
.@{fa-css-prefix}-forward:before { content: @fa-var-forward; }
|
|
||||||
.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; }
|
|
||||||
.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; }
|
|
||||||
.@{fa-css-prefix}-eject:before { content: @fa-var-eject; }
|
|
||||||
.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; }
|
|
||||||
.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; }
|
|
||||||
.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; }
|
|
||||||
.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; }
|
|
||||||
.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; }
|
|
||||||
.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; }
|
|
||||||
.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; }
|
|
||||||
.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; }
|
|
||||||
.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; }
|
|
||||||
.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; }
|
|
||||||
.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; }
|
|
||||||
.@{fa-css-prefix}-ban:before { content: @fa-var-ban; }
|
|
||||||
.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; }
|
|
||||||
.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; }
|
|
||||||
.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; }
|
|
||||||
.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; }
|
|
||||||
.@{fa-css-prefix}-mail-forward:before,
|
|
||||||
.@{fa-css-prefix}-share:before { content: @fa-var-share; }
|
|
||||||
.@{fa-css-prefix}-expand:before { content: @fa-var-expand; }
|
|
||||||
.@{fa-css-prefix}-compress:before { content: @fa-var-compress; }
|
|
||||||
.@{fa-css-prefix}-plus:before { content: @fa-var-plus; }
|
|
||||||
.@{fa-css-prefix}-minus:before { content: @fa-var-minus; }
|
|
||||||
.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; }
|
|
||||||
.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; }
|
|
||||||
.@{fa-css-prefix}-gift:before { content: @fa-var-gift; }
|
|
||||||
.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; }
|
|
||||||
.@{fa-css-prefix}-fire:before { content: @fa-var-fire; }
|
|
||||||
.@{fa-css-prefix}-eye:before { content: @fa-var-eye; }
|
|
||||||
.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; }
|
|
||||||
.@{fa-css-prefix}-warning:before,
|
|
||||||
.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; }
|
|
||||||
.@{fa-css-prefix}-plane:before { content: @fa-var-plane; }
|
|
||||||
.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; }
|
|
||||||
.@{fa-css-prefix}-random:before { content: @fa-var-random; }
|
|
||||||
.@{fa-css-prefix}-comment:before { content: @fa-var-comment; }
|
|
||||||
.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; }
|
|
||||||
.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; }
|
|
||||||
.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; }
|
|
||||||
.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; }
|
|
||||||
.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; }
|
|
||||||
.@{fa-css-prefix}-folder:before { content: @fa-var-folder; }
|
|
||||||
.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; }
|
|
||||||
.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; }
|
|
||||||
.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; }
|
|
||||||
.@{fa-css-prefix}-bar-chart-o:before,
|
|
||||||
.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; }
|
|
||||||
.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; }
|
|
||||||
.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; }
|
|
||||||
.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; }
|
|
||||||
.@{fa-css-prefix}-key:before { content: @fa-var-key; }
|
|
||||||
.@{fa-css-prefix}-gears:before,
|
|
||||||
.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; }
|
|
||||||
.@{fa-css-prefix}-comments:before { content: @fa-var-comments; }
|
|
||||||
.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; }
|
|
||||||
.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; }
|
|
||||||
.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; }
|
|
||||||
.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; }
|
|
||||||
.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; }
|
|
||||||
.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; }
|
|
||||||
.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; }
|
|
||||||
.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; }
|
|
||||||
.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; }
|
|
||||||
.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; }
|
|
||||||
.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; }
|
|
||||||
.@{fa-css-prefix}-upload:before { content: @fa-var-upload; }
|
|
||||||
.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; }
|
|
||||||
.@{fa-css-prefix}-phone:before { content: @fa-var-phone; }
|
|
||||||
.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; }
|
|
||||||
.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; }
|
|
||||||
.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; }
|
|
||||||
.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; }
|
|
||||||
.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; }
|
|
||||||
.@{fa-css-prefix}-github:before { content: @fa-var-github; }
|
|
||||||
.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; }
|
|
||||||
.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; }
|
|
||||||
.@{fa-css-prefix}-rss:before { content: @fa-var-rss; }
|
|
||||||
.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; }
|
|
||||||
.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; }
|
|
||||||
.@{fa-css-prefix}-bell:before { content: @fa-var-bell; }
|
|
||||||
.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; }
|
|
||||||
.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; }
|
|
||||||
.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; }
|
|
||||||
.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; }
|
|
||||||
.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; }
|
|
||||||
.@{fa-css-prefix}-globe:before { content: @fa-var-globe; }
|
|
||||||
.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; }
|
|
||||||
.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; }
|
|
||||||
.@{fa-css-prefix}-filter:before { content: @fa-var-filter; }
|
|
||||||
.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; }
|
|
||||||
.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; }
|
|
||||||
.@{fa-css-prefix}-group:before,
|
|
||||||
.@{fa-css-prefix}-users:before { content: @fa-var-users; }
|
|
||||||
.@{fa-css-prefix}-chain:before,
|
|
||||||
.@{fa-css-prefix}-link:before { content: @fa-var-link; }
|
|
||||||
.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; }
|
|
||||||
.@{fa-css-prefix}-flask:before { content: @fa-var-flask; }
|
|
||||||
.@{fa-css-prefix}-cut:before,
|
|
||||||
.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; }
|
|
||||||
.@{fa-css-prefix}-copy:before,
|
|
||||||
.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; }
|
|
||||||
.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; }
|
|
||||||
.@{fa-css-prefix}-save:before,
|
|
||||||
.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; }
|
|
||||||
.@{fa-css-prefix}-square:before { content: @fa-var-square; }
|
|
||||||
.@{fa-css-prefix}-navicon:before,
|
|
||||||
.@{fa-css-prefix}-reorder:before,
|
|
||||||
.@{fa-css-prefix}-bars:before { content: @fa-var-bars; }
|
|
||||||
.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; }
|
|
||||||
.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; }
|
|
||||||
.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; }
|
|
||||||
.@{fa-css-prefix}-underline:before { content: @fa-var-underline; }
|
|
||||||
.@{fa-css-prefix}-table:before { content: @fa-var-table; }
|
|
||||||
.@{fa-css-prefix}-magic:before { content: @fa-var-magic; }
|
|
||||||
.@{fa-css-prefix}-truck:before { content: @fa-var-truck; }
|
|
||||||
.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; }
|
|
||||||
.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; }
|
|
||||||
.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; }
|
|
||||||
.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; }
|
|
||||||
.@{fa-css-prefix}-money:before { content: @fa-var-money; }
|
|
||||||
.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; }
|
|
||||||
.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; }
|
|
||||||
.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; }
|
|
||||||
.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; }
|
|
||||||
.@{fa-css-prefix}-columns:before { content: @fa-var-columns; }
|
|
||||||
.@{fa-css-prefix}-unsorted:before,
|
|
||||||
.@{fa-css-prefix}-sort:before { content: @fa-var-sort; }
|
|
||||||
.@{fa-css-prefix}-sort-down:before,
|
|
||||||
.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; }
|
|
||||||
.@{fa-css-prefix}-sort-up:before,
|
|
||||||
.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; }
|
|
||||||
.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; }
|
|
||||||
.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; }
|
|
||||||
.@{fa-css-prefix}-rotate-left:before,
|
|
||||||
.@{fa-css-prefix}-undo:before { content: @fa-var-undo; }
|
|
||||||
.@{fa-css-prefix}-legal:before,
|
|
||||||
.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; }
|
|
||||||
.@{fa-css-prefix}-dashboard:before,
|
|
||||||
.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; }
|
|
||||||
.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; }
|
|
||||||
.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; }
|
|
||||||
.@{fa-css-prefix}-flash:before,
|
|
||||||
.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; }
|
|
||||||
.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; }
|
|
||||||
.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; }
|
|
||||||
.@{fa-css-prefix}-paste:before,
|
|
||||||
.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; }
|
|
||||||
.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; }
|
|
||||||
.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; }
|
|
||||||
.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; }
|
|
||||||
.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; }
|
|
||||||
.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; }
|
|
||||||
.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; }
|
|
||||||
.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; }
|
|
||||||
.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; }
|
|
||||||
.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; }
|
|
||||||
.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; }
|
|
||||||
.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; }
|
|
||||||
.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; }
|
|
||||||
.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; }
|
|
||||||
.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; }
|
|
||||||
.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; }
|
|
||||||
.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; }
|
|
||||||
.@{fa-css-prefix}-beer:before { content: @fa-var-beer; }
|
|
||||||
.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; }
|
|
||||||
.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; }
|
|
||||||
.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; }
|
|
||||||
.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; }
|
|
||||||
.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; }
|
|
||||||
.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; }
|
|
||||||
.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; }
|
|
||||||
.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; }
|
|
||||||
.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; }
|
|
||||||
.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; }
|
|
||||||
.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; }
|
|
||||||
.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; }
|
|
||||||
.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; }
|
|
||||||
.@{fa-css-prefix}-mobile-phone:before,
|
|
||||||
.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; }
|
|
||||||
.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; }
|
|
||||||
.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; }
|
|
||||||
.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; }
|
|
||||||
.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; }
|
|
||||||
.@{fa-css-prefix}-circle:before { content: @fa-var-circle; }
|
|
||||||
.@{fa-css-prefix}-mail-reply:before,
|
|
||||||
.@{fa-css-prefix}-reply:before { content: @fa-var-reply; }
|
|
||||||
.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; }
|
|
||||||
.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; }
|
|
||||||
.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; }
|
|
||||||
.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; }
|
|
||||||
.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; }
|
|
||||||
.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; }
|
|
||||||
.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; }
|
|
||||||
.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; }
|
|
||||||
.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; }
|
|
||||||
.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; }
|
|
||||||
.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; }
|
|
||||||
.@{fa-css-prefix}-code:before { content: @fa-var-code; }
|
|
||||||
.@{fa-css-prefix}-mail-reply-all:before,
|
|
||||||
.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; }
|
|
||||||
.@{fa-css-prefix}-star-half-empty:before,
|
|
||||||
.@{fa-css-prefix}-star-half-full:before,
|
|
||||||
.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; }
|
|
||||||
.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; }
|
|
||||||
.@{fa-css-prefix}-crop:before { content: @fa-var-crop; }
|
|
||||||
.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; }
|
|
||||||
.@{fa-css-prefix}-unlink:before,
|
|
||||||
.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; }
|
|
||||||
.@{fa-css-prefix}-question:before { content: @fa-var-question; }
|
|
||||||
.@{fa-css-prefix}-info:before { content: @fa-var-info; }
|
|
||||||
.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; }
|
|
||||||
.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; }
|
|
||||||
.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; }
|
|
||||||
.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; }
|
|
||||||
.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; }
|
|
||||||
.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; }
|
|
||||||
.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; }
|
|
||||||
.@{fa-css-prefix}-shield:before { content: @fa-var-shield; }
|
|
||||||
.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; }
|
|
||||||
.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; }
|
|
||||||
.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; }
|
|
||||||
.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; }
|
|
||||||
.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; }
|
|
||||||
.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; }
|
|
||||||
.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; }
|
|
||||||
.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; }
|
|
||||||
.@{fa-css-prefix}-html5:before { content: @fa-var-html5; }
|
|
||||||
.@{fa-css-prefix}-css3:before { content: @fa-var-css3; }
|
|
||||||
.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; }
|
|
||||||
.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; }
|
|
||||||
.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; }
|
|
||||||
.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; }
|
|
||||||
.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; }
|
|
||||||
.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; }
|
|
||||||
.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; }
|
|
||||||
.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; }
|
|
||||||
.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; }
|
|
||||||
.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; }
|
|
||||||
.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; }
|
|
||||||
.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; }
|
|
||||||
.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; }
|
|
||||||
.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; }
|
|
||||||
.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; }
|
|
||||||
.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; }
|
|
||||||
.@{fa-css-prefix}-compass:before { content: @fa-var-compass; }
|
|
||||||
.@{fa-css-prefix}-toggle-down:before,
|
|
||||||
.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; }
|
|
||||||
.@{fa-css-prefix}-toggle-up:before,
|
|
||||||
.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; }
|
|
||||||
.@{fa-css-prefix}-toggle-right:before,
|
|
||||||
.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; }
|
|
||||||
.@{fa-css-prefix}-euro:before,
|
|
||||||
.@{fa-css-prefix}-eur:before { content: @fa-var-eur; }
|
|
||||||
.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; }
|
|
||||||
.@{fa-css-prefix}-dollar:before,
|
|
||||||
.@{fa-css-prefix}-usd:before { content: @fa-var-usd; }
|
|
||||||
.@{fa-css-prefix}-rupee:before,
|
|
||||||
.@{fa-css-prefix}-inr:before { content: @fa-var-inr; }
|
|
||||||
.@{fa-css-prefix}-cny:before,
|
|
||||||
.@{fa-css-prefix}-rmb:before,
|
|
||||||
.@{fa-css-prefix}-yen:before,
|
|
||||||
.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; }
|
|
||||||
.@{fa-css-prefix}-ruble:before,
|
|
||||||
.@{fa-css-prefix}-rouble:before,
|
|
||||||
.@{fa-css-prefix}-rub:before { content: @fa-var-rub; }
|
|
||||||
.@{fa-css-prefix}-won:before,
|
|
||||||
.@{fa-css-prefix}-krw:before { content: @fa-var-krw; }
|
|
||||||
.@{fa-css-prefix}-bitcoin:before,
|
|
||||||
.@{fa-css-prefix}-btc:before { content: @fa-var-btc; }
|
|
||||||
.@{fa-css-prefix}-file:before { content: @fa-var-file; }
|
|
||||||
.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; }
|
|
||||||
.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; }
|
|
||||||
.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; }
|
|
||||||
.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; }
|
|
||||||
.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; }
|
|
||||||
.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; }
|
|
||||||
.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; }
|
|
||||||
.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; }
|
|
||||||
.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; }
|
|
||||||
.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; }
|
|
||||||
.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; }
|
|
||||||
.@{fa-css-prefix}-xing:before { content: @fa-var-xing; }
|
|
||||||
.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; }
|
|
||||||
.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; }
|
|
||||||
.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; }
|
|
||||||
.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; }
|
|
||||||
.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; }
|
|
||||||
.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; }
|
|
||||||
.@{fa-css-prefix}-adn:before { content: @fa-var-adn; }
|
|
||||||
.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; }
|
|
||||||
.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; }
|
|
||||||
.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; }
|
|
||||||
.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; }
|
|
||||||
.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; }
|
|
||||||
.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; }
|
|
||||||
.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; }
|
|
||||||
.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; }
|
|
||||||
.@{fa-css-prefix}-apple:before { content: @fa-var-apple; }
|
|
||||||
.@{fa-css-prefix}-windows:before { content: @fa-var-windows; }
|
|
||||||
.@{fa-css-prefix}-android:before { content: @fa-var-android; }
|
|
||||||
.@{fa-css-prefix}-linux:before { content: @fa-var-linux; }
|
|
||||||
.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; }
|
|
||||||
.@{fa-css-prefix}-skype:before { content: @fa-var-skype; }
|
|
||||||
.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; }
|
|
||||||
.@{fa-css-prefix}-trello:before { content: @fa-var-trello; }
|
|
||||||
.@{fa-css-prefix}-female:before { content: @fa-var-female; }
|
|
||||||
.@{fa-css-prefix}-male:before { content: @fa-var-male; }
|
|
||||||
.@{fa-css-prefix}-gittip:before { content: @fa-var-gittip; }
|
|
||||||
.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; }
|
|
||||||
.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; }
|
|
||||||
.@{fa-css-prefix}-archive:before { content: @fa-var-archive; }
|
|
||||||
.@{fa-css-prefix}-bug:before { content: @fa-var-bug; }
|
|
||||||
.@{fa-css-prefix}-vk:before { content: @fa-var-vk; }
|
|
||||||
.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; }
|
|
||||||
.@{fa-css-prefix}-renren:before { content: @fa-var-renren; }
|
|
||||||
.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; }
|
|
||||||
.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; }
|
|
||||||
.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; }
|
|
||||||
.@{fa-css-prefix}-toggle-left:before,
|
|
||||||
.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; }
|
|
||||||
.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; }
|
|
||||||
.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; }
|
|
||||||
.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; }
|
|
||||||
.@{fa-css-prefix}-turkish-lira:before,
|
|
||||||
.@{fa-css-prefix}-try:before { content: @fa-var-try; }
|
|
||||||
.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; }
|
|
||||||
.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; }
|
|
||||||
.@{fa-css-prefix}-slack:before { content: @fa-var-slack; }
|
|
||||||
.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; }
|
|
||||||
.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; }
|
|
||||||
.@{fa-css-prefix}-openid:before { content: @fa-var-openid; }
|
|
||||||
.@{fa-css-prefix}-institution:before,
|
|
||||||
.@{fa-css-prefix}-bank:before,
|
|
||||||
.@{fa-css-prefix}-university:before { content: @fa-var-university; }
|
|
||||||
.@{fa-css-prefix}-mortar-board:before,
|
|
||||||
.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; }
|
|
||||||
.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; }
|
|
||||||
.@{fa-css-prefix}-google:before { content: @fa-var-google; }
|
|
||||||
.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; }
|
|
||||||
.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; }
|
|
||||||
.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; }
|
|
||||||
.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; }
|
|
||||||
.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; }
|
|
||||||
.@{fa-css-prefix}-digg:before { content: @fa-var-digg; }
|
|
||||||
.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; }
|
|
||||||
.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; }
|
|
||||||
.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; }
|
|
||||||
.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; }
|
|
||||||
.@{fa-css-prefix}-language:before { content: @fa-var-language; }
|
|
||||||
.@{fa-css-prefix}-fax:before { content: @fa-var-fax; }
|
|
||||||
.@{fa-css-prefix}-building:before { content: @fa-var-building; }
|
|
||||||
.@{fa-css-prefix}-child:before { content: @fa-var-child; }
|
|
||||||
.@{fa-css-prefix}-paw:before { content: @fa-var-paw; }
|
|
||||||
.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; }
|
|
||||||
.@{fa-css-prefix}-cube:before { content: @fa-var-cube; }
|
|
||||||
.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; }
|
|
||||||
.@{fa-css-prefix}-behance:before { content: @fa-var-behance; }
|
|
||||||
.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; }
|
|
||||||
.@{fa-css-prefix}-steam:before { content: @fa-var-steam; }
|
|
||||||
.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; }
|
|
||||||
.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; }
|
|
||||||
.@{fa-css-prefix}-automobile:before,
|
|
||||||
.@{fa-css-prefix}-car:before { content: @fa-var-car; }
|
|
||||||
.@{fa-css-prefix}-cab:before,
|
|
||||||
.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; }
|
|
||||||
.@{fa-css-prefix}-tree:before { content: @fa-var-tree; }
|
|
||||||
.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; }
|
|
||||||
.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; }
|
|
||||||
.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; }
|
|
||||||
.@{fa-css-prefix}-database:before { content: @fa-var-database; }
|
|
||||||
.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; }
|
|
||||||
.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; }
|
|
||||||
.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; }
|
|
||||||
.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; }
|
|
||||||
.@{fa-css-prefix}-file-photo-o:before,
|
|
||||||
.@{fa-css-prefix}-file-picture-o:before,
|
|
||||||
.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; }
|
|
||||||
.@{fa-css-prefix}-file-zip-o:before,
|
|
||||||
.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; }
|
|
||||||
.@{fa-css-prefix}-file-sound-o:before,
|
|
||||||
.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; }
|
|
||||||
.@{fa-css-prefix}-file-movie-o:before,
|
|
||||||
.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; }
|
|
||||||
.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; }
|
|
||||||
.@{fa-css-prefix}-vine:before { content: @fa-var-vine; }
|
|
||||||
.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; }
|
|
||||||
.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; }
|
|
||||||
.@{fa-css-prefix}-life-bouy:before,
|
|
||||||
.@{fa-css-prefix}-life-buoy:before,
|
|
||||||
.@{fa-css-prefix}-life-saver:before,
|
|
||||||
.@{fa-css-prefix}-support:before,
|
|
||||||
.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; }
|
|
||||||
.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; }
|
|
||||||
.@{fa-css-prefix}-ra:before,
|
|
||||||
.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; }
|
|
||||||
.@{fa-css-prefix}-ge:before,
|
|
||||||
.@{fa-css-prefix}-empire:before { content: @fa-var-empire; }
|
|
||||||
.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; }
|
|
||||||
.@{fa-css-prefix}-git:before { content: @fa-var-git; }
|
|
||||||
.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; }
|
|
||||||
.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; }
|
|
||||||
.@{fa-css-prefix}-qq:before { content: @fa-var-qq; }
|
|
||||||
.@{fa-css-prefix}-wechat:before,
|
|
||||||
.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; }
|
|
||||||
.@{fa-css-prefix}-send:before,
|
|
||||||
.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; }
|
|
||||||
.@{fa-css-prefix}-send-o:before,
|
|
||||||
.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; }
|
|
||||||
.@{fa-css-prefix}-history:before { content: @fa-var-history; }
|
|
||||||
.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; }
|
|
||||||
.@{fa-css-prefix}-header:before { content: @fa-var-header; }
|
|
||||||
.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; }
|
|
||||||
.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; }
|
|
||||||
.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; }
|
|
||||||
.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; }
|
|
||||||
.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; }
|
|
||||||
.@{fa-css-prefix}-soccer-ball-o:before,
|
|
||||||
.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; }
|
|
||||||
.@{fa-css-prefix}-tty:before { content: @fa-var-tty; }
|
|
||||||
.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; }
|
|
||||||
.@{fa-css-prefix}-plug:before { content: @fa-var-plug; }
|
|
||||||
.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; }
|
|
||||||
.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; }
|
|
||||||
.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; }
|
|
||||||
.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; }
|
|
||||||
.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; }
|
|
||||||
.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; }
|
|
||||||
.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; }
|
|
||||||
.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; }
|
|
||||||
.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; }
|
|
||||||
.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; }
|
|
||||||
.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; }
|
|
||||||
.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; }
|
|
||||||
.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; }
|
|
||||||
.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; }
|
|
||||||
.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; }
|
|
||||||
.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; }
|
|
||||||
.@{fa-css-prefix}-trash:before { content: @fa-var-trash; }
|
|
||||||
.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; }
|
|
||||||
.@{fa-css-prefix}-at:before { content: @fa-var-at; }
|
|
||||||
.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; }
|
|
||||||
.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; }
|
|
||||||
.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; }
|
|
||||||
.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; }
|
|
||||||
.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; }
|
|
||||||
.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; }
|
|
||||||
.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; }
|
|
||||||
.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; }
|
|
||||||
.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; }
|
|
||||||
.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; }
|
|
||||||
.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; }
|
|
||||||
.@{fa-css-prefix}-bus:before { content: @fa-var-bus; }
|
|
||||||
.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; }
|
|
||||||
.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; }
|
|
||||||
.@{fa-css-prefix}-cc:before { content: @fa-var-cc; }
|
|
||||||
.@{fa-css-prefix}-shekel:before,
|
|
||||||
.@{fa-css-prefix}-sheqel:before,
|
|
||||||
.@{fa-css-prefix}-ils:before { content: @fa-var-ils; }
|
|
||||||
.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; }
|
|
13
web/src/vendor/fontawesome/less/larger.less
vendored
13
web/src/vendor/fontawesome/less/larger.less
vendored
@ -1,13 +0,0 @@
|
|||||||
// Icon Sizes
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
/* makes the font 33% larger relative to the icon container */
|
|
||||||
.@{fa-css-prefix}-lg {
|
|
||||||
font-size: (4em / 3);
|
|
||||||
line-height: (3em / 4);
|
|
||||||
vertical-align: -15%;
|
|
||||||
}
|
|
||||||
.@{fa-css-prefix}-2x { font-size: 2em; }
|
|
||||||
.@{fa-css-prefix}-3x { font-size: 3em; }
|
|
||||||
.@{fa-css-prefix}-4x { font-size: 4em; }
|
|
||||||
.@{fa-css-prefix}-5x { font-size: 5em; }
|
|
19
web/src/vendor/fontawesome/less/list.less
vendored
19
web/src/vendor/fontawesome/less/list.less
vendored
@ -1,19 +0,0 @@
|
|||||||
// List Icons
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.@{fa-css-prefix}-ul {
|
|
||||||
padding-left: 0;
|
|
||||||
margin-left: @fa-li-width;
|
|
||||||
list-style-type: none;
|
|
||||||
> li { position: relative; }
|
|
||||||
}
|
|
||||||
.@{fa-css-prefix}-li {
|
|
||||||
position: absolute;
|
|
||||||
left: -@fa-li-width;
|
|
||||||
width: @fa-li-width;
|
|
||||||
top: (2em / 14);
|
|
||||||
text-align: center;
|
|
||||||
&.@{fa-css-prefix}-lg {
|
|
||||||
left: (-@fa-li-width + (4em / 14));
|
|
||||||
}
|
|
||||||
}
|
|
25
web/src/vendor/fontawesome/less/mixins.less
vendored
25
web/src/vendor/fontawesome/less/mixins.less
vendored
@ -1,25 +0,0 @@
|
|||||||
// Mixins
|
|
||||||
// --------------------------
|
|
||||||
|
|
||||||
.fa-icon() {
|
|
||||||
display: inline-block;
|
|
||||||
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
|
|
||||||
font-size: inherit; // can't have font-size inherit on line above, so need to override
|
|
||||||
text-rendering: auto; // optimizelegibility throws things off #1094
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-icon-rotate(@degrees, @rotation) {
|
|
||||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation);
|
|
||||||
-webkit-transform: rotate(@degrees);
|
|
||||||
-ms-transform: rotate(@degrees);
|
|
||||||
transform: rotate(@degrees);
|
|
||||||
}
|
|
||||||
|
|
||||||
.fa-icon-flip(@horiz, @vert, @rotation) {
|
|
||||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=@rotation, mirror=1);
|
|
||||||
-webkit-transform: scale(@horiz, @vert);
|
|
||||||
-ms-transform: scale(@horiz, @vert);
|
|
||||||
transform: scale(@horiz, @vert);
|
|
||||||
}
|
|
14
web/src/vendor/fontawesome/less/path.less
vendored
14
web/src/vendor/fontawesome/less/path.less
vendored
@ -1,14 +0,0 @@
|
|||||||
/* FONT PATH
|
|
||||||
* -------------------------- */
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'FontAwesome';
|
|
||||||
src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}');
|
|
||||||
src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'),
|
|
||||||
url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'),
|
|
||||||
url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'),
|
|
||||||
url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg');
|
|
||||||
// src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
// Rotated & Flipped Icons
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); }
|
|
||||||
.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); }
|
|
||||||
.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); }
|
|
||||||
|
|
||||||
.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); }
|
|
||||||
.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); }
|
|
||||||
|
|
||||||
// Hook for IE8-9
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
:root .@{fa-css-prefix}-rotate-90,
|
|
||||||
:root .@{fa-css-prefix}-rotate-180,
|
|
||||||
:root .@{fa-css-prefix}-rotate-270,
|
|
||||||
:root .@{fa-css-prefix}-flip-horizontal,
|
|
||||||
:root .@{fa-css-prefix}-flip-vertical {
|
|
||||||
filter: none;
|
|
||||||
}
|
|
29
web/src/vendor/fontawesome/less/spinning.less
vendored
29
web/src/vendor/fontawesome/less/spinning.less
vendored
@ -1,29 +0,0 @@
|
|||||||
// Spinning Icons
|
|
||||||
// --------------------------
|
|
||||||
|
|
||||||
.@{fa-css-prefix}-spin {
|
|
||||||
-webkit-animation: fa-spin 2s infinite linear;
|
|
||||||
animation: fa-spin 2s infinite linear;
|
|
||||||
}
|
|
||||||
|
|
||||||
@-webkit-keyframes fa-spin {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-webkit-transform: rotate(359deg);
|
|
||||||
transform: rotate(359deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes fa-spin {
|
|
||||||
0% {
|
|
||||||
-webkit-transform: rotate(0deg);
|
|
||||||
transform: rotate(0deg);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
-webkit-transform: rotate(359deg);
|
|
||||||
transform: rotate(359deg);
|
|
||||||
}
|
|
||||||
}
|
|
20
web/src/vendor/fontawesome/less/stacked.less
vendored
20
web/src/vendor/fontawesome/less/stacked.less
vendored
@ -1,20 +0,0 @@
|
|||||||
// Stacked Icons
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.@{fa-css-prefix}-stack {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
width: 2em;
|
|
||||||
height: 2em;
|
|
||||||
line-height: 2em;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x {
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.@{fa-css-prefix}-stack-1x { line-height: inherit; }
|
|
||||||
.@{fa-css-prefix}-stack-2x { font-size: 2em; }
|
|
||||||
.@{fa-css-prefix}-inverse { color: @fa-inverse; }
|
|
561
web/src/vendor/fontawesome/less/variables.less
vendored
561
web/src/vendor/fontawesome/less/variables.less
vendored
@ -1,561 +0,0 @@
|
|||||||
// Variables
|
|
||||||
// --------------------------
|
|
||||||
|
|
||||||
@fa-font-path: "../fonts";
|
|
||||||
//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.2.0/fonts"; // for referencing Bootstrap CDN font files directly
|
|
||||||
@fa-css-prefix: fa;
|
|
||||||
@fa-version: "4.2.0";
|
|
||||||
@fa-border-color: #eee;
|
|
||||||
@fa-inverse: #fff;
|
|
||||||
@fa-li-width: (30em / 14);
|
|
||||||
|
|
||||||
@fa-var-adjust: "\f042";
|
|
||||||
@fa-var-adn: "\f170";
|
|
||||||
@fa-var-align-center: "\f037";
|
|
||||||
@fa-var-align-justify: "\f039";
|
|
||||||
@fa-var-align-left: "\f036";
|
|
||||||
@fa-var-align-right: "\f038";
|
|
||||||
@fa-var-ambulance: "\f0f9";
|
|
||||||
@fa-var-anchor: "\f13d";
|
|
||||||
@fa-var-android: "\f17b";
|
|
||||||
@fa-var-angellist: "\f209";
|
|
||||||
@fa-var-angle-double-down: "\f103";
|
|
||||||
@fa-var-angle-double-left: "\f100";
|
|
||||||
@fa-var-angle-double-right: "\f101";
|
|
||||||
@fa-var-angle-double-up: "\f102";
|
|
||||||
@fa-var-angle-down: "\f107";
|
|
||||||
@fa-var-angle-left: "\f104";
|
|
||||||
@fa-var-angle-right: "\f105";
|
|
||||||
@fa-var-angle-up: "\f106";
|
|
||||||
@fa-var-apple: "\f179";
|
|
||||||
@fa-var-archive: "\f187";
|
|
||||||
@fa-var-area-chart: "\f1fe";
|
|
||||||
@fa-var-arrow-circle-down: "\f0ab";
|
|
||||||
@fa-var-arrow-circle-left: "\f0a8";
|
|
||||||
@fa-var-arrow-circle-o-down: "\f01a";
|
|
||||||
@fa-var-arrow-circle-o-left: "\f190";
|
|
||||||
@fa-var-arrow-circle-o-right: "\f18e";
|
|
||||||
@fa-var-arrow-circle-o-up: "\f01b";
|
|
||||||
@fa-var-arrow-circle-right: "\f0a9";
|
|
||||||
@fa-var-arrow-circle-up: "\f0aa";
|
|
||||||
@fa-var-arrow-down: "\f063";
|
|
||||||
@fa-var-arrow-left: "\f060";
|
|
||||||
@fa-var-arrow-right: "\f061";
|
|
||||||
@fa-var-arrow-up: "\f062";
|
|
||||||
@fa-var-arrows: "\f047";
|
|
||||||
@fa-var-arrows-alt: "\f0b2";
|
|
||||||
@fa-var-arrows-h: "\f07e";
|
|
||||||
@fa-var-arrows-v: "\f07d";
|
|
||||||
@fa-var-asterisk: "\f069";
|
|
||||||
@fa-var-at: "\f1fa";
|
|
||||||
@fa-var-automobile: "\f1b9";
|
|
||||||
@fa-var-backward: "\f04a";
|
|
||||||
@fa-var-ban: "\f05e";
|
|
||||||
@fa-var-bank: "\f19c";
|
|
||||||
@fa-var-bar-chart: "\f080";
|
|
||||||
@fa-var-bar-chart-o: "\f080";
|
|
||||||
@fa-var-barcode: "\f02a";
|
|
||||||
@fa-var-bars: "\f0c9";
|
|
||||||
@fa-var-beer: "\f0fc";
|
|
||||||
@fa-var-behance: "\f1b4";
|
|
||||||
@fa-var-behance-square: "\f1b5";
|
|
||||||
@fa-var-bell: "\f0f3";
|
|
||||||
@fa-var-bell-o: "\f0a2";
|
|
||||||
@fa-var-bell-slash: "\f1f6";
|
|
||||||
@fa-var-bell-slash-o: "\f1f7";
|
|
||||||
@fa-var-bicycle: "\f206";
|
|
||||||
@fa-var-binoculars: "\f1e5";
|
|
||||||
@fa-var-birthday-cake: "\f1fd";
|
|
||||||
@fa-var-bitbucket: "\f171";
|
|
||||||
@fa-var-bitbucket-square: "\f172";
|
|
||||||
@fa-var-bitcoin: "\f15a";
|
|
||||||
@fa-var-bold: "\f032";
|
|
||||||
@fa-var-bolt: "\f0e7";
|
|
||||||
@fa-var-bomb: "\f1e2";
|
|
||||||
@fa-var-book: "\f02d";
|
|
||||||
@fa-var-bookmark: "\f02e";
|
|
||||||
@fa-var-bookmark-o: "\f097";
|
|
||||||
@fa-var-briefcase: "\f0b1";
|
|
||||||
@fa-var-btc: "\f15a";
|
|
||||||
@fa-var-bug: "\f188";
|
|
||||||
@fa-var-building: "\f1ad";
|
|
||||||
@fa-var-building-o: "\f0f7";
|
|
||||||
@fa-var-bullhorn: "\f0a1";
|
|
||||||
@fa-var-bullseye: "\f140";
|
|
||||||
@fa-var-bus: "\f207";
|
|
||||||
@fa-var-cab: "\f1ba";
|
|
||||||
@fa-var-calculator: "\f1ec";
|
|
||||||
@fa-var-calendar: "\f073";
|
|
||||||
@fa-var-calendar-o: "\f133";
|
|
||||||
@fa-var-camera: "\f030";
|
|
||||||
@fa-var-camera-retro: "\f083";
|
|
||||||
@fa-var-car: "\f1b9";
|
|
||||||
@fa-var-caret-down: "\f0d7";
|
|
||||||
@fa-var-caret-left: "\f0d9";
|
|
||||||
@fa-var-caret-right: "\f0da";
|
|
||||||
@fa-var-caret-square-o-down: "\f150";
|
|
||||||
@fa-var-caret-square-o-left: "\f191";
|
|
||||||
@fa-var-caret-square-o-right: "\f152";
|
|
||||||
@fa-var-caret-square-o-up: "\f151";
|
|
||||||
@fa-var-caret-up: "\f0d8";
|
|
||||||
@fa-var-cc: "\f20a";
|
|
||||||
@fa-var-cc-amex: "\f1f3";
|
|
||||||
@fa-var-cc-discover: "\f1f2";
|
|
||||||
@fa-var-cc-mastercard: "\f1f1";
|
|
||||||
@fa-var-cc-paypal: "\f1f4";
|
|
||||||
@fa-var-cc-stripe: "\f1f5";
|
|
||||||
@fa-var-cc-visa: "\f1f0";
|
|
||||||
@fa-var-certificate: "\f0a3";
|
|
||||||
@fa-var-chain: "\f0c1";
|
|
||||||
@fa-var-chain-broken: "\f127";
|
|
||||||
@fa-var-check: "\f00c";
|
|
||||||
@fa-var-check-circle: "\f058";
|
|
||||||
@fa-var-check-circle-o: "\f05d";
|
|
||||||
@fa-var-check-square: "\f14a";
|
|
||||||
@fa-var-check-square-o: "\f046";
|
|
||||||
@fa-var-chevron-circle-down: "\f13a";
|
|
||||||
@fa-var-chevron-circle-left: "\f137";
|
|
||||||
@fa-var-chevron-circle-right: "\f138";
|
|
||||||
@fa-var-chevron-circle-up: "\f139";
|
|
||||||
@fa-var-chevron-down: "\f078";
|
|
||||||
@fa-var-chevron-left: "\f053";
|
|
||||||
@fa-var-chevron-right: "\f054";
|
|
||||||
@fa-var-chevron-up: "\f077";
|
|
||||||
@fa-var-child: "\f1ae";
|
|
||||||
@fa-var-circle: "\f111";
|
|
||||||
@fa-var-circle-o: "\f10c";
|
|
||||||
@fa-var-circle-o-notch: "\f1ce";
|
|
||||||
@fa-var-circle-thin: "\f1db";
|
|
||||||
@fa-var-clipboard: "\f0ea";
|
|
||||||
@fa-var-clock-o: "\f017";
|
|
||||||
@fa-var-close: "\f00d";
|
|
||||||
@fa-var-cloud: "\f0c2";
|
|
||||||
@fa-var-cloud-download: "\f0ed";
|
|
||||||
@fa-var-cloud-upload: "\f0ee";
|
|
||||||
@fa-var-cny: "\f157";
|
|
||||||
@fa-var-code: "\f121";
|
|
||||||
@fa-var-code-fork: "\f126";
|
|
||||||
@fa-var-codepen: "\f1cb";
|
|
||||||
@fa-var-coffee: "\f0f4";
|
|
||||||
@fa-var-cog: "\f013";
|
|
||||||
@fa-var-cogs: "\f085";
|
|
||||||
@fa-var-columns: "\f0db";
|
|
||||||
@fa-var-comment: "\f075";
|
|
||||||
@fa-var-comment-o: "\f0e5";
|
|
||||||
@fa-var-comments: "\f086";
|
|
||||||
@fa-var-comments-o: "\f0e6";
|
|
||||||
@fa-var-compass: "\f14e";
|
|
||||||
@fa-var-compress: "\f066";
|
|
||||||
@fa-var-copy: "\f0c5";
|
|
||||||
@fa-var-copyright: "\f1f9";
|
|
||||||
@fa-var-credit-card: "\f09d";
|
|
||||||
@fa-var-crop: "\f125";
|
|
||||||
@fa-var-crosshairs: "\f05b";
|
|
||||||
@fa-var-css3: "\f13c";
|
|
||||||
@fa-var-cube: "\f1b2";
|
|
||||||
@fa-var-cubes: "\f1b3";
|
|
||||||
@fa-var-cut: "\f0c4";
|
|
||||||
@fa-var-cutlery: "\f0f5";
|
|
||||||
@fa-var-dashboard: "\f0e4";
|
|
||||||
@fa-var-database: "\f1c0";
|
|
||||||
@fa-var-dedent: "\f03b";
|
|
||||||
@fa-var-delicious: "\f1a5";
|
|
||||||
@fa-var-desktop: "\f108";
|
|
||||||
@fa-var-deviantart: "\f1bd";
|
|
||||||
@fa-var-digg: "\f1a6";
|
|
||||||
@fa-var-dollar: "\f155";
|
|
||||||
@fa-var-dot-circle-o: "\f192";
|
|
||||||
@fa-var-download: "\f019";
|
|
||||||
@fa-var-dribbble: "\f17d";
|
|
||||||
@fa-var-dropbox: "\f16b";
|
|
||||||
@fa-var-drupal: "\f1a9";
|
|
||||||
@fa-var-edit: "\f044";
|
|
||||||
@fa-var-eject: "\f052";
|
|
||||||
@fa-var-ellipsis-h: "\f141";
|
|
||||||
@fa-var-ellipsis-v: "\f142";
|
|
||||||
@fa-var-empire: "\f1d1";
|
|
||||||
@fa-var-envelope: "\f0e0";
|
|
||||||
@fa-var-envelope-o: "\f003";
|
|
||||||
@fa-var-envelope-square: "\f199";
|
|
||||||
@fa-var-eraser: "\f12d";
|
|
||||||
@fa-var-eur: "\f153";
|
|
||||||
@fa-var-euro: "\f153";
|
|
||||||
@fa-var-exchange: "\f0ec";
|
|
||||||
@fa-var-exclamation: "\f12a";
|
|
||||||
@fa-var-exclamation-circle: "\f06a";
|
|
||||||
@fa-var-exclamation-triangle: "\f071";
|
|
||||||
@fa-var-expand: "\f065";
|
|
||||||
@fa-var-external-link: "\f08e";
|
|
||||||
@fa-var-external-link-square: "\f14c";
|
|
||||||
@fa-var-eye: "\f06e";
|
|
||||||
@fa-var-eye-slash: "\f070";
|
|
||||||
@fa-var-eyedropper: "\f1fb";
|
|
||||||
@fa-var-facebook: "\f09a";
|
|
||||||
@fa-var-facebook-square: "\f082";
|
|
||||||
@fa-var-fast-backward: "\f049";
|
|
||||||
@fa-var-fast-forward: "\f050";
|
|
||||||
@fa-var-fax: "\f1ac";
|
|
||||||
@fa-var-female: "\f182";
|
|
||||||
@fa-var-fighter-jet: "\f0fb";
|
|
||||||
@fa-var-file: "\f15b";
|
|
||||||
@fa-var-file-archive-o: "\f1c6";
|
|
||||||
@fa-var-file-audio-o: "\f1c7";
|
|
||||||
@fa-var-file-code-o: "\f1c9";
|
|
||||||
@fa-var-file-excel-o: "\f1c3";
|
|
||||||
@fa-var-file-image-o: "\f1c5";
|
|
||||||
@fa-var-file-movie-o: "\f1c8";
|
|
||||||
@fa-var-file-o: "\f016";
|
|
||||||
@fa-var-file-pdf-o: "\f1c1";
|
|
||||||
@fa-var-file-photo-o: "\f1c5";
|
|
||||||
@fa-var-file-picture-o: "\f1c5";
|
|
||||||
@fa-var-file-powerpoint-o: "\f1c4";
|
|
||||||
@fa-var-file-sound-o: "\f1c7";
|
|
||||||
@fa-var-file-text: "\f15c";
|
|
||||||
@fa-var-file-text-o: "\f0f6";
|
|
||||||
@fa-var-file-video-o: "\f1c8";
|
|
||||||
@fa-var-file-word-o: "\f1c2";
|
|
||||||
@fa-var-file-zip-o: "\f1c6";
|
|
||||||
@fa-var-files-o: "\f0c5";
|
|
||||||
@fa-var-film: "\f008";
|
|
||||||
@fa-var-filter: "\f0b0";
|
|
||||||
@fa-var-fire: "\f06d";
|
|
||||||
@fa-var-fire-extinguisher: "\f134";
|
|
||||||
@fa-var-flag: "\f024";
|
|
||||||
@fa-var-flag-checkered: "\f11e";
|
|
||||||
@fa-var-flag-o: "\f11d";
|
|
||||||
@fa-var-flash: "\f0e7";
|
|
||||||
@fa-var-flask: "\f0c3";
|
|
||||||
@fa-var-flickr: "\f16e";
|
|
||||||
@fa-var-floppy-o: "\f0c7";
|
|
||||||
@fa-var-folder: "\f07b";
|
|
||||||
@fa-var-folder-o: "\f114";
|
|
||||||
@fa-var-folder-open: "\f07c";
|
|
||||||
@fa-var-folder-open-o: "\f115";
|
|
||||||
@fa-var-font: "\f031";
|
|
||||||
@fa-var-forward: "\f04e";
|
|
||||||
@fa-var-foursquare: "\f180";
|
|
||||||
@fa-var-frown-o: "\f119";
|
|
||||||
@fa-var-futbol-o: "\f1e3";
|
|
||||||
@fa-var-gamepad: "\f11b";
|
|
||||||
@fa-var-gavel: "\f0e3";
|
|
||||||
@fa-var-gbp: "\f154";
|
|
||||||
@fa-var-ge: "\f1d1";
|
|
||||||
@fa-var-gear: "\f013";
|
|
||||||
@fa-var-gears: "\f085";
|
|
||||||
@fa-var-gift: "\f06b";
|
|
||||||
@fa-var-git: "\f1d3";
|
|
||||||
@fa-var-git-square: "\f1d2";
|
|
||||||
@fa-var-github: "\f09b";
|
|
||||||
@fa-var-github-alt: "\f113";
|
|
||||||
@fa-var-github-square: "\f092";
|
|
||||||
@fa-var-gittip: "\f184";
|
|
||||||
@fa-var-glass: "\f000";
|
|
||||||
@fa-var-globe: "\f0ac";
|
|
||||||
@fa-var-google: "\f1a0";
|
|
||||||
@fa-var-google-plus: "\f0d5";
|
|
||||||
@fa-var-google-plus-square: "\f0d4";
|
|
||||||
@fa-var-google-wallet: "\f1ee";
|
|
||||||
@fa-var-graduation-cap: "\f19d";
|
|
||||||
@fa-var-group: "\f0c0";
|
|
||||||
@fa-var-h-square: "\f0fd";
|
|
||||||
@fa-var-hacker-news: "\f1d4";
|
|
||||||
@fa-var-hand-o-down: "\f0a7";
|
|
||||||
@fa-var-hand-o-left: "\f0a5";
|
|
||||||
@fa-var-hand-o-right: "\f0a4";
|
|
||||||
@fa-var-hand-o-up: "\f0a6";
|
|
||||||
@fa-var-hdd-o: "\f0a0";
|
|
||||||
@fa-var-header: "\f1dc";
|
|
||||||
@fa-var-headphones: "\f025";
|
|
||||||
@fa-var-heart: "\f004";
|
|
||||||
@fa-var-heart-o: "\f08a";
|
|
||||||
@fa-var-history: "\f1da";
|
|
||||||
@fa-var-home: "\f015";
|
|
||||||
@fa-var-hospital-o: "\f0f8";
|
|
||||||
@fa-var-html5: "\f13b";
|
|
||||||
@fa-var-ils: "\f20b";
|
|
||||||
@fa-var-image: "\f03e";
|
|
||||||
@fa-var-inbox: "\f01c";
|
|
||||||
@fa-var-indent: "\f03c";
|
|
||||||
@fa-var-info: "\f129";
|
|
||||||
@fa-var-info-circle: "\f05a";
|
|
||||||
@fa-var-inr: "\f156";
|
|
||||||
@fa-var-instagram: "\f16d";
|
|
||||||
@fa-var-institution: "\f19c";
|
|
||||||
@fa-var-ioxhost: "\f208";
|
|
||||||
@fa-var-italic: "\f033";
|
|
||||||
@fa-var-joomla: "\f1aa";
|
|
||||||
@fa-var-jpy: "\f157";
|
|
||||||
@fa-var-jsfiddle: "\f1cc";
|
|
||||||
@fa-var-key: "\f084";
|
|
||||||
@fa-var-keyboard-o: "\f11c";
|
|
||||||
@fa-var-krw: "\f159";
|
|
||||||
@fa-var-language: "\f1ab";
|
|
||||||
@fa-var-laptop: "\f109";
|
|
||||||
@fa-var-lastfm: "\f202";
|
|
||||||
@fa-var-lastfm-square: "\f203";
|
|
||||||
@fa-var-leaf: "\f06c";
|
|
||||||
@fa-var-legal: "\f0e3";
|
|
||||||
@fa-var-lemon-o: "\f094";
|
|
||||||
@fa-var-level-down: "\f149";
|
|
||||||
@fa-var-level-up: "\f148";
|
|
||||||
@fa-var-life-bouy: "\f1cd";
|
|
||||||
@fa-var-life-buoy: "\f1cd";
|
|
||||||
@fa-var-life-ring: "\f1cd";
|
|
||||||
@fa-var-life-saver: "\f1cd";
|
|
||||||
@fa-var-lightbulb-o: "\f0eb";
|
|
||||||
@fa-var-line-chart: "\f201";
|
|
||||||
@fa-var-link: "\f0c1";
|
|
||||||
@fa-var-linkedin: "\f0e1";
|
|
||||||
@fa-var-linkedin-square: "\f08c";
|
|
||||||
@fa-var-linux: "\f17c";
|
|
||||||
@fa-var-list: "\f03a";
|
|
||||||
@fa-var-list-alt: "\f022";
|
|
||||||
@fa-var-list-ol: "\f0cb";
|
|
||||||
@fa-var-list-ul: "\f0ca";
|
|
||||||
@fa-var-location-arrow: "\f124";
|
|
||||||
@fa-var-lock: "\f023";
|
|
||||||
@fa-var-long-arrow-down: "\f175";
|
|
||||||
@fa-var-long-arrow-left: "\f177";
|
|
||||||
@fa-var-long-arrow-right: "\f178";
|
|
||||||
@fa-var-long-arrow-up: "\f176";
|
|
||||||
@fa-var-magic: "\f0d0";
|
|
||||||
@fa-var-magnet: "\f076";
|
|
||||||
@fa-var-mail-forward: "\f064";
|
|
||||||
@fa-var-mail-reply: "\f112";
|
|
||||||
@fa-var-mail-reply-all: "\f122";
|
|
||||||
@fa-var-male: "\f183";
|
|
||||||
@fa-var-map-marker: "\f041";
|
|
||||||
@fa-var-maxcdn: "\f136";
|
|
||||||
@fa-var-meanpath: "\f20c";
|
|
||||||
@fa-var-medkit: "\f0fa";
|
|
||||||
@fa-var-meh-o: "\f11a";
|
|
||||||
@fa-var-microphone: "\f130";
|
|
||||||
@fa-var-microphone-slash: "\f131";
|
|
||||||
@fa-var-minus: "\f068";
|
|
||||||
@fa-var-minus-circle: "\f056";
|
|
||||||
@fa-var-minus-square: "\f146";
|
|
||||||
@fa-var-minus-square-o: "\f147";
|
|
||||||
@fa-var-mobile: "\f10b";
|
|
||||||
@fa-var-mobile-phone: "\f10b";
|
|
||||||
@fa-var-money: "\f0d6";
|
|
||||||
@fa-var-moon-o: "\f186";
|
|
||||||
@fa-var-mortar-board: "\f19d";
|
|
||||||
@fa-var-music: "\f001";
|
|
||||||
@fa-var-navicon: "\f0c9";
|
|
||||||
@fa-var-newspaper-o: "\f1ea";
|
|
||||||
@fa-var-openid: "\f19b";
|
|
||||||
@fa-var-outdent: "\f03b";
|
|
||||||
@fa-var-pagelines: "\f18c";
|
|
||||||
@fa-var-paint-brush: "\f1fc";
|
|
||||||
@fa-var-paper-plane: "\f1d8";
|
|
||||||
@fa-var-paper-plane-o: "\f1d9";
|
|
||||||
@fa-var-paperclip: "\f0c6";
|
|
||||||
@fa-var-paragraph: "\f1dd";
|
|
||||||
@fa-var-paste: "\f0ea";
|
|
||||||
@fa-var-pause: "\f04c";
|
|
||||||
@fa-var-paw: "\f1b0";
|
|
||||||
@fa-var-paypal: "\f1ed";
|
|
||||||
@fa-var-pencil: "\f040";
|
|
||||||
@fa-var-pencil-square: "\f14b";
|
|
||||||
@fa-var-pencil-square-o: "\f044";
|
|
||||||
@fa-var-phone: "\f095";
|
|
||||||
@fa-var-phone-square: "\f098";
|
|
||||||
@fa-var-photo: "\f03e";
|
|
||||||
@fa-var-picture-o: "\f03e";
|
|
||||||
@fa-var-pie-chart: "\f200";
|
|
||||||
@fa-var-pied-piper: "\f1a7";
|
|
||||||
@fa-var-pied-piper-alt: "\f1a8";
|
|
||||||
@fa-var-pinterest: "\f0d2";
|
|
||||||
@fa-var-pinterest-square: "\f0d3";
|
|
||||||
@fa-var-plane: "\f072";
|
|
||||||
@fa-var-play: "\f04b";
|
|
||||||
@fa-var-play-circle: "\f144";
|
|
||||||
@fa-var-play-circle-o: "\f01d";
|
|
||||||
@fa-var-plug: "\f1e6";
|
|
||||||
@fa-var-plus: "\f067";
|
|
||||||
@fa-var-plus-circle: "\f055";
|
|
||||||
@fa-var-plus-square: "\f0fe";
|
|
||||||
@fa-var-plus-square-o: "\f196";
|
|
||||||
@fa-var-power-off: "\f011";
|
|
||||||
@fa-var-print: "\f02f";
|
|
||||||
@fa-var-puzzle-piece: "\f12e";
|
|
||||||
@fa-var-qq: "\f1d6";
|
|
||||||
@fa-var-qrcode: "\f029";
|
|
||||||
@fa-var-question: "\f128";
|
|
||||||
@fa-var-question-circle: "\f059";
|
|
||||||
@fa-var-quote-left: "\f10d";
|
|
||||||
@fa-var-quote-right: "\f10e";
|
|
||||||
@fa-var-ra: "\f1d0";
|
|
||||||
@fa-var-random: "\f074";
|
|
||||||
@fa-var-rebel: "\f1d0";
|
|
||||||
@fa-var-recycle: "\f1b8";
|
|
||||||
@fa-var-reddit: "\f1a1";
|
|
||||||
@fa-var-reddit-square: "\f1a2";
|
|
||||||
@fa-var-refresh: "\f021";
|
|
||||||
@fa-var-remove: "\f00d";
|
|
||||||
@fa-var-renren: "\f18b";
|
|
||||||
@fa-var-reorder: "\f0c9";
|
|
||||||
@fa-var-repeat: "\f01e";
|
|
||||||
@fa-var-reply: "\f112";
|
|
||||||
@fa-var-reply-all: "\f122";
|
|
||||||
@fa-var-retweet: "\f079";
|
|
||||||
@fa-var-rmb: "\f157";
|
|
||||||
@fa-var-road: "\f018";
|
|
||||||
@fa-var-rocket: "\f135";
|
|
||||||
@fa-var-rotate-left: "\f0e2";
|
|
||||||
@fa-var-rotate-right: "\f01e";
|
|
||||||
@fa-var-rouble: "\f158";
|
|
||||||
@fa-var-rss: "\f09e";
|
|
||||||
@fa-var-rss-square: "\f143";
|
|
||||||
@fa-var-rub: "\f158";
|
|
||||||
@fa-var-ruble: "\f158";
|
|
||||||
@fa-var-rupee: "\f156";
|
|
||||||
@fa-var-save: "\f0c7";
|
|
||||||
@fa-var-scissors: "\f0c4";
|
|
||||||
@fa-var-search: "\f002";
|
|
||||||
@fa-var-search-minus: "\f010";
|
|
||||||
@fa-var-search-plus: "\f00e";
|
|
||||||
@fa-var-send: "\f1d8";
|
|
||||||
@fa-var-send-o: "\f1d9";
|
|
||||||
@fa-var-share: "\f064";
|
|
||||||
@fa-var-share-alt: "\f1e0";
|
|
||||||
@fa-var-share-alt-square: "\f1e1";
|
|
||||||
@fa-var-share-square: "\f14d";
|
|
||||||
@fa-var-share-square-o: "\f045";
|
|
||||||
@fa-var-shekel: "\f20b";
|
|
||||||
@fa-var-sheqel: "\f20b";
|
|
||||||
@fa-var-shield: "\f132";
|
|
||||||
@fa-var-shopping-cart: "\f07a";
|
|
||||||
@fa-var-sign-in: "\f090";
|
|
||||||
@fa-var-sign-out: "\f08b";
|
|
||||||
@fa-var-signal: "\f012";
|
|
||||||
@fa-var-sitemap: "\f0e8";
|
|
||||||
@fa-var-skype: "\f17e";
|
|
||||||
@fa-var-slack: "\f198";
|
|
||||||
@fa-var-sliders: "\f1de";
|
|
||||||
@fa-var-slideshare: "\f1e7";
|
|
||||||
@fa-var-smile-o: "\f118";
|
|
||||||
@fa-var-soccer-ball-o: "\f1e3";
|
|
||||||
@fa-var-sort: "\f0dc";
|
|
||||||
@fa-var-sort-alpha-asc: "\f15d";
|
|
||||||
@fa-var-sort-alpha-desc: "\f15e";
|
|
||||||
@fa-var-sort-amount-asc: "\f160";
|
|
||||||
@fa-var-sort-amount-desc: "\f161";
|
|
||||||
@fa-var-sort-asc: "\f0de";
|
|
||||||
@fa-var-sort-desc: "\f0dd";
|
|
||||||
@fa-var-sort-down: "\f0dd";
|
|
||||||
@fa-var-sort-numeric-asc: "\f162";
|
|
||||||
@fa-var-sort-numeric-desc: "\f163";
|
|
||||||
@fa-var-sort-up: "\f0de";
|
|
||||||
@fa-var-soundcloud: "\f1be";
|
|
||||||
@fa-var-space-shuttle: "\f197";
|
|
||||||
@fa-var-spinner: "\f110";
|
|
||||||
@fa-var-spoon: "\f1b1";
|
|
||||||
@fa-var-spotify: "\f1bc";
|
|
||||||
@fa-var-square: "\f0c8";
|
|
||||||
@fa-var-square-o: "\f096";
|
|
||||||
@fa-var-stack-exchange: "\f18d";
|
|
||||||
@fa-var-stack-overflow: "\f16c";
|
|
||||||
@fa-var-star: "\f005";
|
|
||||||
@fa-var-star-half: "\f089";
|
|
||||||
@fa-var-star-half-empty: "\f123";
|
|
||||||
@fa-var-star-half-full: "\f123";
|
|
||||||
@fa-var-star-half-o: "\f123";
|
|
||||||
@fa-var-star-o: "\f006";
|
|
||||||
@fa-var-steam: "\f1b6";
|
|
||||||
@fa-var-steam-square: "\f1b7";
|
|
||||||
@fa-var-step-backward: "\f048";
|
|
||||||
@fa-var-step-forward: "\f051";
|
|
||||||
@fa-var-stethoscope: "\f0f1";
|
|
||||||
@fa-var-stop: "\f04d";
|
|
||||||
@fa-var-strikethrough: "\f0cc";
|
|
||||||
@fa-var-stumbleupon: "\f1a4";
|
|
||||||
@fa-var-stumbleupon-circle: "\f1a3";
|
|
||||||
@fa-var-subscript: "\f12c";
|
|
||||||
@fa-var-suitcase: "\f0f2";
|
|
||||||
@fa-var-sun-o: "\f185";
|
|
||||||
@fa-var-superscript: "\f12b";
|
|
||||||
@fa-var-support: "\f1cd";
|
|
||||||
@fa-var-table: "\f0ce";
|
|
||||||
@fa-var-tablet: "\f10a";
|
|
||||||
@fa-var-tachometer: "\f0e4";
|
|
||||||
@fa-var-tag: "\f02b";
|
|
||||||
@fa-var-tags: "\f02c";
|
|
||||||
@fa-var-tasks: "\f0ae";
|
|
||||||
@fa-var-taxi: "\f1ba";
|
|
||||||
@fa-var-tencent-weibo: "\f1d5";
|
|
||||||
@fa-var-terminal: "\f120";
|
|
||||||
@fa-var-text-height: "\f034";
|
|
||||||
@fa-var-text-width: "\f035";
|
|
||||||
@fa-var-th: "\f00a";
|
|
||||||
@fa-var-th-large: "\f009";
|
|
||||||
@fa-var-th-list: "\f00b";
|
|
||||||
@fa-var-thumb-tack: "\f08d";
|
|
||||||
@fa-var-thumbs-down: "\f165";
|
|
||||||
@fa-var-thumbs-o-down: "\f088";
|
|
||||||
@fa-var-thumbs-o-up: "\f087";
|
|
||||||
@fa-var-thumbs-up: "\f164";
|
|
||||||
@fa-var-ticket: "\f145";
|
|
||||||
@fa-var-times: "\f00d";
|
|
||||||
@fa-var-times-circle: "\f057";
|
|
||||||
@fa-var-times-circle-o: "\f05c";
|
|
||||||
@fa-var-tint: "\f043";
|
|
||||||
@fa-var-toggle-down: "\f150";
|
|
||||||
@fa-var-toggle-left: "\f191";
|
|
||||||
@fa-var-toggle-off: "\f204";
|
|
||||||
@fa-var-toggle-on: "\f205";
|
|
||||||
@fa-var-toggle-right: "\f152";
|
|
||||||
@fa-var-toggle-up: "\f151";
|
|
||||||
@fa-var-trash: "\f1f8";
|
|
||||||
@fa-var-trash-o: "\f014";
|
|
||||||
@fa-var-tree: "\f1bb";
|
|
||||||
@fa-var-trello: "\f181";
|
|
||||||
@fa-var-trophy: "\f091";
|
|
||||||
@fa-var-truck: "\f0d1";
|
|
||||||
@fa-var-try: "\f195";
|
|
||||||
@fa-var-tty: "\f1e4";
|
|
||||||
@fa-var-tumblr: "\f173";
|
|
||||||
@fa-var-tumblr-square: "\f174";
|
|
||||||
@fa-var-turkish-lira: "\f195";
|
|
||||||
@fa-var-twitch: "\f1e8";
|
|
||||||
@fa-var-twitter: "\f099";
|
|
||||||
@fa-var-twitter-square: "\f081";
|
|
||||||
@fa-var-umbrella: "\f0e9";
|
|
||||||
@fa-var-underline: "\f0cd";
|
|
||||||
@fa-var-undo: "\f0e2";
|
|
||||||
@fa-var-university: "\f19c";
|
|
||||||
@fa-var-unlink: "\f127";
|
|
||||||
@fa-var-unlock: "\f09c";
|
|
||||||
@fa-var-unlock-alt: "\f13e";
|
|
||||||
@fa-var-unsorted: "\f0dc";
|
|
||||||
@fa-var-upload: "\f093";
|
|
||||||
@fa-var-usd: "\f155";
|
|
||||||
@fa-var-user: "\f007";
|
|
||||||
@fa-var-user-md: "\f0f0";
|
|
||||||
@fa-var-users: "\f0c0";
|
|
||||||
@fa-var-video-camera: "\f03d";
|
|
||||||
@fa-var-vimeo-square: "\f194";
|
|
||||||
@fa-var-vine: "\f1ca";
|
|
||||||
@fa-var-vk: "\f189";
|
|
||||||
@fa-var-volume-down: "\f027";
|
|
||||||
@fa-var-volume-off: "\f026";
|
|
||||||
@fa-var-volume-up: "\f028";
|
|
||||||
@fa-var-warning: "\f071";
|
|
||||||
@fa-var-wechat: "\f1d7";
|
|
||||||
@fa-var-weibo: "\f18a";
|
|
||||||
@fa-var-weixin: "\f1d7";
|
|
||||||
@fa-var-wheelchair: "\f193";
|
|
||||||
@fa-var-wifi: "\f1eb";
|
|
||||||
@fa-var-windows: "\f17a";
|
|
||||||
@fa-var-won: "\f159";
|
|
||||||
@fa-var-wordpress: "\f19a";
|
|
||||||
@fa-var-wrench: "\f0ad";
|
|
||||||
@fa-var-xing: "\f168";
|
|
||||||
@fa-var-xing-square: "\f169";
|
|
||||||
@fa-var-yahoo: "\f19e";
|
|
||||||
@fa-var-yelp: "\f1e9";
|
|
||||||
@fa-var-yen: "\f157";
|
|
||||||
@fa-var-youtube: "\f167";
|
|
||||||
@fa-var-youtube-play: "\f16a";
|
|
||||||
@fa-var-youtube-square: "\f166";
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
|||||||
// Bordered & Pulled
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.#{$fa-css-prefix}-border {
|
|
||||||
padding: .2em .25em .15em;
|
|
||||||
border: solid .08em $fa-border-color;
|
|
||||||
border-radius: .1em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pull-right { float: right; }
|
|
||||||
.pull-left { float: left; }
|
|
||||||
|
|
||||||
.#{$fa-css-prefix} {
|
|
||||||
&.pull-left { margin-right: .3em; }
|
|
||||||
&.pull-right { margin-left: .3em; }
|
|
||||||
}
|
|
11
web/src/vendor/fontawesome/scss/_core.scss
vendored
11
web/src/vendor/fontawesome/scss/_core.scss
vendored
@ -1,11 +0,0 @@
|
|||||||
// Base Class Definition
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.#{$fa-css-prefix} {
|
|
||||||
display: inline-block;
|
|
||||||
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
|
|
||||||
font-size: inherit; // can't have font-size inherit on line above, so need to override
|
|
||||||
text-rendering: auto; // optimizelegibility throws things off #1094
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
44
web/src/vendor/fontawesome/scss/_extras.scss
vendored
44
web/src/vendor/fontawesome/scss/_extras.scss
vendored
@ -1,44 +0,0 @@
|
|||||||
/* EXTRAS
|
|
||||||
* -------------------------- */
|
|
||||||
|
|
||||||
/* Stacked and layered icon */
|
|
||||||
|
|
||||||
/* Animated rotating icon */
|
|
||||||
.#{$fa-css-prefix}-spin {
|
|
||||||
-webkit-animation: spin 2s infinite linear;
|
|
||||||
-moz-animation: spin 2s infinite linear;
|
|
||||||
-o-animation: spin 2s infinite linear;
|
|
||||||
animation: spin 2s infinite linear;
|
|
||||||
}
|
|
||||||
|
|
||||||
@-moz-keyframes spin {
|
|
||||||
0% { -moz-transform: rotate(0deg); }
|
|
||||||
100% { -moz-transform: rotate(359deg); }
|
|
||||||
}
|
|
||||||
@-webkit-keyframes spin {
|
|
||||||
0% { -webkit-transform: rotate(0deg); }
|
|
||||||
100% { -webkit-transform: rotate(359deg); }
|
|
||||||
}
|
|
||||||
@-o-keyframes spin {
|
|
||||||
0% { -o-transform: rotate(0deg); }
|
|
||||||
100% { -o-transform: rotate(359deg); }
|
|
||||||
}
|
|
||||||
@-ms-keyframes spin {
|
|
||||||
0% { -ms-transform: rotate(0deg); }
|
|
||||||
100% { -ms-transform: rotate(359deg); }
|
|
||||||
}
|
|
||||||
@keyframes spin {
|
|
||||||
0% { transform: rotate(0deg); }
|
|
||||||
100% { transform: rotate(359deg); }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// Icon rotations & flipping
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
|
|
||||||
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
|
|
||||||
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
|
|
||||||
|
|
||||||
.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
|
|
||||||
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
|
|
@ -1,6 +0,0 @@
|
|||||||
// Fixed Width Icons
|
|
||||||
// -------------------------
|
|
||||||
.#{$fa-css-prefix}-fw {
|
|
||||||
width: (18em / 14);
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
552
web/src/vendor/fontawesome/scss/_icons.scss
vendored
552
web/src/vendor/fontawesome/scss/_icons.scss
vendored
@ -1,552 +0,0 @@
|
|||||||
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
|
|
||||||
readers do not read off random characters that represent icons */
|
|
||||||
|
|
||||||
.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
|
|
||||||
.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
|
|
||||||
.#{$fa-css-prefix}-search:before { content: $fa-var-search; }
|
|
||||||
.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }
|
|
||||||
.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }
|
|
||||||
.#{$fa-css-prefix}-star:before { content: $fa-var-star; }
|
|
||||||
.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }
|
|
||||||
.#{$fa-css-prefix}-user:before { content: $fa-var-user; }
|
|
||||||
.#{$fa-css-prefix}-film:before { content: $fa-var-film; }
|
|
||||||
.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }
|
|
||||||
.#{$fa-css-prefix}-th:before { content: $fa-var-th; }
|
|
||||||
.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }
|
|
||||||
.#{$fa-css-prefix}-check:before { content: $fa-var-check; }
|
|
||||||
.#{$fa-css-prefix}-remove:before,
|
|
||||||
.#{$fa-css-prefix}-close:before,
|
|
||||||
.#{$fa-css-prefix}-times:before { content: $fa-var-times; }
|
|
||||||
.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }
|
|
||||||
.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }
|
|
||||||
.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }
|
|
||||||
.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }
|
|
||||||
.#{$fa-css-prefix}-gear:before,
|
|
||||||
.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }
|
|
||||||
.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }
|
|
||||||
.#{$fa-css-prefix}-home:before { content: $fa-var-home; }
|
|
||||||
.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }
|
|
||||||
.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }
|
|
||||||
.#{$fa-css-prefix}-road:before { content: $fa-var-road; }
|
|
||||||
.#{$fa-css-prefix}-download:before { content: $fa-var-download; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }
|
|
||||||
.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }
|
|
||||||
.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }
|
|
||||||
.#{$fa-css-prefix}-rotate-right:before,
|
|
||||||
.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }
|
|
||||||
.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }
|
|
||||||
.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }
|
|
||||||
.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }
|
|
||||||
.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }
|
|
||||||
.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }
|
|
||||||
.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }
|
|
||||||
.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }
|
|
||||||
.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }
|
|
||||||
.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }
|
|
||||||
.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }
|
|
||||||
.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }
|
|
||||||
.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }
|
|
||||||
.#{$fa-css-prefix}-book:before { content: $fa-var-book; }
|
|
||||||
.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }
|
|
||||||
.#{$fa-css-prefix}-print:before { content: $fa-var-print; }
|
|
||||||
.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }
|
|
||||||
.#{$fa-css-prefix}-font:before { content: $fa-var-font; }
|
|
||||||
.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }
|
|
||||||
.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }
|
|
||||||
.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }
|
|
||||||
.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }
|
|
||||||
.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }
|
|
||||||
.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }
|
|
||||||
.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }
|
|
||||||
.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }
|
|
||||||
.#{$fa-css-prefix}-list:before { content: $fa-var-list; }
|
|
||||||
.#{$fa-css-prefix}-dedent:before,
|
|
||||||
.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }
|
|
||||||
.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }
|
|
||||||
.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }
|
|
||||||
.#{$fa-css-prefix}-photo:before,
|
|
||||||
.#{$fa-css-prefix}-image:before,
|
|
||||||
.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }
|
|
||||||
.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }
|
|
||||||
.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }
|
|
||||||
.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }
|
|
||||||
.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }
|
|
||||||
.#{$fa-css-prefix}-edit:before,
|
|
||||||
.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }
|
|
||||||
.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }
|
|
||||||
.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }
|
|
||||||
.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }
|
|
||||||
.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }
|
|
||||||
.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }
|
|
||||||
.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }
|
|
||||||
.#{$fa-css-prefix}-play:before { content: $fa-var-play; }
|
|
||||||
.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }
|
|
||||||
.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }
|
|
||||||
.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }
|
|
||||||
.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }
|
|
||||||
.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }
|
|
||||||
.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }
|
|
||||||
.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }
|
|
||||||
.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }
|
|
||||||
.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }
|
|
||||||
.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }
|
|
||||||
.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }
|
|
||||||
.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }
|
|
||||||
.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }
|
|
||||||
.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }
|
|
||||||
.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }
|
|
||||||
.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }
|
|
||||||
.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }
|
|
||||||
.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }
|
|
||||||
.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }
|
|
||||||
.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }
|
|
||||||
.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }
|
|
||||||
.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }
|
|
||||||
.#{$fa-css-prefix}-mail-forward:before,
|
|
||||||
.#{$fa-css-prefix}-share:before { content: $fa-var-share; }
|
|
||||||
.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }
|
|
||||||
.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }
|
|
||||||
.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }
|
|
||||||
.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }
|
|
||||||
.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }
|
|
||||||
.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }
|
|
||||||
.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }
|
|
||||||
.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }
|
|
||||||
.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }
|
|
||||||
.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }
|
|
||||||
.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }
|
|
||||||
.#{$fa-css-prefix}-warning:before,
|
|
||||||
.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }
|
|
||||||
.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }
|
|
||||||
.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }
|
|
||||||
.#{$fa-css-prefix}-random:before { content: $fa-var-random; }
|
|
||||||
.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }
|
|
||||||
.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }
|
|
||||||
.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }
|
|
||||||
.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }
|
|
||||||
.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }
|
|
||||||
.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }
|
|
||||||
.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }
|
|
||||||
.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }
|
|
||||||
.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }
|
|
||||||
.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }
|
|
||||||
.#{$fa-css-prefix}-bar-chart-o:before,
|
|
||||||
.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }
|
|
||||||
.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }
|
|
||||||
.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }
|
|
||||||
.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }
|
|
||||||
.#{$fa-css-prefix}-key:before { content: $fa-var-key; }
|
|
||||||
.#{$fa-css-prefix}-gears:before,
|
|
||||||
.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }
|
|
||||||
.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }
|
|
||||||
.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }
|
|
||||||
.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }
|
|
||||||
.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }
|
|
||||||
.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }
|
|
||||||
.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }
|
|
||||||
.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }
|
|
||||||
.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }
|
|
||||||
.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }
|
|
||||||
.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }
|
|
||||||
.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }
|
|
||||||
.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }
|
|
||||||
.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }
|
|
||||||
.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }
|
|
||||||
.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }
|
|
||||||
.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }
|
|
||||||
.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
|
|
||||||
.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
|
|
||||||
.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
|
|
||||||
.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
|
|
||||||
.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
|
|
||||||
.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
|
|
||||||
.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
|
|
||||||
.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
|
|
||||||
.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
|
|
||||||
.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
|
|
||||||
.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }
|
|
||||||
.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }
|
|
||||||
.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }
|
|
||||||
.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }
|
|
||||||
.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }
|
|
||||||
.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }
|
|
||||||
.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }
|
|
||||||
.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }
|
|
||||||
.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }
|
|
||||||
.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }
|
|
||||||
.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }
|
|
||||||
.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }
|
|
||||||
.#{$fa-css-prefix}-group:before,
|
|
||||||
.#{$fa-css-prefix}-users:before { content: $fa-var-users; }
|
|
||||||
.#{$fa-css-prefix}-chain:before,
|
|
||||||
.#{$fa-css-prefix}-link:before { content: $fa-var-link; }
|
|
||||||
.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }
|
|
||||||
.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }
|
|
||||||
.#{$fa-css-prefix}-cut:before,
|
|
||||||
.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }
|
|
||||||
.#{$fa-css-prefix}-copy:before,
|
|
||||||
.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }
|
|
||||||
.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }
|
|
||||||
.#{$fa-css-prefix}-save:before,
|
|
||||||
.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }
|
|
||||||
.#{$fa-css-prefix}-square:before { content: $fa-var-square; }
|
|
||||||
.#{$fa-css-prefix}-navicon:before,
|
|
||||||
.#{$fa-css-prefix}-reorder:before,
|
|
||||||
.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }
|
|
||||||
.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }
|
|
||||||
.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }
|
|
||||||
.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }
|
|
||||||
.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }
|
|
||||||
.#{$fa-css-prefix}-table:before { content: $fa-var-table; }
|
|
||||||
.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }
|
|
||||||
.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }
|
|
||||||
.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }
|
|
||||||
.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }
|
|
||||||
.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }
|
|
||||||
.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }
|
|
||||||
.#{$fa-css-prefix}-money:before { content: $fa-var-money; }
|
|
||||||
.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }
|
|
||||||
.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }
|
|
||||||
.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }
|
|
||||||
.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }
|
|
||||||
.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }
|
|
||||||
.#{$fa-css-prefix}-unsorted:before,
|
|
||||||
.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }
|
|
||||||
.#{$fa-css-prefix}-sort-down:before,
|
|
||||||
.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }
|
|
||||||
.#{$fa-css-prefix}-sort-up:before,
|
|
||||||
.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }
|
|
||||||
.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }
|
|
||||||
.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }
|
|
||||||
.#{$fa-css-prefix}-rotate-left:before,
|
|
||||||
.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }
|
|
||||||
.#{$fa-css-prefix}-legal:before,
|
|
||||||
.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }
|
|
||||||
.#{$fa-css-prefix}-dashboard:before,
|
|
||||||
.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }
|
|
||||||
.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }
|
|
||||||
.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }
|
|
||||||
.#{$fa-css-prefix}-flash:before,
|
|
||||||
.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }
|
|
||||||
.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }
|
|
||||||
.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }
|
|
||||||
.#{$fa-css-prefix}-paste:before,
|
|
||||||
.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }
|
|
||||||
.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }
|
|
||||||
.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }
|
|
||||||
.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }
|
|
||||||
.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }
|
|
||||||
.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }
|
|
||||||
.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }
|
|
||||||
.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }
|
|
||||||
.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }
|
|
||||||
.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }
|
|
||||||
.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }
|
|
||||||
.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }
|
|
||||||
.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }
|
|
||||||
.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }
|
|
||||||
.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }
|
|
||||||
.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }
|
|
||||||
.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }
|
|
||||||
.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }
|
|
||||||
.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }
|
|
||||||
.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }
|
|
||||||
.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }
|
|
||||||
.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }
|
|
||||||
.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }
|
|
||||||
.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }
|
|
||||||
.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }
|
|
||||||
.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }
|
|
||||||
.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }
|
|
||||||
.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }
|
|
||||||
.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }
|
|
||||||
.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }
|
|
||||||
.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }
|
|
||||||
.#{$fa-css-prefix}-mobile-phone:before,
|
|
||||||
.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }
|
|
||||||
.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }
|
|
||||||
.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }
|
|
||||||
.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }
|
|
||||||
.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }
|
|
||||||
.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }
|
|
||||||
.#{$fa-css-prefix}-mail-reply:before,
|
|
||||||
.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }
|
|
||||||
.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }
|
|
||||||
.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }
|
|
||||||
.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }
|
|
||||||
.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }
|
|
||||||
.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }
|
|
||||||
.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }
|
|
||||||
.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }
|
|
||||||
.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }
|
|
||||||
.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }
|
|
||||||
.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }
|
|
||||||
.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }
|
|
||||||
.#{$fa-css-prefix}-code:before { content: $fa-var-code; }
|
|
||||||
.#{$fa-css-prefix}-mail-reply-all:before,
|
|
||||||
.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }
|
|
||||||
.#{$fa-css-prefix}-star-half-empty:before,
|
|
||||||
.#{$fa-css-prefix}-star-half-full:before,
|
|
||||||
.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }
|
|
||||||
.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }
|
|
||||||
.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }
|
|
||||||
.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }
|
|
||||||
.#{$fa-css-prefix}-unlink:before,
|
|
||||||
.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }
|
|
||||||
.#{$fa-css-prefix}-question:before { content: $fa-var-question; }
|
|
||||||
.#{$fa-css-prefix}-info:before { content: $fa-var-info; }
|
|
||||||
.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }
|
|
||||||
.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }
|
|
||||||
.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }
|
|
||||||
.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }
|
|
||||||
.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }
|
|
||||||
.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }
|
|
||||||
.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }
|
|
||||||
.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }
|
|
||||||
.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }
|
|
||||||
.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }
|
|
||||||
.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }
|
|
||||||
.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }
|
|
||||||
.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }
|
|
||||||
.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }
|
|
||||||
.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }
|
|
||||||
.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }
|
|
||||||
.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }
|
|
||||||
.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }
|
|
||||||
.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }
|
|
||||||
.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }
|
|
||||||
.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }
|
|
||||||
.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }
|
|
||||||
.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }
|
|
||||||
.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }
|
|
||||||
.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }
|
|
||||||
.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }
|
|
||||||
.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }
|
|
||||||
.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }
|
|
||||||
.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }
|
|
||||||
.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }
|
|
||||||
.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }
|
|
||||||
.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }
|
|
||||||
.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }
|
|
||||||
.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }
|
|
||||||
.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }
|
|
||||||
.#{$fa-css-prefix}-toggle-down:before,
|
|
||||||
.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }
|
|
||||||
.#{$fa-css-prefix}-toggle-up:before,
|
|
||||||
.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }
|
|
||||||
.#{$fa-css-prefix}-toggle-right:before,
|
|
||||||
.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }
|
|
||||||
.#{$fa-css-prefix}-euro:before,
|
|
||||||
.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }
|
|
||||||
.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }
|
|
||||||
.#{$fa-css-prefix}-dollar:before,
|
|
||||||
.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }
|
|
||||||
.#{$fa-css-prefix}-rupee:before,
|
|
||||||
.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }
|
|
||||||
.#{$fa-css-prefix}-cny:before,
|
|
||||||
.#{$fa-css-prefix}-rmb:before,
|
|
||||||
.#{$fa-css-prefix}-yen:before,
|
|
||||||
.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }
|
|
||||||
.#{$fa-css-prefix}-ruble:before,
|
|
||||||
.#{$fa-css-prefix}-rouble:before,
|
|
||||||
.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }
|
|
||||||
.#{$fa-css-prefix}-won:before,
|
|
||||||
.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }
|
|
||||||
.#{$fa-css-prefix}-bitcoin:before,
|
|
||||||
.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }
|
|
||||||
.#{$fa-css-prefix}-file:before { content: $fa-var-file; }
|
|
||||||
.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }
|
|
||||||
.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }
|
|
||||||
.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }
|
|
||||||
.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }
|
|
||||||
.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }
|
|
||||||
.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }
|
|
||||||
.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }
|
|
||||||
.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }
|
|
||||||
.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }
|
|
||||||
.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }
|
|
||||||
.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }
|
|
||||||
.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }
|
|
||||||
.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }
|
|
||||||
.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }
|
|
||||||
.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }
|
|
||||||
.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }
|
|
||||||
.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }
|
|
||||||
.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }
|
|
||||||
.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }
|
|
||||||
.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }
|
|
||||||
.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }
|
|
||||||
.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }
|
|
||||||
.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }
|
|
||||||
.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }
|
|
||||||
.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }
|
|
||||||
.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }
|
|
||||||
.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }
|
|
||||||
.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }
|
|
||||||
.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }
|
|
||||||
.#{$fa-css-prefix}-android:before { content: $fa-var-android; }
|
|
||||||
.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }
|
|
||||||
.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }
|
|
||||||
.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }
|
|
||||||
.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }
|
|
||||||
.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
|
|
||||||
.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
|
|
||||||
.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
|
|
||||||
.#{$fa-css-prefix}-gittip:before { content: $fa-var-gittip; }
|
|
||||||
.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
|
|
||||||
.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
|
|
||||||
.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
|
|
||||||
.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }
|
|
||||||
.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }
|
|
||||||
.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }
|
|
||||||
.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }
|
|
||||||
.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }
|
|
||||||
.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }
|
|
||||||
.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }
|
|
||||||
.#{$fa-css-prefix}-toggle-left:before,
|
|
||||||
.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }
|
|
||||||
.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }
|
|
||||||
.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }
|
|
||||||
.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }
|
|
||||||
.#{$fa-css-prefix}-turkish-lira:before,
|
|
||||||
.#{$fa-css-prefix}-try:before { content: $fa-var-try; }
|
|
||||||
.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }
|
|
||||||
.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }
|
|
||||||
.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }
|
|
||||||
.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }
|
|
||||||
.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }
|
|
||||||
.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }
|
|
||||||
.#{$fa-css-prefix}-institution:before,
|
|
||||||
.#{$fa-css-prefix}-bank:before,
|
|
||||||
.#{$fa-css-prefix}-university:before { content: $fa-var-university; }
|
|
||||||
.#{$fa-css-prefix}-mortar-board:before,
|
|
||||||
.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }
|
|
||||||
.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }
|
|
||||||
.#{$fa-css-prefix}-google:before { content: $fa-var-google; }
|
|
||||||
.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }
|
|
||||||
.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }
|
|
||||||
.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }
|
|
||||||
.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
|
|
||||||
.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
|
|
||||||
.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
|
|
||||||
.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
|
|
||||||
.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
|
|
||||||
.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
|
|
||||||
.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
|
|
||||||
.#{$fa-css-prefix}-language:before { content: $fa-var-language; }
|
|
||||||
.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }
|
|
||||||
.#{$fa-css-prefix}-building:before { content: $fa-var-building; }
|
|
||||||
.#{$fa-css-prefix}-child:before { content: $fa-var-child; }
|
|
||||||
.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }
|
|
||||||
.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }
|
|
||||||
.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }
|
|
||||||
.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }
|
|
||||||
.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }
|
|
||||||
.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }
|
|
||||||
.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }
|
|
||||||
.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }
|
|
||||||
.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }
|
|
||||||
.#{$fa-css-prefix}-automobile:before,
|
|
||||||
.#{$fa-css-prefix}-car:before { content: $fa-var-car; }
|
|
||||||
.#{$fa-css-prefix}-cab:before,
|
|
||||||
.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }
|
|
||||||
.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }
|
|
||||||
.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }
|
|
||||||
.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }
|
|
||||||
.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }
|
|
||||||
.#{$fa-css-prefix}-database:before { content: $fa-var-database; }
|
|
||||||
.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }
|
|
||||||
.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }
|
|
||||||
.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }
|
|
||||||
.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }
|
|
||||||
.#{$fa-css-prefix}-file-photo-o:before,
|
|
||||||
.#{$fa-css-prefix}-file-picture-o:before,
|
|
||||||
.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }
|
|
||||||
.#{$fa-css-prefix}-file-zip-o:before,
|
|
||||||
.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }
|
|
||||||
.#{$fa-css-prefix}-file-sound-o:before,
|
|
||||||
.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }
|
|
||||||
.#{$fa-css-prefix}-file-movie-o:before,
|
|
||||||
.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }
|
|
||||||
.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }
|
|
||||||
.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }
|
|
||||||
.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }
|
|
||||||
.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }
|
|
||||||
.#{$fa-css-prefix}-life-bouy:before,
|
|
||||||
.#{$fa-css-prefix}-life-buoy:before,
|
|
||||||
.#{$fa-css-prefix}-life-saver:before,
|
|
||||||
.#{$fa-css-prefix}-support:before,
|
|
||||||
.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
|
|
||||||
.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
|
|
||||||
.#{$fa-css-prefix}-ra:before,
|
|
||||||
.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
|
|
||||||
.#{$fa-css-prefix}-ge:before,
|
|
||||||
.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
|
|
||||||
.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
|
|
||||||
.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
|
|
||||||
.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
|
|
||||||
.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
|
|
||||||
.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
|
|
||||||
.#{$fa-css-prefix}-wechat:before,
|
|
||||||
.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }
|
|
||||||
.#{$fa-css-prefix}-send:before,
|
|
||||||
.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }
|
|
||||||
.#{$fa-css-prefix}-send-o:before,
|
|
||||||
.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
|
|
||||||
.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
|
|
||||||
.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
|
|
||||||
.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
|
|
||||||
.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
|
|
||||||
.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }
|
|
||||||
.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }
|
|
||||||
.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }
|
|
||||||
.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }
|
|
||||||
.#{$fa-css-prefix}-soccer-ball-o:before,
|
|
||||||
.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }
|
|
||||||
.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }
|
|
||||||
.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }
|
|
||||||
.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }
|
|
||||||
.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }
|
|
||||||
.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }
|
|
||||||
.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }
|
|
||||||
.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }
|
|
||||||
.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }
|
|
||||||
.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }
|
|
||||||
.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }
|
|
||||||
.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }
|
|
||||||
.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }
|
|
||||||
.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }
|
|
||||||
.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }
|
|
||||||
.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }
|
|
||||||
.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }
|
|
||||||
.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }
|
|
||||||
.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }
|
|
||||||
.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }
|
|
||||||
.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }
|
|
||||||
.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }
|
|
||||||
.#{$fa-css-prefix}-at:before { content: $fa-var-at; }
|
|
||||||
.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }
|
|
||||||
.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }
|
|
||||||
.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }
|
|
||||||
.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }
|
|
||||||
.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }
|
|
||||||
.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }
|
|
||||||
.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }
|
|
||||||
.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }
|
|
||||||
.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }
|
|
||||||
.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }
|
|
||||||
.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }
|
|
||||||
.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }
|
|
||||||
.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }
|
|
||||||
.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }
|
|
||||||
.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }
|
|
||||||
.#{$fa-css-prefix}-shekel:before,
|
|
||||||
.#{$fa-css-prefix}-sheqel:before,
|
|
||||||
.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
|
|
||||||
.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
|
|
13
web/src/vendor/fontawesome/scss/_larger.scss
vendored
13
web/src/vendor/fontawesome/scss/_larger.scss
vendored
@ -1,13 +0,0 @@
|
|||||||
// Icon Sizes
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
/* makes the font 33% larger relative to the icon container */
|
|
||||||
.#{$fa-css-prefix}-lg {
|
|
||||||
font-size: (4em / 3);
|
|
||||||
line-height: (3em / 4);
|
|
||||||
vertical-align: -15%;
|
|
||||||
}
|
|
||||||
.#{$fa-css-prefix}-2x { font-size: 2em; }
|
|
||||||
.#{$fa-css-prefix}-3x { font-size: 3em; }
|
|
||||||
.#{$fa-css-prefix}-4x { font-size: 4em; }
|
|
||||||
.#{$fa-css-prefix}-5x { font-size: 5em; }
|
|
19
web/src/vendor/fontawesome/scss/_list.scss
vendored
19
web/src/vendor/fontawesome/scss/_list.scss
vendored
@ -1,19 +0,0 @@
|
|||||||
// List Icons
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.#{$fa-css-prefix}-ul {
|
|
||||||
padding-left: 0;
|
|
||||||
margin-left: $fa-li-width;
|
|
||||||
list-style-type: none;
|
|
||||||
> li { position: relative; }
|
|
||||||
}
|
|
||||||
.#{$fa-css-prefix}-li {
|
|
||||||
position: absolute;
|
|
||||||
left: -$fa-li-width;
|
|
||||||
width: $fa-li-width;
|
|
||||||
top: (2em / 14);
|
|
||||||
text-align: center;
|
|
||||||
&.#{$fa-css-prefix}-lg {
|
|
||||||
left: -$fa-li-width + (4em / 14);
|
|
||||||
}
|
|
||||||
}
|
|
25
web/src/vendor/fontawesome/scss/_mixins.scss
vendored
25
web/src/vendor/fontawesome/scss/_mixins.scss
vendored
@ -1,25 +0,0 @@
|
|||||||
// Mixins
|
|
||||||
// --------------------------
|
|
||||||
|
|
||||||
@mixin fa-icon() {
|
|
||||||
display: inline-block;
|
|
||||||
font: normal normal normal 14px/1 FontAwesome; // shortening font declaration
|
|
||||||
font-size: inherit; // can't have font-size inherit on line above, so need to override
|
|
||||||
text-rendering: auto; // optimizelegibility throws things off #1094
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin fa-icon-rotate($degrees, $rotation) {
|
|
||||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
|
|
||||||
-webkit-transform: rotate($degrees);
|
|
||||||
-ms-transform: rotate($degrees);
|
|
||||||
transform: rotate($degrees);
|
|
||||||
}
|
|
||||||
|
|
||||||
@mixin fa-icon-flip($horiz, $vert, $rotation) {
|
|
||||||
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
|
|
||||||
-webkit-transform: scale($horiz, $vert);
|
|
||||||
-ms-transform: scale($horiz, $vert);
|
|
||||||
transform: scale($horiz, $vert);
|
|
||||||
}
|
|
14
web/src/vendor/fontawesome/scss/_path.scss
vendored
14
web/src/vendor/fontawesome/scss/_path.scss
vendored
@ -1,14 +0,0 @@
|
|||||||
/* FONT PATH
|
|
||||||
* -------------------------- */
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: 'FontAwesome';
|
|
||||||
src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
|
|
||||||
src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
|
|
||||||
url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
|
|
||||||
url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
|
|
||||||
url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
|
|
||||||
//src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
// Rotated & Flipped Icons
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); }
|
|
||||||
.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
|
|
||||||
.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
|
|
||||||
|
|
||||||
.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
|
|
||||||
.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); }
|
|
||||||
|
|
||||||
// Hook for IE8-9
|
|
||||||
// -------------------------
|
|
||||||
|
|
||||||
:root .#{$fa-css-prefix}-rotate-90,
|
|
||||||
:root .#{$fa-css-prefix}-rotate-180,
|
|
||||||
:root .#{$fa-css-prefix}-rotate-270,
|
|
||||||
:root .#{$fa-css-prefix}-flip-horizontal,
|
|
||||||
:root .#{$fa-css-prefix}-flip-vertical {
|
|
||||||
filter: none;
|
|
||||||
}
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user