r["max-height"]?!1:!0},navigator.userAgent.match(/MSIE ([0-9]+)/)&&RegExp.$1<9&&(t.newStyle=function(t){var e=document.createElement("span");return e.innerHTML=' ",e})},initVars:function(){var e,n,i,a=navigator.userAgent;e="other",n=0,i=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(RegExp.$1),!1):void 0}),t.vars.browser=e,t.vars.browserVersion=n,e="other",n=0,i=[["ios",/([0-9_]+) like Mac OS X/,function(t){return t.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(t){return 0}],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(t){return t.replace("_",".").replace("_","")}],["wp",/Windows Phone ([0-9\.]+)/,null],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(i[2]?i[2](RegExp.$1):RegExp.$1),!1):void 0}),t.vars.os=e,t.vars.osVersion=n,t.vars.IEVersion="ie"==t.vars.browser?t.vars.browserVersion:99,t.vars.touch="wp"==t.vars.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),t.vars.mobile="wp"==t.vars.os||"android"==t.vars.os||"ios"==t.vars.os||"bb"==t.vars.os}};return t.init(),t}();!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.skel=e()}(this,function(){return skel});
3 |
--------------------------------------------------------------------------------
/web/assets/js/util.js:
--------------------------------------------------------------------------------
1 | (function($) {
2 |
3 | /**
4 | * Generate an indented list of links from a nav. Meant for use with panel().
5 | * @return {jQuery} jQuery object.
6 | */
7 | $.fn.navList = function() {
8 |
9 | var $this = $(this);
10 | $a = $this.find('a'),
11 | b = [];
12 |
13 | $a.each(function() {
14 |
15 | var $this = $(this),
16 | indent = Math.max(0, $this.parents('li').length - 1),
17 | href = $this.attr('href'),
18 | target = $this.attr('target');
19 |
20 | b.push(
21 | '' +
26 | '' +
27 | $this.text() +
28 | ''
29 | );
30 |
31 | });
32 |
33 | return b.join('');
34 |
35 | };
36 |
37 | /**
38 | * Panel-ify an element.
39 | * @param {object} userConfig User config.
40 | * @return {jQuery} jQuery object.
41 | */
42 | $.fn.panel = function(userConfig) {
43 |
44 | // No elements?
45 | if (this.length == 0)
46 | return $this;
47 |
48 | // Multiple elements?
49 | if (this.length > 1) {
50 |
51 | for (var i=0; i < this.length; i++)
52 | $(this[i]).panel(userConfig);
53 |
54 | return $this;
55 |
56 | }
57 |
58 | // Vars.
59 | var $this = $(this),
60 | $body = $('body'),
61 | $window = $(window),
62 | id = $this.attr('id'),
63 | config;
64 |
65 | // Config.
66 | config = $.extend({
67 |
68 | // Delay.
69 | delay: 0,
70 |
71 | // Hide panel on link click.
72 | hideOnClick: false,
73 |
74 | // Hide panel on escape keypress.
75 | hideOnEscape: false,
76 |
77 | // Hide panel on swipe.
78 | hideOnSwipe: false,
79 |
80 | // Reset scroll position on hide.
81 | resetScroll: false,
82 |
83 | // Reset forms on hide.
84 | resetForms: false,
85 |
86 | // Side of viewport the panel will appear.
87 | side: null,
88 |
89 | // Target element for "class".
90 | target: $this,
91 |
92 | // Class to toggle.
93 | visibleClass: 'visible'
94 |
95 | }, userConfig);
96 |
97 | // Expand "target" if it's not a jQuery object already.
98 | if (typeof config.target != 'jQuery')
99 | config.target = $(config.target);
100 |
101 | // Panel.
102 |
103 | // Methods.
104 | $this._hide = function(event) {
105 |
106 | // Already hidden? Bail.
107 | if (!config.target.hasClass(config.visibleClass))
108 | return;
109 |
110 | // If an event was provided, cancel it.
111 | if (event) {
112 |
113 | event.preventDefault();
114 | event.stopPropagation();
115 |
116 | }
117 |
118 | // Hide.
119 | config.target.removeClass(config.visibleClass);
120 |
121 | // Post-hide stuff.
122 | window.setTimeout(function() {
123 |
124 | // Reset scroll position.
125 | if (config.resetScroll)
126 | $this.scrollTop(0);
127 |
128 | // Reset forms.
129 | if (config.resetForms)
130 | $this.find('form').each(function() {
131 | this.reset();
132 | });
133 |
134 | }, config.delay);
135 |
136 | };
137 |
138 | // Vendor fixes.
139 | $this
140 | .css('-ms-overflow-style', '-ms-autohiding-scrollbar')
141 | .css('-webkit-overflow-scrolling', 'touch');
142 |
143 | // Hide on click.
144 | if (config.hideOnClick) {
145 |
146 | $this.find('a')
147 | .css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)');
148 |
149 | $this
150 | .on('click', 'a', function(event) {
151 |
152 | var $a = $(this),
153 | href = $a.attr('href'),
154 | target = $a.attr('target');
155 |
156 | if (!href || href == '#' || href == '' || href == '#' + id)
157 | return;
158 |
159 | // Cancel original event.
160 | event.preventDefault();
161 | event.stopPropagation();
162 |
163 | // Hide panel.
164 | $this._hide();
165 |
166 | // Redirect to href.
167 | window.setTimeout(function() {
168 |
169 | if (target == '_blank')
170 | window.open(href);
171 | else
172 | window.location.href = href;
173 |
174 | }, config.delay + 10);
175 |
176 | });
177 |
178 | }
179 |
180 | // Event: Touch stuff.
181 | $this.on('touchstart', function(event) {
182 |
183 | $this.touchPosX = event.originalEvent.touches[0].pageX;
184 | $this.touchPosY = event.originalEvent.touches[0].pageY;
185 |
186 | })
187 |
188 | $this.on('touchmove', function(event) {
189 |
190 | if ($this.touchPosX === null
191 | || $this.touchPosY === null)
192 | return;
193 |
194 | var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX,
195 | diffY = $this.touchPosY - event.originalEvent.touches[0].pageY,
196 | th = $this.outerHeight(),
197 | ts = ($this.get(0).scrollHeight - $this.scrollTop());
198 |
199 | // Hide on swipe?
200 | if (config.hideOnSwipe) {
201 |
202 | var result = false,
203 | boundary = 20,
204 | delta = 50;
205 |
206 | switch (config.side) {
207 |
208 | case 'left':
209 | result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta);
210 | break;
211 |
212 | case 'right':
213 | result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta));
214 | break;
215 |
216 | case 'top':
217 | result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta);
218 | break;
219 |
220 | case 'bottom':
221 | result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta));
222 | break;
223 |
224 | default:
225 | break;
226 |
227 | }
228 |
229 | if (result) {
230 |
231 | $this.touchPosX = null;
232 | $this.touchPosY = null;
233 | $this._hide();
234 |
235 | return false;
236 |
237 | }
238 |
239 | }
240 |
241 | // Prevent vertical scrolling past the top or bottom.
242 | if (($this.scrollTop() < 0 && diffY < 0)
243 | || (ts > (th - 2) && ts < (th + 2) && diffY > 0)) {
244 |
245 | event.preventDefault();
246 | event.stopPropagation();
247 |
248 | }
249 |
250 | });
251 |
252 | // Event: Prevent certain events inside the panel from bubbling.
253 | $this.on('click touchend touchstart touchmove', function(event) {
254 | event.stopPropagation();
255 | });
256 |
257 | // Event: Hide panel if a child anchor tag pointing to its ID is clicked.
258 | $this.on('click', 'a[href="#' + id + '"]', function(event) {
259 |
260 | event.preventDefault();
261 | event.stopPropagation();
262 |
263 | config.target.removeClass(config.visibleClass);
264 |
265 | });
266 |
267 | // Body.
268 |
269 | // Event: Hide panel on body click/tap.
270 | $body.on('click touchend', function(event) {
271 | $this._hide(event);
272 | });
273 |
274 | // Event: Toggle.
275 | $body.on('click', 'a[href="#' + id + '"]', function(event) {
276 |
277 | event.preventDefault();
278 | event.stopPropagation();
279 |
280 | config.target.toggleClass(config.visibleClass);
281 |
282 | });
283 |
284 | // Window.
285 |
286 | // Event: Hide on ESC.
287 | if (config.hideOnEscape)
288 | $window.on('keydown', function(event) {
289 |
290 | if (event.keyCode == 27)
291 | $this._hide(event);
292 |
293 | });
294 |
295 | return $this;
296 |
297 | };
298 |
299 | /**
300 | * Apply "placeholder" attribute polyfill to one or more forms.
301 | * @return {jQuery} jQuery object.
302 | */
303 | $.fn.placeholder = function() {
304 |
305 | // Browser natively supports placeholders? Bail.
306 | if (typeof (document.createElement('input')).placeholder != 'undefined')
307 | return $(this);
308 |
309 | // No elements?
310 | if (this.length == 0)
311 | return $this;
312 |
313 | // Multiple elements?
314 | if (this.length > 1) {
315 |
316 | for (var i=0; i < this.length; i++)
317 | $(this[i]).placeholder();
318 |
319 | return $this;
320 |
321 | }
322 |
323 | // Vars.
324 | var $this = $(this);
325 |
326 | // Text, TextArea.
327 | $this.find('input[type=text],textarea')
328 | .each(function() {
329 |
330 | var i = $(this);
331 |
332 | if (i.val() == ''
333 | || i.val() == i.attr('placeholder'))
334 | i
335 | .addClass('polyfill-placeholder')
336 | .val(i.attr('placeholder'));
337 |
338 | })
339 | .on('blur', function() {
340 |
341 | var i = $(this);
342 |
343 | if (i.attr('name').match(/-polyfill-field$/))
344 | return;
345 |
346 | if (i.val() == '')
347 | i
348 | .addClass('polyfill-placeholder')
349 | .val(i.attr('placeholder'));
350 |
351 | })
352 | .on('focus', function() {
353 |
354 | var i = $(this);
355 |
356 | if (i.attr('name').match(/-polyfill-field$/))
357 | return;
358 |
359 | if (i.val() == i.attr('placeholder'))
360 | i
361 | .removeClass('polyfill-placeholder')
362 | .val('');
363 |
364 | });
365 |
366 | // Password.
367 | $this.find('input[type=password]')
368 | .each(function() {
369 |
370 | var i = $(this);
371 | var x = $(
372 | $('')
373 | .append(i.clone())
374 | .remove()
375 | .html()
376 | .replace(/type="password"/i, 'type="text"')
377 | .replace(/type=password/i, 'type=text')
378 | );
379 |
380 | if (i.attr('id') != '')
381 | x.attr('id', i.attr('id') + '-polyfill-field');
382 |
383 | if (i.attr('name') != '')
384 | x.attr('name', i.attr('name') + '-polyfill-field');
385 |
386 | x.addClass('polyfill-placeholder')
387 | .val(x.attr('placeholder')).insertAfter(i);
388 |
389 | if (i.val() == '')
390 | i.hide();
391 | else
392 | x.hide();
393 |
394 | i
395 | .on('blur', function(event) {
396 |
397 | event.preventDefault();
398 |
399 | var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
400 |
401 | if (i.val() == '') {
402 |
403 | i.hide();
404 | x.show();
405 |
406 | }
407 |
408 | });
409 |
410 | x
411 | .on('focus', function(event) {
412 |
413 | event.preventDefault();
414 |
415 | var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']');
416 |
417 | x.hide();
418 |
419 | i
420 | .show()
421 | .focus();
422 |
423 | })
424 | .on('keypress', function(event) {
425 |
426 | event.preventDefault();
427 | x.val('');
428 |
429 | });
430 |
431 | });
432 |
433 | // Events.
434 | $this
435 | .on('submit', function() {
436 |
437 | $this.find('input[type=text],input[type=password],textarea')
438 | .each(function(event) {
439 |
440 | var i = $(this);
441 |
442 | if (i.attr('name').match(/-polyfill-field$/))
443 | i.attr('name', '');
444 |
445 | if (i.val() == i.attr('placeholder')) {
446 |
447 | i.removeClass('polyfill-placeholder');
448 | i.val('');
449 |
450 | }
451 |
452 | });
453 |
454 | })
455 | .on('reset', function(event) {
456 |
457 | event.preventDefault();
458 |
459 | $this.find('select')
460 | .val($('option:first').val());
461 |
462 | $this.find('input,textarea')
463 | .each(function() {
464 |
465 | var i = $(this),
466 | x;
467 |
468 | i.removeClass('polyfill-placeholder');
469 |
470 | switch (this.type) {
471 |
472 | case 'submit':
473 | case 'reset':
474 | break;
475 |
476 | case 'password':
477 | i.val(i.attr('defaultValue'));
478 |
479 | x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]');
480 |
481 | if (i.val() == '') {
482 | i.hide();
483 | x.show();
484 | }
485 | else {
486 | i.show();
487 | x.hide();
488 | }
489 |
490 | break;
491 |
492 | case 'checkbox':
493 | case 'radio':
494 | i.attr('checked', i.attr('defaultValue'));
495 | break;
496 |
497 | case 'text':
498 | case 'textarea':
499 | i.val(i.attr('defaultValue'));
500 |
501 | if (i.val() == '') {
502 | i.addClass('polyfill-placeholder');
503 | i.val(i.attr('placeholder'));
504 | }
505 |
506 | break;
507 |
508 | default:
509 | i.val(i.attr('defaultValue'));
510 | break;
511 |
512 | }
513 | });
514 |
515 | });
516 |
517 | return $this;
518 |
519 | };
520 |
521 | /**
522 | * Moves elements to/from the first positions of their respective parents.
523 | * @param {jQuery} $elements Elements (or selector) to move.
524 | * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations.
525 | */
526 | $.prioritize = function($elements, condition) {
527 |
528 | var key = '__prioritize';
529 |
530 | // Expand $elements if it's not already a jQuery object.
531 | if (typeof $elements != 'jQuery')
532 | $elements = $($elements);
533 |
534 | // Step through elements.
535 | $elements.each(function() {
536 |
537 | var $e = $(this), $p,
538 | $parent = $e.parent();
539 |
540 | // No parent? Bail.
541 | if ($parent.length == 0)
542 | return;
543 |
544 | // Not moved? Move it.
545 | if (!$e.data(key)) {
546 |
547 | // Condition is false? Bail.
548 | if (!condition)
549 | return;
550 |
551 | // Get placeholder (which will serve as our point of reference for when this element needs to move back).
552 | $p = $e.prev();
553 |
554 | // Couldn't find anything? Means this element's already at the top, so bail.
555 | if ($p.length == 0)
556 | return;
557 |
558 | // Move element to top of parent.
559 | $e.prependTo($parent);
560 |
561 | // Mark element as moved.
562 | $e.data(key, $p);
563 |
564 | }
565 |
566 | // Moved already?
567 | else {
568 |
569 | // Condition is true? Bail.
570 | if (condition)
571 | return;
572 |
573 | $p = $e.data(key);
574 |
575 | // Move element back to its original location (using our placeholder).
576 | $e.insertAfter($p);
577 |
578 | // Unmark element as moved.
579 | $e.removeData(key);
580 |
581 | }
582 |
583 | });
584 |
585 | };
586 |
587 | })(jQuery);
--------------------------------------------------------------------------------
/node/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "hash": "22eeabe9722e1739153b06363ed70a6e",
8 | "content-hash": "ddd7984319ba447a04a42e4dda759ca9",
9 | "packages": [
10 | {
11 | "name": "amercier/cli-helpers",
12 | "version": "v1.4.4",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/amercier/php-cli-helpers.git",
16 | "reference": "78c77c30d41a0cd45a5be3289e90d688430cb28f"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/amercier/php-cli-helpers/zipball/78c77c30d41a0cd45a5be3289e90d688430cb28f",
21 | "reference": "78c77c30d41a0cd45a5be3289e90d688430cb28f",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "php": ">=5.3.2"
26 | },
27 | "require-dev": {
28 | "pear-pear.php.net/php_codesniffer": ">=1.4.5",
29 | "phpunit/phpunit": "4.*",
30 | "satooshi/php-coveralls": ">=0.6.1"
31 | },
32 | "type": "library",
33 | "autoload": {
34 | "psr-0": {
35 | "Cli": "src/"
36 | }
37 | },
38 | "notification-url": "https://packagist.org/downloads/",
39 | "include-path": [
40 | "src/"
41 | ],
42 | "license": [
43 | "MIT"
44 | ],
45 | "description": "Utility classes to write PHP command-line scripts",
46 | "homepage": "https://github.com/amercier/php-cli-helpers",
47 | "keywords": [
48 | "cli",
49 | "command",
50 | "command-line",
51 | "helpers",
52 | "line",
53 | "utilities",
54 | "utility"
55 | ],
56 | "time": "2014-09-18 17:37:41"
57 | },
58 | {
59 | "name": "apix/log",
60 | "version": "1.0.2",
61 | "source": {
62 | "type": "git",
63 | "url": "https://github.com/frqnck/apix-log.git",
64 | "reference": "e48bae2fb139fe3cfe3987600a61e582ec7c9d11"
65 | },
66 | "dist": {
67 | "type": "zip",
68 | "url": "https://api.github.com/repos/frqnck/apix-log/zipball/e48bae2fb139fe3cfe3987600a61e582ec7c9d11",
69 | "reference": "e48bae2fb139fe3cfe3987600a61e582ec7c9d11",
70 | "shasum": ""
71 | },
72 | "require": {
73 | "php": ">=5.3",
74 | "psr/log": "~1.0"
75 | },
76 | "provide": {
77 | "psr/log-implementation": "1.0.0"
78 | },
79 | "require-dev": {
80 | "phpunit/phpunit": "3.7.*"
81 | },
82 | "type": "library",
83 | "autoload": {
84 | "psr-4": {
85 | "Apix\\Log\\": "src/",
86 | "Apix\\Log\\tests\\": "tests/"
87 | }
88 | },
89 | "notification-url": "https://packagist.org/downloads/",
90 | "license": [
91 | "BSD-3-Clause"
92 | ],
93 | "authors": [
94 | {
95 | "name": "Franck Cassedanne",
96 | "email": "franck@ouarz.net"
97 | }
98 | ],
99 | "description": "Minimalist, thin and fast PSR-3 compliant (multi-bucket) logger.",
100 | "homepage": "https://github.com/frqnck/apix-log",
101 | "keywords": [
102 | "apix",
103 | "log",
104 | "logger",
105 | "psr",
106 | "psr-3"
107 | ],
108 | "time": "2015-06-10 18:31:13"
109 | },
110 | {
111 | "name": "herrera-io/json",
112 | "version": "1.0.3",
113 | "source": {
114 | "type": "git",
115 | "url": "https://github.com/kherge-abandoned/php-json.git",
116 | "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1"
117 | },
118 | "dist": {
119 | "type": "zip",
120 | "url": "https://api.github.com/repos/kherge-abandoned/php-json/zipball/60c696c9370a1e5136816ca557c17f82a6fa83f1",
121 | "reference": "60c696c9370a1e5136816ca557c17f82a6fa83f1",
122 | "shasum": ""
123 | },
124 | "require": {
125 | "ext-json": "*",
126 | "justinrainbow/json-schema": ">=1.0,<2.0-dev",
127 | "php": ">=5.3.3",
128 | "seld/jsonlint": ">=1.0,<2.0-dev"
129 | },
130 | "require-dev": {
131 | "herrera-io/phpunit-test-case": "1.*",
132 | "mikey179/vfsstream": "1.1.0",
133 | "phpunit/phpunit": "3.7.*"
134 | },
135 | "type": "library",
136 | "extra": {
137 | "branch-alias": {
138 | "dev-master": "1.0-dev"
139 | }
140 | },
141 | "autoload": {
142 | "files": [
143 | "src/lib/json_version.php"
144 | ],
145 | "psr-0": {
146 | "Herrera\\Json": "src/lib"
147 | }
148 | },
149 | "notification-url": "https://packagist.org/downloads/",
150 | "license": [
151 | "MIT"
152 | ],
153 | "authors": [
154 | {
155 | "name": "Kevin Herrera",
156 | "email": "kevin@herrera.io",
157 | "homepage": "http://kevin.herrera.io/",
158 | "role": "Developer"
159 | }
160 | ],
161 | "description": "A library for simplifying JSON linting and validation.",
162 | "homepage": "http://herrera-io.github.com/php-json",
163 | "keywords": [
164 | "json",
165 | "lint",
166 | "schema",
167 | "validate"
168 | ],
169 | "time": "2013-10-30 16:51:34"
170 | },
171 | {
172 | "name": "herrera-io/phar-update",
173 | "version": "1.0.3",
174 | "source": {
175 | "type": "git",
176 | "url": "https://github.com/kherge-abandoned/php-phar-update.git",
177 | "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b"
178 | },
179 | "dist": {
180 | "type": "zip",
181 | "url": "https://api.github.com/repos/kherge-abandoned/php-phar-update/zipball/00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b",
182 | "reference": "00a79e1d5b8cf3c080a2e3becf1ddf7a7fea025b",
183 | "shasum": ""
184 | },
185 | "require": {
186 | "herrera-io/json": "1.*",
187 | "kherge/version": "1.*",
188 | "php": ">=5.3.3"
189 | },
190 | "require-dev": {
191 | "herrera-io/phpunit-test-case": "1.*",
192 | "mikey179/vfsstream": "1.1.0",
193 | "phpunit/phpunit": "3.7.*"
194 | },
195 | "type": "library",
196 | "extra": {
197 | "branch-alias": {
198 | "dev-master": "1.0-dev"
199 | }
200 | },
201 | "autoload": {
202 | "files": [
203 | "src/lib/constants.php"
204 | ],
205 | "psr-0": {
206 | "Herrera\\Phar\\Update": "src/lib"
207 | }
208 | },
209 | "notification-url": "https://packagist.org/downloads/",
210 | "license": [
211 | "MIT"
212 | ],
213 | "authors": [
214 | {
215 | "name": "Kevin Herrera",
216 | "email": "kevin@herrera.io",
217 | "homepage": "http://kevin.herrera.io/",
218 | "role": "Developer"
219 | }
220 | ],
221 | "description": "A library for self-updating Phars.",
222 | "homepage": "http://herrera-io.github.com/php-phar-update",
223 | "keywords": [
224 | "phar",
225 | "update"
226 | ],
227 | "time": "2013-10-30 17:23:01"
228 | },
229 | {
230 | "name": "justinrainbow/json-schema",
231 | "version": "v1.6.0",
232 | "source": {
233 | "type": "git",
234 | "url": "https://github.com/justinrainbow/json-schema.git",
235 | "reference": "f9e27c3e202faf14fd581ef41355d83bb4b7eb7d"
236 | },
237 | "dist": {
238 | "type": "zip",
239 | "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/f9e27c3e202faf14fd581ef41355d83bb4b7eb7d",
240 | "reference": "f9e27c3e202faf14fd581ef41355d83bb4b7eb7d",
241 | "shasum": ""
242 | },
243 | "require": {
244 | "php": ">=5.3.2"
245 | },
246 | "require-dev": {
247 | "json-schema/json-schema-test-suite": "1.1.0",
248 | "phpdocumentor/phpdocumentor": "~2",
249 | "phpunit/phpunit": "~3.7"
250 | },
251 | "bin": [
252 | "bin/validate-json"
253 | ],
254 | "type": "library",
255 | "extra": {
256 | "branch-alias": {
257 | "dev-master": "1.4.x-dev"
258 | }
259 | },
260 | "autoload": {
261 | "psr-4": {
262 | "JsonSchema\\": "src/JsonSchema/"
263 | }
264 | },
265 | "notification-url": "https://packagist.org/downloads/",
266 | "license": [
267 | "BSD-3-Clause"
268 | ],
269 | "authors": [
270 | {
271 | "name": "Bruno Prieto Reis",
272 | "email": "bruno.p.reis@gmail.com"
273 | },
274 | {
275 | "name": "Justin Rainbow",
276 | "email": "justin.rainbow@gmail.com"
277 | },
278 | {
279 | "name": "Igor Wiedler",
280 | "email": "igor@wiedler.ch"
281 | },
282 | {
283 | "name": "Robert Schönthal",
284 | "email": "seroscho@googlemail.com"
285 | }
286 | ],
287 | "description": "A library to validate a json schema.",
288 | "homepage": "https://github.com/justinrainbow/json-schema",
289 | "keywords": [
290 | "json",
291 | "schema"
292 | ],
293 | "time": "2016-01-06 14:37:04"
294 | },
295 | {
296 | "name": "kherge/version",
297 | "version": "1.0.1",
298 | "source": {
299 | "type": "git",
300 | "url": "https://github.com/kherge-abandoned/Version.git",
301 | "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30"
302 | },
303 | "dist": {
304 | "type": "zip",
305 | "url": "https://api.github.com/repos/kherge-abandoned/Version/zipball/f07cf83f8ce533be8f93d2893d96d674bbeb7e30",
306 | "reference": "f07cf83f8ce533be8f93d2893d96d674bbeb7e30",
307 | "shasum": ""
308 | },
309 | "require": {
310 | "php": ">=5.3.3"
311 | },
312 | "type": "library",
313 | "extra": {
314 | "branch-alias": {
315 | "dev-master": "1.0-dev"
316 | }
317 | },
318 | "autoload": {
319 | "psr-0": {
320 | "KevinGH\\Version": "src/lib/"
321 | }
322 | },
323 | "notification-url": "https://packagist.org/downloads/",
324 | "license": [
325 | "MIT"
326 | ],
327 | "authors": [
328 | {
329 | "name": "Kevin Herrera",
330 | "email": "me@kevingh.com",
331 | "homepage": "http://www.kevingh.com/"
332 | }
333 | ],
334 | "description": "A parsing and comparison library for semantic versioning.",
335 | "homepage": "http://github.com/kherge/Version",
336 | "time": "2012-08-16 17:13:03"
337 | },
338 | {
339 | "name": "psr/log",
340 | "version": "1.0.0",
341 | "source": {
342 | "type": "git",
343 | "url": "https://github.com/php-fig/log.git",
344 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
345 | },
346 | "dist": {
347 | "type": "zip",
348 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
349 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
350 | "shasum": ""
351 | },
352 | "type": "library",
353 | "autoload": {
354 | "psr-0": {
355 | "Psr\\Log\\": ""
356 | }
357 | },
358 | "notification-url": "https://packagist.org/downloads/",
359 | "license": [
360 | "MIT"
361 | ],
362 | "authors": [
363 | {
364 | "name": "PHP-FIG",
365 | "homepage": "http://www.php-fig.org/"
366 | }
367 | ],
368 | "description": "Common interface for logging libraries",
369 | "keywords": [
370 | "log",
371 | "psr",
372 | "psr-3"
373 | ],
374 | "time": "2012-12-21 11:40:51"
375 | },
376 | {
377 | "name": "seld/jsonlint",
378 | "version": "1.4.0",
379 | "source": {
380 | "type": "git",
381 | "url": "https://github.com/Seldaek/jsonlint.git",
382 | "reference": "66834d3e3566bb5798db7294619388786ae99394"
383 | },
384 | "dist": {
385 | "type": "zip",
386 | "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/66834d3e3566bb5798db7294619388786ae99394",
387 | "reference": "66834d3e3566bb5798db7294619388786ae99394",
388 | "shasum": ""
389 | },
390 | "require": {
391 | "php": "^5.3 || ^7.0"
392 | },
393 | "bin": [
394 | "bin/jsonlint"
395 | ],
396 | "type": "library",
397 | "autoload": {
398 | "psr-4": {
399 | "Seld\\JsonLint\\": "src/Seld/JsonLint/"
400 | }
401 | },
402 | "notification-url": "https://packagist.org/downloads/",
403 | "license": [
404 | "MIT"
405 | ],
406 | "authors": [
407 | {
408 | "name": "Jordi Boggiano",
409 | "email": "j.boggiano@seld.be",
410 | "homepage": "http://seld.be"
411 | }
412 | ],
413 | "description": "JSON Linter",
414 | "keywords": [
415 | "json",
416 | "linter",
417 | "parser",
418 | "validator"
419 | ],
420 | "time": "2015-11-21 02:21:41"
421 | }
422 | ],
423 | "packages-dev": [],
424 | "aliases": [],
425 | "minimum-stability": "stable",
426 | "stability-flags": [],
427 | "prefer-stable": false,
428 | "prefer-lowest": false,
429 | "platform": {
430 | "php": ">=5.4.0"
431 | },
432 | "platform-dev": []
433 | }
434 |
--------------------------------------------------------------------------------
/web/assets/sass/libs/_skel.scss:
--------------------------------------------------------------------------------
1 | // skel.scss v3.0.0 | (c) n33 | skel.io | MIT licensed */
2 |
3 | // Vars.
4 |
5 | /// Breakpoints.
6 | /// @var {list}
7 | $breakpoints: () !global;
8 |
9 | /// Vendor prefixes.
10 | /// @var {list}
11 | $vendor-prefixes: (
12 | '-moz-',
13 | '-webkit-',
14 | '-ms-',
15 | ''
16 | );
17 |
18 | /// Properties that should be vendorized.
19 | /// @var {list}
20 | $vendor-properties: (
21 | 'align-content',
22 | 'align-items',
23 | 'align-self',
24 | 'animation',
25 | 'animation-delay',
26 | 'animation-direction',
27 | 'animation-duration',
28 | 'animation-fill-mode',
29 | 'animation-iteration-count',
30 | 'animation-name',
31 | 'animation-play-state',
32 | 'animation-timing-function',
33 | 'appearance',
34 | 'backface-visibility',
35 | 'box-sizing',
36 | 'filter',
37 | 'flex',
38 | 'flex-basis',
39 | 'flex-direction',
40 | 'flex-flow',
41 | 'flex-grow',
42 | 'flex-shrink',
43 | 'flex-wrap',
44 | 'justify-content',
45 | 'order',
46 | 'perspective',
47 | 'pointer-events',
48 | 'transform',
49 | 'transform-origin',
50 | 'transform-style',
51 | 'transition',
52 | 'transition-delay',
53 | 'transition-duration',
54 | 'transition-property',
55 | 'transition-timing-function'
56 | );
57 |
58 | /// Values that should be vendorized.
59 | /// @var {list}
60 | $vendor-values: (
61 | 'filter',
62 | 'flex',
63 | 'linear-gradient',
64 | 'radial-gradient',
65 | 'transform'
66 | );
67 |
68 | // Functions.
69 |
70 | /// Removes a specific item from a list.
71 | /// @author Hugo Giraudel
72 | /// @param {list} $list List.
73 | /// @param {integer} $index Index.
74 | /// @return {list} Updated list.
75 | @function remove-nth($list, $index) {
76 |
77 | $result: null;
78 |
79 | @if type-of($index) != number {
80 | @warn "$index: #{quote($index)} is not a number for `remove-nth`.";
81 | }
82 | @else if $index == 0 {
83 | @warn "List index 0 must be a non-zero integer for `remove-nth`.";
84 | }
85 | @else if abs($index) > length($list) {
86 | @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`.";
87 | }
88 | @else {
89 |
90 | $result: ();
91 | $index: if($index < 0, length($list) + $index + 1, $index);
92 |
93 | @for $i from 1 through length($list) {
94 |
95 | @if $i != $index {
96 | $result: append($result, nth($list, $i));
97 | }
98 |
99 | }
100 |
101 | }
102 |
103 | @return $result;
104 |
105 | }
106 |
107 | /// Replaces a substring within another string.
108 | /// @author Hugo Giraudel
109 | /// @param {string} $string String.
110 | /// @param {string} $search Substring.
111 | /// @param {string} $replace Replacement.
112 | /// @return {string} Updated string.
113 | @function str-replace($string, $search, $replace: '') {
114 |
115 | $index: str-index($string, $search);
116 |
117 | @if $index {
118 | @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
119 | }
120 |
121 | @return $string;
122 |
123 | }
124 |
125 | /// Replaces a substring within each string in a list.
126 | /// @param {list} $strings List of strings.
127 | /// @param {string} $search Substring.
128 | /// @param {string} $replace Replacement.
129 | /// @return {list} Updated list of strings.
130 | @function str-replace-all($strings, $search, $replace: '') {
131 |
132 | @each $string in $strings {
133 | $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace));
134 | }
135 |
136 | @return $strings;
137 |
138 | }
139 |
140 | /// Gets a value from a map.
141 | /// @author Hugo Giraudel
142 | /// @param {map} $map Map.
143 | /// @param {string} $keys Key(s).
144 | /// @return {string} Value.
145 | @function val($map, $keys...) {
146 |
147 | @if nth($keys, 1) == null {
148 | $keys: remove-nth($keys, 1);
149 | }
150 |
151 | @each $key in $keys {
152 | $map: map-get($map, $key);
153 | }
154 |
155 | @return $map;
156 |
157 | }
158 |
159 | // Mixins.
160 |
161 | /// Sets the global box model.
162 | /// @param {string} $model Model (default is content).
163 | @mixin boxModel($model: 'content') {
164 |
165 | $x: $model + '-box';
166 |
167 | *, *:before, *:after {
168 | -moz-box-sizing: #{$x};
169 | -webkit-box-sizing: #{$x};
170 | box-sizing: #{$x};
171 | }
172 |
173 | }
174 |
175 | /// Wraps @content in a @media block using a given breakpoint.
176 | /// @param {string} $breakpoint Breakpoint.
177 | /// @param {map} $queries Additional queries.
178 | @mixin breakpoint($breakpoint: null, $queries: null) {
179 |
180 | $query: 'screen';
181 |
182 | // Breakpoint.
183 | @if $breakpoint and map-has-key($breakpoints, $breakpoint) {
184 | $query: $query + ' and ' + map-get($breakpoints, $breakpoint);
185 | }
186 |
187 | // Queries.
188 | @if $queries {
189 | @each $k, $v in $queries {
190 | $query: $query + ' and (' + $k + ':' + $v + ')';
191 | }
192 | }
193 |
194 | @media #{$query} {
195 | @content;
196 | }
197 |
198 | }
199 |
200 | /// Wraps @content in a @media block targeting a specific orientation.
201 | /// @param {string} $orientation Orientation.
202 | @mixin orientation($orientation) {
203 | @media screen and (orientation: #{$orientation}) {
204 | @content;
205 | }
206 | }
207 |
208 | /// Utility mixin for containers.
209 | /// @param {mixed} $width Width.
210 | @mixin containers($width) {
211 |
212 | // Locked?
213 | $lock: false;
214 |
215 | @if length($width) == 2 {
216 | $width: nth($width, 1);
217 | $lock: true;
218 | }
219 |
220 | // Modifiers.
221 | .container.\31 25\25 { width: 100%; max-width: $width * 1.25; min-width: $width; }
222 | .container.\37 5\25 { width: $width * 0.75; }
223 | .container.\35 0\25 { width: $width * 0.5; }
224 | .container.\32 5\25 { width: $width * 0.25; }
225 |
226 | // Main class.
227 | .container {
228 | @if $lock {
229 | width: $width !important;
230 | }
231 | @else {
232 | width: $width;
233 | }
234 | }
235 |
236 | }
237 |
238 | /// Utility mixin for grid.
239 | /// @param {list} $gutters Column and row gutters (default is 40px).
240 | /// @param {string} $breakpointName Optional breakpoint name.
241 | @mixin grid($gutters: 40px, $breakpointName: null) {
242 |
243 | // Gutters.
244 | @include grid-gutters($gutters);
245 | @include grid-gutters($gutters, \32 00\25, 2);
246 | @include grid-gutters($gutters, \31 50\25, 1.5);
247 | @include grid-gutters($gutters, \35 0\25, 0.5);
248 | @include grid-gutters($gutters, \32 5\25, 0.25);
249 |
250 | // Cells.
251 | $x: '';
252 |
253 | @if $breakpointName {
254 | $x: '\\28' + $breakpointName + '\\29';
255 | }
256 |
257 | .\31 2u#{$x}, .\31 2u\24#{$x} { width: 100%; clear: none; margin-left: 0; }
258 | .\31 1u#{$x}, .\31 1u\24#{$x} { width: 91.6666666667%; clear: none; margin-left: 0; }
259 | .\31 0u#{$x}, .\31 0u\24#{$x} { width: 83.3333333333%; clear: none; margin-left: 0; }
260 | .\39 u#{$x}, .\39 u\24#{$x} { width: 75%; clear: none; margin-left: 0; }
261 | .\38 u#{$x}, .\38 u\24#{$x} { width: 66.6666666667%; clear: none; margin-left: 0; }
262 | .\37 u#{$x}, .\37 u\24#{$x} { width: 58.3333333333%; clear: none; margin-left: 0; }
263 | .\36 u#{$x}, .\36 u\24#{$x} { width: 50%; clear: none; margin-left: 0; }
264 | .\35 u#{$x}, .\35 u\24#{$x} { width: 41.6666666667%; clear: none; margin-left: 0; }
265 | .\34 u#{$x}, .\34 u\24#{$x} { width: 33.3333333333%; clear: none; margin-left: 0; }
266 | .\33 u#{$x}, .\33 u\24#{$x} { width: 25%; clear: none; margin-left: 0; }
267 | .\32 u#{$x}, .\32 u\24#{$x} { width: 16.6666666667%; clear: none; margin-left: 0; }
268 | .\31 u#{$x}, .\31 u\24#{$x} { width: 8.3333333333%; clear: none; margin-left: 0; }
269 |
270 | .\31 2u\24#{$x} + *,
271 | .\31 1u\24#{$x} + *,
272 | .\31 0u\24#{$x} + *,
273 | .\39 u\24#{$x} + *,
274 | .\38 u\24#{$x} + *,
275 | .\37 u\24#{$x} + *,
276 | .\36 u\24#{$x} + *,
277 | .\35 u\24#{$x} + *,
278 | .\34 u\24#{$x} + *,
279 | .\33 u\24#{$x} + *,
280 | .\32 u\24#{$x} + *,
281 | .\31 u\24#{$x} + * {
282 | clear: left;
283 | }
284 |
285 | .\-11u#{$x} { margin-left: 91.6666666667% }
286 | .\-10u#{$x} { margin-left: 83.3333333333% }
287 | .\-9u#{$x} { margin-left: 75% }
288 | .\-8u#{$x} { margin-left: 66.6666666667% }
289 | .\-7u#{$x} { margin-left: 58.3333333333% }
290 | .\-6u#{$x} { margin-left: 50% }
291 | .\-5u#{$x} { margin-left: 41.6666666667% }
292 | .\-4u#{$x} { margin-left: 33.3333333333% }
293 | .\-3u#{$x} { margin-left: 25% }
294 | .\-2u#{$x} { margin-left: 16.6666666667% }
295 | .\-1u#{$x} { margin-left: 8.3333333333% }
296 |
297 | }
298 |
299 | /// Utility mixin for grid.
300 | /// @param {list} $gutters Gutters.
301 | /// @param {string} $class Optional class name.
302 | /// @param {integer} $multiplier Multiplier (default is 1).
303 | @mixin grid-gutters($gutters, $class: null, $multiplier: 1) {
304 |
305 | // Expand gutters if it's not a list.
306 | @if length($gutters) == 1 {
307 | $gutters: ($gutters, 0);
308 | }
309 |
310 | // Get column and row gutter values.
311 | $c: nth($gutters, 1);
312 | $r: nth($gutters, 2);
313 |
314 | // Get class (if provided).
315 | $x: '';
316 |
317 | @if $class {
318 | $x: '.' + $class;
319 | }
320 |
321 | // Default.
322 | .row#{$x} > * { padding: ($r * $multiplier) 0 0 ($c * $multiplier); }
323 | .row#{$x} { margin: ($r * $multiplier * -1) 0 -1px ($c * $multiplier * -1); }
324 |
325 | // Uniform.
326 | .row.uniform#{$x} > * { padding: ($c * $multiplier) 0 0 ($c * $multiplier); }
327 | .row.uniform#{$x} { margin: ($c * $multiplier * -1) 0 -1px ($c * $multiplier * -1); }
328 |
329 | }
330 |
331 | /// Wraps @content in vendorized keyframe blocks.
332 | /// @param {string} $name Name.
333 | @mixin keyframes($name) {
334 |
335 | @-moz-keyframes #{$name} { @content; }
336 | @-webkit-keyframes #{$name} { @content; }
337 | @-ms-keyframes #{$name} { @content; }
338 | @keyframes #{$name} { @content; }
339 |
340 | }
341 |
342 | ///
343 | /// Sets breakpoints.
344 | /// @param {map} $x Breakpoints.
345 | ///
346 | @mixin skel-breakpoints($x: ()) {
347 | $breakpoints: $x !global;
348 | }
349 |
350 | ///
351 | /// Initializes layout module.
352 | /// @param {map} config Config.
353 | ///
354 | @mixin skel-layout($config: ()) {
355 |
356 | // Config.
357 | $configPerBreakpoint: ();
358 |
359 | $z: map-get($config, 'breakpoints');
360 |
361 | @if $z {
362 | $configPerBreakpoint: $z;
363 | }
364 |
365 | // Reset.
366 | $x: map-get($config, 'reset');
367 |
368 | @if $x {
369 |
370 | /* Reset */
371 |
372 | @include reset($x);
373 |
374 | }
375 |
376 | // Box model.
377 | $x: map-get($config, 'boxModel');
378 |
379 | @if $x {
380 |
381 | /* Box Model */
382 |
383 | @include boxModel($x);
384 |
385 | }
386 |
387 | // Containers.
388 | $containers: map-get($config, 'containers');
389 |
390 | @if $containers {
391 |
392 | /* Containers */
393 |
394 | .container {
395 | margin-left: auto;
396 | margin-right: auto;
397 | }
398 |
399 | // Use default is $containers is just "true".
400 | @if $containers == true {
401 | $containers: 960px;
402 | }
403 |
404 | // Apply base.
405 | @include containers($containers);
406 |
407 | // Apply per-breakpoint.
408 | @each $name in map-keys($breakpoints) {
409 |
410 | // Get/use breakpoint setting if it exists.
411 | $x: map-get($configPerBreakpoint, $name);
412 |
413 | // Per-breakpoint config exists?
414 | @if $x {
415 | $y: map-get($x, 'containers');
416 |
417 | // Setting exists? Use it.
418 | @if $y {
419 | $containers: $y;
420 | }
421 |
422 | }
423 |
424 | // Create @media block.
425 | @media screen and #{map-get($breakpoints, $name)} {
426 | @include containers($containers);
427 | }
428 |
429 | }
430 |
431 | }
432 |
433 | // Grid.
434 | $grid: map-get($config, 'grid');
435 |
436 | @if $grid {
437 |
438 | /* Grid */
439 |
440 | // Use defaults if $grid is just "true".
441 | @if $grid == true {
442 | $grid: ();
443 | }
444 |
445 | // Sub-setting: Gutters.
446 | $grid-gutters: 40px;
447 | $x: map-get($grid, 'gutters');
448 |
449 | @if $x {
450 | $grid-gutters: $x;
451 | }
452 |
453 | // Rows.
454 | .row {
455 | border-bottom: solid 1px transparent;
456 | -moz-box-sizing: border-box;
457 | -webkit-box-sizing: border-box;
458 | box-sizing: border-box;
459 | }
460 |
461 | .row > * {
462 | float: left;
463 | -moz-box-sizing: border-box;
464 | -webkit-box-sizing: border-box;
465 | box-sizing: border-box;
466 | }
467 |
468 | .row:after, .row:before {
469 | content: '';
470 | display: block;
471 | clear: both;
472 | height: 0;
473 | }
474 |
475 | .row.uniform > * > :first-child {
476 | margin-top: 0;
477 | }
478 |
479 | .row.uniform > * > :last-child {
480 | margin-bottom: 0;
481 | }
482 |
483 | // Gutters (0%).
484 | @include grid-gutters($grid-gutters, \30 \25, 0);
485 |
486 | // Apply base.
487 | @include grid($grid-gutters);
488 |
489 | // Apply per-breakpoint.
490 | @each $name in map-keys($breakpoints) {
491 |
492 | // Get/use breakpoint setting if it exists.
493 | $x: map-get($configPerBreakpoint, $name);
494 |
495 | // Per-breakpoint config exists?
496 | @if $x {
497 | $y: map-get($x, 'grid');
498 |
499 | // Setting exists?
500 | @if $y {
501 |
502 | // Sub-setting: Gutters.
503 | $x: map-get($y, 'gutters');
504 |
505 | @if $x {
506 | $grid-gutters: $x;
507 | }
508 |
509 | }
510 |
511 | }
512 |
513 | // Create @media block.
514 | @media screen and #{map-get($breakpoints, $name)} {
515 | @include grid($grid-gutters, $name);
516 | }
517 |
518 | }
519 |
520 | }
521 |
522 | }
523 |
524 | /// Resets browser styles.
525 | /// @param {string} $mode Mode (default is 'normalize').
526 | @mixin reset($mode: 'normalize') {
527 |
528 | @if $mode == 'normalize' {
529 |
530 | // normalize.css v3.0.2 | MIT License | git.io/normalize
531 | html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}
532 |
533 | }
534 | @else if $mode == 'full' {
535 |
536 | // meyerweb.com/eric/tools/css/reset v2.0 | 20110126 | License: none (public domain)
537 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block;}body{line-height:1;}ol,ul{list-style:none;}blockquote,q{quotes:none;}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none;}table{border-collapse:collapse;border-spacing:0;}body{-webkit-text-size-adjust:none}
538 |
539 | }
540 |
541 | }
542 |
543 | /// Vendorizes a declaration's property and/or value(s).
544 | /// @param {string} $property Property.
545 | /// @param {mixed} $value String/list of value(s).
546 | @mixin vendor($property, $value) {
547 |
548 | // Determine if property should expand.
549 | $expandProperty: index($vendor-properties, $property);
550 |
551 | // Determine if value should expand (and if so, add '-prefix-' placeholder).
552 | $expandValue: false;
553 |
554 | @each $x in $value {
555 | @each $y in $vendor-values {
556 | @if $y == str-slice($x, 1, str-length($y)) {
557 |
558 | $value: set-nth($value, index($value, $x), '-prefix-' + $x);
559 | $expandValue: true;
560 |
561 | }
562 | }
563 | }
564 |
565 | // Expand property?
566 | @if $expandProperty {
567 | @each $vendor in $vendor-prefixes {
568 | #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
569 | }
570 | }
571 |
572 | // Expand just the value?
573 | @elseif $expandValue {
574 | @each $vendor in $vendor-prefixes {
575 | #{$property}: #{str-replace-all($value, '-prefix-', $vendor)};
576 | }
577 | }
578 |
579 | // Neither? Treat them as a normal declaration.
580 | @else {
581 | #{$property}: #{$value};
582 | }
583 |
584 | }
--------------------------------------------------------------------------------
/master/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "hash": "87167de2eae1b754d7b205d2313e5713",
8 | "content-hash": "4106916a10fef47bda8fe5d9f6ba4c5a",
9 | "packages": [
10 | {
11 | "name": "chrisboulton/php-resque",
12 | "version": "dev-master",
13 | "source": {
14 | "type": "git",
15 | "url": "https://github.com/chrisboulton/php-resque.git",
16 | "reference": "df69e8980cc21652f10cd775cb6a0e8c572ffd2d"
17 | },
18 | "dist": {
19 | "type": "zip",
20 | "url": "https://api.github.com/repos/chrisboulton/php-resque/zipball/df69e8980cc21652f10cd775cb6a0e8c572ffd2d",
21 | "reference": "df69e8980cc21652f10cd775cb6a0e8c572ffd2d",
22 | "shasum": ""
23 | },
24 | "require": {
25 | "colinmollenhour/credis": "~1.2",
26 | "ext-pcntl": "*",
27 | "php": ">=5.3.0",
28 | "psr/log": "1.0.0"
29 | },
30 | "require-dev": {
31 | "phpunit/phpunit": "3.7.*"
32 | },
33 | "suggest": {
34 | "ext-proctitle": "Allows php-resque to rename the title of UNIX processes to show the status of a worker.",
35 | "ext-redis": "Native PHP extension for Redis connectivity. Credis will automatically utilize when available."
36 | },
37 | "bin": [
38 | "bin/resque"
39 | ],
40 | "type": "library",
41 | "autoload": {
42 | "psr-0": {
43 | "Resque": "lib"
44 | }
45 | },
46 | "notification-url": "https://packagist.org/downloads/",
47 | "license": [
48 | "MIT"
49 | ],
50 | "authors": [
51 | {
52 | "name": "Chris Boulton",
53 | "email": "chris@bigcommerce.com"
54 | }
55 | ],
56 | "description": "Redis backed library for creating background jobs and processing them later. Based on resque for Ruby.",
57 | "homepage": "http://www.github.com/chrisboulton/php-resque/",
58 | "keywords": [
59 | "background",
60 | "job",
61 | "redis",
62 | "resque"
63 | ],
64 | "time": "2015-05-13 11:58:23"
65 | },
66 | {
67 | "name": "colinmollenhour/credis",
68 | "version": "1.6",
69 | "source": {
70 | "type": "git",
71 | "url": "https://github.com/colinmollenhour/credis.git",
72 | "reference": "409edfd0ea81f5cb74afbdb86df54890c207b5e4"
73 | },
74 | "dist": {
75 | "type": "zip",
76 | "url": "https://api.github.com/repos/colinmollenhour/credis/zipball/409edfd0ea81f5cb74afbdb86df54890c207b5e4",
77 | "reference": "409edfd0ea81f5cb74afbdb86df54890c207b5e4",
78 | "shasum": ""
79 | },
80 | "require": {
81 | "php": ">=5.3.0"
82 | },
83 | "type": "library",
84 | "autoload": {
85 | "classmap": [
86 | "Client.php",
87 | "Cluster.php",
88 | "Sentinel.php"
89 | ]
90 | },
91 | "notification-url": "https://packagist.org/downloads/",
92 | "license": [
93 | "MIT"
94 | ],
95 | "authors": [
96 | {
97 | "name": "Colin Mollenhour",
98 | "email": "colin@mollenhour.com"
99 | }
100 | ],
101 | "description": "Credis is a lightweight interface to the Redis key-value store which wraps the phpredis library when available for better performance.",
102 | "homepage": "https://github.com/colinmollenhour/credis",
103 | "time": "2015-11-28 01:20:04"
104 | },
105 | {
106 | "name": "guzzle/guzzle",
107 | "version": "v3.9.3",
108 | "source": {
109 | "type": "git",
110 | "url": "https://github.com/guzzle/guzzle3.git",
111 | "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9"
112 | },
113 | "dist": {
114 | "type": "zip",
115 | "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9",
116 | "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9",
117 | "shasum": ""
118 | },
119 | "require": {
120 | "ext-curl": "*",
121 | "php": ">=5.3.3",
122 | "symfony/event-dispatcher": "~2.1"
123 | },
124 | "replace": {
125 | "guzzle/batch": "self.version",
126 | "guzzle/cache": "self.version",
127 | "guzzle/common": "self.version",
128 | "guzzle/http": "self.version",
129 | "guzzle/inflection": "self.version",
130 | "guzzle/iterator": "self.version",
131 | "guzzle/log": "self.version",
132 | "guzzle/parser": "self.version",
133 | "guzzle/plugin": "self.version",
134 | "guzzle/plugin-async": "self.version",
135 | "guzzle/plugin-backoff": "self.version",
136 | "guzzle/plugin-cache": "self.version",
137 | "guzzle/plugin-cookie": "self.version",
138 | "guzzle/plugin-curlauth": "self.version",
139 | "guzzle/plugin-error-response": "self.version",
140 | "guzzle/plugin-history": "self.version",
141 | "guzzle/plugin-log": "self.version",
142 | "guzzle/plugin-md5": "self.version",
143 | "guzzle/plugin-mock": "self.version",
144 | "guzzle/plugin-oauth": "self.version",
145 | "guzzle/service": "self.version",
146 | "guzzle/stream": "self.version"
147 | },
148 | "require-dev": {
149 | "doctrine/cache": "~1.3",
150 | "monolog/monolog": "~1.0",
151 | "phpunit/phpunit": "3.7.*",
152 | "psr/log": "~1.0",
153 | "symfony/class-loader": "~2.1",
154 | "zendframework/zend-cache": "2.*,<2.3",
155 | "zendframework/zend-log": "2.*,<2.3"
156 | },
157 | "suggest": {
158 | "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated."
159 | },
160 | "type": "library",
161 | "extra": {
162 | "branch-alias": {
163 | "dev-master": "3.9-dev"
164 | }
165 | },
166 | "autoload": {
167 | "psr-0": {
168 | "Guzzle": "src/",
169 | "Guzzle\\Tests": "tests/"
170 | }
171 | },
172 | "notification-url": "https://packagist.org/downloads/",
173 | "license": [
174 | "MIT"
175 | ],
176 | "authors": [
177 | {
178 | "name": "Michael Dowling",
179 | "email": "mtdowling@gmail.com",
180 | "homepage": "https://github.com/mtdowling"
181 | },
182 | {
183 | "name": "Guzzle Community",
184 | "homepage": "https://github.com/guzzle/guzzle/contributors"
185 | }
186 | ],
187 | "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle",
188 | "homepage": "http://guzzlephp.org/",
189 | "keywords": [
190 | "client",
191 | "curl",
192 | "framework",
193 | "http",
194 | "http client",
195 | "rest",
196 | "web service"
197 | ],
198 | "time": "2015-03-18 18:23:50"
199 | },
200 | {
201 | "name": "knplabs/github-api",
202 | "version": "1.5.1",
203 | "source": {
204 | "type": "git",
205 | "url": "https://github.com/KnpLabs/php-github-api.git",
206 | "reference": "832b7be695ed2733741cd5c79166b4a88fb50786"
207 | },
208 | "dist": {
209 | "type": "zip",
210 | "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/832b7be695ed2733741cd5c79166b4a88fb50786",
211 | "reference": "832b7be695ed2733741cd5c79166b4a88fb50786",
212 | "shasum": ""
213 | },
214 | "require": {
215 | "ext-curl": "*",
216 | "guzzle/guzzle": "~3.7",
217 | "php": ">=5.3.2"
218 | },
219 | "require-dev": {
220 | "phpunit/phpunit": "~4.0"
221 | },
222 | "suggest": {
223 | "knplabs/gaufrette": "Needed for optional Gaufrette cache"
224 | },
225 | "type": "library",
226 | "extra": {
227 | "branch-alias": {
228 | "dev-master": "1.4.x-dev"
229 | }
230 | },
231 | "autoload": {
232 | "psr-4": {
233 | "Github\\": "lib/Github/"
234 | }
235 | },
236 | "notification-url": "https://packagist.org/downloads/",
237 | "license": [
238 | "MIT"
239 | ],
240 | "authors": [
241 | {
242 | "name": "Thibault Duplessis",
243 | "email": "thibault.duplessis@gmail.com",
244 | "homepage": "http://ornicar.github.com"
245 | },
246 | {
247 | "name": "KnpLabs Team",
248 | "homepage": "http://knplabs.com"
249 | }
250 | ],
251 | "description": "GitHub API v3 client",
252 | "homepage": "https://github.com/KnpLabs/php-github-api",
253 | "keywords": [
254 | "api",
255 | "gh",
256 | "gist",
257 | "github"
258 | ],
259 | "time": "2015-10-11 02:38:28"
260 | },
261 | {
262 | "name": "lusitanian/oauth",
263 | "version": "v0.8.6",
264 | "source": {
265 | "type": "git",
266 | "url": "https://github.com/Lusitanian/PHPoAuthLib.git",
267 | "reference": "769fea1bb53845c7b03cca97cbdd0708e9ec26da"
268 | },
269 | "dist": {
270 | "type": "zip",
271 | "url": "https://api.github.com/repos/Lusitanian/PHPoAuthLib/zipball/769fea1bb53845c7b03cca97cbdd0708e9ec26da",
272 | "reference": "769fea1bb53845c7b03cca97cbdd0708e9ec26da",
273 | "shasum": ""
274 | },
275 | "require": {
276 | "php": ">=5.3.0"
277 | },
278 | "require-dev": {
279 | "phpunit/phpunit": "3.7.*",
280 | "predis/predis": "0.8.*@dev",
281 | "squizlabs/php_codesniffer": "2.*",
282 | "symfony/http-foundation": "~2.1"
283 | },
284 | "suggest": {
285 | "ext-openssl": "Allows for usage of secure connections with the stream-based HTTP client.",
286 | "predis/predis": "Allows using the Redis storage backend.",
287 | "symfony/http-foundation": "Allows using the Symfony Session storage backend."
288 | },
289 | "type": "library",
290 | "extra": {
291 | "branch-alias": {
292 | "dev-master": "0.1-dev"
293 | }
294 | },
295 | "autoload": {
296 | "psr-0": {
297 | "OAuth": "src",
298 | "OAuth\\Unit": "tests"
299 | }
300 | },
301 | "notification-url": "https://packagist.org/downloads/",
302 | "license": [
303 | "MIT"
304 | ],
305 | "authors": [
306 | {
307 | "name": "David Desberg",
308 | "email": "david@daviddesberg.com"
309 | },
310 | {
311 | "name": "Elliot Chance",
312 | "email": "elliotchance@gmail.com"
313 | },
314 | {
315 | "name": "Pieter Hordijk",
316 | "email": "info@pieterhordijk.com"
317 | }
318 | ],
319 | "description": "PHP 5.3+ oAuth 1/2 Library",
320 | "keywords": [
321 | "Authentication",
322 | "authorization",
323 | "oauth",
324 | "security"
325 | ],
326 | "time": "2015-12-21 00:06:34"
327 | },
328 | {
329 | "name": "psr/log",
330 | "version": "1.0.0",
331 | "source": {
332 | "type": "git",
333 | "url": "https://github.com/php-fig/log.git",
334 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b"
335 | },
336 | "dist": {
337 | "type": "zip",
338 | "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b",
339 | "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b",
340 | "shasum": ""
341 | },
342 | "type": "library",
343 | "autoload": {
344 | "psr-0": {
345 | "Psr\\Log\\": ""
346 | }
347 | },
348 | "notification-url": "https://packagist.org/downloads/",
349 | "license": [
350 | "MIT"
351 | ],
352 | "authors": [
353 | {
354 | "name": "PHP-FIG",
355 | "homepage": "http://www.php-fig.org/"
356 | }
357 | ],
358 | "description": "Common interface for logging libraries",
359 | "keywords": [
360 | "log",
361 | "psr",
362 | "psr-3"
363 | ],
364 | "time": "2012-12-21 11:40:51"
365 | },
366 | {
367 | "name": "slim/slim",
368 | "version": "2.6.2",
369 | "source": {
370 | "type": "git",
371 | "url": "https://github.com/slimphp/Slim.git",
372 | "reference": "20a02782f76830b67ae56a5c08eb1f563c351a37"
373 | },
374 | "dist": {
375 | "type": "zip",
376 | "url": "https://api.github.com/repos/slimphp/Slim/zipball/20a02782f76830b67ae56a5c08eb1f563c351a37",
377 | "reference": "20a02782f76830b67ae56a5c08eb1f563c351a37",
378 | "shasum": ""
379 | },
380 | "require": {
381 | "php": ">=5.3.0"
382 | },
383 | "suggest": {
384 | "ext-mcrypt": "Required for HTTP cookie encryption"
385 | },
386 | "type": "library",
387 | "autoload": {
388 | "psr-0": {
389 | "Slim": "."
390 | }
391 | },
392 | "notification-url": "https://packagist.org/downloads/",
393 | "license": [
394 | "MIT"
395 | ],
396 | "authors": [
397 | {
398 | "name": "Josh Lockhart",
399 | "email": "info@joshlockhart.com",
400 | "homepage": "http://www.joshlockhart.com/"
401 | }
402 | ],
403 | "description": "Slim Framework, a PHP micro framework",
404 | "homepage": "http://github.com/codeguy/Slim",
405 | "keywords": [
406 | "microframework",
407 | "rest",
408 | "router"
409 | ],
410 | "time": "2015-03-08 18:41:17"
411 | },
412 | {
413 | "name": "symfony/event-dispatcher",
414 | "version": "v2.8.2",
415 | "source": {
416 | "type": "git",
417 | "url": "https://github.com/symfony/event-dispatcher.git",
418 | "reference": "ee278f7c851533e58ca307f66305ccb9188aceda"
419 | },
420 | "dist": {
421 | "type": "zip",
422 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ee278f7c851533e58ca307f66305ccb9188aceda",
423 | "reference": "ee278f7c851533e58ca307f66305ccb9188aceda",
424 | "shasum": ""
425 | },
426 | "require": {
427 | "php": ">=5.3.9"
428 | },
429 | "require-dev": {
430 | "psr/log": "~1.0",
431 | "symfony/config": "~2.0,>=2.0.5|~3.0.0",
432 | "symfony/dependency-injection": "~2.6|~3.0.0",
433 | "symfony/expression-language": "~2.6|~3.0.0",
434 | "symfony/stopwatch": "~2.3|~3.0.0"
435 | },
436 | "suggest": {
437 | "symfony/dependency-injection": "",
438 | "symfony/http-kernel": ""
439 | },
440 | "type": "library",
441 | "extra": {
442 | "branch-alias": {
443 | "dev-master": "2.8-dev"
444 | }
445 | },
446 | "autoload": {
447 | "psr-4": {
448 | "Symfony\\Component\\EventDispatcher\\": ""
449 | },
450 | "exclude-from-classmap": [
451 | "/Tests/"
452 | ]
453 | },
454 | "notification-url": "https://packagist.org/downloads/",
455 | "license": [
456 | "MIT"
457 | ],
458 | "authors": [
459 | {
460 | "name": "Fabien Potencier",
461 | "email": "fabien@symfony.com"
462 | },
463 | {
464 | "name": "Symfony Community",
465 | "homepage": "https://symfony.com/contributors"
466 | }
467 | ],
468 | "description": "Symfony EventDispatcher Component",
469 | "homepage": "https://symfony.com",
470 | "time": "2016-01-13 10:28:07"
471 | }
472 | ],
473 | "packages-dev": [],
474 | "aliases": [
475 | {
476 | "alias": "1.2.x-dev",
477 | "alias_normalized": "1.2.9999999.9999999-dev",
478 | "version": "9999999-dev",
479 | "package": "chrisboulton/php-resque"
480 | }
481 | ],
482 | "minimum-stability": "stable",
483 | "stability-flags": {
484 | "chrisboulton/php-resque": 20
485 | },
486 | "prefer-stable": false,
487 | "prefer-lowest": false,
488 | "platform": {
489 | "php": ">=5.4.0"
490 | },
491 | "platform-dev": []
492 | }
493 |
--------------------------------------------------------------------------------