mirror of
https://github.com/billz/raspap-webgui.git
synced 2025-03-01 10:31:47 +00:00
Added assets + dependencies
This commit is contained in:
7
bower_components/bootstrap/grunt/.jshintrc
vendored
Executable file
7
bower_components/bootstrap/grunt/.jshintrc
vendored
Executable file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends" : "../js/.jshintrc",
|
||||
"asi" : false,
|
||||
"browser" : false,
|
||||
"es3" : false,
|
||||
"node" : true
|
||||
}
|
23
bower_components/bootstrap/grunt/bs-commonjs-generator.js
vendored
Executable file
23
bower_components/bootstrap/grunt/bs-commonjs-generator.js
vendored
Executable file
@@ -0,0 +1,23 @@
|
||||
'use strict';
|
||||
var fs = require('fs');
|
||||
var path = require('path');
|
||||
|
||||
var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n';
|
||||
|
||||
module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) {
|
||||
var destDir = path.dirname(destFilepath);
|
||||
|
||||
function srcPathToDestRequire(srcFilepath) {
|
||||
var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/');
|
||||
return 'require(\'' + requirePath + '\')';
|
||||
}
|
||||
|
||||
var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n');
|
||||
try {
|
||||
fs.writeFileSync(destFilepath, moduleOutputJs);
|
||||
}
|
||||
catch (err) {
|
||||
grunt.fail.warn(err);
|
||||
}
|
||||
grunt.log.writeln('File ' + destFilepath.cyan + ' created.');
|
||||
};
|
41
bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js
vendored
Executable file
41
bower_components/bootstrap/grunt/bs-glyphicons-data-generator.js
vendored
Executable file
@@ -0,0 +1,41 @@
|
||||
/*!
|
||||
* Bootstrap Grunt task for Glyphicons data generation
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2014 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
'use strict';
|
||||
var fs = require('fs');
|
||||
|
||||
module.exports = function generateGlyphiconsData(grunt) {
|
||||
// Pass encoding, utf8, so `readFileSync` will return a string instead of a
|
||||
// buffer
|
||||
var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8');
|
||||
var glyphiconsLines = glyphiconsFile.split('\n');
|
||||
|
||||
// Use any line that starts with ".glyphicon-" and capture the class name
|
||||
var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/;
|
||||
var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' +
|
||||
'# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n';
|
||||
var glyphiconsYml = 'docs/_data/glyphicons.yml';
|
||||
for (var i = 0, len = glyphiconsLines.length; i < len; i++) {
|
||||
var match = glyphiconsLines[i].match(iconClassName);
|
||||
|
||||
if (match !== null) {
|
||||
glyphiconsData += '- ' + match[1] + '\n';
|
||||
}
|
||||
}
|
||||
|
||||
// Create the `_data` directory if it doesn't already exist
|
||||
if (!fs.existsSync('docs/_data')) {
|
||||
fs.mkdirSync('docs/_data');
|
||||
}
|
||||
|
||||
try {
|
||||
fs.writeFileSync(glyphiconsYml, glyphiconsData);
|
||||
}
|
||||
catch (err) {
|
||||
grunt.fail.warn(err);
|
||||
}
|
||||
grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.');
|
||||
};
|
238
bower_components/bootstrap/grunt/bs-lessdoc-parser.js
vendored
Executable file
238
bower_components/bootstrap/grunt/bs-lessdoc-parser.js
vendored
Executable file
@@ -0,0 +1,238 @@
|
||||
/*!
|
||||
* Bootstrap Grunt task for parsing Less docstrings
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2014 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
'use strict';
|
||||
|
||||
var Remarkable = require('remarkable');
|
||||
|
||||
function markdown2html(markdownString) {
|
||||
var md = new Remarkable();
|
||||
|
||||
// the slice removes the <p>...</p> wrapper output by Markdown processor
|
||||
return md.render(markdownString.trim()).slice(3, -5);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Mini-language:
|
||||
//== This is a normal heading, which starts a section. Sections group variables together.
|
||||
//## Optional description for the heading
|
||||
|
||||
//=== This is a subheading.
|
||||
|
||||
//** Optional description for the following variable. You **can** use Markdown in descriptions to discuss `<html>` stuff.
|
||||
@foo: #fff;
|
||||
|
||||
//-- This is a heading for a section whose variables shouldn't be customizable
|
||||
|
||||
All other lines are ignored completely.
|
||||
*/
|
||||
|
||||
|
||||
var CUSTOMIZABLE_HEADING = /^[/]{2}={2}(.*)$/;
|
||||
var UNCUSTOMIZABLE_HEADING = /^[/]{2}-{2}(.*)$/;
|
||||
var SUBSECTION_HEADING = /^[/]{2}={3}(.*)$/;
|
||||
var SECTION_DOCSTRING = /^[/]{2}#{2}(.+)$/;
|
||||
var VAR_ASSIGNMENT = /^(@[a-zA-Z0-9_-]+):[ ]*([^ ;][^;]*);[ ]*$/;
|
||||
var VAR_DOCSTRING = /^[/]{2}[*]{2}(.+)$/;
|
||||
|
||||
function Section(heading, customizable) {
|
||||
this.heading = heading.trim();
|
||||
this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
|
||||
this.customizable = customizable;
|
||||
this.docstring = null;
|
||||
this.subsections = [];
|
||||
}
|
||||
|
||||
Section.prototype.addSubSection = function (subsection) {
|
||||
this.subsections.push(subsection);
|
||||
};
|
||||
|
||||
function SubSection(heading) {
|
||||
this.heading = heading.trim();
|
||||
this.id = this.heading.replace(/\s+/g, '-').toLowerCase();
|
||||
this.variables = [];
|
||||
}
|
||||
|
||||
SubSection.prototype.addVar = function (variable) {
|
||||
this.variables.push(variable);
|
||||
};
|
||||
|
||||
function VarDocstring(markdownString) {
|
||||
this.html = markdown2html(markdownString);
|
||||
}
|
||||
|
||||
function SectionDocstring(markdownString) {
|
||||
this.html = markdown2html(markdownString);
|
||||
}
|
||||
|
||||
function Variable(name, defaultValue) {
|
||||
this.name = name;
|
||||
this.defaultValue = defaultValue;
|
||||
this.docstring = null;
|
||||
}
|
||||
|
||||
function Tokenizer(fileContent) {
|
||||
this._lines = fileContent.split('\n');
|
||||
this._next = undefined;
|
||||
}
|
||||
|
||||
Tokenizer.prototype.unshift = function (token) {
|
||||
if (this._next !== undefined) {
|
||||
throw new Error('Attempted to unshift twice!');
|
||||
}
|
||||
this._next = token;
|
||||
};
|
||||
|
||||
Tokenizer.prototype._shift = function () {
|
||||
// returning null signals EOF
|
||||
// returning undefined means the line was ignored
|
||||
if (this._next !== undefined) {
|
||||
var result = this._next;
|
||||
this._next = undefined;
|
||||
return result;
|
||||
}
|
||||
if (this._lines.length <= 0) {
|
||||
return null;
|
||||
}
|
||||
var line = this._lines.shift();
|
||||
var match = null;
|
||||
match = SUBSECTION_HEADING.exec(line);
|
||||
if (match !== null) {
|
||||
return new SubSection(match[1]);
|
||||
}
|
||||
match = CUSTOMIZABLE_HEADING.exec(line);
|
||||
if (match !== null) {
|
||||
return new Section(match[1], true);
|
||||
}
|
||||
match = UNCUSTOMIZABLE_HEADING.exec(line);
|
||||
if (match !== null) {
|
||||
return new Section(match[1], false);
|
||||
}
|
||||
match = SECTION_DOCSTRING.exec(line);
|
||||
if (match !== null) {
|
||||
return new SectionDocstring(match[1]);
|
||||
}
|
||||
match = VAR_DOCSTRING.exec(line);
|
||||
if (match !== null) {
|
||||
return new VarDocstring(match[1]);
|
||||
}
|
||||
var commentStart = line.lastIndexOf('//');
|
||||
var varLine = (commentStart === -1) ? line : line.slice(0, commentStart);
|
||||
match = VAR_ASSIGNMENT.exec(varLine);
|
||||
if (match !== null) {
|
||||
return new Variable(match[1], match[2]);
|
||||
}
|
||||
return undefined;
|
||||
};
|
||||
|
||||
Tokenizer.prototype.shift = function () {
|
||||
while (true) {
|
||||
var result = this._shift();
|
||||
if (result === undefined) {
|
||||
continue;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
};
|
||||
|
||||
function Parser(fileContent) {
|
||||
this._tokenizer = new Tokenizer(fileContent);
|
||||
}
|
||||
|
||||
Parser.prototype.parseFile = function () {
|
||||
var sections = [];
|
||||
while (true) {
|
||||
var section = this.parseSection();
|
||||
if (section === null) {
|
||||
if (this._tokenizer.shift() !== null) {
|
||||
throw new Error('Unexpected unparsed section of file remains!');
|
||||
}
|
||||
return sections;
|
||||
}
|
||||
sections.push(section);
|
||||
}
|
||||
};
|
||||
|
||||
Parser.prototype.parseSection = function () {
|
||||
var section = this._tokenizer.shift();
|
||||
if (section === null) {
|
||||
return null;
|
||||
}
|
||||
if (!(section instanceof Section)) {
|
||||
throw new Error('Expected section heading; got: ' + JSON.stringify(section));
|
||||
}
|
||||
var docstring = this._tokenizer.shift();
|
||||
if (docstring instanceof SectionDocstring) {
|
||||
section.docstring = docstring;
|
||||
}
|
||||
else {
|
||||
this._tokenizer.unshift(docstring);
|
||||
}
|
||||
this.parseSubSections(section);
|
||||
|
||||
return section;
|
||||
};
|
||||
|
||||
Parser.prototype.parseSubSections = function (section) {
|
||||
while (true) {
|
||||
var subsection = this.parseSubSection();
|
||||
if (subsection === null) {
|
||||
if (section.subsections.length === 0) {
|
||||
// Presume an implicit initial subsection
|
||||
subsection = new SubSection('');
|
||||
this.parseVars(subsection);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
section.addSubSection(subsection);
|
||||
}
|
||||
|
||||
if (section.subsections.length === 1 && !(section.subsections[0].heading) && section.subsections[0].variables.length === 0) {
|
||||
// Ignore lone empty implicit subsection
|
||||
section.subsections = [];
|
||||
}
|
||||
};
|
||||
|
||||
Parser.prototype.parseSubSection = function () {
|
||||
var subsection = this._tokenizer.shift();
|
||||
if (subsection instanceof SubSection) {
|
||||
this.parseVars(subsection);
|
||||
return subsection;
|
||||
}
|
||||
this._tokenizer.unshift(subsection);
|
||||
return null;
|
||||
};
|
||||
|
||||
Parser.prototype.parseVars = function (subsection) {
|
||||
while (true) {
|
||||
var variable = this.parseVar();
|
||||
if (variable === null) {
|
||||
return;
|
||||
}
|
||||
subsection.addVar(variable);
|
||||
}
|
||||
};
|
||||
|
||||
Parser.prototype.parseVar = function () {
|
||||
var docstring = this._tokenizer.shift();
|
||||
if (!(docstring instanceof VarDocstring)) {
|
||||
this._tokenizer.unshift(docstring);
|
||||
docstring = null;
|
||||
}
|
||||
var variable = this._tokenizer.shift();
|
||||
if (variable instanceof Variable) {
|
||||
variable.docstring = docstring;
|
||||
return variable;
|
||||
}
|
||||
this._tokenizer.unshift(variable);
|
||||
return null;
|
||||
};
|
||||
|
||||
|
||||
module.exports = Parser;
|
46
bower_components/bootstrap/grunt/bs-raw-files-generator.js
vendored
Executable file
46
bower_components/bootstrap/grunt/bs-raw-files-generator.js
vendored
Executable file
@@ -0,0 +1,46 @@
|
||||
/*!
|
||||
* Bootstrap Grunt task for generating raw-files.min.js for the Customizer
|
||||
* http://getbootstrap.com
|
||||
* Copyright 2014 Twitter, Inc.
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
/* global btoa: true */
|
||||
|
||||
'use strict';
|
||||
var fs = require('fs');
|
||||
var btoa = require('btoa');
|
||||
var glob = require('glob');
|
||||
|
||||
function getFiles(type) {
|
||||
var files = {};
|
||||
var recursive = (type === 'less');
|
||||
var globExpr = (recursive ? '/**/*' : '/*');
|
||||
glob.sync(type + globExpr)
|
||||
.filter(function (path) {
|
||||
return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
|
||||
})
|
||||
.forEach(function (fullPath) {
|
||||
var relativePath = fullPath.replace(/^[^/]+\//, '');
|
||||
files[relativePath] = (type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8'));
|
||||
});
|
||||
return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
|
||||
}
|
||||
|
||||
module.exports = function generateRawFilesJs(grunt, banner) {
|
||||
if (!banner) {
|
||||
banner = '';
|
||||
}
|
||||
var dirs = ['js', 'less', 'fonts'];
|
||||
var files = banner + dirs.map(getFiles).reduce(function (combined, file) {
|
||||
return combined + file;
|
||||
}, '');
|
||||
var rawFilesJs = 'docs/assets/js/raw-files.min.js';
|
||||
try {
|
||||
fs.writeFileSync(rawFilesJs, files);
|
||||
}
|
||||
catch (err) {
|
||||
grunt.fail.warn(err);
|
||||
}
|
||||
grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');
|
||||
};
|
45
bower_components/bootstrap/grunt/configBridge.json
vendored
Executable file
45
bower_components/bootstrap/grunt/configBridge.json
vendored
Executable file
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"paths": {
|
||||
"customizerJs": [
|
||||
"../assets/js/vendor/autoprefixer.js",
|
||||
"../assets/js/vendor/less.min.js",
|
||||
"../assets/js/vendor/jszip.min.js",
|
||||
"../assets/js/vendor/uglify.min.js",
|
||||
"../assets/js/vendor/Blob.js",
|
||||
"../assets/js/vendor/FileSaver.js",
|
||||
"../assets/js/raw-files.min.js",
|
||||
"../assets/js/src/customizer.js"
|
||||
],
|
||||
"docsJs": [
|
||||
"../assets/js/vendor/holder.js",
|
||||
"../assets/js/vendor/ZeroClipboard.min.js",
|
||||
"../assets/js/src/application.js"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"autoprefixerBrowsers": [
|
||||
"Android 2.3",
|
||||
"Android >= 4",
|
||||
"Chrome >= 20",
|
||||
"Firefox >= 24",
|
||||
"Explorer >= 8",
|
||||
"iOS >= 6",
|
||||
"Opera >= 12",
|
||||
"Safari >= 6"
|
||||
],
|
||||
"jqueryCheck": [
|
||||
"if (typeof jQuery === 'undefined') {",
|
||||
" throw new Error('Bootstrap\\'s JavaScript requires jQuery')",
|
||||
"}\n"
|
||||
],
|
||||
"jqueryVersionCheck": [
|
||||
"+function ($) {",
|
||||
" 'use strict';",
|
||||
" var version = $.fn.jquery.split(' ')[0].split('.')",
|
||||
" if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {",
|
||||
" throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')",
|
||||
" }",
|
||||
"}(jQuery);\n\n"
|
||||
]
|
||||
}
|
||||
}
|
82
bower_components/bootstrap/grunt/sauce_browsers.yml
vendored
Executable file
82
bower_components/bootstrap/grunt/sauce_browsers.yml
vendored
Executable file
@@ -0,0 +1,82 @@
|
||||
[
|
||||
# Docs: https://saucelabs.com/docs/platforms/webdriver
|
||||
|
||||
{
|
||||
browserName: "safari",
|
||||
platform: "OS X 10.10"
|
||||
},
|
||||
{
|
||||
browserName: "chrome",
|
||||
platform: "OS X 10.10"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
platform: "OS X 10.10"
|
||||
},
|
||||
|
||||
# Mac Opera not currently supported by Sauce Labs
|
||||
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "11",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "10",
|
||||
platform: "Windows 8"
|
||||
},
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "9",
|
||||
platform: "Windows 7"
|
||||
},
|
||||
{
|
||||
browserName: "internet explorer",
|
||||
version: "8",
|
||||
platform: "Windows 7"
|
||||
},
|
||||
|
||||
# { # Unofficial
|
||||
# browserName: "internet explorer",
|
||||
# version: "7",
|
||||
# platform: "Windows XP"
|
||||
# },
|
||||
|
||||
{
|
||||
browserName: "chrome",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
platform: "Windows 8.1"
|
||||
},
|
||||
|
||||
# Win Opera 15+ not currently supported by Sauce Labs
|
||||
|
||||
{
|
||||
browserName: "iphone",
|
||||
platform: "OS X 10.9",
|
||||
version: "8.1"
|
||||
},
|
||||
|
||||
# iOS Chrome not currently supported by Sauce Labs
|
||||
|
||||
# Linux (unofficial)
|
||||
{
|
||||
browserName: "chrome",
|
||||
platform: "Linux"
|
||||
},
|
||||
{
|
||||
browserName: "firefox",
|
||||
platform: "Linux"
|
||||
}
|
||||
|
||||
# Android Chrome not currently supported by Sauce Labs
|
||||
|
||||
# { # Android Browser (super-unofficial)
|
||||
# browserName: "android",
|
||||
# version: "4.0",
|
||||
# platform: "Linux"
|
||||
# }
|
||||
]
|
Reference in New Issue
Block a user