Initial public push: docs cosmos v4 + AI module + framework groundwork
This is the snapshot the production landing site (nibiru-framework.com) is deployed from. Brings together the recent splash + docs migration to the v4 "Cosmos" design system, the new in-framework AI module, and the framework groundwork that backs the framework-reference extraction. What lands: - docs/: Astro + Starlight site with the v4 dark cosmic palette, GalaxyHero canvas constellation, Mission Control chat (wired to /api/oracle → api.neuronetz.ai via providers.mjs Ollama), 5-panel MMVC stage (Model · AI · Module · Controller · View), translated EN/DE/JA/ES/FR content, PWA + sitemap + llms.txt + Umami analytics. - docs/design-system/: canonical mockup bundle (source/index-v2.html for splash, source/docs-system.html + preview/ for docs, SPEC.md, tokens). - docs/scripts/extraction/framework-reference-v2.md: deep framework reference (~1.6k lines, file:line citations, every public factory and idiom — basis for the LoRA training corpus. - application/module/ai/: AI module with chat / embed / RAG / agent plugins, plus pdoQuery / httpGet / fileRead tools and Modelfile + smoke-test in training/. - application/module/users/: user / ACL / form-factory traits used as the reference plugin pattern for the framework docs. - application/settings/config/database/: schema + seed migrations including the AI module tables (200–203). - Form factory + autogenerator changes the framework-reference-v2 covers. Production secrets stay out: docs/.env, settings.production.ini and ai.production.ini are all gitignored (.example files are in tree). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
0
application/view/mockup/template/js/dev/__init__.py
Normal file
0
application/view/mockup/template/js/dev/__init__.py
Normal file
4
application/view/mockup/template/js/dev/custom.js
Normal file
4
application/view/mockup/template/js/dev/custom.js
Normal file
@@ -0,0 +1,4 @@
|
||||
$(document).ready(function() {
|
||||
// Start writing your custom functions here.
|
||||
// All the necessary pluigns are already loaded.
|
||||
});
|
||||
5
application/view/mockup/template/js/dev/libs/jquery.min.js
vendored
Normal file
5
application/view/mockup/template/js/dev/libs/jquery.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
0
application/view/mockup/template/js/dev/libs/plugins/bootstrap-rating.min.js
vendored
Normal file
0
application/view/mockup/template/js/dev/libs/plugins/bootstrap-rating.min.js
vendored
Normal file
7
application/view/mockup/template/js/dev/libs/plugins/clipboard.min.js
vendored
Normal file
7
application/view/mockup/template/js/dev/libs/plugins/clipboard.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,39 @@
|
||||
/***********
|
||||
Animates element's number to new number with commas
|
||||
Parameters:
|
||||
stop (number): number to stop on
|
||||
commas (boolean): turn commas on/off (default is true)
|
||||
duration (number): how long in ms (default is 1000)
|
||||
ease (string): type of easing (default is "swing", others are avaiable from jQuery's easing plugin
|
||||
Examples:
|
||||
$("#div").animateNumbers(1234, false, 500, "linear"); // half second linear without commas
|
||||
$("#div").animateNumbers(1234, true, 2000); // two second swing with commas
|
||||
$("#div").animateNumbers(4321); // one second swing with commas
|
||||
This fully expects an element containing an integer
|
||||
If the number is within copy then separate it with a span and target the span
|
||||
Inserts and accounts for commas during animation by default
|
||||
***********/
|
||||
|
||||
(function($) {
|
||||
$.fn.animateNumbers = function(stop, commas, duration, ease) {
|
||||
return this.each(function() {
|
||||
var $this = $(this);
|
||||
var start = parseInt($this.text().replace(/,/g, ""));
|
||||
commas = (commas === undefined) ? true : commas;
|
||||
$({value: start}).animate({value: stop}, {
|
||||
duration: duration == undefined ? 1000 : duration,
|
||||
easing: ease == undefined ? "swing" : ease,
|
||||
step: function() {
|
||||
$this.text(Math.floor(this.value));
|
||||
if (commas) { $this.text($this.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); }
|
||||
},
|
||||
complete: function() {
|
||||
if (parseInt($this.text()) !== stop) {
|
||||
$this.text(stop);
|
||||
if (commas) { $this.text($this.text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1,")); }
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
};
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,7 @@
|
||||
/*================================================================================
|
||||
* @name: bPopup - if you can't get it up, use bPopup
|
||||
* @author: (c)Bjoern Klinggaard (twitter@bklinggaard)
|
||||
* @demo: http://dinbror.dk/bpopup
|
||||
* @version: 0.11.0.min
|
||||
================================================================================*/
|
||||
(function(c){c.fn.bPopup=function(A,E){function L(){a.contentContainer=c(a.contentContainer||b);switch(a.content){case "iframe":var d=c('<iframe class="b-iframe" '+a.iframeAttr+"></iframe>");d.appendTo(a.contentContainer);t=b.outerHeight(!0);u=b.outerWidth(!0);B();d.attr("src",a.loadUrl);l(a.loadCallback);break;case "image":B();c("<img />").load(function(){l(a.loadCallback);F(c(this))}).attr("src",a.loadUrl).hide().appendTo(a.contentContainer);break;default:B(),c('<div class="b-ajax-wrapper"></div>').load(a.loadUrl,a.loadData,function(d,b,e){l(a.loadCallback,b);F(c(this))}).hide().appendTo(a.contentContainer)}}function B(){a.modal&&c('<div class="b-modal '+e+'"></div>').css({backgroundColor:a.modalColor,position:"fixed",top:0,right:0,bottom:0,left:0,opacity:0,zIndex:a.zIndex+v}).appendTo(a.appendTo).fadeTo(a.speed,a.opacity);C();b.data("bPopup",a).data("id",e).css({left:"slideIn"==a.transition||"slideBack"==a.transition?"slideBack"==a.transition?f.scrollLeft()+w:-1*(x+u):m(!(!a.follow[0]&&n||g)),position:a.positionStyle||"absolute",top:"slideDown"==a.transition||"slideUp"==a.transition?"slideUp"==a.transition?f.scrollTop()+y:z+-1*t:p(!(!a.follow[1]&&q||g)),"z-index":a.zIndex+v+1}).each(function(){a.appending&&c(this).appendTo(a.appendTo)});G(!0)}function r(){a.modal&&c(".b-modal."+b.data("id")).fadeTo(a.speed,0,function(){c(this).remove()});a.scrollBar||c("html").css("overflow","auto");c(".b-modal."+e).unbind("click");f.unbind("keydown."+e);k.unbind("."+e).data("bPopup",0<k.data("bPopup")-1?k.data("bPopup")-1:null);b.undelegate(".bClose, ."+a.closeClass,"click."+e,r).data("bPopup",null);clearTimeout(H);G();return!1}function I(d){y=k.height();w=k.width();h=D();if(h.x||h.y)clearTimeout(J),J=setTimeout(function(){C();d=d||a.followSpeed;var e={};h.x&&(e.left=a.follow[0]?m(!0):"auto");h.y&&(e.top=a.follow[1]?p(!0):"auto");b.dequeue().each(function(){g?c(this).css({left:x,top:z}):c(this).animate(e,d,a.followEasing)})},50)}function F(d){var c=d.width(),e=d.height(),f={};a.contentContainer.css({height:e,width:c});e>=b.height()&&(f.height=b.height());c>=b.width()&&(f.width=b.width());t=b.outerHeight(!0);u=b.outerWidth(!0);C();a.contentContainer.css({height:"auto",width:"auto"});f.left=m(!(!a.follow[0]&&n||g));f.top=p(!(!a.follow[1]&&q||g));b.animate(f,250,function(){d.show();h=D()})}function M(){k.data("bPopup",v);b.delegate(".bClose, ."+a.closeClass,"click."+e,r);a.modalClose&&c(".b-modal."+e).css("cursor","pointer").bind("click",r);N||!a.follow[0]&&!a.follow[1]||k.bind("scroll."+e,function(){if(h.x||h.y){var d={};h.x&&(d.left=a.follow[0]?m(!g):"auto");h.y&&(d.top=a.follow[1]?p(!g):"auto");b.dequeue().animate(d,a.followSpeed,a.followEasing)}}).bind("resize."+e,function(){I()});a.escClose&&f.bind("keydown."+e,function(a){27==a.which&&r()})}function G(d){function c(e){b.css({display:"block",opacity:1}).animate(e,a.speed,a.easing,function(){K(d)})}switch(d?a.transition:a.transitionClose||a.transition){case "slideIn":c({left:d?m(!(!a.follow[0]&&n||g)):f.scrollLeft()-(u||b.outerWidth(!0))-200});break;case "slideBack":c({left:d?m(!(!a.follow[0]&&n||g)):f.scrollLeft()+w+200});break;case "slideDown":c({top:d?p(!(!a.follow[1]&&q||g)):f.scrollTop()-(t||b.outerHeight(!0))-200});break;case "slideUp":c({top:d?p(!(!a.follow[1]&&q||g)):f.scrollTop()+y+200});break;default:b.stop().fadeTo(a.speed,d?1:0,function(){K(d)})}}function K(d){d?(M(),l(E),a.autoClose&&(H=setTimeout(r,a.autoClose))):(b.hide(),l(a.onClose),a.loadUrl&&(a.contentContainer.empty(),b.css({height:"auto",width:"auto"})))}function m(a){return a?x+f.scrollLeft():x}function p(a){return a?z+f.scrollTop():z}function l(a,e){c.isFunction(a)&&a.call(b,e)}function C(){z=q?a.position[1]:Math.max(0,(y-b.outerHeight(!0))/2-a.amsl);x=n?a.position[0]:(w-b.outerWidth(!0))/2;h=D()}function D(){return{x:w>b.outerWidth(!0),y:y>b.outerHeight(!0)}}c.isFunction(A)&&(E=A,A=null);var a=c.extend({},c.fn.bPopup.defaults,A);a.scrollBar||c("html").css("overflow","hidden");var b=this,f=c(document),k=c(window),y=k.height(),w=k.width(),N=/OS 6(_\d)+/i.test(navigator.userAgent),v=0,e,h,q,n,g,z,x,t,u,J,H;b.close=function(){r()};b.reposition=function(a){I(a)};return b.each(function(){c(this).data("bPopup")||(l(a.onOpen),v=(k.data("bPopup")||0)+1,e="__b-popup"+v+"__",q="auto"!==a.position[1],n="auto"!==a.position[0],g="fixed"===a.positionStyle,t=b.outerHeight(!0),u=b.outerWidth(!0),a.loadUrl?L():B())})};c.fn.bPopup.defaults={amsl:50,appending:!0,appendTo:"body",autoClose:!1,closeClass:"b-close",content:"ajax",contentContainer:!1,easing:"swing",escClose:!0,follow:[!0,!0],followEasing:"swing",followSpeed:500,iframeAttr:'scrolling="no" frameborder="0"',loadCallback:!1,loadData:!1,loadUrl:!1,modal:!0,modalClose:!0,modalColor:"#000",onClose:!1,onOpen:!1,opacity:.7,position:["auto","auto"],positionStyle:"absolute",scrollBar:!0,speed:250,transition:"fadeIn",transitionClose:!1,zIndex:9997}})(jQuery);
|
||||
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Javascript-Equal-Height-Responsive-Rows
|
||||
* https://github.com/Sam152/Javascript-Equal-Height-Responsive-Rows
|
||||
*/
|
||||
(function($){'use strict';$.fn.equalHeight=function(){var heights=[];$.each(this,function(i,element){var $element=$(element);var elementHeight;var includePadding=($element.css('box-sizing')==='border-box')||($element.css('-moz-box-sizing')==='border-box');if(includePadding){elementHeight=$element.innerHeight();}else{elementHeight=$element.height();}
|
||||
heights.push(elementHeight);});this.css('height',Math.max.apply(window,heights)+'px');return this;};$.fn.equalHeightGrid=function(columns){var $tiles=this.filter(':visible');$tiles.css('height','auto');for(var i=0;i<$tiles.length;i++){if(i%columns===0){var row=$($tiles[i]);for(var n=1;n<columns;n++){row=row.add($tiles[i+n]);}
|
||||
row.equalHeight();}}
|
||||
return this;};$.fn.detectGridColumns=function(){var offset=0,cols=0,$tiles=this.filter(':visible');$tiles.each(function(i,elem){var elemOffset=$(elem).offset().top;if(offset===0||elemOffset===offset){cols++;offset=elemOffset;}else{return false;}});return cols;};var grids_event_uid=0;$.fn.responsiveEqualHeightGrid=function(){var _this=this;var event_namespace='.grids_'+grids_event_uid;_this.data('grids-event-namespace',event_namespace);function syncHeights(){var cols=_this.detectGridColumns();_this.equalHeightGrid(cols);}
|
||||
$(window).bind('resize'+event_namespace+' load'+event_namespace,syncHeights);syncHeights();grids_event_uid++;return this;};$.fn.responsiveEqualHeightGridDestroy=function(){var _this=this;_this.css('height','auto');$(window).unbind(_this.data('grids-event-namespace'));return this;};})(window.jQuery);
|
||||
@@ -0,0 +1,586 @@
|
||||
// jquery.event.move
|
||||
//
|
||||
// 1.3.6
|
||||
//
|
||||
// Stephen Band
|
||||
//
|
||||
// Triggers 'movestart', 'move' and 'moveend' events after
|
||||
// mousemoves following a mousedown cross a distance threshold,
|
||||
// similar to the native 'dragstart', 'drag' and 'dragend' events.
|
||||
// Move events are throttled to animation frames. Move event objects
|
||||
// have the properties:
|
||||
//
|
||||
// pageX:
|
||||
// pageY: Page coordinates of pointer.
|
||||
// startX:
|
||||
// startY: Page coordinates of pointer at movestart.
|
||||
// distX:
|
||||
// distY: Distance the pointer has moved since movestart.
|
||||
// deltaX:
|
||||
// deltaY: Distance the finger has moved since last event.
|
||||
// velocityX:
|
||||
// velocityY: Average velocity over last few events.
|
||||
|
||||
|
||||
(function (module) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define(['jquery'], module);
|
||||
} else {
|
||||
// Browser globals
|
||||
module(jQuery);
|
||||
}
|
||||
})(function(jQuery, undefined){
|
||||
|
||||
var // Number of pixels a pressed pointer travels before movestart
|
||||
// event is fired.
|
||||
threshold = 6,
|
||||
|
||||
add = jQuery.event.add,
|
||||
|
||||
remove = jQuery.event.remove,
|
||||
|
||||
// Just sugar, so we can have arguments in the same order as
|
||||
// add and remove.
|
||||
trigger = function(node, type, data) {
|
||||
jQuery.event.trigger(type, data, node);
|
||||
},
|
||||
|
||||
// Shim for requestAnimationFrame, falling back to timer. See:
|
||||
// see http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
||||
requestFrame = (function(){
|
||||
return (
|
||||
window.requestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
window.mozRequestAnimationFrame ||
|
||||
window.oRequestAnimationFrame ||
|
||||
window.msRequestAnimationFrame ||
|
||||
function(fn, element){
|
||||
return window.setTimeout(function(){
|
||||
fn();
|
||||
}, 25);
|
||||
}
|
||||
);
|
||||
})(),
|
||||
|
||||
ignoreTags = {
|
||||
textarea: true,
|
||||
input: true,
|
||||
select: true,
|
||||
button: true
|
||||
},
|
||||
|
||||
mouseevents = {
|
||||
move: 'mousemove',
|
||||
cancel: 'mouseup dragstart',
|
||||
end: 'mouseup'
|
||||
},
|
||||
|
||||
touchevents = {
|
||||
move: 'touchmove',
|
||||
cancel: 'touchend',
|
||||
end: 'touchend'
|
||||
};
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
function Timer(fn){
|
||||
var callback = fn,
|
||||
active = false,
|
||||
running = false;
|
||||
|
||||
function trigger(time) {
|
||||
if (active){
|
||||
callback();
|
||||
requestFrame(trigger);
|
||||
running = true;
|
||||
active = false;
|
||||
}
|
||||
else {
|
||||
running = false;
|
||||
}
|
||||
}
|
||||
|
||||
this.kick = function(fn) {
|
||||
active = true;
|
||||
if (!running) { trigger(); }
|
||||
};
|
||||
|
||||
this.end = function(fn) {
|
||||
var cb = callback;
|
||||
|
||||
if (!fn) { return; }
|
||||
|
||||
// If the timer is not running, simply call the end callback.
|
||||
if (!running) {
|
||||
fn();
|
||||
}
|
||||
// If the timer is running, and has been kicked lately, then
|
||||
// queue up the current callback and the end callback, otherwise
|
||||
// just the end callback.
|
||||
else {
|
||||
callback = active ?
|
||||
function(){ cb(); fn(); } :
|
||||
fn ;
|
||||
|
||||
active = true;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Functions
|
||||
|
||||
function returnTrue() {
|
||||
return true;
|
||||
}
|
||||
|
||||
function returnFalse() {
|
||||
return false;
|
||||
}
|
||||
|
||||
function preventDefault(e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
function preventIgnoreTags(e) {
|
||||
// Don't prevent interaction with form elements.
|
||||
if (ignoreTags[ e.target.tagName.toLowerCase() ]) { return; }
|
||||
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
function isLeftButton(e) {
|
||||
// Ignore mousedowns on any button other than the left (or primary)
|
||||
// mouse button, or when a modifier key is pressed.
|
||||
return (e.which === 1 && !e.ctrlKey && !e.altKey);
|
||||
}
|
||||
|
||||
function identifiedTouch(touchList, id) {
|
||||
var i, l;
|
||||
|
||||
if (touchList.identifiedTouch) {
|
||||
return touchList.identifiedTouch(id);
|
||||
}
|
||||
|
||||
// touchList.identifiedTouch() does not exist in
|
||||
// webkit yet… we must do the search ourselves...
|
||||
|
||||
i = -1;
|
||||
l = touchList.length;
|
||||
|
||||
while (++i < l) {
|
||||
if (touchList[i].identifier === id) {
|
||||
return touchList[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function changedTouch(e, event) {
|
||||
var touch = identifiedTouch(e.changedTouches, event.identifier);
|
||||
|
||||
// This isn't the touch you're looking for.
|
||||
if (!touch) { return; }
|
||||
|
||||
// Chrome Android (at least) includes touches that have not
|
||||
// changed in e.changedTouches. That's a bit annoying. Check
|
||||
// that this touch has changed.
|
||||
if (touch.pageX === event.pageX && touch.pageY === event.pageY) { return; }
|
||||
|
||||
return touch;
|
||||
}
|
||||
|
||||
|
||||
// Handlers that decide when the first movestart is triggered
|
||||
|
||||
function mousedown(e){
|
||||
var data;
|
||||
|
||||
if (!isLeftButton(e)) { return; }
|
||||
|
||||
data = {
|
||||
target: e.target,
|
||||
startX: e.pageX,
|
||||
startY: e.pageY,
|
||||
timeStamp: e.timeStamp
|
||||
};
|
||||
|
||||
add(document, mouseevents.move, mousemove, data);
|
||||
add(document, mouseevents.cancel, mouseend, data);
|
||||
}
|
||||
|
||||
function mousemove(e){
|
||||
var data = e.data;
|
||||
|
||||
checkThreshold(e, data, e, removeMouse);
|
||||
}
|
||||
|
||||
function mouseend(e) {
|
||||
removeMouse();
|
||||
}
|
||||
|
||||
function removeMouse() {
|
||||
remove(document, mouseevents.move, mousemove);
|
||||
remove(document, mouseevents.cancel, mouseend);
|
||||
}
|
||||
|
||||
function touchstart(e) {
|
||||
var touch, template;
|
||||
|
||||
// Don't get in the way of interaction with form elements.
|
||||
if (ignoreTags[ e.target.tagName.toLowerCase() ]) { return; }
|
||||
|
||||
touch = e.changedTouches[0];
|
||||
|
||||
// iOS live updates the touch objects whereas Android gives us copies.
|
||||
// That means we can't trust the touchstart object to stay the same,
|
||||
// so we must copy the data. This object acts as a template for
|
||||
// movestart, move and moveend event objects.
|
||||
template = {
|
||||
target: touch.target,
|
||||
startX: touch.pageX,
|
||||
startY: touch.pageY,
|
||||
timeStamp: e.timeStamp,
|
||||
identifier: touch.identifier
|
||||
};
|
||||
|
||||
// Use the touch identifier as a namespace, so that we can later
|
||||
// remove handlers pertaining only to this touch.
|
||||
add(document, touchevents.move + '.' + touch.identifier, touchmove, template);
|
||||
add(document, touchevents.cancel + '.' + touch.identifier, touchend, template);
|
||||
}
|
||||
|
||||
function touchmove(e){
|
||||
var data = e.data,
|
||||
touch = changedTouch(e, data);
|
||||
|
||||
if (!touch) { return; }
|
||||
|
||||
checkThreshold(e, data, touch, removeTouch);
|
||||
}
|
||||
|
||||
function touchend(e) {
|
||||
var template = e.data,
|
||||
touch = identifiedTouch(e.changedTouches, template.identifier);
|
||||
|
||||
if (!touch) { return; }
|
||||
|
||||
removeTouch(template.identifier);
|
||||
}
|
||||
|
||||
function removeTouch(identifier) {
|
||||
remove(document, '.' + identifier, touchmove);
|
||||
remove(document, '.' + identifier, touchend);
|
||||
}
|
||||
|
||||
|
||||
// Logic for deciding when to trigger a movestart.
|
||||
|
||||
function checkThreshold(e, template, touch, fn) {
|
||||
var distX = touch.pageX - template.startX,
|
||||
distY = touch.pageY - template.startY;
|
||||
|
||||
// Do nothing if the threshold has not been crossed.
|
||||
if ((distX * distX) + (distY * distY) < (threshold * threshold)) { return; }
|
||||
|
||||
triggerStart(e, template, touch, distX, distY, fn);
|
||||
}
|
||||
|
||||
function handled() {
|
||||
// this._handled should return false once, and after return true.
|
||||
this._handled = returnTrue;
|
||||
return false;
|
||||
}
|
||||
|
||||
function flagAsHandled(e) {
|
||||
e._handled();
|
||||
}
|
||||
|
||||
function triggerStart(e, template, touch, distX, distY, fn) {
|
||||
var node = template.target,
|
||||
touches, time;
|
||||
|
||||
touches = e.targetTouches;
|
||||
time = e.timeStamp - template.timeStamp;
|
||||
|
||||
// Create a movestart object with some special properties that
|
||||
// are passed only to the movestart handlers.
|
||||
template.type = 'movestart';
|
||||
template.distX = distX;
|
||||
template.distY = distY;
|
||||
template.deltaX = distX;
|
||||
template.deltaY = distY;
|
||||
template.pageX = touch.pageX;
|
||||
template.pageY = touch.pageY;
|
||||
template.velocityX = distX / time;
|
||||
template.velocityY = distY / time;
|
||||
template.targetTouches = touches;
|
||||
template.finger = touches ?
|
||||
touches.length :
|
||||
1 ;
|
||||
|
||||
// The _handled method is fired to tell the default movestart
|
||||
// handler that one of the move events is bound.
|
||||
template._handled = handled;
|
||||
|
||||
// Pass the touchmove event so it can be prevented if or when
|
||||
// movestart is handled.
|
||||
template._preventTouchmoveDefault = function() {
|
||||
e.preventDefault();
|
||||
};
|
||||
|
||||
// Trigger the movestart event.
|
||||
trigger(template.target, template);
|
||||
|
||||
// Unbind handlers that tracked the touch or mouse up till now.
|
||||
fn(template.identifier);
|
||||
}
|
||||
|
||||
|
||||
// Handlers that control what happens following a movestart
|
||||
|
||||
function activeMousemove(e) {
|
||||
var timer = e.data.timer;
|
||||
|
||||
e.data.touch = e;
|
||||
e.data.timeStamp = e.timeStamp;
|
||||
timer.kick();
|
||||
}
|
||||
|
||||
function activeMouseend(e) {
|
||||
var event = e.data.event,
|
||||
timer = e.data.timer;
|
||||
|
||||
removeActiveMouse();
|
||||
|
||||
endEvent(event, timer, function() {
|
||||
// Unbind the click suppressor, waiting until after mouseup
|
||||
// has been handled.
|
||||
setTimeout(function(){
|
||||
remove(event.target, 'click', returnFalse);
|
||||
}, 0);
|
||||
});
|
||||
}
|
||||
|
||||
function removeActiveMouse(event) {
|
||||
remove(document, mouseevents.move, activeMousemove);
|
||||
remove(document, mouseevents.end, activeMouseend);
|
||||
}
|
||||
|
||||
function activeTouchmove(e) {
|
||||
var event = e.data.event,
|
||||
timer = e.data.timer,
|
||||
touch = changedTouch(e, event);
|
||||
|
||||
if (!touch) { return; }
|
||||
|
||||
// Stop the interface from gesturing
|
||||
e.preventDefault();
|
||||
|
||||
event.targetTouches = e.targetTouches;
|
||||
e.data.touch = touch;
|
||||
e.data.timeStamp = e.timeStamp;
|
||||
timer.kick();
|
||||
}
|
||||
|
||||
function activeTouchend(e) {
|
||||
var event = e.data.event,
|
||||
timer = e.data.timer,
|
||||
touch = identifiedTouch(e.changedTouches, event.identifier);
|
||||
|
||||
// This isn't the touch you're looking for.
|
||||
if (!touch) { return; }
|
||||
|
||||
removeActiveTouch(event);
|
||||
endEvent(event, timer);
|
||||
}
|
||||
|
||||
function removeActiveTouch(event) {
|
||||
remove(document, '.' + event.identifier, activeTouchmove);
|
||||
remove(document, '.' + event.identifier, activeTouchend);
|
||||
}
|
||||
|
||||
|
||||
// Logic for triggering move and moveend events
|
||||
|
||||
function updateEvent(event, touch, timeStamp, timer) {
|
||||
var time = timeStamp - event.timeStamp;
|
||||
|
||||
event.type = 'move';
|
||||
event.distX = touch.pageX - event.startX;
|
||||
event.distY = touch.pageY - event.startY;
|
||||
event.deltaX = touch.pageX - event.pageX;
|
||||
event.deltaY = touch.pageY - event.pageY;
|
||||
|
||||
// Average the velocity of the last few events using a decay
|
||||
// curve to even out spurious jumps in values.
|
||||
event.velocityX = 0.3 * event.velocityX + 0.7 * event.deltaX / time;
|
||||
event.velocityY = 0.3 * event.velocityY + 0.7 * event.deltaY / time;
|
||||
event.pageX = touch.pageX;
|
||||
event.pageY = touch.pageY;
|
||||
}
|
||||
|
||||
function endEvent(event, timer, fn) {
|
||||
timer.end(function(){
|
||||
event.type = 'moveend';
|
||||
|
||||
trigger(event.target, event);
|
||||
|
||||
return fn && fn();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
// jQuery special event definition
|
||||
|
||||
function setup(data, namespaces, eventHandle) {
|
||||
// Stop the node from being dragged
|
||||
//add(this, 'dragstart.move drag.move', preventDefault);
|
||||
|
||||
// Prevent text selection and touch interface scrolling
|
||||
//add(this, 'mousedown.move', preventIgnoreTags);
|
||||
|
||||
// Tell movestart default handler that we've handled this
|
||||
add(this, 'movestart.move', flagAsHandled);
|
||||
|
||||
// Don't bind to the DOM. For speed.
|
||||
return true;
|
||||
}
|
||||
|
||||
function teardown(namespaces) {
|
||||
remove(this, 'dragstart drag', preventDefault);
|
||||
remove(this, 'mousedown touchstart', preventIgnoreTags);
|
||||
remove(this, 'movestart', flagAsHandled);
|
||||
|
||||
// Don't bind to the DOM. For speed.
|
||||
return true;
|
||||
}
|
||||
|
||||
function addMethod(handleObj) {
|
||||
// We're not interested in preventing defaults for handlers that
|
||||
// come from internal move or moveend bindings
|
||||
if (handleObj.namespace === "move" || handleObj.namespace === "moveend") {
|
||||
return;
|
||||
}
|
||||
|
||||
// Stop the node from being dragged
|
||||
add(this, 'dragstart.' + handleObj.guid + ' drag.' + handleObj.guid, preventDefault, undefined, handleObj.selector);
|
||||
|
||||
// Prevent text selection and touch interface scrolling
|
||||
add(this, 'mousedown.' + handleObj.guid, preventIgnoreTags, undefined, handleObj.selector);
|
||||
}
|
||||
|
||||
function removeMethod(handleObj) {
|
||||
if (handleObj.namespace === "move" || handleObj.namespace === "moveend") {
|
||||
return;
|
||||
}
|
||||
|
||||
remove(this, 'dragstart.' + handleObj.guid + ' drag.' + handleObj.guid);
|
||||
remove(this, 'mousedown.' + handleObj.guid);
|
||||
}
|
||||
|
||||
jQuery.event.special.movestart = {
|
||||
setup: setup,
|
||||
teardown: teardown,
|
||||
add: addMethod,
|
||||
remove: removeMethod,
|
||||
|
||||
_default: function(e) {
|
||||
var event, data;
|
||||
|
||||
// If no move events were bound to any ancestors of this
|
||||
// target, high tail it out of here.
|
||||
if (!e._handled()) { return; }
|
||||
|
||||
function update(time) {
|
||||
updateEvent(event, data.touch, data.timeStamp);
|
||||
trigger(e.target, event);
|
||||
}
|
||||
|
||||
event = {
|
||||
target: e.target,
|
||||
startX: e.startX,
|
||||
startY: e.startY,
|
||||
pageX: e.pageX,
|
||||
pageY: e.pageY,
|
||||
distX: e.distX,
|
||||
distY: e.distY,
|
||||
deltaX: e.deltaX,
|
||||
deltaY: e.deltaY,
|
||||
velocityX: e.velocityX,
|
||||
velocityY: e.velocityY,
|
||||
timeStamp: e.timeStamp,
|
||||
identifier: e.identifier,
|
||||
targetTouches: e.targetTouches,
|
||||
finger: e.finger
|
||||
};
|
||||
|
||||
data = {
|
||||
event: event,
|
||||
timer: new Timer(update),
|
||||
touch: undefined,
|
||||
timeStamp: undefined
|
||||
};
|
||||
|
||||
if (e.identifier === undefined) {
|
||||
// We're dealing with a mouse
|
||||
// Stop clicks from propagating during a move
|
||||
add(e.target, 'click', returnFalse);
|
||||
add(document, mouseevents.move, activeMousemove, data);
|
||||
add(document, mouseevents.end, activeMouseend, data);
|
||||
}
|
||||
else {
|
||||
// We're dealing with a touch. Stop touchmove doing
|
||||
// anything defaulty.
|
||||
e._preventTouchmoveDefault();
|
||||
add(document, touchevents.move + '.' + e.identifier, activeTouchmove, data);
|
||||
add(document, touchevents.end + '.' + e.identifier, activeTouchend, data);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.event.special.move = {
|
||||
setup: function() {
|
||||
// Bind a noop to movestart. Why? It's the movestart
|
||||
// setup that decides whether other move events are fired.
|
||||
add(this, 'movestart.move', jQuery.noop);
|
||||
},
|
||||
|
||||
teardown: function() {
|
||||
remove(this, 'movestart.move', jQuery.noop);
|
||||
}
|
||||
};
|
||||
|
||||
jQuery.event.special.moveend = {
|
||||
setup: function() {
|
||||
// Bind a noop to movestart. Why? It's the movestart
|
||||
// setup that decides whether other move events are fired.
|
||||
add(this, 'movestart.moveend', jQuery.noop);
|
||||
},
|
||||
|
||||
teardown: function() {
|
||||
remove(this, 'movestart.moveend', jQuery.noop);
|
||||
}
|
||||
};
|
||||
|
||||
add(document, 'mousedown.move', mousedown);
|
||||
add(document, 'touchstart.move', touchstart);
|
||||
|
||||
// Make jQuery copy touch event properties over to the jQuery event
|
||||
// object, if they are not already listed. But only do the ones we
|
||||
// really need. IE7/8 do not have Array#indexOf(), but nor do they
|
||||
// have touch events, so let's assume we can ignore them.
|
||||
if (typeof Array.prototype.indexOf === 'function') {
|
||||
(function(jQuery, undefined){
|
||||
var props = ["changedTouches", "targetTouches"],
|
||||
l = props.length;
|
||||
|
||||
while (l--) {
|
||||
if (jQuery.event.props.indexOf(props[l]) === -1) {
|
||||
jQuery.event.props.push(props[l]);
|
||||
}
|
||||
}
|
||||
})(jQuery);
|
||||
};
|
||||
});
|
||||
@@ -0,0 +1,63 @@
|
||||
/**
|
||||
* fastLiveFilter jQuery plugin 1.0.3
|
||||
*
|
||||
* Copyright (c) 2011, Anthony Bush
|
||||
* License: <http://www.opensource.org/licenses/bsd-license.php>
|
||||
* Project Website: http://anthonybush.com/projects/jquery_fast_live_filter/
|
||||
**/
|
||||
|
||||
jQuery.fn.fastLiveFilter = function(list, options) {
|
||||
// Options: input, list, timeout, callback
|
||||
options = options || {};
|
||||
list = jQuery(list);
|
||||
var input = this;
|
||||
var lastFilter = '';
|
||||
var timeout = options.timeout || 0;
|
||||
var callback = options.callback || function() {};
|
||||
|
||||
var keyTimeout;
|
||||
|
||||
// NOTE: because we cache lis & len here, users would need to re-init the plugin
|
||||
// if they modify the list in the DOM later. This doesn't give us that much speed
|
||||
// boost, so perhaps it's not worth putting it here.
|
||||
var lis = list.children();
|
||||
var len = lis.length;
|
||||
var oldDisplay = len > 0 ? lis[0].style.display : "block";
|
||||
callback(len); // do a one-time callback on initialization to make sure everything's in sync
|
||||
|
||||
input.change(function() {
|
||||
// var startTime = new Date().getTime();
|
||||
var filter = input.val().toLowerCase();
|
||||
var li, innerText;
|
||||
var numShown = 0;
|
||||
for (var i = 0; i < len; i++) {
|
||||
li = lis[i];
|
||||
innerText = !options.selector ?
|
||||
(li.textContent || li.innerText || "") :
|
||||
$(li).find(options.selector).text();
|
||||
|
||||
if (innerText.toLowerCase().indexOf(filter) >= 0) {
|
||||
if (li.style.display == "none") {
|
||||
li.style.display = oldDisplay;
|
||||
}
|
||||
numShown++;
|
||||
} else {
|
||||
if (li.style.display != "none") {
|
||||
li.style.display = "none";
|
||||
}
|
||||
}
|
||||
}
|
||||
callback(numShown);
|
||||
// var endTime = new Date().getTime();
|
||||
// console.log('Search for ' + filter + ' took: ' + (endTime - startTime) + ' (' + numShown + ' results)');
|
||||
return false;
|
||||
}).keydown(function() {
|
||||
clearTimeout(keyTimeout);
|
||||
keyTimeout = setTimeout(function() {
|
||||
if( input.val() === lastFilter ) return;
|
||||
lastFilter = input.val();
|
||||
input.change();
|
||||
}, timeout);
|
||||
});
|
||||
return this; // maintain jQuery chainability
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
/*jshint browser:true */
|
||||
/*!
|
||||
* FitVids 1.1
|
||||
*
|
||||
* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
|
||||
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
|
||||
* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
|
||||
*
|
||||
*/
|
||||
|
||||
;(function( $ ){
|
||||
|
||||
'use strict';
|
||||
|
||||
$.fn.fitVids = function( options ) {
|
||||
var settings = {
|
||||
customSelector: null,
|
||||
ignore: null
|
||||
};
|
||||
|
||||
if(!document.getElementById('fit-vids-style')) {
|
||||
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
|
||||
var head = document.head || document.getElementsByTagName('head')[0];
|
||||
var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
|
||||
var div = document.createElement("div");
|
||||
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
|
||||
head.appendChild(div.childNodes[1]);
|
||||
}
|
||||
|
||||
if ( options ) {
|
||||
$.extend( settings, options );
|
||||
}
|
||||
|
||||
return this.each(function(){
|
||||
var selectors = [
|
||||
'iframe[src*="player.vimeo.com"]',
|
||||
'iframe[src*="youtube.com"]',
|
||||
'iframe[src*="youtube-nocookie.com"]',
|
||||
'iframe[src*="kickstarter.com"][src*="video.html"]',
|
||||
'object',
|
||||
'embed'
|
||||
];
|
||||
|
||||
if (settings.customSelector) {
|
||||
selectors.push(settings.customSelector);
|
||||
}
|
||||
|
||||
var ignoreList = '.fitvidsignore';
|
||||
|
||||
if(settings.ignore) {
|
||||
ignoreList = ignoreList + ', ' + settings.ignore;
|
||||
}
|
||||
|
||||
var $allVideos = $(this).find(selectors.join(','));
|
||||
$allVideos = $allVideos.not('object object'); // SwfObj conflict patch
|
||||
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
|
||||
|
||||
$allVideos.each(function(count){
|
||||
var $this = $(this);
|
||||
if($this.parents(ignoreList).length > 0) {
|
||||
return; // Disable FitVids on this video.
|
||||
}
|
||||
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
|
||||
if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
|
||||
{
|
||||
$this.attr('height', 9);
|
||||
$this.attr('width', 16);
|
||||
}
|
||||
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
|
||||
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
|
||||
aspectRatio = height / width;
|
||||
if(!$this.attr('id')){
|
||||
var videoID = 'fitvid' + count;
|
||||
$this.attr('id', videoID);
|
||||
}
|
||||
$this.wrap('<div class="fluid-width-video-wrapper"></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
|
||||
$this.removeAttr('height').removeAttr('width');
|
||||
});
|
||||
});
|
||||
};
|
||||
// Works with either jQuery or Zepto
|
||||
})( window.jQuery || window.Zepto );
|
||||
8
application/view/mockup/template/js/dev/libs/plugins/jquery.form-validator.min.js
vendored
Normal file
8
application/view/mockup/template/js/dev/libs/plugins/jquery.form-validator.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,336 @@
|
||||
/*
|
||||
* Gifplayer v0.2.2
|
||||
* Customizable jquery plugin to play and stop animated gifs. Similar to 9gag's
|
||||
* (c)2014 Rub<75>n Torres - rubentdlh@gmail.com
|
||||
* Released under the MIT license
|
||||
*/
|
||||
|
||||
(function($) {
|
||||
|
||||
function GifPlayer(preview, options){
|
||||
this.previewElement=preview;
|
||||
this.options=options;
|
||||
this.animationLoaded=false;
|
||||
}
|
||||
|
||||
GifPlayer.prototype = {
|
||||
|
||||
activate: function(){
|
||||
this.wrap();
|
||||
this.addSpinner();
|
||||
this.addControl();
|
||||
this.addEvents();
|
||||
},
|
||||
|
||||
//create a wrapper with relative positioning
|
||||
wrap: function(){
|
||||
this.previewElement.addClass('gifplayer-ready');
|
||||
this.wrapper = this.previewElement.wrap("<div class='gifplayer-wrapper'></div>").parent();
|
||||
this.wrapper.css('width', this.previewElement.width());
|
||||
this.wrapper.css('height', this.previewElement.height());
|
||||
this.previewElement.css('cursor','pointer');
|
||||
},
|
||||
|
||||
//Setup loading spinner
|
||||
addSpinner: function(){
|
||||
this.spinnerElement=$("<div class = 'spinner'></div>");
|
||||
this.wrapper.append(this.spinnerElement);
|
||||
this.spinnerElement.hide();
|
||||
},
|
||||
|
||||
getOption: function(option){
|
||||
var dataOption = this.previewElement.data(option.toLowerCase());
|
||||
if(dataOption != undefined
|
||||
&& dataOption != ''){
|
||||
return dataOption;
|
||||
}else{
|
||||
return this.options[option];
|
||||
}
|
||||
},
|
||||
|
||||
addControl: function(){
|
||||
var label = this.getOption('label');
|
||||
this.playElement = $("<ins class='play-gif'>" + label + "</ins>");
|
||||
this.wrapper.append(this.playElement);
|
||||
this.playElement.css('top', this.previewElement.height()/2 - this.playElement.height()/2);
|
||||
this.playElement.css('left', this.previewElement.width()/2 - this.playElement.width()/2);
|
||||
},
|
||||
|
||||
addEvents: function(){
|
||||
var gp=this;
|
||||
var playOn = this.getOption('playOn');
|
||||
var mode = this.getOption('mode');
|
||||
|
||||
switch(playOn){
|
||||
case 'click':
|
||||
gp.playElement.on( 'click', function(e){
|
||||
gp.loadAnimation();
|
||||
});
|
||||
gp.previewElement.on( 'click', function(e){
|
||||
gp.loadAnimation();
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
break;
|
||||
case 'hover':
|
||||
gp.previewElement.on( 'click mouseover', function(e){
|
||||
gp.loadAnimation();
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
loadAnimation: function(){
|
||||
this.spinnerElement.show();
|
||||
var mode = this.getOption('mode');
|
||||
if(mode == 'gif'){
|
||||
this.loadGif();
|
||||
}else if(mode == 'video'){
|
||||
this.loadVideo();
|
||||
}
|
||||
},
|
||||
|
||||
stopGif: function(){
|
||||
this.gifElement.hide();
|
||||
this.previewElement.show();
|
||||
this.playElement.show();
|
||||
this.resetEvents();
|
||||
},
|
||||
|
||||
getGif: function(){
|
||||
//Check if data-gif was set
|
||||
var gif = this.getOption('gif');
|
||||
if(gif != undefined && gif != ''){
|
||||
return gif;
|
||||
}else{
|
||||
return this.previewElement.attr('src').replace('.png', '.gif').replace('.jpg', '.gif');
|
||||
}
|
||||
},
|
||||
|
||||
getWebm: function(){
|
||||
//Check if data-gif was set
|
||||
var gif = this.getOption('webm');
|
||||
if(gif != undefined && gif != ''){
|
||||
return gif;
|
||||
}else{
|
||||
return this.previewElement.attr('src').replace('.png', '.webm').replace('.jpg', '.webm');
|
||||
}
|
||||
},
|
||||
|
||||
getMp4: function(){
|
||||
//Check if data-gif was set
|
||||
var gif = this.getOption('mp4');
|
||||
if(gif != undefined && gif != ''){
|
||||
return gif;
|
||||
}else{
|
||||
return this.previewElement.attr('src').replace('.png', '.mp4').replace('.jpg', '.mp4');
|
||||
}
|
||||
},
|
||||
|
||||
loadGif: function(){
|
||||
var gp=this;
|
||||
|
||||
gp.playElement.hide();
|
||||
|
||||
if(!this.animationLoaded){
|
||||
this.enableAbort();
|
||||
}
|
||||
var gifSrc = this.getGif();
|
||||
var gifWidth=this.previewElement.width();
|
||||
var gifHeight=this.previewElement.height();
|
||||
|
||||
this.gifElement=$("<img class='gp-gif-element' width='"+ gifWidth + "' height=' "+ gifHeight +" '/>");
|
||||
|
||||
var wait = this.getOption('wait');
|
||||
if(wait){
|
||||
//Wait until gif loads
|
||||
this.gifElement.load( function(){
|
||||
gp.animationLoaded=true;
|
||||
gp.resetEvents();
|
||||
gp.previewElement.hide();
|
||||
gp.wrapper.append(gp.gifElement);
|
||||
gp.spinnerElement.hide();
|
||||
});
|
||||
}else{
|
||||
//Try to show gif instantly
|
||||
gp.animationLoaded=true;
|
||||
gp.resetEvents();
|
||||
gp.previewElement.hide();
|
||||
gp.wrapper.append(gp.gifElement);
|
||||
gp.spinnerElement.hide();
|
||||
}
|
||||
this.gifElement.css('cursor','pointer');
|
||||
this.gifElement.css('position','absolute');
|
||||
this.gifElement.css('top','0');
|
||||
this.gifElement.css('left','0');
|
||||
this.gifElement.attr('src', gifSrc);
|
||||
this.gifElement.click( function(e){
|
||||
$(this).remove();
|
||||
gp.previewElement.show();
|
||||
gp.playElement.show();
|
||||
gp.resetEvents();
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
loadVideo: function(){
|
||||
var gp=this;
|
||||
|
||||
var videoSrcMp4=this.getMp4();
|
||||
var videoSrcWebm=this.getWebm();
|
||||
var videoWidth=this.previewElement.width();
|
||||
var videoHeight=this.previewElement.height();
|
||||
gp.videoElement=$('<video class="gp-video-element" width="' + videoWidth + 'px" height="' + videoHeight + '" style="margin:0 auto;width:' + videoWidth + 'px;height:' + videoHeight + 'px;" autoplay="autoplay" loop="loop" muted="muted" poster="' + gp.previewElement.attr('src') + '"><source type="video/mp4" src="' + videoSrcMp4 + '"><source type="video/webm" src="' + videoSrcWebm + '"></video>');
|
||||
|
||||
var playVideo = function(){
|
||||
gp.spinnerElement.hide();
|
||||
gp.previewElement.hide();
|
||||
gp.playElement.hide();
|
||||
gp.gifLoaded=true;
|
||||
gp.previewElement.hide();
|
||||
gp.wrapper.append(gp.videoElement);
|
||||
gp.videoPaused = false;
|
||||
gp.videoElement[0].play();
|
||||
}
|
||||
|
||||
var checkLoad = function(){
|
||||
if(gp.videoElement[0].readyState === 4){
|
||||
playVideo();
|
||||
gp.animationLoaded=true;
|
||||
}else{
|
||||
setTimeout(checkLoad, 100);
|
||||
}
|
||||
};
|
||||
|
||||
var wait = this.getOption('wait');
|
||||
if(wait){
|
||||
checkLoad();
|
||||
}else{
|
||||
playVideo();
|
||||
}
|
||||
|
||||
gp.videoElement.on('click', function(){
|
||||
if(gp.videoPaused){
|
||||
gp.resumeVideo();
|
||||
}else{
|
||||
gp.pauseVideo();
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
pauseVideo: function(){
|
||||
var gp = this;
|
||||
gp.videoPaused = true;
|
||||
gp.videoElement[0].pause();
|
||||
console.log(gp.videoElement);
|
||||
gp.playElement.show();
|
||||
gp.mouseoverEnabled = false;
|
||||
},
|
||||
|
||||
resumeVideo: function(){
|
||||
var gp = this;
|
||||
gp.videoPaused = false;
|
||||
gp.videoElement[0].play();
|
||||
gp.playElement.hide();
|
||||
},
|
||||
|
||||
enableAbort: function(){
|
||||
var gp = this;
|
||||
this.previewElement.click( function(e){
|
||||
gp.abortLoading(e);
|
||||
});
|
||||
this.spinnerElement.click( function(e){
|
||||
gp.abortLoading(e);
|
||||
});
|
||||
},
|
||||
|
||||
abortLoading: function(e){
|
||||
this.spinnerElement.hide();
|
||||
this.playElement.show();
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
this.gifElement.off('load').on( 'load', function(ev){
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
});
|
||||
this.resetEvents();
|
||||
},
|
||||
|
||||
resetEvents: function(){
|
||||
this.previewElement.off('click');
|
||||
this.previewElement.off('mouseover');
|
||||
this.playElement.off('click');
|
||||
this.spinnerElement.off('click');
|
||||
this.addEvents();
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
$.fn.gifplayer = function(options) {
|
||||
|
||||
// Check if we should operate with some method
|
||||
if (/^(play|pause|stop)$/i.test(options)) {
|
||||
|
||||
return this.each( function(){
|
||||
// Normalize method's name
|
||||
options = options.toLowerCase();
|
||||
if($(this).hasClass('gifplayer-ready')){
|
||||
//Setup gifplayer object
|
||||
var gp = new GifPlayer($(this), null);
|
||||
gp.options = {};
|
||||
gp.options = $.extend({}, $.fn.gifplayer.defaults, gp.options);
|
||||
gp.wrapper = $(this).parent();
|
||||
gp.spinnerElement = gp.wrapper.find('.spinner');
|
||||
gp.playElement = gp.wrapper.find('.play-gif');
|
||||
gp.gifElement = gp.wrapper.find('.gp-gif-element');
|
||||
gp.videoElement = gp.wrapper.find('.gp-video-element');
|
||||
|
||||
if(gp.gifElement.length > 0){
|
||||
gp.options.mode = 'gif';
|
||||
}else if(gp.videoElement.length > 0){
|
||||
gp.options.mode = 'video';
|
||||
}
|
||||
|
||||
switch(options){
|
||||
case 'play':
|
||||
gp.playElement.trigger('click');
|
||||
break;
|
||||
case 'stop':
|
||||
if(!gp.playElement.is(':visible')){
|
||||
if(gp.options.mode == 'gif'){
|
||||
gp.stopGif();
|
||||
}else if( gp.options.mode == 'video'){
|
||||
gp.videoElement.trigger('click');
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}else{
|
||||
console.log('Not a valid gifplayer element');
|
||||
}
|
||||
});
|
||||
|
||||
}else{ //Create instance
|
||||
return this.each(function(){
|
||||
options = $.extend({}, $.fn.gifplayer.defaults, options);
|
||||
var gifplayer = new GifPlayer($(this), options);
|
||||
gifplayer.activate();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
$.fn.gifplayer.defaults = {
|
||||
label: 'GIF',
|
||||
playOn: 'click',
|
||||
mode: 'gif',
|
||||
gif: '',
|
||||
mp4: '',
|
||||
webm: '',
|
||||
wait: false
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* hoverIntent is similar to jQuery's built-in "hover" method except that
|
||||
* instead of firing the handlerIn function immediately, hoverIntent checks
|
||||
* to see if the user's mouse has slowed down (beneath the sensitivity
|
||||
* threshold) before firing the event. The handlerOut function is only
|
||||
* called after a matching handlerIn.
|
||||
*
|
||||
* hoverIntent r7 // 2013.03.11 // jQuery 1.9.1+
|
||||
* http://cherne.net/brian/resources/jquery.hoverIntent.html
|
||||
*
|
||||
* You may use hoverIntent under the terms of the MIT license. Basically that
|
||||
* means you are free to use hoverIntent as long as this header is left intact.
|
||||
* Copyright 2007, 2013 Brian Cherne
|
||||
*
|
||||
* // basic usage ... just like .hover()
|
||||
* .hoverIntent( handlerIn, handlerOut )
|
||||
* .hoverIntent( handlerInOut )
|
||||
*
|
||||
* // basic usage ... with event delegation!
|
||||
* .hoverIntent( handlerIn, handlerOut, selector )
|
||||
* .hoverIntent( handlerInOut, selector )
|
||||
*
|
||||
* // using a basic configuration object
|
||||
* .hoverIntent( config )
|
||||
*
|
||||
* @param handlerIn function OR configuration object
|
||||
* @param handlerOut function OR selector for delegation OR undefined
|
||||
* @param selector selector OR undefined
|
||||
* @author Brian Cherne <brian(at)cherne(dot)net>
|
||||
**/
|
||||
(function($) {
|
||||
$.fn.hoverIntent = function(handlerIn,handlerOut,selector) {
|
||||
|
||||
// default configuration values
|
||||
var cfg = {
|
||||
interval: 100,
|
||||
sensitivity: 7,
|
||||
timeout: 0
|
||||
};
|
||||
|
||||
if ( typeof handlerIn === "object" ) {
|
||||
cfg = $.extend(cfg, handlerIn );
|
||||
} else if ($.isFunction(handlerOut)) {
|
||||
cfg = $.extend(cfg, { over: handlerIn, out: handlerOut, selector: selector } );
|
||||
} else {
|
||||
cfg = $.extend(cfg, { over: handlerIn, out: handlerIn, selector: handlerOut } );
|
||||
}
|
||||
|
||||
// instantiate variables
|
||||
// cX, cY = current X and Y position of mouse, updated by mousemove event
|
||||
// pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
|
||||
var cX, cY, pX, pY;
|
||||
|
||||
// A private function for getting mouse position
|
||||
var track = function(ev) {
|
||||
cX = ev.pageX;
|
||||
cY = ev.pageY;
|
||||
};
|
||||
|
||||
// A private function for comparing current and previous mouse position
|
||||
var compare = function(ev,ob) {
|
||||
ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
|
||||
// compare mouse positions to see if they've crossed the threshold
|
||||
if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
|
||||
$(ob).off("mousemove.hoverIntent",track);
|
||||
// set hoverIntent state to true (so mouseOut can be called)
|
||||
ob.hoverIntent_s = 1;
|
||||
return cfg.over.apply(ob,[ev]);
|
||||
} else {
|
||||
// set previous coordinates for next time
|
||||
pX = cX; pY = cY;
|
||||
// use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
|
||||
ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
|
||||
}
|
||||
};
|
||||
|
||||
// A private function for delaying the mouseOut function
|
||||
var delay = function(ev,ob) {
|
||||
ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
|
||||
ob.hoverIntent_s = 0;
|
||||
return cfg.out.apply(ob,[ev]);
|
||||
};
|
||||
|
||||
// A private function for handling mouse 'hovering'
|
||||
var handleHover = function(e) {
|
||||
// copy objects to be passed into t (required for event object to be passed in IE)
|
||||
var ev = jQuery.extend({},e);
|
||||
var ob = this;
|
||||
|
||||
// cancel hoverIntent timer if it exists
|
||||
if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
|
||||
|
||||
// if e.type == "mouseenter"
|
||||
if (e.type == "mouseenter") {
|
||||
// set "previous" X and Y position based on initial entry point
|
||||
pX = ev.pageX; pY = ev.pageY;
|
||||
// update "current" X and Y position based on mousemove
|
||||
$(ob).on("mousemove.hoverIntent",track);
|
||||
// start polling interval (self-calling timeout) to compare mouse coordinates over time
|
||||
if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
|
||||
|
||||
// else e.type == "mouseleave"
|
||||
} else {
|
||||
// unbind expensive mousemove event
|
||||
$(ob).off("mousemove.hoverIntent",track);
|
||||
// if hoverIntent state is true, then call the mouseOut function after the specified delay
|
||||
if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
|
||||
}
|
||||
};
|
||||
|
||||
// listen for mouseenter and mouseleave
|
||||
return this.on({'mouseenter.hoverIntent':handleHover,'mouseleave.hoverIntent':handleHover}, cfg.selector);
|
||||
};
|
||||
})(jQuery);
|
||||
9
application/view/mockup/template/js/dev/libs/plugins/jquery.instafilta.min.js
vendored
Normal file
9
application/view/mockup/template/js/dev/libs/plugins/jquery.instafilta.min.js
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/*!
|
||||
* instaFilta
|
||||
* Version: 1.4.4
|
||||
* Description: jQuery plugin for performing in-page filtering
|
||||
* Homepage and documentation: https://github.com/chromawoods/instaFilta
|
||||
* Author: Andreas Larsson <andreas@chromawoods.com> (http://chromawoods.com)
|
||||
* Contributions: Jaap-Jan Frans
|
||||
*/
|
||||
!function(t){t.fn.instaFilta=function(e){var i=null,s=null,a=t.extend({scope:null,targets:".instafilta-target",sections:".instafilta-section",categoryDataAttr:"instafilta-category",matchCssClass:"instafilta-match",itemsHideEffect:"hide",itemsHideDuration:0,itemsShowEffect:"show",itemsShowDuration:0,sectionsHideEffect:"hide",sectionsHideDuration:0,sectionsShowEffect:"show",sectionsShowDuration:0,onFilterComplete:null,markMatches:!1,hideEmptySections:!0,beginsWith:!1,caseSensitive:!1,typeDelay:0,useSynonyms:!0,synonyms:[{src:"à,á,å,ä,â,ã",dst:"a"},{src:"À,Á,Å,Ä,Â,Ã",dst:"A"},{src:"è,é,ë,ê",dst:"e"},{src:"È,É,Ë,Ê",dst:"E"},{src:"ì,í,ï,î",dst:"i"},{src:"Ì,Í,Ï,Î",dst:"I"},{src:"ò,ó,ö,ô,õ",dst:"o"},{src:"Ò,Ó,Ö,Ô,Õ",dst:"O"},{src:"ù,ú,ü,û",dst:"u"},{src:"Ù,Ú,Ü,Û",dst:"U"},{src:"ç",dst:"c"},{src:"Ç",dst:"C"},{src:"æ",dst:"ae"}]},e);if(a.useSynonyms)for(var n=0,r=a.synonyms.length;r>n;n++)a.synonyms[n].src=a.synonyms[n].src.split(",");return this.each(function(){var e,n,r,o,c="";a.scope?(o=t(this).closest(a.scope),n=o.find(a.targets),r=o.find(a.sections)):(n=t(a.targets),r=t(a.sections)),n.each(function(){$target=t(this),original=$target.text(),$target.data("values",function(t){var e=[original],i=original;if(!a.useSynonyms)return e;for(var s=0,n=t.length;n>s;s++)for(var r=0;r<t[s].src.length;r++)i=i.replace(t[s].src[r],t[s].dst);return!(i!==original)||e.push(i),e}(a.synonyms))});var l=function(){r.each(function(){var e=t(this);e.find('[data-instafilta-hide="false"]').length?e[a.sectionsShowEffect](a.sectionsShowDuration):e[a.sectionsHideEffect](a.sectionsHideDuration)})},f=function(t){var e=function(){return t?n.attr("data-instafilta-hide","false"):n}().filter('[data-instafilta-hide="false"]')[a.itemsShowEffect](a.itemsShowDuration);return t||n.filter('[data-instafilta-hide="true"]')[a.itemsHideEffect](a.itemsHideDuration),a.hideEmptySections&&l(),"function"==typeof a.onFilterComplete&&a.onFilterComplete.apply(this,[e]),e},u=function(){return f(!0)};i=function(e){return e=a.caseSensitive?e:e.toLowerCase(),c===e?!1:(c=e,e||u(),n.each(function(){var i=t(this);i.data("originalText")||(i.data("originalHtml",i.html()),i.data("originalText",i.data("values")[0]));var s=function(t,e){for(var i=-1,s=0;s<t.length&&(i=(a.caseSensitive?t[s]:t[s].toLowerCase()).indexOf(e),!(i>=0));s++);return i}(i.data("values"),e),n=i.data("originalText"),r=(a.caseSensitive?n:n.toLowerCase(),null),o=null;s>=0&&a.markMatches&&(r=n.substring(s,s+e.length),o=n.replace(r,'<span class="'+a.matchCssClass+'">'+r+"</span>"),i.html(i.data("originalHtml").replace(n,o))),i.attr("data-instafilta-hide",a.beginsWith&&0!==s||0>s?"true":"false")}),f())},s=function(e,i){return e&&e.length?("string"==typeof e&&(e=e.split(",")),n.each(function(){var s=!0,n=0,r=t(this),o=r.data(a.categoryDataAttr);if(o){o=o.split(",");for(var c=0;c<o.length;c++)for(var l=0;l<e.length;l++)if(o[c]===e[l]){if(!i){s=!1;break}n++}i&&n===e.length&&(s=!1),r.html(r.data("originalText")).attr("data-instafilta-hide",s)}}),f()):u()},t(this).on("keyup",function(){var s=t(this);clearTimeout(e),e=setTimeout(function(){i(s.val())},a.typeDelay)})}),{filterTerm:i,filterCategory:s}}}(jQuery);
|
||||
8
application/view/mockup/template/js/dev/libs/plugins/jquery.jscrollpane.min.js
vendored
Normal file
8
application/view/mockup/template/js/dev/libs/plugins/jquery.jscrollpane.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
1
application/view/mockup/template/js/dev/libs/plugins/jquery.morphext.min.js
vendored
Normal file
1
application/view/mockup/template/js/dev/libs/plugins/jquery.morphext.min.js
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/*! Morphext - v2.3.4 - 2015-04-14 */!function(a){"use strict";function b(b,c){this.element=a(b),this.settings=a.extend({},d,c),this._defaults=d,this._init()}var c="Morphext",d={animation:"bounceIn",separator:",",speed:2e3,complete:a.noop};b.prototype={_init:function(){var b=this;this.phrases=[],this.element.addClass("morphext"),a.each(this.element.text().split(this.settings.separator),function(a,c){b.phrases.push(c.trim())}),this.index=-1,this.animate(),this.start()},animate:function(){this.index=++this.index%this.phrases.length,this.element[0].innerHTML='<span class="animated '+this.settings.animation+'">'+this.phrases[this.index]+"</span>",a.isFunction(this.settings.complete)&&this.settings.complete.call(this)},start:function(){var a=this;this._interval=setInterval(function(){a.animate()},this.settings.speed)},stop:function(){this._interval=clearInterval(this._interval)}},a.fn[c]=function(d){return this.each(function(){a.data(this,"plugin_"+c)||a.data(this,"plugin_"+c,new b(this,d))})}}(jQuery);
|
||||
12
application/view/mockup/template/js/dev/libs/plugins/jquery.mousewheel-3.0.6.min.js
vendored
Normal file
12
application/view/mockup/template/js/dev/libs/plugins/jquery.mousewheel-3.0.6.min.js
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net)
|
||||
* Licensed under the MIT License (LICENSE.txt).
|
||||
*
|
||||
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
|
||||
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
|
||||
* Thanks to: Seamus Leahy for adding deltaX and deltaY
|
||||
*
|
||||
* Version: 3.0.6
|
||||
*
|
||||
* Requires: 1.2.2+
|
||||
*/
|
||||
(function(a){function d(b){var c=b||window.event,d=[].slice.call(arguments,1),e=0,f=!0,g=0,h=0;return b=a.event.fix(c),b.type="mousewheel",c.wheelDelta&&(e=c.wheelDelta/120),c.detail&&(e=-c.detail/3),h=e,c.axis!==undefined&&c.axis===c.HORIZONTAL_AXIS&&(h=0,g=-1*e),c.wheelDeltaY!==undefined&&(h=c.wheelDeltaY/120),c.wheelDeltaX!==undefined&&(g=-1*c.wheelDeltaX/120),d.unshift(b,e,g,h),(a.event.dispatch||a.event.handle).apply(this,d)}var b=["DOMMouseScroll","mousewheel"];if(a.event.fixHooks)for(var c=b.length;c;)a.event.fixHooks[b[--c]]=a.event.mouseHooks;a.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=b.length;a;)this.addEventListener(b[--a],d,!1);else this.onmousewheel=d},teardown:function(){if(this.removeEventListener)for(var a=b.length;a;)this.removeEventListener(b[--a],d,!1);else this.onmousewheel=null}},a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);
|
||||
@@ -0,0 +1,223 @@
|
||||
/*
|
||||
* jQuery One Page Nav Plugin
|
||||
* http://github.com/davist11/jQuery-One-Page-Nav
|
||||
*
|
||||
* Copyright (c) 2010 Trevor Davis (http://trevordavis.net)
|
||||
* Dual licensed under the MIT and GPL licenses.
|
||||
* Uses the same license as jQuery, see:
|
||||
* http://jquery.org/license
|
||||
*
|
||||
* @version 3.0.0
|
||||
*
|
||||
* Example usage:
|
||||
* $('#nav').onePageNav({
|
||||
* currentClass: 'current',
|
||||
* changeHash: false,
|
||||
* scrollSpeed: 750
|
||||
* });
|
||||
*/
|
||||
|
||||
;(function($, window, document, undefined){
|
||||
|
||||
// our plugin constructor
|
||||
var OnePageNav = function(elem, options){
|
||||
this.elem = elem;
|
||||
this.$elem = $(elem);
|
||||
this.options = options;
|
||||
this.metadata = this.$elem.data('plugin-options');
|
||||
this.$win = $(window);
|
||||
this.sections = {};
|
||||
this.didScroll = false;
|
||||
this.$doc = $(document);
|
||||
this.docHeight = this.$doc.height();
|
||||
};
|
||||
|
||||
// the plugin prototype
|
||||
OnePageNav.prototype = {
|
||||
defaults: {
|
||||
navItems: 'a',
|
||||
currentClass: 'current',
|
||||
changeHash: false,
|
||||
easing: 'swing',
|
||||
filter: '',
|
||||
scrollSpeed: 750,
|
||||
scrollThreshold: 0.5,
|
||||
begin: false,
|
||||
end: false,
|
||||
scrollChange: false
|
||||
},
|
||||
|
||||
init: function() {
|
||||
// Introduce defaults that can be extended either
|
||||
// globally or using an object literal.
|
||||
this.config = $.extend({}, this.defaults, this.options, this.metadata);
|
||||
|
||||
this.$nav = this.$elem.find(this.config.navItems);
|
||||
|
||||
//Filter any links out of the nav
|
||||
if(this.config.filter !== '') {
|
||||
this.$nav = this.$nav.filter(this.config.filter);
|
||||
}
|
||||
|
||||
//Handle clicks on the nav
|
||||
this.$nav.on('click.onePageNav', $.proxy(this.handleClick, this));
|
||||
|
||||
//Get the section positions
|
||||
this.getPositions();
|
||||
|
||||
//Handle scroll changes
|
||||
this.bindInterval();
|
||||
|
||||
//Update the positions on resize too
|
||||
this.$win.on('resize.onePageNav', $.proxy(this.getPositions, this));
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
adjustNav: function(self, $parent) {
|
||||
self.$elem.find('.' + self.config.currentClass).removeClass(self.config.currentClass);
|
||||
$parent.addClass(self.config.currentClass);
|
||||
},
|
||||
|
||||
bindInterval: function() {
|
||||
var self = this;
|
||||
var docHeight;
|
||||
|
||||
self.$win.on('scroll.onePageNav', function() {
|
||||
self.didScroll = true;
|
||||
});
|
||||
|
||||
self.t = setInterval(function() {
|
||||
docHeight = self.$doc.height();
|
||||
|
||||
//If it was scrolled
|
||||
if(self.didScroll) {
|
||||
self.didScroll = false;
|
||||
self.scrollChange();
|
||||
}
|
||||
|
||||
//If the document height changes
|
||||
if(docHeight !== self.docHeight) {
|
||||
self.docHeight = docHeight;
|
||||
self.getPositions();
|
||||
}
|
||||
}, 250);
|
||||
},
|
||||
|
||||
getHash: function($link) {
|
||||
return $link.attr('href').split('#')[1];
|
||||
},
|
||||
|
||||
getPositions: function() {
|
||||
var self = this;
|
||||
var linkHref;
|
||||
var topPos;
|
||||
var $target;
|
||||
|
||||
self.$nav.each(function() {
|
||||
linkHref = self.getHash($(this));
|
||||
$target = $('#' + linkHref);
|
||||
|
||||
if($target.length) {
|
||||
topPos = $target.offset().top;
|
||||
self.sections[linkHref] = Math.round(topPos);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
getSection: function(windowPos) {
|
||||
var returnValue = null;
|
||||
var windowHeight = Math.round(this.$win.height() * this.config.scrollThreshold);
|
||||
|
||||
for(var section in this.sections) {
|
||||
if((this.sections[section] - windowHeight) < windowPos) {
|
||||
returnValue = section;
|
||||
}
|
||||
}
|
||||
|
||||
return returnValue;
|
||||
},
|
||||
|
||||
handleClick: function(e) {
|
||||
var self = this;
|
||||
var $link = $(e.currentTarget);
|
||||
var $parent = $link.parent();
|
||||
var newLoc = '#' + self.getHash($link);
|
||||
|
||||
if(!$parent.hasClass(self.config.currentClass)) {
|
||||
//Start callback
|
||||
if(self.config.begin) {
|
||||
self.config.begin();
|
||||
}
|
||||
|
||||
//Change the highlighted nav item
|
||||
self.adjustNav(self, $parent);
|
||||
|
||||
//Removing the auto-adjust on scroll
|
||||
self.unbindInterval();
|
||||
|
||||
//Scroll to the correct position
|
||||
self.scrollTo(newLoc, function() {
|
||||
//Do we need to change the hash?
|
||||
if(self.config.changeHash) {
|
||||
window.location.hash = newLoc;
|
||||
}
|
||||
|
||||
//Add the auto-adjust on scroll back in
|
||||
self.bindInterval();
|
||||
|
||||
//End callback
|
||||
if(self.config.end) {
|
||||
self.config.end();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
e.preventDefault();
|
||||
},
|
||||
|
||||
scrollChange: function() {
|
||||
var windowTop = this.$win.scrollTop();
|
||||
var position = this.getSection(windowTop);
|
||||
var $parent;
|
||||
|
||||
//If the position is set
|
||||
if(position !== null) {
|
||||
$parent = this.$elem.find('a[href$="#' + position + '"]').parent();
|
||||
|
||||
//If it's not already the current section
|
||||
if(!$parent.hasClass(this.config.currentClass)) {
|
||||
//Change the highlighted nav item
|
||||
this.adjustNav(this, $parent);
|
||||
|
||||
//If there is a scrollChange callback
|
||||
if(this.config.scrollChange) {
|
||||
this.config.scrollChange($parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
scrollTo: function(target, callback) {
|
||||
var offset = $(target).offset().top;
|
||||
|
||||
$('html, body').animate({
|
||||
scrollTop: offset - this.config.scrollOffset,
|
||||
}, this.config.scrollSpeed, this.config.easing, callback);
|
||||
},
|
||||
|
||||
unbindInterval: function() {
|
||||
clearInterval(this.t);
|
||||
this.$win.unbind('scroll.onePageNav');
|
||||
}
|
||||
};
|
||||
|
||||
OnePageNav.defaults = OnePageNav.prototype.defaults;
|
||||
|
||||
$.fn.onePageNav = function(options) {
|
||||
return this.each(function() {
|
||||
new OnePageNav(this, options).init();
|
||||
});
|
||||
};
|
||||
|
||||
})( jQuery, window , document );
|
||||
2
application/view/mockup/template/js/dev/libs/plugins/jquery.owl.carousel.min.js
vendored
Normal file
2
application/view/mockup/template/js/dev/libs/plugins/jquery.owl.carousel.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,6 @@
|
||||
/* HTML5 Placeholder jQuery Plugin - v2.1.1
|
||||
* Copyright (c)2015 Mathias Bynens
|
||||
* 2015-03-11
|
||||
*/
|
||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(a){function b(b){var c={},d=/^jQuery\d+$/;return a.each(b.attributes,function(a,b){b.specified&&!d.test(b.name)&&(c[b.name]=b.value)}),c}function c(b,c){var d=this,f=a(d);if(d.value==f.attr("placeholder")&&f.hasClass(m.customClass))if(f.data("placeholder-password")){if(f=f.hide().nextAll('input[type="password"]:first').show().attr("id",f.removeAttr("id").data("placeholder-id")),b===!0)return f[0].value=c;f.focus()}else d.value="",f.removeClass(m.customClass),d==e()&&d.select()}function d(){var d,e=this,f=a(e),g=this.id;if(""===e.value){if("password"===e.type){if(!f.data("placeholder-textinput")){try{d=f.clone().attr({type:"text"})}catch(h){d=a("<input>").attr(a.extend(b(this),{type:"text"}))}d.removeAttr("name").data({"placeholder-password":f,"placeholder-id":g}).bind("focus.placeholder",c),f.data({"placeholder-textinput":d,"placeholder-id":g}).before(d)}f=f.removeAttr("id").hide().prevAll('input[type="text"]:first').attr("id",g).show()}f.addClass(m.customClass),f[0].value=f.attr("placeholder")}else f.removeClass(m.customClass)}function e(){try{return document.activeElement}catch(a){}}var f,g,h="[object OperaMini]"==Object.prototype.toString.call(window.operamini),i="placeholder"in document.createElement("input")&&!h,j="placeholder"in document.createElement("textarea")&&!h,k=a.valHooks,l=a.propHooks;if(i&&j)g=a.fn.placeholder=function(){return this},g.input=g.textarea=!0;else{var m={};g=a.fn.placeholder=function(b){var e={customClass:"placeholder"};m=a.extend({},e,b);var f=this;return f.filter((i?"textarea":":input")+"[placeholder]").not("."+m.customClass).bind({"focus.placeholder":c,"blur.placeholder":d}).data("placeholder-enabled",!0).trigger("blur.placeholder"),f},g.input=i,g.textarea=j,f={get:function(b){var c=a(b),d=c.data("placeholder-password");return d?d[0].value:c.data("placeholder-enabled")&&c.hasClass(m.customClass)?"":b.value},set:function(b,f){var g=a(b),h=g.data("placeholder-password");return h?h[0].value=f:g.data("placeholder-enabled")?(""===f?(b.value=f,b!=e()&&d.call(b)):g.hasClass(m.customClass)?c.call(b,!0,f)||(b.value=f):b.value=f,g):b.value=f}},i||(k.input=f,l.value=f),j||(k.textarea=f,l.value=f),a(function(){a(document).delegate("form","submit.placeholder",function(){var b=a("."+m.customClass,this).each(c);setTimeout(function(){b.each(d)},10)})}),a(window).bind("beforeunload.placeholder",function(){a("."+m.customClass).each(function(){this.value=""})})}});
|
||||
//# sourceMappingURL=jquery.placeholder.min.js.map
|
||||
3
application/view/mockup/template/js/dev/libs/plugins/jquery.rating.min.js
vendored
Normal file
3
application/view/mockup/template/js/dev/libs/plugins/jquery.rating.min.js
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
// bootstrap-rating - v1.3.2 - (c) 2016 dreyescat
|
||||
// https://github.com/dreyescat/bootstrap-rating MIT
|
||||
!function(a,b){"use strict";function c(c,e){this.$input=a(c),this.$rating=a("<span></span>").css({cursor:"default"}).insertBefore(this.$input),this.options=function(c){return c.start=parseInt(c.start,10),c.start=isNaN(c.start)?b:c.start,c.stop=parseInt(c.stop,10),c.stop=isNaN(c.stop)?c.start+d||b:c.stop,c.step=parseInt(c.step,10)||b,c.fractions=Math.abs(parseInt(c.fractions,10))||b,c.scale=Math.abs(parseInt(c.scale,10))||b,c=a.extend({},a.fn.rating.defaults,c),c.filledSelected=c.filledSelected||c.filled,c}(a.extend({},this.$input.data(),e)),this._init()}var d=5;c.prototype={_init:function(){for(var c=this,d=this.$input,e=this.$rating,f=function(a){return function(c){d.prop("disabled")||d.prop("readonly")||d.data("readonly")!==b||a.call(this,c)}},g=1;g<=this._rateToIndex(this.options.stop);g++){var h=a('<div class="rating-symbol"></div>').css({display:"inline-block",position:"relative"});a('<div class="rating-symbol-background '+this.options.empty+'"></div>').appendTo(h),a('<div class="rating-symbol-foreground"></div>').append("<span></span>").css({display:"inline-block",position:"absolute",overflow:"hidden",left:0,right:0,width:0}).appendTo(h),e.append(h),this.options.extendSymbol.call(h,this._indexToRate(g))}this._updateRate(d.val()),d.on("change",function(){c._updateRate(a(this).val())});var i,j=function(b){var d=a(b.currentTarget),e=Math.abs((b.pageX||b.originalEvent.touches[0].pageX)-(("rtl"===d.css("direction")&&d.width())+d.offset().left));return e=e>0?e:.1*c.options.scale,d.index()+e/d.width()};e.on("mousedown touchstart",".rating-symbol",f(function(a){d.val(c._indexToRate(j(a))).change()})).on("mousemove touchmove",".rating-symbol",f(function(d){var e=c._roundToFraction(j(d));e!==i&&(i!==b&&a(this).trigger("rating.rateleave"),i=e,a(this).trigger("rating.rateenter",[c._indexToRate(i)])),c._fillUntil(e)})).on("mouseleave touchend",".rating-symbol",f(function(){i=b,a(this).trigger("rating.rateleave"),c._fillUntil(c._rateToIndex(parseFloat(d.val())))}))},_fillUntil:function(a){var b=this.$rating,c=Math.floor(a);b.find(".rating-symbol-background").css("visibility","visible").slice(0,c).css("visibility","hidden");var d=b.find(".rating-symbol-foreground");d.width(0),d.slice(0,c).width("auto").find("span").attr("class",this.options.filled),d.eq(a%1?c:c-1).find("span").attr("class",this.options.filledSelected),d.eq(c).width(a%1*100+"%")},_indexToRate:function(a){return this.options.start+Math.floor(a)*this.options.step+this.options.step*this._roundToFraction(a%1)},_rateToIndex:function(a){return(a-this.options.start)/this.options.step},_roundToFraction:function(a){var b=Math.ceil(a%1*this.options.fractions)/this.options.fractions,c=Math.pow(10,this.options.scale);return Math.floor(a)+Math.floor(b*c)/c},_contains:function(a){var b=this.options.step>0?this.options.start:this.options.stop,c=this.options.step>0?this.options.stop:this.options.start;return a>=b&&c>=a},_updateRate:function(a){var b=parseFloat(a);this._contains(b)&&(this._fillUntil(this._rateToIndex(b)),this.$input.val(b))},rate:function(a){return a===b?this.$input.val():void this._updateRate(a)}},a.fn.rating=function(b){var d,e=Array.prototype.slice.call(arguments,1);return this.each(function(){var f=a(this),g=f.data("rating");g||f.data("rating",g=new c(this,b)),"string"==typeof b&&"_"!==b[0]&&(d=g[b].apply(g,e))}),d||this},a.fn.rating.defaults={filled:"glyphicon glyphicon-star",filledSelected:b,empty:"glyphicon glyphicon-star-empty",start:0,stop:d,step:1,fractions:1,scale:3,extendSymbol:function(a){}},a(function(){a("input.rating").rating()})}(jQuery);
|
||||
@@ -0,0 +1,132 @@
|
||||
/*! ReSmenu v0.1.1 by Alessandro Benoit */
|
||||
(function ($, window, i) {
|
||||
|
||||
'use strict';
|
||||
|
||||
$.fn.ReSmenu = function (options) {
|
||||
|
||||
// Settings
|
||||
var s = $.extend({
|
||||
menuClass: 'responsive_menu', // Responsive menu class
|
||||
selectId: 'resmenu',
|
||||
textBefore: false, // Text to add before the mobile menu
|
||||
selectOption: false, // First select option
|
||||
activeClass: 'current-menu-item', // Active menu li class
|
||||
maxWidth: 480, // Size to which the menu is responsive
|
||||
prependTo: 'body'
|
||||
}, options);
|
||||
|
||||
// Convert the menu to select
|
||||
function build_menu(element, select, add) {
|
||||
|
||||
add = add || '';
|
||||
|
||||
$(element).children('li').each(function () {
|
||||
|
||||
var url = $(this).children('a').attr('href');
|
||||
|
||||
if (url === undefined || url === false || url === '#' || url.length === 0) {
|
||||
url = '';
|
||||
}
|
||||
|
||||
$('<option/>', {
|
||||
value: url,
|
||||
html: add + $(this).children('a').text(),
|
||||
disabled: (!url) ? true : false,
|
||||
selected: ($(this).hasClass(s.activeClass) && !s.selectOption) ? true : false
|
||||
}).appendTo(select);
|
||||
|
||||
// Submenu
|
||||
if ($(this).children('ul').length > 0) {
|
||||
build_menu($(this).children('ul'), select, add + " ");
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Build the responsive menu container and fill it with build_menu()
|
||||
function create_responsive_menus(element, i) {
|
||||
|
||||
var responsive_menu = $('<div/>', {
|
||||
class: s.menuClass
|
||||
}).prependTo(s.prependTo),
|
||||
select = $('<select/>', {
|
||||
id: s.selectId + i
|
||||
}).appendTo(responsive_menu);
|
||||
|
||||
// Bind change to select
|
||||
$(select).bind('change', function () {
|
||||
if ($(this).val().length > 0) {
|
||||
window.location.href = $(this).val();
|
||||
}
|
||||
});
|
||||
|
||||
// Label
|
||||
if (s.textBefore) {
|
||||
$('<label/>', {
|
||||
html: s.textBefore,
|
||||
for: s.selectId + i
|
||||
}).prependTo(responsive_menu);
|
||||
}
|
||||
|
||||
// First option
|
||||
if (s.selectOption) {
|
||||
$('<option/>', {
|
||||
text: s.selectOption,
|
||||
value: ''
|
||||
}).appendTo(select);
|
||||
}
|
||||
|
||||
// Build select the menu
|
||||
build_menu($(element), select);
|
||||
|
||||
return responsive_menu;
|
||||
|
||||
}
|
||||
|
||||
// Let's do it
|
||||
this.each(function () {
|
||||
|
||||
var element = $(this),
|
||||
responsive_menu;
|
||||
|
||||
i += 1;
|
||||
|
||||
// The responsive menu is built if the page size is or goes under maxWidth
|
||||
function handle_menu() {
|
||||
|
||||
if ($(window).width() > parseInt(s.maxWidth, 10)) {
|
||||
|
||||
$(element).show();
|
||||
|
||||
if (responsive_menu) {
|
||||
$(responsive_menu).hide();
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
$(element).hide();
|
||||
|
||||
if (responsive_menu) {
|
||||
$(responsive_menu).show();
|
||||
} else {
|
||||
responsive_menu = create_responsive_menus(element, i);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// At first
|
||||
handle_menu();
|
||||
|
||||
// Then at the resizing of the page
|
||||
$(window).resize(function () {
|
||||
handle_menu();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
})(jQuery, this, 0);
|
||||
4
application/view/mockup/template/js/dev/libs/plugins/jquery.sidr.min.js
vendored
Normal file
4
application/view/mockup/template/js/dev/libs/plugins/jquery.sidr.min.js
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
/*! Sidr - v1.2.1 - 2013-11-06
|
||||
* https://github.com/artberri/sidr
|
||||
* Copyright (c) 2013 Alberto Varela; Licensed MIT */
|
||||
(function(e){var t=!1,i=!1,n={isUrl:function(e){var t=RegExp("^(https?:\\/\\/)?((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|((\\d{1,3}\\.){3}\\d{1,3}))(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*(\\?[;&a-z\\d%_.~+=-]*)?(\\#[-a-z\\d_]*)?$","i");return t.test(e)?!0:!1},loadContent:function(e,t){e.html(t)},addPrefix:function(e){var t=e.attr("id"),i=e.attr("class");"string"==typeof t&&""!==t&&e.attr("id",t.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-id-$1")),"string"==typeof i&&""!==i&&"sidr-inner"!==i&&e.attr("class",i.replace(/([A-Za-z0-9_.\-]+)/g,"sidr-class-$1")),e.removeAttr("style")},execute:function(n,s,a){"function"==typeof s?(a=s,s="sidr"):s||(s="sidr");var r,d,l,c=e("#"+s),u=e(c.data("body")),f=e("html"),p=c.outerWidth(!0),g=c.data("speed"),h=c.data("side"),m=c.data("displace"),v=c.data("onOpen"),y=c.data("onClose"),x="sidr"===s?"sidr-open":"sidr-open "+s+"-open";if("open"===n||"toggle"===n&&!c.is(":visible")){if(c.is(":visible")||t)return;if(i!==!1)return o.close(i,function(){o.open(s)}),void 0;t=!0,"left"===h?(r={left:p+"px"},d={left:"0px"}):(r={right:p+"px"},d={right:"0px"}),u.is("body")&&(l=f.scrollTop(),f.css("overflow-x","hidden").scrollTop(l)),m?u.addClass("sidr-animating").css({width:u.width(),position:"absolute"}).animate(r,g,function(){e(this).addClass(x)}):setTimeout(function(){e(this).addClass(x)},g),c.css("display","block").animate(d,g,function(){t=!1,i=s,"function"==typeof a&&a(s),u.removeClass("sidr-animating")}),v()}else{if(!c.is(":visible")||t)return;t=!0,"left"===h?(r={left:0},d={left:"-"+p+"px"}):(r={right:0},d={right:"-"+p+"px"}),u.is("body")&&(l=f.scrollTop(),f.removeAttr("style").scrollTop(l)),u.addClass("sidr-animating").animate(r,g).removeClass(x),c.animate(d,g,function(){c.removeAttr("style").hide(),u.removeAttr("style"),e("html").removeAttr("style"),t=!1,i=!1,"function"==typeof a&&a(s),u.removeClass("sidr-animating")}),y()}}},o={open:function(e,t){n.execute("open",e,t)},close:function(e,t){n.execute("close",e,t)},toggle:function(e,t){n.execute("toggle",e,t)},toogle:function(e,t){n.execute("toggle",e,t)}};e.sidr=function(t){return o[t]?o[t].apply(this,Array.prototype.slice.call(arguments,1)):"function"!=typeof t&&"string"!=typeof t&&t?(e.error("Method "+t+" does not exist on jQuery.sidr"),void 0):o.toggle.apply(this,arguments)},e.fn.sidr=function(t){var i=e.extend({name:"sidr",speed:200,side:"left",source:null,renaming:!0,body:"body",displace:!0,onOpen:function(){},onClose:function(){}},t),s=i.name,a=e("#"+s);if(0===a.length&&(a=e("<div />").attr("id",s).appendTo(e("body"))),a.addClass("sidr").addClass(i.side).data({speed:i.speed,side:i.side,body:i.body,displace:i.displace,onOpen:i.onOpen,onClose:i.onClose}),"function"==typeof i.source){var r=i.source(s);n.loadContent(a,r)}else if("string"==typeof i.source&&n.isUrl(i.source))e.get(i.source,function(e){n.loadContent(a,e)});else if("string"==typeof i.source){var d="",l=i.source.split(",");if(e.each(l,function(t,i){d+='<div class="sidr-inner">'+e(i).html()+"</div>"}),i.renaming){var c=e("<div />").html(d);c.find("*").each(function(t,i){var o=e(i);n.addPrefix(o)}),d=c.html()}n.loadContent(a,d)}else null!==i.source&&e.error("Invalid Sidr Source");return this.each(function(){var t=e(this),i=t.data("sidr");i||(t.data("sidr",s),"ontouchstart"in document.documentElement?(t.bind("touchstart",function(e){e.originalEvent.touches[0],this.touched=e.timeStamp}),t.bind("touchend",function(e){var t=Math.abs(e.timeStamp-this.touched);200>t&&(e.preventDefault(),o.toggle(s))})):t.click(function(e){e.preventDefault(),o.toggle(s)}))})}})(jQuery);
|
||||
6
application/view/mockup/template/js/dev/libs/plugins/jquery.slicknav.min.js
vendored
Normal file
6
application/view/mockup/template/js/dev/libs/plugins/jquery.slicknav.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
6
application/view/mockup/template/js/dev/libs/plugins/jquery.steps.min.js
vendored
Normal file
6
application/view/mockup/template/js/dev/libs/plugins/jquery.steps.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
10
application/view/mockup/template/js/dev/libs/plugins/jquery.superfish.min.js
vendored
Normal file
10
application/view/mockup/template/js/dev/libs/plugins/jquery.superfish.min.js
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
/*
|
||||
* jQuery Superfish Menu Plugin - v1.7.5
|
||||
* Copyright (c) 2014 Joel Birch
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
|
||||
;(function(e,s){"use strict";var n=function(){var n={bcClass:"sf-breadcrumb",menuClass:"sf-js-enabled",anchorClass:"sf-with-ul",menuArrowClass:"sf-arrows"},o=function(){var n=/iPhone|iPad|iPod/i.test(navigator.userAgent);return n&&e(s).load(function(){e("body").children().on("click",e.noop)}),n}(),t=function(){var e=document.documentElement.style;return"behavior"in e&&"fill"in e&&/iemobile/i.test(navigator.userAgent)}(),i=function(){return!!s.PointerEvent}(),r=function(e,s){var o=n.menuClass;s.cssArrows&&(o+=" "+n.menuArrowClass),e.toggleClass(o)},a=function(s,o){return s.find("li."+o.pathClass).slice(0,o.pathLevels).addClass(o.hoverClass+" "+n.bcClass).filter(function(){return e(this).children(o.popUpSelector).hide().show().length}).removeClass(o.pathClass)},l=function(e){e.children("a").toggleClass(n.anchorClass)},h=function(e){var s=e.css("ms-touch-action"),n=e.css("touch-action");n=n||s,n="pan-y"===n?"auto":"pan-y",e.css({"ms-touch-action":n,"touch-action":n})},u=function(s,n){var r="li:has("+n.popUpSelector+")";e.fn.hoverIntent&&!n.disableHI?s.hoverIntent(c,f,r):s.on("mouseenter.superfish",r,c).on("mouseleave.superfish",r,f);var a="MSPointerDown.superfish";i&&(a="pointerdown.superfish"),o||(a+=" touchend.superfish"),t&&(a+=" mousedown.superfish"),s.on("focusin.superfish","li",c).on("focusout.superfish","li",f).on(a,"a",n,p)},p=function(s){var n=e(this),o=n.siblings(s.data.popUpSelector);o.length>0&&o.is(":hidden")&&(n.one("click.superfish",!1),"MSPointerDown"===s.type||"pointerdown"===s.type?n.trigger("focus"):e.proxy(c,n.parent("li"))())},c=function(){var s=e(this),n=m(s);clearTimeout(n.sfTimer),s.siblings().superfish("hide").end().superfish("show")},f=function(){var s=e(this),n=m(s);o?e.proxy(d,s,n)():(clearTimeout(n.sfTimer),n.sfTimer=setTimeout(e.proxy(d,s,n),n.delay))},d=function(s){s.retainPath=e.inArray(this[0],s.$path)>-1,this.superfish("hide"),this.parents("."+s.hoverClass).length||(s.onIdle.call(v(this)),s.$path.length&&e.proxy(c,s.$path)())},v=function(e){return e.closest("."+n.menuClass)},m=function(e){return v(e).data("sf-options")};return{hide:function(s){if(this.length){var n=this,o=m(n);if(!o)return this;var t=o.retainPath===!0?o.$path:"",i=n.find("li."+o.hoverClass).add(this).not(t).removeClass(o.hoverClass).children(o.popUpSelector),r=o.speedOut;s&&(i.show(),r=0),o.retainPath=!1,o.onBeforeHide.call(i),i.stop(!0,!0).animate(o.animationOut,r,function(){var s=e(this);o.onHide.call(s)})}return this},show:function(){var e=m(this);if(!e)return this;var s=this.addClass(e.hoverClass),n=s.children(e.popUpSelector);return e.onBeforeShow.call(n),n.stop(!0,!0).animate(e.animation,e.speed,function(){e.onShow.call(n)}),this},destroy:function(){return this.each(function(){var s,o=e(this),t=o.data("sf-options");return t?(s=o.find(t.popUpSelector).parent("li"),clearTimeout(t.sfTimer),r(o,t),l(s),h(o),o.off(".superfish").off(".hoverIntent"),s.children(t.popUpSelector).attr("style",function(e,s){return s.replace(/display[^;]+;?/g,"")}),t.$path.removeClass(t.hoverClass+" "+n.bcClass).addClass(t.pathClass),o.find("."+t.hoverClass).removeClass(t.hoverClass),t.onDestroy.call(o),o.removeData("sf-options"),void 0):!1})},init:function(s){return this.each(function(){var o=e(this);if(o.data("sf-options"))return!1;var t=e.extend({},e.fn.superfish.defaults,s),i=o.find(t.popUpSelector).parent("li");t.$path=a(o,t),o.data("sf-options",t),r(o,t),l(i),h(o),u(o,t),i.not("."+n.bcClass).superfish("hide",!0),t.onInit.call(this)})}}}();e.fn.superfish=function(s){return n[s]?n[s].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof s&&s?e.error("Method "+s+" does not exist on jQuery.fn.superfish"):n.init.apply(this,arguments)},e.fn.superfish.defaults={popUpSelector:"ul,.sf-mega",hoverClass:"sfHover",pathClass:"overrideThisToUse",pathLevels:1,delay:800,animation:{opacity:"show"},animationOut:{opacity:"hide"},speed:"normal",speedOut:"fast",cssArrows:!0,disableHI:!1,onInit:e.noop,onBeforeShow:e.noop,onShow:e.noop,onBeforeHide:e.noop,onHide:e.noop,onIdle:e.noop,onDestroy:e.noop}})(jQuery,window);
|
||||
@@ -0,0 +1,91 @@
|
||||
|
||||
/*
|
||||
* Supersubs v0.3b - jQuery plugin
|
||||
* Copyright (c) 2013 Joel Birch
|
||||
*
|
||||
* Dual licensed under the MIT and GPL licenses:
|
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*
|
||||
*
|
||||
* This plugin automatically adjusts submenu widths of suckerfish-style menus to that of
|
||||
* their longest list item children. If you use this, please expect bugs and report them
|
||||
* to the jQuery Google Group with the word 'Superfish' in the subject line.
|
||||
*
|
||||
*/
|
||||
|
||||
;(function($){ // $ will refer to jQuery within this closure
|
||||
|
||||
$.fn.supersubs = function(options){
|
||||
var opts = $.extend({}, $.fn.supersubs.defaults, options);
|
||||
// return original object to support chaining
|
||||
return this.each(function() {
|
||||
// cache selections
|
||||
var $$ = $(this);
|
||||
// support metadata
|
||||
var o = $.meta ? $.extend({}, opts, $$.data()) : opts;
|
||||
// cache all ul elements and show them in preparation for measurements
|
||||
var $ULs = $$.find('ul').show();
|
||||
// get the font size of menu.
|
||||
// .css('fontSize') returns various results cross-browser, so measure an em dash instead
|
||||
var fontsize = $('<li id="menu-fontsize">—</li>').css({
|
||||
'padding' : 0,
|
||||
'position' : 'absolute',
|
||||
'top' : '-999em',
|
||||
'width' : 'auto'
|
||||
}).appendTo($$)[0].clientWidth; //clientWidth is faster than .width()
|
||||
// remove em dash
|
||||
$('#menu-fontsize').remove();
|
||||
// loop through each ul in menu
|
||||
$ULs.each(function(i) {
|
||||
// cache this ul
|
||||
var $ul = $(this);
|
||||
// get all (li) children of this ul
|
||||
var $LIs = $ul.children();
|
||||
// get all anchor grand-children
|
||||
var $As = $LIs.children('a');
|
||||
// force content to one line and save current float property
|
||||
var liFloat = $LIs.css('white-space','nowrap').css('float');
|
||||
// remove width restrictions and floats so elements remain vertically stacked
|
||||
$ul.add($LIs).add($As).css({
|
||||
'float' : 'none',
|
||||
'width' : 'auto'
|
||||
});
|
||||
// this ul will now be shrink-wrapped to longest li due to position:absolute
|
||||
// so save its width as ems.
|
||||
var emWidth = $ul[0].clientWidth / fontsize;
|
||||
// add more width to ensure lines don't turn over at certain sizes in various browsers
|
||||
emWidth += o.extraWidth;
|
||||
// restrict to at least minWidth and at most maxWidth
|
||||
if (emWidth > o.maxWidth) { emWidth = o.maxWidth; }
|
||||
else if (emWidth < o.minWidth) { emWidth = o.minWidth; }
|
||||
emWidth += 'em';
|
||||
// set ul to width in ems
|
||||
$ul.css('width',emWidth);
|
||||
// restore li floats to avoid IE bugs
|
||||
// set li width to full width of this ul
|
||||
// revert white-space to normal
|
||||
$LIs.css({
|
||||
'float' : liFloat,
|
||||
'width' : '100%',
|
||||
'white-space' : 'normal'
|
||||
})
|
||||
// update offset position of descendant ul to reflect new width of parent.
|
||||
// set it to 100% in case it isn't already set to this in the CSS
|
||||
.each(function(){
|
||||
var $childUl = $(this).children('ul');
|
||||
var offsetDirection = $childUl.css('left') !== undefined ? 'left' : 'right';
|
||||
$childUl.css(offsetDirection,'100%');
|
||||
});
|
||||
}).hide();
|
||||
|
||||
});
|
||||
};
|
||||
// expose defaults
|
||||
$.fn.supersubs.defaults = {
|
||||
minWidth : 9, // requires em unit.
|
||||
maxWidth : 25, // requires em unit.
|
||||
extraWidth : 0 // extra width can ensure lines don't sometimes turn over due to slight browser differences in how they round-off values
|
||||
};
|
||||
|
||||
})(jQuery); // plugin code ends
|
||||
5
application/view/mockup/template/js/dev/libs/plugins/jquery.tendina.min.js
vendored
Normal file
5
application/view/mockup/template/js/dev/libs/plugins/jquery.tendina.min.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
/*!
|
||||
Tendina jQuery plugin v0.11.1
|
||||
Copyright (c) 2015 Ivan Prignano
|
||||
Released under the MIT License
|
||||
*/(function(){var a=function(a,b){return function(){return a.apply(b,arguments)}},b=[].slice;!function(c){var d;return d=function(){function b(b,d){this._eventHandler=a(this._eventHandler,this),this.options=c.extend({},this.defaults,d),this.$el=c(b),this.elSelector=this._getSelector(this.$el),this.$el.addClass("tendina"),this.linkSelector=""+this.elSelector+" a",this.$listElements=c(this.linkSelector).parent("li"),this._hideSubmenus(),this.mouseEvent=this.options.onHover===!0?"mouseenter.tendina":"click.tendina",this._bindEvents(),null!==this.options.activeMenu&&this._openActiveMenu(this.options.activeMenu)}return b.prototype.defaults={animate:!0,speed:500,onHover:!1,hoverDelay:200,activeMenu:null},b.prototype._bindEvents=function(){return c(document).on(this.mouseEvent,this.linkSelector,this._eventHandler)},b.prototype._unbindEvents=function(){return c(document).off(this.mouseEvent)},b.prototype._getSelector=function(a){var b,d,e;return d=null!=(e=c(a).attr("class"))?e.split(" ")[0]:void 0,b=c(a).attr("id"),void 0!==b?"#"+b:"."+d},b.prototype._isFirstLevel=function(a){return c(a).parent().parent().hasClass("tendina")?!0:void 0},b.prototype._eventHandler=function(a){var b;return b=a.currentTarget,this._hasChildren(b)&&this._IsChildrenHidden(b)?(a.preventDefault(),this.options.onHover?setTimeout(function(a){return function(){return c(b).is(":hover")?a._openSubmenu(b):void 0}}(this),this.options.hoverDelay):this._openSubmenu(b)):this._isCurrentlyOpen(b)&&this._hasChildren(b)&&(a.preventDefault(),!this.options.onHover)?this._closeSubmenu(b):void 0},b.prototype._openSubmenu=function(a){var b,d;return d=c(a).next("ul"),b=this.$el.find("> .selected ul").not(d).not(d.parents("ul")),c(a).parent("li").addClass("selected"),this._close(b),this.$el.find(".selected").not(d.parents("li")).removeClass("selected"),this._open(d),this.options.openCallback?this.options.openCallback(c(a).parent()):void 0},b.prototype._closeSubmenu=function(a){var b,d;return d=c(a).next("ul"),b=d.find("li.selected"),c(a).parent().removeClass("selected"),this._close(d),b.removeClass("selected"),this._close(b.find("ul")),this.options.closeCallback?this.options.closeCallback(c(a).parent()):void 0},b.prototype._open=function(a){return this.options.animate?a.stop(!0,!0).slideDown(this.options.speed):a.show()},b.prototype._close=function(a){return this.options.animate?a.stop(!0,!0).slideUp(this.options.speed):a.hide()},b.prototype._hasChildren=function(a){return c(a).next("ul").length>0},b.prototype._IsChildrenHidden=function(a){return c(a).next("ul").is(":hidden")},b.prototype._isCurrentlyOpen=function(a){return c(a).parent().hasClass("selected")},b.prototype._hideSubmenus=function(){return this.$el.find("ul").hide()},b.prototype._showSubmenus=function(){return this.$el.find("ul").show(),this.$el.find("li").addClass("selected")},b.prototype._openActiveMenu=function(a){var b,c;return b=a instanceof jQuery?a:this.$el.find(a),c=b.closest("ul").parents("li").find("> a"),this._hasChildren(c)&&this._IsChildrenHidden(c)?c.next("ul").show():b.next("ul").show(),b.parent().addClass("selected"),c.parent().addClass("selected")},b.prototype.destroy=function(){return this.$el.removeData("tendina"),this._unbindEvents(),this._showSubmenus(),this.$el.removeClass("tendina"),this.$el.find(".selected").removeClass("selected")},b.prototype.hideAll=function(){return this._hideSubmenus()},b.prototype.showAll=function(){return this._showSubmenus()},b}(),c.fn.extend({tendina:function(){var a,e;return e=arguments[0],a=2<=arguments.length?b.call(arguments,1):[],this.each(function(){var b,f;return b=c(this),f=b.data("tendina"),f||b.data("tendina",f=new d(this,e)),"string"==typeof e?f[e].apply(f,a):void 0})}})}(window.jQuery,window)}).call(this);
|
||||
@@ -0,0 +1,133 @@
|
||||
(function ($){
|
||||
// doesn't work without jquery
|
||||
if (!$) return;
|
||||
// treeView
|
||||
function treeView($me) {
|
||||
// add treeview class name if not present
|
||||
$me.addClass('treeview');
|
||||
// collapsable elements i.e. the li with a ul in it
|
||||
var $collapse = $me.find('li>ul').parent();
|
||||
// generate tree from data
|
||||
function generateTree(data, $root, useSpan, imgList) {
|
||||
// create a node from a node object
|
||||
function createNode(nObj, $target) {
|
||||
var li = $('<li>').appendTo($target);
|
||||
// node icons require using a span element
|
||||
useSpan = useSpan || imgList.length > 0;
|
||||
if (useSpan) {
|
||||
li.append($('<span>').text(nObj.label));
|
||||
} else {
|
||||
li.text(nObj.label);
|
||||
}
|
||||
if(imgList.length > 0){
|
||||
// the image
|
||||
var image = 'url('+imgList[nObj.imageIndex]+')';
|
||||
// requires using span
|
||||
var $span = li.find('span');
|
||||
// indicates that it has a node image
|
||||
$span.addClass('has-node-icon');
|
||||
$span.css('background-image', image);
|
||||
}
|
||||
if (nObj.children != undefined && nObj.children.length > 0) {
|
||||
var innerList = $('<ul>').appendTo(li);
|
||||
for (var i = 0; i < nObj.children.length; i++) {
|
||||
var child = nObj.children[i];
|
||||
createNode(child, innerList);
|
||||
};
|
||||
}
|
||||
|
||||
return li;
|
||||
}
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
createNode(data[i], $root);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
//initialize control
|
||||
init: function (data) {
|
||||
// handle undefined error
|
||||
data = data || { };
|
||||
|
||||
// default optoins
|
||||
var defaults = {
|
||||
model: null, // treeview data model
|
||||
useSpan: false, // use <span> to build model
|
||||
imageList: [], // add icons to nodes
|
||||
// ajax: null, TODO: load data using ajax
|
||||
expanded: false // the tree is expanded
|
||||
};
|
||||
// configuration
|
||||
var options = { };
|
||||
|
||||
if (typeof data.concat != 'undefined') {
|
||||
// concat is an array method, thus checks if data is array
|
||||
// typeof array returns object otherwise
|
||||
defaults.model = data;
|
||||
// data has model only, which is transferred to defaults.model
|
||||
// prevents wrong merge in $.extend
|
||||
data = null;
|
||||
}
|
||||
// merge options
|
||||
options = $.extend(defaults, data);
|
||||
|
||||
if (options.model != null) {
|
||||
// generate the tree
|
||||
generateTree(options.model, $me, options.useSpan, options.imageList);
|
||||
// re assign var value for new dom structure
|
||||
$collapse = $me.find('li>ul').parent();
|
||||
}
|
||||
// all the collapsable items which have something
|
||||
$collapse.addClass('contains-items');
|
||||
// user config
|
||||
if (options.expanded){
|
||||
$collapse.addClass('items-expanded')
|
||||
} else {
|
||||
$me.find('ul').css('display', 'none');
|
||||
}
|
||||
// expand items which have something
|
||||
$me.find('.contains-items').on('click', function (event) {
|
||||
if ($(event.target).hasClass('contains-items') || $(event.target).parent().hasClass('contains-items')){
|
||||
// expand icon
|
||||
$(this).toggleClass('items-expanded');
|
||||
// the inner list
|
||||
var $a = $(this).find('>ul');
|
||||
// slide effect
|
||||
$a.slideToggle();
|
||||
// stop propagation of inner elements
|
||||
event.stopPropagation();
|
||||
}
|
||||
});
|
||||
},
|
||||
// expand all items
|
||||
expandAll: function() {
|
||||
var items = $me.find('.contains-items');
|
||||
items.find('ul').slideDown();
|
||||
items.addClass('items-expanded');
|
||||
},
|
||||
// collapse all items
|
||||
collapseAll: function() {
|
||||
var items = $me.find('.contains-items');
|
||||
items.find('ul').slideUp();
|
||||
items.removeClass('items-expanded');
|
||||
}
|
||||
}
|
||||
}
|
||||
// treeView jQuery plugin
|
||||
$.fn.treeView = function(options) {
|
||||
// if it's a function arguments
|
||||
var args = (arguments.length > 1) ? Array.prototype.slice.call(arguments, 1) : undefined;
|
||||
// all the elements by selector
|
||||
return this.each(function () {
|
||||
var instance = new treeView($(this));
|
||||
if ( instance[options] ) {
|
||||
// has requested method
|
||||
return instance[options](args);
|
||||
} else {
|
||||
// no method requested, so initialize
|
||||
instance.init(options);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
})(window.jQuery);
|
||||
@@ -0,0 +1,103 @@
|
||||
(function($){
|
||||
|
||||
$.fn.twentytwenty = function(options) {
|
||||
var options = $.extend({default_offset_pct: 0.5, orientation: 'horizontal'}, options);
|
||||
return this.each(function() {
|
||||
|
||||
var sliderPct = options.default_offset_pct;
|
||||
var container = $(this);
|
||||
var sliderOrientation = options.orientation;
|
||||
var beforeDirection = (sliderOrientation === 'vertical') ? 'down' : 'left';
|
||||
var afterDirection = (sliderOrientation === 'vertical') ? 'up' : 'right';
|
||||
|
||||
|
||||
container.wrap("<div class='twentytwenty-wrapper twentytwenty-" + sliderOrientation + "'></div>");
|
||||
container.append("<div class='twentytwenty-overlay'></div>");
|
||||
var beforeImg = container.find("img:first");
|
||||
var afterImg = container.find("img:last");
|
||||
container.append("<div class='twentytwenty-handle'></div>");
|
||||
var slider = container.find(".twentytwenty-handle");
|
||||
slider.append("<span class='twentytwenty-" + beforeDirection + "-arrow'></span>");
|
||||
slider.append("<span class='twentytwenty-" + afterDirection + "-arrow'></span>");
|
||||
container.addClass("twentytwenty-container");
|
||||
beforeImg.addClass("twentytwenty-before");
|
||||
afterImg.addClass("twentytwenty-after");
|
||||
|
||||
var overlay = container.find(".twentytwenty-overlay");
|
||||
overlay.append("<div class='twentytwenty-before-label'></div>");
|
||||
overlay.append("<div class='twentytwenty-after-label'></div>");
|
||||
|
||||
var calcOffset = function(dimensionPct) {
|
||||
var w = beforeImg.width();
|
||||
var h = beforeImg.height();
|
||||
return {
|
||||
w: w+"px",
|
||||
h: h+"px",
|
||||
cw: (dimensionPct*w)+"px",
|
||||
ch: (dimensionPct*h)+"px"
|
||||
};
|
||||
};
|
||||
|
||||
var adjustContainer = function(offset) {
|
||||
if (sliderOrientation === 'vertical') {
|
||||
beforeImg.css("clip", "rect(0,"+offset.w+","+offset.ch+",0)");
|
||||
}
|
||||
else {
|
||||
beforeImg.css("clip", "rect(0,"+offset.cw+","+offset.h+",0)");
|
||||
}
|
||||
container.css("height", offset.h);
|
||||
};
|
||||
|
||||
var adjustSlider = function(pct) {
|
||||
var offset = calcOffset(pct);
|
||||
slider.css((sliderOrientation==="vertical") ? "top" : "left", (sliderOrientation==="vertical") ? offset.ch : offset.cw);
|
||||
adjustContainer(offset);
|
||||
}
|
||||
|
||||
$(window).on("resize.twentytwenty", function(e) {
|
||||
adjustSlider(sliderPct);
|
||||
});
|
||||
|
||||
var offsetX = 0;
|
||||
var imgWidth = 0;
|
||||
|
||||
slider.on("movestart", function(e) {
|
||||
if (((e.distX > e.distY && e.distX < -e.distY) || (e.distX < e.distY && e.distX > -e.distY)) && sliderOrientation !== 'vertical') {
|
||||
e.preventDefault();
|
||||
}
|
||||
else if (((e.distX < e.distY && e.distX < -e.distY) || (e.distX > e.distY && e.distX > -e.distY)) && sliderOrientation === 'vertical') {
|
||||
e.preventDefault();
|
||||
}
|
||||
container.addClass("active");
|
||||
offsetX = container.offset().left;
|
||||
offsetY = container.offset().top;
|
||||
imgWidth = beforeImg.width();
|
||||
imgHeight = beforeImg.height();
|
||||
});
|
||||
|
||||
slider.on("moveend", function(e) {
|
||||
container.removeClass("active");
|
||||
});
|
||||
|
||||
slider.on("move", function(e) {
|
||||
if (container.hasClass("active")) {
|
||||
sliderPct = (sliderOrientation === 'vertical') ? (e.pageY-offsetY)/imgHeight : (e.pageX-offsetX)/imgWidth;
|
||||
if (sliderPct < 0) {
|
||||
sliderPct = 0;
|
||||
}
|
||||
if (sliderPct > 1) {
|
||||
sliderPct = 1;
|
||||
}
|
||||
adjustSlider(sliderPct);
|
||||
}
|
||||
});
|
||||
|
||||
container.find("img").on("mousedown", function(event) {
|
||||
event.preventDefault();
|
||||
});
|
||||
|
||||
$(window).trigger("resize.twentytwenty");
|
||||
});
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
9
application/view/mockup/template/js/dev/libs/plugins/jquery.vide.min.js
vendored
Normal file
9
application/view/mockup/template/js/dev/libs/plugins/jquery.vide.min.js
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
* Vide - v0.5.0
|
||||
* Easy as hell jQuery plugin for video backgrounds.
|
||||
* http://vodkabears.github.io/vide/
|
||||
*
|
||||
* Made by Ilya Makarov
|
||||
* Under MIT License
|
||||
*/
|
||||
!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):b("object"==typeof exports?require("jquery"):a.jQuery)}(this,function(a){"use strict";function b(a){var b,c,d,e,f,g,h,i={};for(f=a.replace(/\s*:\s*/g,":").replace(/\s*,\s*/g,",").split(","),h=0,g=f.length;g>h&&(c=f[h],-1===c.search(/^(http|https|ftp):\/\//)&&-1!==c.search(":"));h++)b=c.indexOf(":"),d=c.substring(0,b),e=c.substring(b+1),e||(e=void 0),"string"==typeof e&&(e="true"===e||("false"===e?!1:e)),"string"==typeof e&&(e=isNaN(e)?e:+e),i[d]=e;return null==d&&null==e?a:i}function c(a){a=""+a;var b,c,d,e=a.split(/\s+/),f="50%",g="50%";for(d=0,b=e.length;b>d;d++)c=e[d],"left"===c?f="0%":"right"===c?f="100%":"top"===c?g="0%":"bottom"===c?g="100%":"center"===c?0===d?f="50%":g="50%":0===d?f=c:g=c;return{x:f,y:g}}function d(b,c){var d=function(){c(this.src)};a('<img src="'+b+'.gif">').load(d),a('<img src="'+b+'.jpg">').load(d),a('<img src="'+b+'.jpeg">').load(d),a('<img src="'+b+'.png">').load(d)}function e(c,d,e){if(this.$element=a(c),"string"==typeof d&&(d=b(d)),e?"string"==typeof e&&(e=b(e)):e={},"string"==typeof d)d=d.replace(/\.\w*$/,"");else if("object"==typeof d)for(var f in d)d.hasOwnProperty(f)&&(d[f]=d[f].replace(/\.\w*$/,""));this.settings=a.extend({},g,e),this.path=d;try{this.init()}catch(i){if(i.message!==h)throw i}}var f="vide",g={volume:1,playbackRate:1,muted:!0,loop:!0,autoplay:!0,position:"50% 50%",posterType:"detect",resizing:!0,bgColor:"transparent",className:""},h="Not implemented";e.prototype.init=function(){var b,e,g=this,i=g.path,j=i,k="",l=g.$element,m=g.settings,n=c(m.position),o=m.posterType;e=g.$wrapper=a("<div>").addClass(m.className).css({position:"absolute","z-index":-1,top:0,left:0,bottom:0,right:0,overflow:"hidden","-webkit-background-size":"cover","-moz-background-size":"cover","-o-background-size":"cover","background-size":"cover","background-color":m.bgColor,"background-repeat":"no-repeat","background-position":n.x+" "+n.y}),"object"==typeof i&&(i.poster?j=i.poster:i.mp4?j=i.mp4:i.webm?j=i.webm:i.ogv&&(j=i.ogv)),"detect"===o?d(j,function(a){e.css("background-image","url("+a+")")}):"none"!==o&&e.css("background-image","url("+j+"."+o+")"),"static"===l.css("position")&&l.css("position","relative"),l.prepend(e),"object"==typeof i?(i.mp4&&(k+='<source src="'+i.mp4+'.mp4" type="video/mp4">'),i.webm&&(k+='<source src="'+i.webm+'.webm" type="video/webm">'),i.ogv&&(k+='<source src="'+i.ogv+'.ogv" type="video/ogg">'),b=g.$video=a("<video>"+k+"</video>")):b=g.$video=a('<video><source src="'+i+'.mp4" type="video/mp4"><source src="'+i+'.webm" type="video/webm"><source src="'+i+'.ogv" type="video/ogg"></video>');try{b.prop({autoplay:m.autoplay,loop:m.loop,volume:m.volume,muted:m.muted,defaultMuted:m.muted,playbackRate:m.playbackRate,defaultPlaybackRate:m.playbackRate})}catch(p){throw new Error(h)}b.css({margin:"auto",position:"absolute","z-index":-1,top:n.y,left:n.x,"-webkit-transform":"translate(-"+n.x+", -"+n.y+")","-ms-transform":"translate(-"+n.x+", -"+n.y+")","-moz-transform":"translate(-"+n.x+", -"+n.y+")",transform:"translate(-"+n.x+", -"+n.y+")",visibility:"hidden",opacity:0}).one("canplaythrough."+f,function(){g.resize()}).one("playing."+f,function(){b.css({visibility:"visible",opacity:1}),e.css("background-image","none")}),l.on("resize."+f,function(){m.resizing&&g.resize()}),e.append(b)},e.prototype.getVideoObject=function(){return this.$video[0]},e.prototype.resize=function(){if(this.$video){var a=this.$wrapper,b=this.$video,c=b[0],d=c.videoHeight,e=c.videoWidth,f=a.height(),g=a.width();g/e>f/d?b.css({width:g+2,height:"auto"}):b.css({width:"auto",height:f+2})}},e.prototype.destroy=function(){delete a[f].lookup[this.index],this.$video&&this.$video.off(f),this.$element.off(f).removeData(f),this.$wrapper.remove()},a[f]={lookup:[]},a.fn[f]=function(b,c){var d;return this.each(function(){d=a.data(this,f),d&&d.destroy(),d=new e(this,b,c),d.index=a[f].lookup.push(d)-1,a.data(this,f,d)}),this},a(document).ready(function(){var b=a(window);b.on("resize."+f,function(){for(var b,c=a[f].lookup.length,d=0;c>d;d++)b=a[f].lookup[d],b&&b.settings.resizing&&b.resize()}),b.on("unload."+f,function(){return!1}),a(document).find("[data-"+f+"-bg]").each(function(b,c){var d=a(c),e=d.data(f+"-options"),g=d.data(f+"-bg");d[f](g,e)})})});
|
||||
@@ -0,0 +1,516 @@
|
||||
/*
|
||||
* YouTube TV
|
||||
*
|
||||
* Copyright 2013, Jacob Kelley - http://jakiestfu.com/
|
||||
* Released under the MIT Licence
|
||||
* http://opensource.org/licenses/MIT
|
||||
*
|
||||
* Github:
|
||||
* Version: 3.0.3
|
||||
*/
|
||||
/*jslint browser: true, undef:true, unused:true, laxbreak:true, loopfunc:true*/
|
||||
/*global define, module, ender */
|
||||
|
||||
(function(win, doc) {
|
||||
'use strict';
|
||||
var YTV = YTV || function(id, opts){
|
||||
|
||||
var noop = function(){},
|
||||
settings = {
|
||||
element: null,
|
||||
apiKey: '',
|
||||
user: null,
|
||||
channelId: null,
|
||||
fullscreen: false,
|
||||
accent: '#fff',
|
||||
controls: true,
|
||||
annotations: false,
|
||||
autoplay: false,
|
||||
chainVideos: true,
|
||||
browsePlaylists: false,
|
||||
playerTheme: 'dark',
|
||||
listTheme: 'dark',
|
||||
responsive: false,
|
||||
playId:'',
|
||||
wmode: 'opaque',
|
||||
events: {
|
||||
videoReady: noop,
|
||||
stateChange: noop
|
||||
}
|
||||
},
|
||||
|
||||
cache = {},
|
||||
utils = {
|
||||
events: {
|
||||
addEvent: function addEvent(element, eventName, func) {
|
||||
if (element.addEventListener) {
|
||||
return element.addEventListener(eventName, func, false);
|
||||
} else if (element.attachEvent) {
|
||||
return element.attachEvent("on" + eventName, func);
|
||||
}
|
||||
},
|
||||
removeEvent: function addEvent(element, eventName, func) {
|
||||
if (element.addEventListener) {
|
||||
return element.removeEventListener(eventName, func, false);
|
||||
} else if (element.attachEvent) {
|
||||
return element.detachEvent("on" + eventName, func);
|
||||
}
|
||||
},
|
||||
prevent: function(e) {
|
||||
if (e.preventDefault) {
|
||||
e.preventDefault();
|
||||
} else {
|
||||
e.returnValue = false;
|
||||
}
|
||||
}
|
||||
},
|
||||
addCSS: function(css){
|
||||
var head = doc.getElementsByTagName('head')[0],
|
||||
style = doc.createElement('style');
|
||||
style.type = 'text/css';
|
||||
if (style.styleSheet){
|
||||
style.styleSheet.cssText = css;
|
||||
} else {
|
||||
style.appendChild(doc.createTextNode(css));
|
||||
}
|
||||
head.appendChild(style);
|
||||
},
|
||||
addCommas: function(str){
|
||||
var x = str.split('.'),
|
||||
x1 = x[0],
|
||||
x2 = x.length > 1 ? '.' + x[1] : '',
|
||||
rgx = /(\d+)(\d{3})/;
|
||||
while (rgx.test(x1)) {
|
||||
x1 = x1.replace(rgx, '$1' + ',' + '$2');
|
||||
}
|
||||
return x1 + x2;
|
||||
},
|
||||
parentUntil: function(el, attr) {
|
||||
while (el.parentNode) {
|
||||
if (el.getAttribute && el.getAttribute(attr)){
|
||||
return el;
|
||||
}
|
||||
el = el.parentNode;
|
||||
}
|
||||
return null;
|
||||
},
|
||||
ajax: {
|
||||
get: function(url, fn){
|
||||
var handle;
|
||||
if (win.XMLHttpRequest){
|
||||
handle = new XMLHttpRequest();
|
||||
} else {
|
||||
handle = new ActiveXObject("Microsoft.XMLHTTP"); // Not used anymore, only for ancient versions of IE.
|
||||
}
|
||||
handle.onreadystatechange = function(){
|
||||
if (handle.readyState === 4 && handle.status === 200){
|
||||
fn.call(this, JSON.parse(handle.responseText));
|
||||
}
|
||||
};
|
||||
handle.open("GET",url,true);
|
||||
handle.send();
|
||||
}
|
||||
},
|
||||
endpoints: {
|
||||
base: 'https://www.googleapis.com/youtube/v3/',
|
||||
userInfo: function(){
|
||||
return utils.endpoints.base+'channels?'+settings.cid+'&key='+settings.apiKey+'&part=snippet,contentDetails,statistics';
|
||||
},
|
||||
playlistInfo: function(pid){
|
||||
return utils.endpoints.base+'playlists?id='+pid+'&key='+settings.apiKey+'&maxResults=50&part=snippet';
|
||||
},
|
||||
userPlaylists: function(){
|
||||
return utils.endpoints.base+'playlists?channelId='+settings.channelId+'&key='+settings.apiKey+'&maxResults=50&part=snippet';
|
||||
},
|
||||
playlistVids: function(){
|
||||
return utils.endpoints.base+'playlistItems?playlistId='+settings.pid+'&key='+settings.apiKey+'&maxResults=50&part=contentDetails';
|
||||
},
|
||||
videoInfo: function(){
|
||||
return utils.endpoints.base+'videos?id='+settings.videoString+'&key='+settings.apiKey+'&maxResults=50&part=snippet,contentDetails,status,statistics';
|
||||
}
|
||||
},
|
||||
deepExtend: function(destination, source) {
|
||||
var property;
|
||||
for (property in source) {
|
||||
if (source[property] && source[property].constructor && source[property].constructor === Object) {
|
||||
destination[property] = destination[property] || {};
|
||||
utils.deepExtend(destination[property], source[property]);
|
||||
} else {
|
||||
destination[property] = source[property];
|
||||
}
|
||||
}
|
||||
return destination;
|
||||
}
|
||||
},
|
||||
prepare = {
|
||||
youtube: function(){
|
||||
if(typeof YT=='undefined'){
|
||||
var tag = doc.createElement('script');
|
||||
tag.src = "https://www.youtube.com/iframe_api";
|
||||
var firstScriptTag = doc.getElementsByTagName('script')[0];
|
||||
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
|
||||
}
|
||||
},
|
||||
build: function(){
|
||||
if (settings.channelId){
|
||||
settings.cid = 'id='+settings.channelId;
|
||||
} else if(settings.user){
|
||||
settings.cid = 'forUsername='+settings.user;
|
||||
}
|
||||
settings.element.className = "ytv-canvas";
|
||||
if(settings.fullscreen){
|
||||
settings.element.className += " ytv-full";
|
||||
}
|
||||
utils.addCSS( '#'+id+' .ytv-list .ytv-active a{border-left-color: '+(settings.accent)+';}' );
|
||||
// Responsive CSS
|
||||
if(settings.responsive){
|
||||
utils.addCSS('#'+id+' .ytv-video{'
|
||||
+'position: relative; padding-bottom: 39.4%; /* 16:9 of 70%*/'
|
||||
+'height: 0; width: 70%;'
|
||||
+'} #'+id+' .ytv-video iframe{'
|
||||
+'position: absolute; top: 0; left: 0;'
|
||||
+'} #'+id+' .ytv-list{'
|
||||
+'width: 30%;'
|
||||
+'} #'+id+' .ytv-playlist-open .ytv-arrow{'
|
||||
+'top: 0px;}'
|
||||
+'@media only screen and (max-width:992px) {'
|
||||
+'#'+id+' .ytv-list{'
|
||||
+'position: relative; display: block;'
|
||||
+'width: 0; padding-bottom: 40%;'
|
||||
+'left: auto; right: auto;'
|
||||
+'top: auto; width: 100%;'
|
||||
+'} #'+id+' .ytv-video{'
|
||||
+'position: relative; padding-bottom: 56.25%; /* 16:9 */'
|
||||
+'height: 0; position: relative;'
|
||||
+'display: block; left: auto;'
|
||||
+'right: auto; top: auto; width: 100%;'
|
||||
+'}}'
|
||||
);
|
||||
}
|
||||
// Temp Scroll Bar fix
|
||||
if (settings.listTheme == 'dark'){
|
||||
utils.addCSS( ' #'+id+'.ytv-canvas ::-webkit-scrollbar{border-left: 1px solid #000;}'
|
||||
+ ' #'+id+'.ytv-canvas ::-webkit-scrollbar-thumb{background: rgba(255,255,255,0.2);}');
|
||||
}
|
||||
// Optional Light List Theme
|
||||
if(settings.listTheme == 'light'){
|
||||
utils.addCSS( ' #'+id+'.ytv-canvas{background: #ccc;}'
|
||||
+ ' #'+id+'.ytv-canvas ::-webkit-scrollbar{border-left: 1px solid rgba(28,28,28,0.1);}'
|
||||
+ ' #'+id+'.ytv-canvas ::-webkit-scrollbar-thumb{background: rgba(28,28,28,0.3);}'
|
||||
+ ' #'+id+' .ytv-list .ytv-active a{background: rgba(0,0,0,0.2);}'
|
||||
+ ' #'+id+' .ytv-list a{color: #282828; border-top: 1px solid rgba(0,0,0,0.1); border-bottom: 1px solid rgba(204,204,204,0.5);}'
|
||||
+ ' #'+id+' .ytv-list a:hover, #'+id+' .ytv-list-header .ytv-playlists a:hover{ background: rgba(0,0,0,0.2);}'
|
||||
+ ' #'+id+' .ytv-list a:active, #'+id+' .ytv-list-header .ytv-playlists a:active{ background: rgba(0,0,0,0.2);}'
|
||||
+ ' #'+id+' .ytv-list .ytv-thumb-stroke{outline: 1px solid rgba(0,0,0,0.1);}'
|
||||
+ ' #'+id+' .ytv-list .ytv-thumb{outline: 1px solid rgba(255,255,255,0.5);}'
|
||||
+ ' #'+id+' .ytv-list-header{-webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.2); -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.2); box-shadow: 0 1px 2px rgba(255, 255, 255, 0.2);}'
|
||||
+ ' #'+id+' .ytv-list-header a{background: rgba(0,0,0,0.2);}'
|
||||
+ ' #'+id+' .ytv-playlists{background: #ccc;}'
|
||||
);
|
||||
}
|
||||
},
|
||||
userUploads: function(userInfo){
|
||||
if (userInfo && userInfo.items){
|
||||
settings.pid = userInfo.items[0].contentDetails.relatedPlaylists.uploads;
|
||||
utils.ajax.get( utils.endpoints.playlistVids(), prepare.compileVideos );
|
||||
}
|
||||
},
|
||||
selectedPlaylist: function(playlistInfo){
|
||||
if (playlistInfo && playlistInfo.items) {
|
||||
if (!settings.channelId && !settings.user){
|
||||
settings.cid = ('id='+(settings.channelId = playlistInfo.items[0].snippet.channelId));
|
||||
}
|
||||
settings.currentPlaylist = playlistInfo.items[0].snippet.title;
|
||||
settings.pid = playlistInfo.items[0].id;
|
||||
utils.ajax.get( utils.endpoints.playlistVids(), prepare.compileVideos );
|
||||
}
|
||||
},
|
||||
compileVideos: function(res){
|
||||
if (res && res.items){
|
||||
var playlists = res.items,
|
||||
i;
|
||||
settings.videoString = '';
|
||||
for(i=0; i<playlists.length; i++){
|
||||
settings.videoString += playlists[i].contentDetails.videoId;
|
||||
if (i<playlists.length-1){ settings.videoString += ',';}
|
||||
}
|
||||
utils.ajax.get( utils.endpoints.videoInfo(), prepare.compileList );
|
||||
}
|
||||
},
|
||||
playlists: function(res){
|
||||
if(res && res.items){
|
||||
var list = '<div class="ytv-playlists"><ul>',
|
||||
playlists = res.items,
|
||||
i;
|
||||
for(i=0; i<playlists.length; i++){
|
||||
var data = {
|
||||
title: playlists[i].snippet.title,
|
||||
plid: playlists[i].id,
|
||||
thumb: playlists[i].snippet.thumbnails.medium.url
|
||||
};
|
||||
list += '<a href="#" data-ytv-playlist="'+(data.plid)+'">';
|
||||
list += '<div class="ytv-thumb"><div class="ytv-thumb-stroke"></div><img src="'+(data.thumb)+'"></div>';
|
||||
list += '<span>'+(data.title)+'</span>';
|
||||
list += '</a>';
|
||||
}
|
||||
list += '</ul></div>';
|
||||
|
||||
var lh = settings.element.getElementsByClassName('ytv-list-header')[0],
|
||||
headerLink = lh.children[0];
|
||||
headerLink.href="#";
|
||||
headerLink.target="";
|
||||
headerLink.setAttribute('data-ytv-playlist-toggle', 'true');
|
||||
settings.element.getElementsByClassName('ytv-list-header')[0].innerHTML += list;
|
||||
lh.className += ' ytv-has-playlists';
|
||||
}
|
||||
},
|
||||
compileList: function(data){
|
||||
if(data && data.items){
|
||||
utils.ajax.get( utils.endpoints.userInfo(), function(userInfo){
|
||||
var list = '',
|
||||
user = {
|
||||
title: userInfo.items[0].snippet.title,
|
||||
url: '//youtube.com/channel/'+userInfo.items[0].id,
|
||||
thumb: userInfo.items[0].snippet.thumbnails.default.url,
|
||||
summary: userInfo.items[0].snippet.description,
|
||||
subscribers: userInfo.items[0].statistics.subscriberCount,
|
||||
views: userInfo.items[0].statistics.viewCount
|
||||
},
|
||||
videos = data.items,
|
||||
first = true,
|
||||
i;
|
||||
settings.channelId = userInfo.items[0].id;
|
||||
if(settings.currentPlaylist){
|
||||
user.title += ' · '+(settings.currentPlaylist);
|
||||
}
|
||||
list += '<div class="ytv-list-header">';
|
||||
list += '<a href="'+(user.url)+'" target="_blank">';
|
||||
list += '<img src="'+(user.thumb)+'">';
|
||||
list += '<span><i class="ytv-arrow down"></i>'+(user.title)+'</span>';
|
||||
list += '</a>';
|
||||
list += '</div>';
|
||||
|
||||
list += '<div class="ytv-list-inner"><ul>';
|
||||
for(i=0; i<videos.length; i++){
|
||||
if(videos[i].status.embeddable){
|
||||
var video = {
|
||||
title: videos[i].snippet.title,
|
||||
slug: videos[i].id,
|
||||
link: 'https://www.youtube.com/watch?v='+videos[i].id,
|
||||
published: videos[i].snippet.publishedAt,
|
||||
stats: videos[i].statistics,
|
||||
duration: (videos[i].contentDetails.duration),
|
||||
thumb: videos[i].snippet.thumbnails.medium.url
|
||||
};
|
||||
|
||||
var durationString = video.duration.match(/[0-9]+[HMS]/g);
|
||||
var h = 0, m = 0, s = 0, time = '';
|
||||
durationString.forEach(function (duration) {
|
||||
var unit = duration.charAt(duration.length-1);
|
||||
var amount = parseInt(duration.slice(0,-1));
|
||||
switch (unit) {
|
||||
case 'H': h = (amount > 9 ? '' + amount : '0' + amount); break;
|
||||
case 'M': m = (amount > 9 ? '' + amount : '0' + amount); break;
|
||||
case 'S': s = (amount > 9 ? '' + amount : '0' + amount); break;
|
||||
}
|
||||
});
|
||||
if (h){ time += h+':';}
|
||||
if (m){ time += m+':';} else { time += '00:';}
|
||||
if (s){ time += s;} else { time += '00';}
|
||||
|
||||
var isFirst = '';
|
||||
if(settings.playId==video.slug){
|
||||
isFirst = ' class="ytv-active"';
|
||||
first = video.slug;
|
||||
} else if(first===true){
|
||||
first = video.slug;
|
||||
}
|
||||
|
||||
list += '<li'+isFirst+'><a href="#" data-ytv="'+(video.slug)+'" class="ytv-clear">';
|
||||
list += '<div class="ytv-thumb"><div class="ytv-thumb-stroke"></div><span>'+(time)+'</span><img src="'+(video.thumb)+'"></div>';
|
||||
list += '<div class="ytv-content"><b>'+(video.title)+'</b>';
|
||||
if (video.stats)
|
||||
{
|
||||
list+='</b><span class="ytv-views">'+utils.addCommas(video.stats.viewCount)+' Views</span>';
|
||||
}
|
||||
list += '</div></a></li>';
|
||||
}
|
||||
}
|
||||
list += '</ul></div>';
|
||||
settings.element.innerHTML = '<div class="ytv-relative"><div class="ytv-video"><div id="ytv-video-player"></div></div><div class="ytv-list">'+list+'</div></div>';
|
||||
if(settings.element.getElementsByClassName('ytv-active').length===0){
|
||||
settings.element.getElementsByTagName('li')[0].className = "ytv-active";
|
||||
}
|
||||
action.logic.loadVideo(first, settings.autoplay);
|
||||
|
||||
if (settings.playlist){
|
||||
utils.ajax.get( utils.endpoints.playlistInfo(settings.playlist), prepare.playlists );
|
||||
} else if(settings.browsePlaylists){
|
||||
utils.ajax.get( utils.endpoints.userPlaylists(), prepare.playlists );
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
action = {
|
||||
|
||||
logic: {
|
||||
|
||||
playerStateChange: function(d){
|
||||
console.log(d);
|
||||
},
|
||||
|
||||
loadVideo: function(slug, autoplay){
|
||||
var house = settings.element.getElementsByClassName('ytv-video')[0];
|
||||
var counter = settings.element.getElementsByClassName('ytv-video-playerContainer').length;
|
||||
house.innerHTML = '<div id="ytv-video-player'+id+counter+'" class="ytv-video-playerContainer"></div>';
|
||||
|
||||
cache.player = new YT.Player('ytv-video-player'+id+counter, {
|
||||
videoId: slug,
|
||||
events: {
|
||||
onReady: settings.events.videoReady,
|
||||
onStateChange: function(e){
|
||||
if( (e.target.getPlayerState()===0) && settings.chainVideos ){
|
||||
var ns = settings.element.getElementsByClassName('ytv-active')[0].nextSibling,
|
||||
link = ns.children[0];
|
||||
link.click();
|
||||
}
|
||||
settings.events.stateChange.call(this, e);
|
||||
}
|
||||
},
|
||||
playerVars: {
|
||||
enablejsapi: 1,
|
||||
origin: doc.domain,
|
||||
controls: settings.controls ? 1 : 0,
|
||||
rel: 0,
|
||||
showinfo: 0,
|
||||
iv_load_policy: settings.annotations ? '' : 3,
|
||||
autoplay: autoplay ? 1 : 0,
|
||||
theme: settings.playerTheme,
|
||||
wmode: settings.wmode
|
||||
}
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
endpoints: {
|
||||
videoClick: function(e){
|
||||
var target = utils.parentUntil(e.target ? e.target : e.srcElement, 'data-ytv');
|
||||
if(target){
|
||||
if(target.getAttribute('data-ytv')){
|
||||
// Load Video
|
||||
utils.events.prevent(e);
|
||||
var activeEls = settings.element.getElementsByClassName('ytv-active'),
|
||||
i;
|
||||
for(i=0; i<activeEls.length; i++){
|
||||
activeEls[i].className="";
|
||||
}
|
||||
target.parentNode.className="ytv-active";
|
||||
action.logic.loadVideo(target.getAttribute('data-ytv'), true);
|
||||
}
|
||||
}
|
||||
},
|
||||
playlistToggle: function(e){
|
||||
var target = utils.parentUntil(e.target ? e.target : e.srcElement, 'data-ytv-playlist-toggle');
|
||||
if(target && target.getAttribute('data-ytv-playlist-toggle')){
|
||||
// Toggle Playlist
|
||||
utils.events.prevent(e);
|
||||
var lh = settings.element.getElementsByClassName('ytv-list-header')[0];
|
||||
if(lh.className.indexOf('ytv-playlist-open')===-1){
|
||||
lh.className += ' ytv-playlist-open';
|
||||
} else {
|
||||
lh.className = lh.className.replace(' ytv-playlist-open', '');
|
||||
}
|
||||
}
|
||||
},
|
||||
playlistClick: function(e){
|
||||
var target = utils.parentUntil(e.target ? e.target : e.srcElement, 'data-ytv-playlist');
|
||||
|
||||
if(target && target.getAttribute('data-ytv-playlist')){
|
||||
|
||||
// Load Playlist
|
||||
utils.events.prevent(e);
|
||||
|
||||
settings.pid = target.getAttribute('data-ytv-playlist');
|
||||
target.children[1].innerHTML = 'Loading...';
|
||||
|
||||
utils.ajax.get( utils.endpoints.playlistInfo(settings.pid), function(res){
|
||||
var lh = settings.element.getElementsByClassName('ytv-list-header')[0];
|
||||
lh.className = lh.className.replace(' ytv-playlist-open', '');
|
||||
prepare.selectedPlaylist(res);
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
bindEvents: function(){
|
||||
utils.events.addEvent( settings.element, 'click', action.endpoints.videoClick );
|
||||
utils.events.addEvent( settings.element, 'click', action.endpoints.playlistToggle );
|
||||
utils.events.addEvent( settings.element, 'click', action.endpoints.playlistClick );
|
||||
}
|
||||
},
|
||||
|
||||
initialize = function(id, opts){
|
||||
utils.deepExtend(settings, opts);
|
||||
settings.element = (typeof id==='string') ? doc.getElementById(id) : id;
|
||||
if(settings.element && (settings.user || settings.channelId || settings.playlist)){
|
||||
prepare.youtube();
|
||||
prepare.build();
|
||||
action.bindEvents();
|
||||
if (settings.playlist) {
|
||||
utils.ajax.get( utils.endpoints.playlistInfo(settings.playlist), prepare.selectedPlaylist );
|
||||
} else {
|
||||
utils.ajax.get( utils.endpoints.userInfo(), prepare.userUploads );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* Public */
|
||||
|
||||
this.destroy = function(){
|
||||
utils.events.removeEvent( settings.element, 'click', action.endpoints.videoClick );
|
||||
utils.events.removeEvent( settings.element, 'click', action.endpoints.playlistToggle );
|
||||
utils.events.removeEvent( settings.element, 'click', action.endpoints.playlistClick );
|
||||
settings.element.className = '';
|
||||
settings.element.innerHTML = '';
|
||||
};
|
||||
this.fullscreen = {
|
||||
state: function(){
|
||||
return (settings.element.className).indexOf('ytv-full') !== -1;
|
||||
},
|
||||
enter: function(){
|
||||
if( (settings.element.className).indexOf('ytv-full') === -1 ){
|
||||
settings.element.className += 'ytv-full';
|
||||
}
|
||||
},
|
||||
exit: function(){
|
||||
if( (settings.element.className).indexOf('ytv-full') !== -1 ){
|
||||
settings.element.className = (settings.element.className).replace('ytv-full', '');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
initialize(id, opts);
|
||||
};
|
||||
|
||||
if ((typeof module !== 'undefined') && module.exports) {
|
||||
module.exports = YTV;
|
||||
}
|
||||
if (typeof ender === 'undefined') {
|
||||
this.YTV = YTV;
|
||||
}
|
||||
if ((typeof define === "function") && define.amd) {
|
||||
define("YTV", [], function() {
|
||||
return YTV;
|
||||
});
|
||||
}
|
||||
if ((typeof jQuery !== 'undefined')) {
|
||||
jQuery.fn.extend({
|
||||
ytv: function(options) {
|
||||
return this.each(function() {
|
||||
new YTV(this.id, options);
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
}).call(this, window, document);
|
||||
@@ -0,0 +1,35 @@
|
||||
/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+applescript+aspnet+c+csharp+cpp+coffeescript+css-extras+git+haml+handlebars+jade+java+less+markdown+objectivec+perl+php+php-extras+python+jsx+ruby+scss+scheme+smarty+sql+stylus+swift+typescript&plugins=line-numbers */
|
||||
self="undefined"!=typeof window?window:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{};var Prism=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=self.Prism={util:{encode:function(e){return e instanceof n?new n(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/</g,"<").replace(/\u00a0/g," ")},type:function(e){return Object.prototype.toString.call(e).match(/\[object (\w+)\]/)[1]},clone:function(e){var n=t.util.type(e);switch(n){case"Object":var a={};for(var r in e)e.hasOwnProperty(r)&&(a[r]=t.util.clone(e[r]));return a;case"Array":return e.map(function(e){return t.util.clone(e)})}return e}},languages:{extend:function(e,n){var a=t.util.clone(t.languages[e]);for(var r in n)a[r]=n[r];return a},insertBefore:function(e,n,a,r){r=r||t.languages;var i=r[e];if(2==arguments.length){a=arguments[1];for(var l in a)a.hasOwnProperty(l)&&(i[l]=a[l]);return i}var s={};for(var o in i)if(i.hasOwnProperty(o)){if(o==n)for(var l in a)a.hasOwnProperty(l)&&(s[l]=a[l]);s[o]=i[o]}return t.languages.DFS(t.languages,function(t,n){n===r[e]&&t!=e&&(this[t]=s)}),r[e]=s},DFS:function(e,n,a){for(var r in e)e.hasOwnProperty(r)&&(n.call(e,r,e[r],a||r),"Object"===t.util.type(e[r])?t.languages.DFS(e[r],n):"Array"===t.util.type(e[r])&&t.languages.DFS(e[r],n,r))}},highlightAll:function(e,n){for(var a,r=document.querySelectorAll('code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'),i=0;a=r[i++];)t.highlightElement(a,e===!0,n)},highlightElement:function(a,r,i){for(var l,s,o=a;o&&!e.test(o.className);)o=o.parentNode;if(o&&(l=(o.className.match(e)||[,""])[1],s=t.languages[l]),s){a.className=a.className.replace(e,"").replace(/\s+/g," ")+" language-"+l,o=a.parentNode,/pre/i.test(o.nodeName)&&(o.className=o.className.replace(e,"").replace(/\s+/g," ")+" language-"+l);var u=a.textContent;if(u){u=u.replace(/^(?:\r?\n|\r)/,"");var g={element:a,language:l,grammar:s,code:u};if(t.hooks.run("before-highlight",g),r&&self.Worker){var c=new Worker(t.filename);c.onmessage=function(e){g.highlightedCode=n.stringify(JSON.parse(e.data),l),t.hooks.run("before-insert",g),g.element.innerHTML=g.highlightedCode,i&&i.call(g.element),t.hooks.run("after-highlight",g)},c.postMessage(JSON.stringify({language:g.language,code:g.code}))}else g.highlightedCode=t.highlight(g.code,g.grammar,g.language),t.hooks.run("before-insert",g),g.element.innerHTML=g.highlightedCode,i&&i.call(a),t.hooks.run("after-highlight",g)}}},highlight:function(e,a,r){var i=t.tokenize(e,a);return n.stringify(t.util.encode(i),r)},tokenize:function(e,n){var a=t.Token,r=[e],i=n.rest;if(i){for(var l in i)n[l]=i[l];delete n.rest}e:for(var l in n)if(n.hasOwnProperty(l)&&n[l]){var s=n[l];s="Array"===t.util.type(s)?s:[s];for(var o=0;o<s.length;++o){var u=s[o],g=u.inside,c=!!u.lookbehind,f=0,h=u.alias;u=u.pattern||u;for(var p=0;p<r.length;p++){var d=r[p];if(r.length>e.length)break e;if(!(d instanceof a)){u.lastIndex=0;var m=u.exec(d);if(m){c&&(f=m[1].length);var y=m.index-1+f,m=m[0].slice(f),v=m.length,k=y+v,b=d.slice(0,y+1),w=d.slice(k+1),N=[p,1];b&&N.push(b);var O=new a(l,g?t.tokenize(m,g):m,h);N.push(O),w&&N.push(w),Array.prototype.splice.apply(r,N)}}}}}return r},hooks:{all:{},add:function(e,n){var a=t.hooks.all;a[e]=a[e]||[],a[e].push(n)},run:function(e,n){var a=t.hooks.all[e];if(a&&a.length)for(var r,i=0;r=a[i++];)r(n)}}},n=t.Token=function(e,t,n){this.type=e,this.content=t,this.alias=n};if(n.stringify=function(e,a,r){if("string"==typeof e)return e;if("Array"===t.util.type(e))return e.map(function(t){return n.stringify(t,a,e)}).join("");var i={type:e.type,content:n.stringify(e.content,a,r),tag:"span",classes:["token",e.type],attributes:{},language:a,parent:r};if("comment"==i.type&&(i.attributes.spellcheck="true"),e.alias){var l="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(i.classes,l)}t.hooks.run("wrap",i);var s="";for(var o in i.attributes)s+=o+'="'+(i.attributes[o]||"")+'"';return"<"+i.tag+' class="'+i.classes.join(" ")+'" '+s+">"+i.content+"</"+i.tag+">"},!self.document)return self.addEventListener?(self.addEventListener("message",function(e){var n=JSON.parse(e.data),a=n.language,r=n.code;self.postMessage(JSON.stringify(t.util.encode(t.tokenize(r,t.languages[a])))),self.close()},!1),self.Prism):self.Prism;var a=document.getElementsByTagName("script");return a=a[a.length-1],a&&(t.filename=a.src,document.addEventListener&&!a.hasAttribute("data-manual")&&document.addEventListener("DOMContentLoaded",t.highlightAll)),self.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=Prism);;
|
||||
Prism.languages.markup={comment:/<!--[\w\W]*?-->/,prolog:/<\?.+?\?>/,doctype:/<!DOCTYPE.+?>/,cdata:/<!\[CDATA\[[\w\W]*?]]>/i,tag:{pattern:/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+))?\s*)*\/?>/i,inside:{tag:{pattern:/^<\/?[\w:-]+/i,inside:{punctuation:/^<\/?/,namespace:/^[\w-]+?:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/=|>|"/}},punctuation:/\/?>/,"attr-name":{pattern:/[\w:-]+/,inside:{namespace:/^[\w-]+?:/}}}},entity:/&#?[\da-z]{1,8};/i},Prism.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))});;
|
||||
Prism.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{punctuation:/[;:]/}},url:/url\((?:(["'])(\\\n|\\?.)*?\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*(?=\s*\{)/,string:/("|')(\\\n|\\?.)*?\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,punctuation:/[\{\};:]/,"function":/[-a-z0-9]+(?=\()/i},Prism.languages.markup&&(Prism.languages.insertBefore("markup","tag",{style:{pattern:/<style[\w\W]*?>[\w\W]*?<\/style>/i,inside:{tag:{pattern:/<style[\w\W]*?>|<\/style>/i,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.css},alias:"language-css"}}),Prism.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:Prism.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:Prism.languages.css}},alias:"language-css"}},Prism.languages.markup.tag));;
|
||||
Prism.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.+/,lookbehind:!0}],string:/("|')(\\\n|\\?.)*?\1/,"class-name":{pattern:/((?:(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":{pattern:/[a-z0-9_]+\(/i,inside:{punctuation:/\(/}},number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/,ignore:/&(lt|gt|amp);/i,punctuation:/[{}[\];(),.:]/};;
|
||||
Prism.languages.javascript=Prism.languages.extend("clike",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|-?Infinity)\b/,"function":/(?!\d)[a-z0-9_$]+(?=\()/i}),Prism.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),Prism.languages.markup&&Prism.languages.insertBefore("markup","tag",{script:{pattern:/<script[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<script[\w\W]*?>|<\/script>/i,inside:Prism.languages.markup.tag.inside},rest:Prism.languages.javascript},alias:"language-javascript"}});;
|
||||
Prism.languages.applescript={comment:[/\(\*[\w\W]*?\*\)/,/--.+/,/#.+/],string:/"(?:\\?.)*?"/,operator:[/[&=≠≤≥*+\-\/÷^]|[<>]=?/,/\b(?:(?:start|begin|end)s? with|(?:(?:does not|doesn't) contain|contains?)|(?:is|isn't|is not) (?:in|contained by)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:(?:does not|doesn't) come|comes) (?:before|after)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equals|equal to|isn't|is not)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|or|div|mod|as|not))\b/],keyword:/\b(?:about|above|after|against|and|apart from|around|as|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|contain|contains|continue|copy|div|does|eighth|else|end|equal|equals|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|mod|my|ninth|not|of|on|onto|or|out of|over|prop|property|put|ref|reference|repeat|return|returning|script|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\b/,"class":{pattern:/\b(?:alias|application|boolean|class|constant|date|file|integer|list|number|POSIX file|real|record|reference|RGB color|script|text|centimetres|centimeters|feet|inches|kilometres|kilometers|metres|meters|miles|yards|square feet|square kilometres|square kilometers|square metres|square meters|square miles|square yards|cubic centimetres|cubic centimeters|cubic feet|cubic inches|cubic metres|cubic meters|cubic yards|gallons|litres|liters|quarts|grams|kilograms|ounces|pounds|degrees Celsius|degrees Fahrenheit|degrees Kelvin)\b/,alias:"builtin"},number:/\b-?\d*\.?\d+([Ee]-?\d+)?\b/,punctuation:/[{}():,¬«»《》]/};;
|
||||
Prism.languages.aspnet=Prism.languages.extend("markup",{"page-directive tag":{pattern:/<%\s*@.*%>/i,inside:{"page-directive tag":/<%\s*@\s*(?:Assembly|Control|Implements|Import|Master|MasterType|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,rest:Prism.languages.markup.tag.inside}},"directive tag":{pattern:/<%.*%>/i,inside:{"directive tag":/<%\s*?[$=%#:]{0,2}|%>/i,rest:Prism.languages.csharp}}}),Prism.languages.insertBefore("inside","punctuation",{"directive tag":Prism.languages.aspnet["directive tag"]},Prism.languages.aspnet.tag.inside["attr-value"]),Prism.languages.insertBefore("aspnet","comment",{"asp comment":/<%--[\w\W]*?--%>/}),Prism.languages.insertBefore("aspnet",Prism.languages.javascript?"script":"tag",{"asp script":{pattern:/<script(?=.*runat=['"]?server['"]?)[\w\W]*?>[\w\W]*?<\/script>/i,inside:{tag:{pattern:/<\/?script\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/i,inside:Prism.languages.aspnet.tag.inside},rest:Prism.languages.csharp||{}}}}),Prism.languages.aspnet.style&&(Prism.languages.aspnet.style.inside.tag.pattern=/<\/?style\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|\w+))?\s*)*\/?>/i,Prism.languages.aspnet.style.inside.tag.inside=Prism.languages.aspnet.tag.inside),Prism.languages.aspnet.script&&(Prism.languages.aspnet.script.inside.tag.pattern=Prism.languages.aspnet["asp script"].inside.tag.pattern,Prism.languages.aspnet.script.inside.tag.inside=Prism.languages.aspnet.tag.inside);;
|
||||
Prism.languages.c=Prism.languages.extend("clike",{string:/("|')([^\n\\\1]|\\.|\\\r*\n)*?\1/,keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\//}),Prism.languages.insertBefore("c","string",{property:{pattern:/((^|\n)\s*)#\s*[a-z]+([^\n\\]|\\.|\\\r*\n)*/i,lookbehind:!0,inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete Prism.languages.c["class-name"],delete Prism.languages.c["boolean"];;
|
||||
Prism.languages.csharp=Prism.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:/@?("|')(\\?.)*?\1/,preprocessor:/^\s*#.*/m,number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i});;
|
||||
Prism.languages.cpp=Prism.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|delete\[\]|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|new\[\]|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),Prism.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}});;
|
||||
!function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[/'(?:\\?[\s\S])*?'/,{pattern:/"(?:\\?[\s\S])*?"/,inside:{interpolation:t}}],keyword:/\b(and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\?[\s\S])*?`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},rest:e.languages.javascript}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,alias:"string"},{pattern:/"""[\s\S]*?"""/,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/})}(Prism);;
|
||||
Prism.languages.css.selector={pattern:/[^\{\}\s][^\{\}]*(?=\s*\{)/,inside:{"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+(?:\(.*\))?/,"class":/\.[-:\.\w]+/,id:/#[-:\.\w]+/}},Prism.languages.insertBefore("css","function",{hexcode:/#[\da-f]{3,6}/i,entity:/\\[\da-f]{1,8}/i,number:/[\d%\.]+/});;
|
||||
Prism.languages.git={comment:/^#.*$/m,string:/("|')(\\?.)*?\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s(--|-)\w+/m}},coord:/^@@.*@@$/m,deleted:/^-(?!-).+$/m,inserted:/^\+(?!\+).+$/m,commit_sha1:/^commit \w{40}$/m};;
|
||||
!function(e){e.languages.haml={"multiline-comment":[{pattern:/((?:^|\n)([\t ]*))\/.*(\n\2[\t ]+.+)*/,lookbehind:!0,alias:"comment"},{pattern:/((?:^|\n)([\t ]*))-#.*(\n\2[\t ]+.+)*/,lookbehind:!0,alias:"comment"}],"multiline-code":[{pattern:/((?:^|\n)([\t ]*)(?:[~-]|[&!]?=)).*,[\t ]*(\n\2[\t ]+.*,[\t ]*)*(\n\2[\t ]+.+)/,lookbehind:!0,inside:{rest:e.languages.ruby}},{pattern:/((?:^|\n)([\t ]*)(?:[~-]|[&!]?=)).*\|[\t ]*(\n\2[\t ]+.*\|[\t ]*)*/,lookbehind:!0,inside:{rest:e.languages.ruby}}],filter:{pattern:/((?:^|\n)([\t ]*)):[\w-]+(\n(?:\2[\t ]+.+|\s*?(?=\n)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},markup:{pattern:/((?:^|\n)[\t ]*)<.+/,lookbehind:!0,inside:{rest:e.languages.markup}},doctype:{pattern:/((?:^|\n)[\t ]*)!!!(?: .+)?/,lookbehind:!0},tag:{pattern:/((?:^|\n)[\t ]*)[%.#][\w\-#.]*[\w\-](?:\([^)]+\)|\{(?:\{[^}]+\}|[^}])+\}|\[[^\]]+\])*[\/<>]*/,lookbehind:!0,inside:{attributes:[{pattern:/(^|[^#])\{(?:\{[^}]+\}|[^}])+\}/,lookbehind:!0,inside:{rest:e.languages.ruby}},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:"(?:\\?.)*?"|[^)\s]+)/,lookbehind:!0},"attr-name":/[\w:-]+(?=\s*!?=|\s*[,)])/,punctuation:/[=(),]/}},{pattern:/\[[^\]]+\]/,inside:{rest:e.languages.ruby}}],punctuation:/[<>]/}},code:{pattern:/((?:^|\n)[\t ]*(?:[~-]|[&!]?=)).+/,lookbehind:!0,inside:{rest:e.languages.ruby}},interpolation:{pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"punctuation"},rest:e.languages.ruby}},punctuation:{pattern:/((?:^|\n)[\t ]*)[~=\-&!]/,lookbehind:!0}};for(var t="((?:^|\\n)([\\t ]*)):{{filter_name}}(\\n(?:\\2[\\t ]+.+|\\s*?(?=\\n)))+",n=["css",{filter:"coffee",language:"coffeescript"},"erb","javascript","less","markdown","ruby","scss","textile"],a={},i=0,r=n.length;r>i;i++){var l=n[i];l="string"==typeof l?{filter:l,language:l}:l,e.languages[l.language]&&(a["filter-"+l.filter]={pattern:RegExp(t.replace("{{filter_name}}",l.filter)),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},rest:e.languages[l.language]}})}e.languages.insertBefore("haml","filter",a)}(Prism);;
|
||||
!function(e){var a=/\{\{\{[\w\W]+?\}\}\}|\{\{[\w\W]+?\}\}/g;e.languages.handlebars=e.languages.extend("markup",{handlebars:{pattern:a,inside:{delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(\\?.)+?\1/,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,"boolean":/\b(true|false)\b/,block:{pattern:/^(\s*~?\s*)[#\/]\w+/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\w\W]+/}},punctuation:/[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]+/}}}),e.languages.insertBefore("handlebars","tag",{"handlebars-comment":{pattern:/\{\{![\w\W]*?\}\}/,alias:["handlebars","comment"]}}),e.hooks.add("before-highlight",function(e){"handlebars"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(a,function(a){return e.tokenStack.push(a),"___HANDLEBARS"+e.tokenStack.length+"___"}))}),e.hooks.add("before-insert",function(e){"handlebars"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(a){if("handlebars"===a.language){for(var n,t=0;n=a.tokenStack[t];t++)a.highlightedCode=a.highlightedCode.replace("___HANDLEBARS"+(t+1)+"___",e.highlight(n,a.grammar,"handlebars"));a.element.innerHTML=a.highlightedCode}})}(Prism);;
|
||||
!function(e){e.languages.jade={"multiline-comment":{pattern:/((?:^|\n)([\t ]*))\/\/.*(\n\2[\t ]+.+)*/,lookbehind:!0,alias:"comment"},"multiline-script":{pattern:/((?:^|\n)([\t ]*)script\b.*\.[\t ]*)(\n(?:\2[\t ]+.+|\s*?(?=\n)))+/,lookbehind:!0,inside:{rest:e.languages.javascript}},filter:{pattern:/((?:^|\n)([\t ]*)):.+(\n(?:\2[\t ]+.+|\s*?(?=\n)))+/,lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"}}},"multiline-plain-text":{pattern:/((?:^|\n)([\t ]*)[\w\-#.]+\.[\t ]*)(\n(?:\2[\t ]+.+|\s*?(?=\n)))+/,lookbehind:!0},markup:{pattern:/((?:^|\n)[\t ]*)<.+/,lookbehind:!0,inside:{rest:e.languages.markup}},comment:{pattern:/((?:^|\n)[\t ]*)\/\/.+/,lookbehind:!0},doctype:{pattern:/((?:^|\n)[\t ]*)doctype(?: .+)?/,lookbehind:!0},"flow-control":{pattern:/((?:^|\n)[\t ]*)(?:if|unless|else|case|when|default|each|while)(?: .+)?/,lookbehind:!0,inside:{each:{pattern:/((?:^|\n)[\t ]*)each .+? in\b/,lookbehind:!0,inside:{keyword:/\b(?:each|in)\b/,punctuation:/,/}},branch:{pattern:/((?:^|\n)[\t ]*)(?:if|unless|else|case|when|default|while)/,lookbehind:!0,alias:"keyword"},rest:e.languages.javascript}},keyword:{pattern:/((?:^|\n)[\t ]*)(?:block|extends|include|append|prepend)\b.+/,lookbehind:!0},mixin:[{pattern:/((?:^|\n)[\t ]*)mixin .+/,lookbehind:!0,inside:{keyword:/^mixin/,"function":/\w+(?=\s*\(|\s*$)/,punctuation:/[(),.]/}},{pattern:/((?:^|\n)[\t ]*)\+.+/,lookbehind:!0,inside:{name:{pattern:/^\+\w+/,alias:"function"},rest:e.languages.javascript}}],script:{pattern:/((?:^|\n)[\t ]*script(?:(?:&[^(]+)?\([^)]+\))*) .+/,lookbehind:!0,inside:{rest:e.languages.javascript}},"plain-text":{pattern:/((?:^|\n)[\t ]*(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?[\t ]+).+/,lookbehind:!0},tag:{pattern:/((?:^|\n)[\t ]*)(?!-)[\w\-#.]*[\w\-](?:(?:&[^(]+)?\([^)]+\))*\/?:?/,lookbehind:!0,inside:{attributes:[{pattern:/&[^(]+\([^)]+\)/,inside:{rest:e.languages.javascript}},{pattern:/\([^)]+\)/,inside:{"attr-value":{pattern:/(=\s*)(?:\{[^}]*\}|[^,)\n]+)/,lookbehind:!0,inside:{rest:e.languages.javascript}},"attr-name":/[\w-]+(?=\s*!?=|\s*[,)])/,punctuation:/[!=(),]/}}],punctuation:/[:]/}},code:[{pattern:/((?:^|\n)[\t ]*(?:-|!?=)).+/,lookbehind:!0,inside:{rest:e.languages.javascript}}],punctuation:/[.\-!=|]/};for(var t="((?:^|\\n)([\\t ]*)):{{filter_name}}(\\n(?:\\2[\\t ]+.+|\\s*?(?=\\n)))+",n=[{filter:"atpl",language:"twig"},{filter:"coffee",language:"coffeescript"},"ejs","handlebars","hogan","less","livescript","markdown","mustache","plates",{filter:"sass",language:"scss"},"stylus","swig"],a={},i=0,s=n.length;s>i;i++){var l=n[i];l="string"==typeof l?{filter:l,language:l}:l,e.languages[l.language]&&(a["filter-"+l.filter]={pattern:RegExp(t.replace("{{filter_name}}",l.filter)),lookbehind:!0,inside:{"filter-name":{pattern:/^:[\w-]+/,alias:"variable"},rest:e.languages[l.language]}})}e.languages.insertBefore("jade","filter",a)}(Prism);;
|
||||
Prism.languages.java=Prism.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+[e]?[\d]*[df]\b|\b\d*\.?\d+\b/i,operator:{pattern:/(^|[^\.])(?:\+=|\+\+?|-=|--?|!=?|<{1,2}=?|>{1,3}=?|==?|&=|&&?|\|=|\|\|?|\?|\*=?|\/=?|%=?|\^=?|:|~)/m,lookbehind:!0}});;
|
||||
Prism.languages.less=Prism.languages.extend("css",{comment:[/\/\*[\w\W]*?\*\//,{pattern:/(^|[^\\])\/\/.+/,lookbehind:!0}],atrule:{pattern:/@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(\b|\B)(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,punctuation:/[{}();:,]/,operator:/[+\-*\/]/}),Prism.languages.insertBefore("less","punctuation",{"function":Prism.languages.less.function}),Prism.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/,lookbehind:!0,alias:"function"}});;
|
||||
Prism.languages.markdown=Prism.languages.extend("markup",{}),Prism.languages.insertBefore("markdown","prolog",{blockquote:{pattern:/(^|\n)>(?:[\t ]*>)*/,lookbehind:!0,alias:"punctuation"},code:[{pattern:/(^|\n)(?: {4}|\t).+/,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\n]+`/,alias:"keyword"}],title:[{pattern:/\w+.*\n(?:==+|--+)/,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/((?:^|\n)\s*)#+.+/,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/((?:^|\n)\s*)([*-])([\t ]*\2){2,}(?=\s*(?:\n|$))/,lookbehind:!0,alias:"punctuation"},list:{pattern:/((?:^|\n)\s*)(?:[*+-]|\d+\.)(?=[\t ].)/,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:[^>]|\\>)+>)(?:[\t ]+(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:[^"]|\\")*"|'(?:[^']|\\')*'|\((?:[^)]|\\\))*\))$/,punctuation:/[[\]\(\)<>:]/},alias:"url"},bold:{pattern:/(^|[^\\])(\*\*|__)(?:\n(?!\n)|.)+?\2/,lookbehind:!0,inside:{punctuation:/^\*\*|^__|\*\*\s*$|__\s*$/}},italic:{pattern:/(^|[^\\])(?:\*(?:\n(?!\n)|.)+?\*|_(?:\n(?!\n)|.)+?_)/,lookbehind:!0,inside:{punctuation:/^[*_]|[*_]$/}},url:{pattern:/!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:[^"]|\\")*")?\)| ?\[[^\]\n]*\])/,inside:{variable:{pattern:/(!?\[)[^\]]+(?=\]$)/,lookbehind:!0},string:{pattern:/"(?:[^"]|\\")*"(?=\)$)/}}}}),Prism.languages.markdown.bold.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.italic.inside.url=Prism.util.clone(Prism.languages.markdown.url),Prism.languages.markdown.bold.inside.italic=Prism.util.clone(Prism.languages.markdown.italic),Prism.languages.markdown.italic.inside.bold=Prism.util.clone(Prism.languages.markdown.bold);;
|
||||
Prism.languages.objectivec=Prism.languages.extend("c",{keyword:/(\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b)|((?=[\w|@])(@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b)/,string:/(?:("|')([^\n\\\1]|\\.|\\\r*\n)*?\1)|(@"([^\n\\"]|\\.|\\\r*\n)*?")/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|@/});;
|
||||
Prism.languages.perl={comment:[{pattern:/((?:^|\n)\s*)=\w+[\s\S]*?=cut.*/,lookbehind:!0},{pattern:/(^|[^\\$])#.*?(\r?\n|$)/,lookbehind:!0}],string:[/\b(?:q|qq|qx|qw)\s*([^a-zA-Z0-9\s\{\(\[<])(\\?.)*?\s*\1/,/\b(?:q|qq|qx|qw)\s+([a-zA-Z0-9])(\\?.)*?\s*\1/,/\b(?:q|qq|qx|qw)\s*\(([^()]|\\.)*\s*\)/,/\b(?:q|qq|qx|qw)\s*\{([^{}]|\\.)*\s*\}/,/\b(?:q|qq|qx|qw)\s*\[([^[\]]|\\.)*\s*\]/,/\b(?:q|qq|qx|qw)\s*<([^<>]|\\.)*\s*>/,/("|'|`)(\\?.)*?\1/],regex:[/\b(?:m|qr)\s*([^a-zA-Z0-9\s\{\(\[<])(\\?.)*?\s*\1[msixpodualgc]*/,/\b(?:m|qr)\s+([a-zA-Z0-9])(\\?.)*?\s*\1[msixpodualgc]*/,/\b(?:m|qr)\s*\(([^()]|\\.)*\s*\)[msixpodualgc]*/,/\b(?:m|qr)\s*\{([^{}]|\\.)*\s*\}[msixpodualgc]*/,/\b(?:m|qr)\s*\[([^[\]]|\\.)*\s*\][msixpodualgc]*/,/\b(?:m|qr)\s*<([^<>]|\\.)*\s*>[msixpodualgc]*/,/\b(?:s|tr|y)\s*([^a-zA-Z0-9\s\{\(\[<])(\\?.)*?\s*\1\s*((?!\1).|\\.)*\s*\1[msixpodualgcer]*/,/\b(?:s|tr|y)\s+([a-zA-Z0-9])(\\?.)*?\s*\1\s*((?!\1).|\\.)*\s*\1[msixpodualgcer]*/,/\b(?:s|tr|y)\s*\(([^()]|\\.)*\s*\)\s*\(\s*([^()]|\\.)*\s*\)[msixpodualgcer]*/,/\b(?:s|tr|y)\s*\{([^{}]|\\.)*\s*\}\s*\{\s*([^{}]|\\.)*\s*\}[msixpodualgcer]*/,/\b(?:s|tr|y)\s*\[([^[\]]|\\.)*\s*\]\s*\[\s*([^[\]]|\\.)*\s*\][msixpodualgcer]*/,/\b(?:s|tr|y)\s*<([^<>]|\\.)*\s*>\s*<\s*([^<>]|\\.)*\s*>[msixpodualgcer]*/,/\/(\[.+?]|\\.|[^\/\r\n])*\/[msixpodualgc]*(?=\s*($|[\r\n,.;})&|\-+*=~<>!?^]|(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b))/],variable:[/[&*\$@%]\{\^[A-Z]+\}/,/[&*\$@%]\^[A-Z_]/,/[&*\$@%]#?(?=\{)/,/[&*\$@%]#?((::)*'?(?!\d)[\w$]+)+(::)*/i,/[&*\$@%]\d+/,/[\$@%][!"#\$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~]/],filehandle:{pattern:/<(?!=).*>|\b_\b/,alias:"symbol"},vstring:{pattern:/v\d+(\.\d+)*|\d+(\.\d+){2,}/,alias:"string"},"function":{pattern:/sub [a-z0-9_]+/i,inside:{keyword:/sub/}},keyword:/\b(any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|say|state|sub|switch|undef|unless|until|use|when|while)\b/,number:/(\n|\b)-?(0x[\dA-Fa-f](_?[\dA-Fa-f])*|0b[01](_?[01])*|(\d(_?\d)*)?\.?\d(_?\d)*([Ee]-?\d+)?)\b/,operator:/-[rwxoRWXOezsfdlpSbctugkTBMAC]\b|[-+*=~\/|&]{1,2}|<=?|>=?|\.{1,3}|[!?\\^]|\b(lt|gt|le|ge|eq|ne|cmp|not|and|or|xor|x)\b/,punctuation:/[{}[\];(),:]/};;
|
||||
Prism.languages.php=Prism.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|(^|[^:])(\/\/).*?(\r?\n|$))/,lookbehind:!0}}),Prism.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*?(\r?\n|$)/,lookbehind:!0,alias:"comment"}}),Prism.languages.insertBefore("php","keyword",{delimiter:/(\?>|<\?php|<\?)/i,variable:/(\$\w+)\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),Prism.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),Prism.languages.markup&&(Prism.hooks.add("before-highlight",function(e){"php"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(n){return e.tokenStack.push(n),"{{{PHP"+e.tokenStack.length+"}}}"}))}),Prism.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),Prism.hooks.add("after-highlight",function(e){if("php"===e.language){for(var n,a=0;n=e.tokenStack[a];a++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(a+1)+"}}}",Prism.highlight(n,e.grammar,"php"));e.element.innerHTML=e.highlightedCode}}),Prism.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'<span class="token php">$1</span>'))}),Prism.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:Prism.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/}));;
|
||||
Prism.languages.insertBefore("php","variable",{"this":/\$this/,global:/\$_?(GLOBALS|SERVER|GET|POST|FILES|REQUEST|SESSION|ENV|COOKIE|HTTP_RAW_POST_DATA|argc|argv|php_errormsg|http_response_header)/,scope:{pattern:/\b[\w\\]+::/,inside:{keyword:/(static|self|parent)/,punctuation:/(::|\\)/}}});;
|
||||
Prism.languages.python={comment:{pattern:/(^|[^\\])#.*?(\r?\n|$)/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(\\?.)*?\1/,keyword:/\b(as|assert|break|class|continue|def|del|elf|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(True|False)\b/,number:/\b-?(0[box])?(?:[\da-f]+\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+]|<=?|>=?|!|={1,2}|&{1,2}|\|?\||\?|\*|\/|~|\^|%|\b(or|and|not)\b/,punctuation:/[{}[\];(),.:]/};;
|
||||
!function(a){var s=a.util.clone(a.languages.javascript);a.languages.jsx=a.languages.extend("markup",s),a.languages.jsx.tag.pattern=/<\/?[\w:-]+\s*(?:\s+[\w:-]+(?:=(?:("|')(\\?[\w\W])*?\1|[^\s'">=]+|(\{[\w\W]*?\})))?\s*)*\/?>/i,a.languages.jsx.tag.inside["attr-value"].pattern=/=[^\{](?:('|")[\w\W]*?(\1)|[^\s>]+)/i,a.languages.insertBefore("inside","attr-value",{script:{pattern:/=(\{[\w\W]*?\})/i,inside:{"function":a.languages.javascript.function,punctuation:/[={}[\];(),.:]/,keyword:a.languages.javascript.keyword},alias:"language-javascript"}},a.languages.jsx.tag)}(Prism);;
|
||||
Prism.languages.ruby=Prism.languages.extend("clike",{comment:/#[^\r\n]*(\r?\n|$)/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/,builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*[?!]?\b/}),Prism.languages.insertBefore("ruby","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0},variable:/[@$]+\b[a-zA-Z_][a-zA-Z_0-9]*[?!]?\b/,symbol:/:\b[a-zA-Z_][a-zA-Z_0-9]*[?!]?\b/});;
|
||||
Prism.languages.scss=Prism.languages.extend("css",{comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/,lookbehind:!0},atrule:/@[\w-]+(?=\s+(\(|\{|;))/i,url:/([-a-z]+-)*url(?=\()/i,selector:/([^@;\{\}\(\)]?([^@;\{\}\(\)]|&|#\{\$[-_\w]+\})+)(?=\s*\{(\}|\s|[^\}]+(:|\{)[^\}]+))/m}),Prism.languages.insertBefore("scss","atrule",{keyword:/@(if|else if|else|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)|(?=@for\s+\$[-_\w]+\s)+from/i}),Prism.languages.insertBefore("scss","property",{variable:/((\$[-_\w]+)|(#\{\$[-_\w]+\}))/i}),Prism.languages.insertBefore("scss","function",{placeholder:/%[-_\w]+/i,statement:/\B!(default|optional)\b/i,"boolean":/\b(true|false)\b/,"null":/\b(null)\b/,operator:/\s+([-+]{1,2}|={1,2}|!=|\|?\||\?|\*|\/|%)\s+/});;
|
||||
Prism.languages.scheme={"boolean":/#(t|f){1}/,comment:/;.*/,keyword:{pattern:/([(])(define(-syntax|-library|-values)?|(case-)?lambda|let(-values|(rec)?(\*)?)?|else|if|cond|begin|delay|delay-force|parameterize|guard|set!|(quasi-)?quote|syntax-rules)/,lookbehind:!0},builtin:{pattern:/([(])(cons|car|cdr|null\?|pair\?|boolean\?|eof-object\?|char\?|procedure\?|number\?|port\?|string\?|vector\?|symbol\?|bytevector\?|list|call-with-current-continuation|call\/cc|append|abs|apply|eval)\b/,lookbehind:!0},string:/(["])(?:(?=(\\?))\2.)*?\1|'[^('|\s)]+/,number:/(\s|\))[-+]?[0-9]*\.?[0-9]+((\s*)[-+]{1}(\s*)[0-9]*\.?[0-9]+i)?/,operator:/(\*|\+|\-|%|\/|<=|=>|>=|<|=|>)/,"function":{pattern:/([(])[^(\s|\))]*\s/,lookbehind:!0},punctuation:/[()]/};;
|
||||
!function(e){var t=/\{\*[\w\W]+?\*\}|\{[\w\W]+?\}/g,a="{literal}",n="{/literal}",o=!1;e.languages.smarty=e.languages.extend("markup",{smarty:{pattern:t,inside:{delimiter:{pattern:/^\{|\}$/i,alias:"punctuation"},string:/(["'])(\\?.)*?\1/,number:/\b-?(0x[\dA-Fa-f]+|\d*\.?\d+([Ee]-?\d+)?)\b/,variable:[/\$(?!\d)\w+/,/#(?!\d)\w+#/,{pattern:/(\.|->)(?!\d)\w+/,lookbehind:!0},{pattern:/(\[)(?!\d)\w+(?=\])/,lookbehind:!0}],"function":[{pattern:/(\|\s*)@?(?!\d)\w+/,lookbehind:!0},/^\/?(?!\d)\w+/,/(?!\d)\w+(?=\()/],"attr-name":{pattern:/\w+\s*=\s*(?:(?!\d)\w+)?/,inside:{variable:{pattern:/(=\s*)(?!\d)\w+/,lookbehind:!0},punctuation:/=/}},punctuation:/[\[\]().,=\|:`]|\->/,operator:[/[+\-*\/%]|===?|[!<>]=?|&&|\|\|/,/\bis\s+(?:not\s+)?(?:div|even|odd)(?:\s+by)?\b/,/\b(?:eq|neq?|gt|lt|gt?e|lt?e|not|mod|or|and)\b/],keyword:/\b(?:false|off|on|no|true|yes)\b/}}}),e.languages.insertBefore("smarty","tag",{"smarty-comment":{pattern:/\{\*[\w\W]*?\*\}/,alias:["smarty","comment"]}}),e.hooks.add("before-highlight",function(e){"smarty"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(t,function(t){return t===n&&(o=!1),o?t:(t===a&&(o=!0),e.tokenStack.push(t),"___SMARTY"+e.tokenStack.length+"___")}))}),e.hooks.add("before-insert",function(e){"smarty"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),e.hooks.add("after-highlight",function(t){if("smarty"===t.language){for(var a,n=0;a=t.tokenStack[n];n++)t.highlightedCode=t.highlightedCode.replace("___SMARTY"+(n+1)+"___",e.highlight(a,t.grammar,"smarty"));t.element.innerHTML=t.highlightedCode}})}(Prism);;
|
||||
Prism.languages.sql={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|((--)|(\/\/)|#).*?(\r?\n|$))/,lookbehind:!0},string:{pattern:/(^|[^@])("|')(\\?[\s\S])*?\2/,lookbehind:!0},variable:/@[\w.$]+|@("|'|`)(\\?[\s\S])+?\1/,"function":/\b(?:COUNT|SUM|AVG|MIN|MAX|FIRST|LAST|UCASE|LCASE|MID|LEN|ROUND|NOW|FORMAT)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALTER|ANALYZE|APPLY|AS|ASC|AUTHORIZATION|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADE|CASCADED|CASE|CHAIN|CHAR VARYING|CHARACTER VARYING|CHECK|CHECKPOINT|CLOSE|CLUSTERED|COALESCE|COLUMN|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS|CONTAINSTABLE|CONTINUE|CONVERT|CREATE|CROSS|CURRENT|CURRENT_DATE|CURRENT_TIME|CURRENT_TIMESTAMP|CURRENT_USER|CURSOR|DATA|DATABASE|DATABASES|DATETIME|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DOUBLE PRECISION|DROP|DUMMY|DUMP|DUMPFILE|DUPLICATE KEY|ELSE|ENABLE|ENCLOSED BY|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPE|ESCAPED BY|EXCEPT|EXEC|EXECUTE|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR|FOR EACH ROW|FORCE|FOREIGN|FREETEXT|FREETEXTTABLE|FROM|FULL|FUNCTION|GEOMETRY|GEOMETRYCOLLECTION|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|IDENTITY|IDENTITY_INSERT|IDENTITYCOL|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTO|INVOKER|ISOLATION LEVEL|JOIN|KEY|KEYS|KILL|LANGUAGE SQL|LAST|LEFT|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONGBLOB|LONGTEXT|MATCH|MATCHED|MEDIUMBLOB|MEDIUMINT|MEDIUMTEXT|MERGE|MIDDLEINT|MODIFIES SQL DATA|MODIFY|MULTILINESTRING|MULTIPOINT|MULTIPOLYGON|NATIONAL|NATIONAL CHAR VARYING|NATIONAL CHARACTER|NATIONAL CHARACTER VARYING|NATIONAL VARCHAR|NATURAL|NCHAR|NCHAR VARCHAR|NEXT|NO|NO SQL|NOCHECK|NOCYCLE|NONCLUSTERED|NULLIF|NUMERIC|OF|OFF|OFFSETS|ON|OPEN|OPENDATASOURCE|OPENQUERY|OPENROWSET|OPTIMIZE|OPTION|OPTIONALLY|ORDER|OUT|OUTER|OUTFILE|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREV|PRIMARY|PRINT|PRIVILEGES|PROC|PROCEDURE|PUBLIC|PURGE|QUICK|RAISERROR|READ|READS SQL DATA|READTEXT|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEATABLE|REPLICATION|REQUIRE|RESTORE|RESTRICT|RETURN|RETURNS|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROWCOUNT|ROWGUIDCOL|ROWS?|RTREE|RULE|SAVE|SAVEPOINT|SCHEMA|SELECT|SERIAL|SERIALIZABLE|SESSION|SESSION_USER|SET|SETUSER|SHARE MODE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|START|STARTING BY|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLE|TABLES|TABLESPACE|TEMP(?:ORARY)?|TEMPTABLE|TERMINATED BY|TEXT|TEXTSIZE|THEN|TIMESTAMP|TINYBLOB|TINYINT|TINYTEXT|TO|TOP|TRAN|TRANSACTION|TRANSACTIONS|TRIGGER|TRUNCATE|TSEQUAL|TYPE|TYPES|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNPIVOT|UPDATE|UPDATETEXT|USAGE|USE|USER|USING|VALUE|VALUES|VARBINARY|VARCHAR|VARCHARACTER|VARYING|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH|WITH ROLLUP|WITHIN|WORK|WRITE|WRITETEXT)\b/i,"boolean":/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b-?(0x)?\d*\.?[\da-f]+\b/,operator:/\b(?:ALL|AND|ANY|BETWEEN|EXISTS|IN|LIKE|NOT|OR|IS|UNIQUE|CHARACTER SET|COLLATE|DIV|OFFSET|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b|[-+]|!|[=<>]{1,2}|(&){1,2}|\|?\||\?|\*|\//i,punctuation:/[;[\]()`,.]/};;
|
||||
Prism.languages.stylus={comment:{pattern:/(^|[^\\])(\/\*[\w\W]*?\*\/|\/\/.*?(\r?\n|$))/g,lookbehind:!0},keyword:/(px|r?em|ex|ch|vw|vh|vmin|vmax|deg|grad|rad|turn|m?s|k?Hz|dpi|dppx|dpcm)\b|\b(is|defined|not|isnt|and|or|unless|for|in)\b/g,atrule:/@[\w-]+(?=\s+\S+)/gi,url:/url\((["']?).*?\1\)/gi,variable:/^\s*([\w-]+)(?=\s*[+-\\]?=)/gm,string:/("|')(\\\n|\\?.)*?\1/g,important:/\B!important\b/gi,hexcode:/#[\da-f]{3,6}/gi,entity:/\\[\da-f]{1,8}/gi,number:/\d+\.?\d*%?/g,selector:[{pattern:/::?(after|before|first-letter|first-line|selection)/g,alias:"pseudo-element"},{pattern:/:(?:active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|in-range|invalid|lang|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-of-type|only-child|optional|out-of-range|read-only|read-write|required|root|target|valid|visited)(?:\(.*\))?/g,alias:"pseudo-class"},{pattern:/\[[\w-]+?\s*[*~$^|=]?(?:=\s*\S+)?\]/g,inside:{"attr-name":{pattern:/(\[)([\w-]+)(?=\s*[*~$^|=]{0,2})/g,lookbehind:!0},punctuation:/\[|\]/g,operator:/[*~$^|=]/g,"attr-value":{pattern:/\S+/}},alias:"attr"},{pattern:/\.[a-z-]+/i,alias:"class"},{pattern:/#[a-z-]+/i,alias:"id"},{pattern:/\b(html|head|title|base|link|meta|style|script|noscript|template|body|section|nav|article|aside|h[1-6]|header|footer|address|main|p|hr|pre|blockquote|ol|ul|li|dl|dt|dd|figure|figcaption|div|a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|dbo|span|br|wbr|ins|del|image|iframe|embed|object|param|video|audio|source|track|canvas|map|area|sv|math|table|caption|colgroup|col|tbody|thead|tfoot|tr|td|th|form|fieldset|legeng|label|input|button|select|datalist|optgroup|option|textarea|keygen|output|progress|meter|details|summary|menuitem|menu)\b/g,alias:"tag"}],property:[/^\s*([a-z-]+)(?=\s+[\w\W]+|\s*:)(?!\s*\{|\r?\n)/gim,{pattern:/(\(\s*)([a-z-]+)(?=\s*:)/gi,lookbehind:!0}],"function":/[-a-z0-9]+(?=\()/gi,punctuation:/[\{\};:]/g,operator:/[-+]{1,2}|!|<=?|>=?|={1,3}|&{1,2}|\|?\||\?|\*|\/|~|\^|%/g};;
|
||||
Prism.languages.swift=Prism.languages.extend("clike",{keyword:/\b(as|associativity|break|case|class|continue|convenience|default|deinit|didSet|do|dynamicType|else|enum|extension|fallthrough|final|for|func|get|if|import|in|infix|init|inout|internal|is|lazy|left|let|mutating|new|none|nonmutating|operator|optional|override|postfix|precedence|prefix|private|protocol|public|required|return|right|safe|self|Self|set|static|struct|subscript|super|switch|Type|typealias|unowned|unowned|unsafe|var|weak|where|while|willSet|__COLUMN__|__FILE__|__FUNCTION__|__LINE__)\b/,number:/\b([\d_]+(\.[\de_]+)?|0x[a-f0-9_]+(\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\b/i,constant:/\b(nil|[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\b/,atrule:/@\b(IBOutlet|IBDesignable|IBAction|IBInspectable|class_protocol|exported|noreturn|NSCopying|NSManaged|objc|UIApplicationMain|auto_closure)\b/,builtin:/\b([A-Z]\S+|abs|advance|alignof|alignofValue|assert|contains|count|countElements|debugPrint|debugPrintln|distance|dropFirst|dropLast|dump|enumerate|equal|filter|find|first|getVaList|indices|isEmpty|join|last|lazy|lexicographicalCompare|map|max|maxElement|min|minElement|numericCast|overlaps|partition|prefix|print|println|reduce|reflect|reverse|sizeof|sizeofValue|sort|sorted|split|startsWith|stride|strideof|strideofValue|suffix|swap|toDebugString|toString|transcode|underestimateCount|unsafeBitCast|withExtendedLifetime|withUnsafeMutablePointer|withUnsafeMutablePointers|withUnsafePointer|withUnsafePointers|withVaList)\b/});;
|
||||
Prism.languages.typescript=Prism.languages.extend("javascript",{keyword:/\b(break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|function|get|if|implements|import|in|instanceof|interface|let|new|null|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield|module|declare|constructor|string|Function|any|number|boolean|Array|enum)\b/});;
|
||||
Prism.hooks.add("after-highlight",function(e){var n=e.element.parentNode;if(n&&/pre/i.test(n.nodeName)&&-1!==n.className.indexOf("line-numbers")){var t,a=1+e.code.split("\n").length;lines=new Array(a),lines=lines.join("<span></span>"),t=document.createElement("span"),t.className="line-numbers-rows",t.innerHTML=lines,n.hasAttribute("data-start")&&(n.style.counterReset="linenumber "+(parseInt(n.getAttribute("data-start"),10)-1)),e.element.appendChild(t)}});;
|
||||
2
application/view/mockup/template/js/dev/libs/plugins/social-likes.min.js
vendored
Normal file
2
application/view/mockup/template/js/dev/libs/plugins/social-likes.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
19771
application/view/mockup/template/js/dev/libs/plugins/video.js
Normal file
19771
application/view/mockup/template/js/dev/libs/plugins/video.js
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,147 @@
|
||||
(function() {
|
||||
|
||||
videojs.plugin('playlist', function(options) {
|
||||
//this.L="vjs_common_one";
|
||||
|
||||
|
||||
var id=this.el().id;
|
||||
|
||||
//console.log('begin playlist plugin with video id:'+id);
|
||||
|
||||
//console.log(this);
|
||||
//var id=this.tag.id;
|
||||
//assign variables
|
||||
var tracks=document.querySelectorAll("#"+id+"-vjs-playlist .vjs-track"),
|
||||
trackCount=tracks.length,
|
||||
player=this,
|
||||
currentTrack=tracks[0],
|
||||
index=0,
|
||||
play=true,
|
||||
onTrackSelected=options.onTrackSelected;
|
||||
|
||||
//manually selecting track
|
||||
for(var i=0; i<trackCount; i++){
|
||||
tracks[i].onclick = function(){
|
||||
//var track=this;
|
||||
//index=this.getAttribute('data-index');
|
||||
//console.log("a is clicked and index position is"+this.getAttribute('data-index')+"the data-src is "+this.getAttribute('data-src'));
|
||||
//console.log("a is clicked and index position is"+index+"the data-src is "+this.getAttribute('data-src'));
|
||||
|
||||
trackSelect(this);
|
||||
}
|
||||
}
|
||||
|
||||
// for continuous play
|
||||
if(typeof options.continuous=='undefined' || options.continuous==true){
|
||||
//console.log('options.continuous==true');
|
||||
|
||||
player.on("ended", function(){
|
||||
//console.log('on ended');
|
||||
|
||||
index++;
|
||||
if(index>=trackCount){
|
||||
//console.log('go to beginning');
|
||||
index=0;
|
||||
}
|
||||
else;// console.log('trigger click next track');
|
||||
tracks[index].click();
|
||||
|
||||
});// on ended
|
||||
}
|
||||
else;// console.log('dont play next!');
|
||||
|
||||
//track select function for onended and manual selecting tracks
|
||||
var trackSelect=function(track){
|
||||
|
||||
//get new src
|
||||
var src=track.getAttribute('data-src');
|
||||
index=parseInt(track.getAttribute('data-index')) || index;
|
||||
//console.log('track select click src:'+src);
|
||||
|
||||
if(player.techName=='youtube'){
|
||||
player.src([
|
||||
{ type: type="video/youtube", src: src}
|
||||
]);
|
||||
}
|
||||
else{
|
||||
|
||||
if(player.el().firstChild.tagName=="AUDIO" || (typeof options.mediaType!='undefined' && options.mediaType=="audio") ){
|
||||
|
||||
player.src([
|
||||
{ type: "audio/mp4", src: src+".m4a" },
|
||||
{ type: "audio/webm", src: src+".webm" },
|
||||
{ type: type="video/youtube", src: src},
|
||||
{ type: "audio/ogg", src: src+".ogg" }
|
||||
/*{ type: "audio/mpeg", src: src+".mp3" },
|
||||
{ type: "audio/ogg", src: src+".oga" }*/
|
||||
]);
|
||||
}
|
||||
else{
|
||||
//console.log("video");
|
||||
player.src([
|
||||
{ type: "video/mp4", src: src+".mp4" },
|
||||
{ type: type="video/youtube", src: src},
|
||||
{ type: "video/webm", src: src+".webm" }
|
||||
//{ type: "video/ogv", src: src+".ogv" }
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(play) player.play();
|
||||
|
||||
//remove 'currentTrack' CSS class
|
||||
for(var i=0; i<trackCount; i++){
|
||||
if (tracks[i].className.indexOf('currentTrack') !== -1) {
|
||||
tracks[i].className=tracks[i].className.replace(/\bcurrentTrack\b/,'nonPlayingTrack');
|
||||
}
|
||||
}
|
||||
//add 'currentTrack' CSS class
|
||||
track.className = track.className + " currentTrack";
|
||||
if(typeof onTrackSelected === 'function') onTrackSelected.apply(track);
|
||||
|
||||
}
|
||||
|
||||
//if want to start at track other than 1st track
|
||||
if(typeof options.setTrack!='undefined' ){
|
||||
options.setTrack=parseInt(options.setTrack);
|
||||
currentTrack=tracks[options.setTrack];
|
||||
index=options.setTrack;
|
||||
play=false;
|
||||
//console.log('options.setTrack index'+index);
|
||||
trackSelect(tracks[index]);
|
||||
play=true;
|
||||
}
|
||||
if (window.location.hash) {
|
||||
var hash = window.location.hash.substring(9);
|
||||
play = false;
|
||||
trackSelect(tracks[hash]);
|
||||
}
|
||||
|
||||
var data={
|
||||
tracks: tracks,
|
||||
trackCount: trackCount,
|
||||
play:function(){
|
||||
return play;
|
||||
},
|
||||
index:function(){
|
||||
return index;
|
||||
},
|
||||
prev:function(){
|
||||
var j=index-1;
|
||||
//console.log('j'+j);
|
||||
if(j<0 || j>trackCount) j=0;
|
||||
trackSelect(tracks[j]);
|
||||
},
|
||||
next:function(){
|
||||
var j=index+1;
|
||||
//console.log('j'+j);
|
||||
if(j<0 || j>trackCount) j=0;
|
||||
trackSelect(tracks[j]);
|
||||
}
|
||||
};
|
||||
return data;
|
||||
});
|
||||
//return videojsplugin;
|
||||
})();
|
||||
1384
application/view/mockup/template/js/dev/modernizr.js
Normal file
1384
application/view/mockup/template/js/dev/modernizr.js
Normal file
File diff suppressed because it is too large
Load Diff
1180
application/view/mockup/template/js/dev/modules.js
Normal file
1180
application/view/mockup/template/js/dev/modules.js
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user