diff options
author | Steve Manuel <nilslice@gmail.com> | 2016-10-02 23:14:31 -0700 |
---|---|---|
committer | Steve Manuel <nilslice@gmail.com> | 2016-10-02 23:14:31 -0700 |
commit | 2d33ab3dd1f72b5b737e8af3a2c001ecbca6b14b (patch) | |
tree | 72cfbf4943f24d28d3f504cf60790cd569b1c225 | |
parent | 37d3f13e071cfdb5e063c67dec604c10dbc6ddde (diff) |
adding more UI, rich text editor, implentation and example in post.go, as well as db insert/update and retrieval. NOTE: rich text editor content is stored as html escaped entity in DB.
60 files changed, 29433 insertions, 12 deletions
diff --git a/content/post.go b/content/post.go index 14f3330..efa83e8 100644 --- a/content/post.go +++ b/content/post.go @@ -48,7 +48,7 @@ func (p *Post) MarshalEditor() ([]byte, error) { }), }, editor.Field{ - View: editor.Textarea("Content", p, map[string]string{ + View: editor.Richtext("Content", p, map[string]string{ "label": "Content", "placeholder": "Add the content of your post here", }), diff --git a/management/editor/elements.go b/management/editor/elements.go index dd71aa1..573272a 100644 --- a/management/editor/elements.go +++ b/management/editor/elements.go @@ -36,6 +36,74 @@ func Textarea(fieldName string, p interface{}, attrs map[string]string) []byte { return domElement(e) } +// Richtext returns the []byte of a rich text editor (provided by http://summernote.org/) with a label. +// IMPORTANT: +// The `fieldName` argument will cause a panic if it is not exactly the string +// form of the struct field that this editor input is representing +func Richtext(fieldName string, p interface{}, attrs map[string]string) []byte { + // create wrapper for richtext editor, which isolates the editor's css + iso := []byte(`<div class="iso-texteditor input-field col s12"><label>` + attrs["label"] + `</label>`) + isoClose := []byte(`</div>`) + + // create the target element for the editor to attach itself + attrs["class"] = "richtext " + fieldName + attrs["id"] = "richtext-" + fieldName + div := &element{ + TagName: "div", + Attrs: attrs, + Name: "", + label: "", + data: "", + viewBuf: &bytes.Buffer{}, + } + + // create a hidden input to store the value from the struct + val := valueFromStructField(fieldName, p).String() + name := tagNameFromStructField(fieldName, p) + input := `<input type="hidden" name="` + name + `" class="richtext-value ` + fieldName + `" value="` + val + `"/>` + + // build the dom tree for the entire richtext component + iso = append(iso, domElement(div)...) + iso = append(iso, []byte(input)...) + iso = append(iso, isoClose...) + + initializer := ` + <script> + $(function() { + var _editor = $('.richtext.` + fieldName + `'); + var hidden = $('.richtext-value.` + fieldName + `'); + + _editor.materialnote({ + height: 250, + placeholder: '` + attrs["placeholder"] + `', + toolbar: [ + ['style', ['bold', 'italic', 'underline', 'clear']], + ['font', ['strikethrough', 'superscript', 'subscript']], + ['fontsize', ['fontsize']], + ['color', ['color']], + ['insert', ['link', 'picture', 'video', 'hr']], + ['para', ['ul', 'ol', 'paragraph']], + ['height', ['height']], + ['misc', ['codeview']] + ] + }); + + // update hidden input with escaped value + _editor.on('materialnote.change', function(e, content, $editable) { + hidden.val(_.escape(content)); + }) + + // insert existing value into text editor + _editor.code(_.unescape(hidden.val())); + + // bit of a hack to stop the editor buttons from causing a refresh when clicked + $('.note-toolbar').find('button, i, a').on('click', function(e) { e.preventDefault(); }) + }); + </script>` + + return append(iso, []byte(initializer)...) +} + // Select returns the []byte of a <select> HTML element plus internal <options> with a label. // IMPORTANT: // The `fieldName` argument will cause a panic if it is not exactly the string diff --git a/system/admin/admin.go b/system/admin/admin.go index 1ad46f3..df0f758 100644 --- a/system/admin/admin.go +++ b/system/admin/admin.go @@ -10,14 +10,23 @@ import ( ) const adminHTML = `<!doctype html> -<html> +<html lang="en"> <head> <title>CMS</title> - <script type="text/javascript" src="/admin/static/common/js/jquery-1.11.3.min.js"></script> - <link rel="stylesheet" href="/admin/static/dashboard/css/material-icons.css" /> + <script type="text/javascript" src="/admin/static/common/js/jquery-2.1.4.min.js"></script> + <script type="text/javascript" src="/admin/static/common/js/underscore.js"></script> + <script type="text/javascript" src="/admin/static/dashboard/js/materialize.min.js"></script> + <script type="text/javascript" src="/admin/static/editor/js/materialNote.js"></script> + <script type="text/javascript" src="/admin/static/editor/js/ckMaterializeOverrides.js"></script> + + <link rel="stylesheet" href="/admin/static/dashboard/css/material-icons.css" /> <link rel="stylesheet" href="/admin/static/dashboard/css/materialize.min.css" /> - <link rel="stylesheet" href="/admin/static/dashboard/css/admin.css" /> + <link rel="stylesheet" href="/admin/static/editor/css/materialNote.css" /> + <link rel="stylesheet" href="/admin/static/dashboard/css/admin.css" /> + <meta name="viewport" content="width=device-width, initial-scale=1.0"/> + <meta charset="utf-8"> + <meta http-equiv="X-UA-Compatible" content="IE=edge"> </head> <body class="grey lighten-4"> <div class="navbar-fixed"> @@ -58,7 +67,6 @@ const adminHTML = `<!doctype html> </div> {{ end }} </div> - <script type="text/javascript" src="/admin/static/dashboard/js/materialize.min.js"></script> </body> </html>` diff --git a/system/admin/static/common/js/jquery-1.11.3.min.js b/system/admin/static/common/js/jquery-1.11.3.min.js deleted file mode 100644 index 0f60b7b..0000000 --- a/system/admin/static/common/js/jquery-1.11.3.min.js +++ /dev/null @@ -1,5 +0,0 @@ -/*! jQuery v1.11.3 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.3",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; - -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ca()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ca()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?aa:ba):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:ba,isPropagationStopped:ba,isImmediatePropagationStopped:ba,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=aa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=aa,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=aa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=ba;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=ba),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function da(a){var b=ea.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var ea="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fa=/ jQuery\d+="(?:null|\d+)"/g,ga=new RegExp("<(?:"+ea+")[\\s/>]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/<tbody/i,la=/<|&#?\w+;/,ma=/<(?:script|style|link)/i,na=/checked\s*(?:[^=]|=\s*.checked.)/i,oa=/^$|\/(?:java|ecma)script/i,pa=/^true\/(.*)/,qa=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ra={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?"<table>"!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ca[0].contentWindow||Ca[0].contentDocument).document,b.write(),b.close(),c=Ea(a,b),Ca.detach()),Da[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Ga=/^margin/,Ha=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ia,Ja,Ka=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ia=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Ha.test(g)&&Ga.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ia=function(a){return a.currentStyle},Ja=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ia(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Ha.test(g)&&!Ka.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function La(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Ma=/alpha\([^)]*\)/i,Na=/opacity\s*=\s*([^)]*)/,Oa=/^(none|table(?!-c[ea]).+)/,Pa=new RegExp("^("+S+")(.*)$","i"),Qa=new RegExp("^([+-])=("+S+")","i"),Ra={position:"absolute",visibility:"hidden",display:"block"},Sa={letterSpacing:"0",fontWeight:"400"},Ta=["Webkit","O","Moz","ms"];function Ua(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Ta.length;while(e--)if(b=Ta[e]+c,b in a)return b;return d}function Va(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fa(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wa(a,b,c){var d=Pa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xa(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Ya(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ia(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Ja(a,b,f),(0>e||null==e)&&(e=a.style[b]),Ha.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xa(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Ja(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ua(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qa.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ua(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Ja(a,b,d)),"normal"===f&&b in Sa&&(f=Sa[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Oa.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Ra,function(){return Ya(a,b,d)}):Ya(a,b,d):void 0},set:function(a,c,d){var e=d&&Ia(a);return Wa(a,c,d?Xa(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Na.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Ma,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Ma.test(f)?f.replace(Ma,e):f+" "+e)}}),m.cssHooks.marginRight=La(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Ja,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Ga.test(a)||(m.cssHooks[a+b].set=Wa)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ia(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Va(this,!0)},hide:function(){return Va(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Za(a,b,c,d,e){ -return new Za.prototype.init(a,b,c,d,e)}m.Tween=Za,Za.prototype={constructor:Za,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Za.propHooks[this.prop];return a&&a.get?a.get(this):Za.propHooks._default.get(this)},run:function(a){var b,c=Za.propHooks[this.prop];return this.options.duration?this.pos=b=m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Za.propHooks._default.set(this),this}},Za.prototype.init.prototype=Za.prototype,Za.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Za.propHooks.scrollTop=Za.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Za.prototype.init,m.fx.step={};var $a,_a,ab=/^(?:toggle|show|hide)$/,bb=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cb=/queueHooks$/,db=[ib],eb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bb.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bb.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fb(){return setTimeout(function(){$a=void 0}),$a=m.now()}function gb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hb(a,b,c){for(var d,e=(eb[b]||[]).concat(eb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ib(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fa(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fa(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ab.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fa(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hb(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jb(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kb(a,b,c){var d,e,f=0,g=db.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$a||fb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$a||fb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jb(k,j.opts.specialEasing);g>f;f++)if(d=db[f].call(j,a,k,j.opts))return d;return m.map(k,hb,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kb,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],eb[c]=eb[c]||[],eb[c].unshift(b)},prefilter:function(a,b){b?db.unshift(a):db.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kb(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gb(b,!0),a,d,e)}}),m.each({slideDown:gb("show"),slideUp:gb("hide"),slideToggle:gb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($a=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$a=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_a||(_a=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_a),_a=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lb=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lb,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mb,nb,ob=m.expr.attrHandle,pb=/^(?:checked|selected)$/i,qb=k.getSetAttribute,rb=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nb:mb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rb&&qb||!pb.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qb?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nb={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rb&&qb||!pb.test(c)?a.setAttribute(!qb&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ob[b]||m.find.attr;ob[b]=rb&&qb||!pb.test(b)?function(a,b,d){var e,f;return d||(f=ob[b],ob[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ob[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rb&&qb||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mb&&mb.set(a,b,c)}}),qb||(mb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ob.id=ob.name=ob.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mb.set},m.attrHooks.contenteditable={set:function(a,b,c){mb.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sb=/^(?:input|select|textarea|button|object)$/i,tb=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sb.test(a.nodeName)||tb.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var ub=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ub," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ub," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vb=m.now(),wb=/\?/,xb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yb,zb,Ab=/#.*$/,Bb=/([?&])_=[^&]*/,Cb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Db=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Eb=/^(?:GET|HEAD)$/,Fb=/^\/\//,Gb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hb={},Ib={},Jb="*/".concat("*");try{zb=location.href}catch(Kb){zb=y.createElement("a"),zb.href="",zb=zb.href}yb=Gb.exec(zb.toLowerCase())||[];function Lb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mb(a,b,c,d){var e={},f=a===Ib;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nb(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Ob(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zb,type:"GET",isLocal:Db.test(yb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nb(Nb(a,m.ajaxSettings),b):Nb(m.ajaxSettings,a)},ajaxPrefilter:Lb(Hb),ajaxTransport:Lb(Ib),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cb.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zb)+"").replace(Ab,"").replace(Fb,yb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gb.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yb[1]&&c[2]===yb[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yb[3]||("http:"===yb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mb(Hb,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Eb.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wb.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bb.test(e)?e.replace(Bb,"$1_="+vb++):e+(wb.test(e)?"&":"?")+"_="+vb++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jb+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mb(Ib,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Ob(k,v,c)),u=Pb(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qb=/%20/g,Rb=/\[\]$/,Sb=/\r?\n/g,Tb=/^(?:submit|button|image|reset|file)$/i,Ub=/^(?:input|select|textarea|keygen)/i;function Vb(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rb.test(a)?d(a,e):Vb(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vb(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vb(c,a[c],b,e);return d.join("&").replace(Qb,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Ub.test(this.nodeName)&&!Tb.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sb,"\r\n")}}):{name:b.name,value:c.replace(Sb,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zb()||$b()}:Zb;var Wb=0,Xb={},Yb=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xb)Xb[a](void 0,!0)}),k.cors=!!Yb&&"withCredentials"in Yb,Yb=k.ajax=!!Yb,Yb&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xb[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xb[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zb(){try{return new a.XMLHttpRequest}catch(b){}}function $b(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _b=[],ac=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_b.pop()||m.expando+"_"+vb++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ac.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ac.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ac,"$1"+e):b.jsonp!==!1&&(b.url+=(wb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_b.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bc=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bc)return bc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cc=a.document.documentElement;function dc(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cc;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cc})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=La(k.pixelPosition,function(a,c){return c?(c=Ja(a,b),Ha.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ec=a.jQuery,fc=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fc),b&&a.jQuery===m&&(a.jQuery=ec),m},typeof b===K&&(a.jQuery=a.$=m),m}); diff --git a/system/admin/static/common/js/jquery-2.1.4.min.js b/system/admin/static/common/js/jquery-2.1.4.min.js new file mode 100644 index 0000000..fc356ee --- /dev/null +++ b/system/admin/static/common/js/jquery-2.1.4.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ +return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), +void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n});
\ No newline at end of file diff --git a/system/admin/static/common/js/underscore.js b/system/admin/static/common/js/underscore.js new file mode 100644 index 0000000..3dd7f2d --- /dev/null +++ b/system/admin/static/common/js/underscore.js @@ -0,0 +1,1628 @@ +// Underscore.js 1.8.3 +// http://underscorejs.org +// (c) 2009-2016 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors +// Underscore may be freely distributed under the MIT license. + +(function() { + + // Baseline setup + // -------------- + + // Establish the root object, `window` (`self`) in the browser, `global` + // on the server, or `this` in some virtual machines. We use `self` + // instead of `window` for `WebWorker` support. + var root = typeof self == 'object' && self.self === self && self || + typeof global == 'object' && global.global === global && global || + this; + + // Save the previous value of the `_` variable. + var previousUnderscore = root._; + + // Save bytes in the minified (but not gzipped) version: + var ArrayProto = Array.prototype, ObjProto = Object.prototype; + var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null; + + // Create quick reference variables for speed access to core prototypes. + var push = ArrayProto.push, + slice = ArrayProto.slice, + toString = ObjProto.toString, + hasOwnProperty = ObjProto.hasOwnProperty; + + // All **ECMAScript 5** native function implementations that we hope to use + // are declared here. + var nativeIsArray = Array.isArray, + nativeKeys = Object.keys, + nativeCreate = Object.create; + + // Naked function reference for surrogate-prototype-swapping. + var Ctor = function(){}; + + // Create a safe reference to the Underscore object for use below. + var _ = function(obj) { + if (obj instanceof _) return obj; + if (!(this instanceof _)) return new _(obj); + this._wrapped = obj; + }; + + // Export the Underscore object for **Node.js**, with + // backwards-compatibility for their old module API. If we're in + // the browser, add `_` as a global object. + // (`nodeType` is checked to ensure that `module` + // and `exports` are not HTML elements.) + if (typeof exports != 'undefined' && !exports.nodeType) { + if (typeof module != 'undefined' && !module.nodeType && module.exports) { + exports = module.exports = _; + } + exports._ = _; + } else { + root._ = _; + } + + // Current version. + _.VERSION = '1.8.3'; + + // Internal function that returns an efficient (for current engines) version + // of the passed-in callback, to be repeatedly applied in other Underscore + // functions. + var optimizeCb = function(func, context, argCount) { + if (context === void 0) return func; + switch (argCount == null ? 3 : argCount) { + case 1: return function(value) { + return func.call(context, value); + }; + // The 2-parameter case has been omitted only because no current consumers + // made use of it. + case 3: return function(value, index, collection) { + return func.call(context, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(context, accumulator, value, index, collection); + }; + } + return function() { + return func.apply(context, arguments); + }; + }; + + var builtinIteratee; + + // An internal function to generate callbacks that can be applied to each + // element in a collection, returning the desired result — either `identity`, + // an arbitrary callback, a property matcher, or a property accessor. + var cb = function(value, context, argCount) { + if (_.iteratee !== builtinIteratee) return _.iteratee(value, context); + if (value == null) return _.identity; + if (_.isFunction(value)) return optimizeCb(value, context, argCount); + if (_.isObject(value)) return _.matcher(value); + return _.property(value); + }; + + // External wrapper for our callback generator. Users may customize + // `_.iteratee` if they want additional predicate/iteratee shorthand styles. + // This abstraction hides the internal-only argCount argument. + _.iteratee = builtinIteratee = function(value, context) { + return cb(value, context, Infinity); + }; + + // Similar to ES6's rest param (http://ariya.ofilabs.com/2013/03/es6-and-rest-parameter.html) + // This accumulates the arguments passed into an array, after a given index. + var restArgs = function(func, startIndex) { + startIndex = startIndex == null ? func.length - 1 : +startIndex; + return function() { + var length = Math.max(arguments.length - startIndex, 0), + rest = Array(length), + index = 0; + for (; index < length; index++) { + rest[index] = arguments[index + startIndex]; + } + switch (startIndex) { + case 0: return func.call(this, rest); + case 1: return func.call(this, arguments[0], rest); + case 2: return func.call(this, arguments[0], arguments[1], rest); + } + var args = Array(startIndex + 1); + for (index = 0; index < startIndex; index++) { + args[index] = arguments[index]; + } + args[startIndex] = rest; + return func.apply(this, args); + }; + }; + + // An internal function for creating a new object that inherits from another. + var baseCreate = function(prototype) { + if (!_.isObject(prototype)) return {}; + if (nativeCreate) return nativeCreate(prototype); + Ctor.prototype = prototype; + var result = new Ctor; + Ctor.prototype = null; + return result; + }; + + var property = function(key) { + return function(obj) { + return obj == null ? void 0 : obj[key]; + }; + }; + + // Helper for collection methods to determine whether a collection + // should be iterated as an array or as an object. + // Related: http://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength + // Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094 + var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1; + var getLength = property('length'); + var isArrayLike = function(collection) { + var length = getLength(collection); + return typeof length == 'number' && length >= 0 && length <= MAX_ARRAY_INDEX; + }; + + // Collection Functions + // -------------------- + + // The cornerstone, an `each` implementation, aka `forEach`. + // Handles raw objects in addition to array-likes. Treats all + // sparse array-likes as if they were dense. + _.each = _.forEach = function(obj, iteratee, context) { + iteratee = optimizeCb(iteratee, context); + var i, length; + if (isArrayLike(obj)) { + for (i = 0, length = obj.length; i < length; i++) { + iteratee(obj[i], i, obj); + } + } else { + var keys = _.keys(obj); + for (i = 0, length = keys.length; i < length; i++) { + iteratee(obj[keys[i]], keys[i], obj); + } + } + return obj; + }; + + // Return the results of applying the iteratee to each element. + _.map = _.collect = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + results = Array(length); + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + results[index] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Create a reducing function iterating left or right. + var createReduce = function(dir) { + // Wrap code that reassigns argument variables in a separate function than + // the one that accesses `arguments.length` to avoid a perf hit. (#1991) + var reducer = function(obj, iteratee, memo, initial) { + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length, + index = dir > 0 ? 0 : length - 1; + if (!initial) { + memo = obj[keys ? keys[index] : index]; + index += dir; + } + for (; index >= 0 && index < length; index += dir) { + var currentKey = keys ? keys[index] : index; + memo = iteratee(memo, obj[currentKey], currentKey, obj); + } + return memo; + }; + + return function(obj, iteratee, memo, context) { + var initial = arguments.length >= 3; + return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial); + }; + }; + + // **Reduce** builds up a single result from a list of values, aka `inject`, + // or `foldl`. + _.reduce = _.foldl = _.inject = createReduce(1); + + // The right-associative version of reduce, also known as `foldr`. + _.reduceRight = _.foldr = createReduce(-1); + + // Return the first value which passes a truth test. Aliased as `detect`. + _.find = _.detect = function(obj, predicate, context) { + var keyFinder = isArrayLike(obj) ? _.findIndex : _.findKey; + var key = keyFinder(obj, predicate, context); + if (key !== void 0 && key !== -1) return obj[key]; + }; + + // Return all the elements that pass a truth test. + // Aliased as `select`. + _.filter = _.select = function(obj, predicate, context) { + var results = []; + predicate = cb(predicate, context); + _.each(obj, function(value, index, list) { + if (predicate(value, index, list)) results.push(value); + }); + return results; + }; + + // Return all the elements for which a truth test fails. + _.reject = function(obj, predicate, context) { + return _.filter(obj, _.negate(cb(predicate)), context); + }; + + // Determine whether all of the elements match a truth test. + // Aliased as `all`. + _.every = _.all = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (!predicate(obj[currentKey], currentKey, obj)) return false; + } + return true; + }; + + // Determine if at least one element in the object matches a truth test. + // Aliased as `any`. + _.some = _.any = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = !isArrayLike(obj) && _.keys(obj), + length = (keys || obj).length; + for (var index = 0; index < length; index++) { + var currentKey = keys ? keys[index] : index; + if (predicate(obj[currentKey], currentKey, obj)) return true; + } + return false; + }; + + // Determine if the array or object contains a given item (using `===`). + // Aliased as `includes` and `include`. + _.contains = _.includes = _.include = function(obj, item, fromIndex, guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + if (typeof fromIndex != 'number' || guard) fromIndex = 0; + return _.indexOf(obj, item, fromIndex) >= 0; + }; + + // Invoke a method (with arguments) on every item in a collection. + _.invoke = restArgs(function(obj, method, args) { + var isFunc = _.isFunction(method); + return _.map(obj, function(value) { + var func = isFunc ? method : value[method]; + return func == null ? func : func.apply(value, args); + }); + }); + + // Convenience version of a common use case of `map`: fetching a property. + _.pluck = function(obj, key) { + return _.map(obj, _.property(key)); + }; + + // Convenience version of a common use case of `filter`: selecting only objects + // containing specific `key:value` pairs. + _.where = function(obj, attrs) { + return _.filter(obj, _.matcher(attrs)); + }; + + // Convenience version of a common use case of `find`: getting the first object + // containing specific `key:value` pairs. + _.findWhere = function(obj, attrs) { + return _.find(obj, _.matcher(attrs)); + }; + + // Return the maximum element (or element-based computation). + _.max = function(obj, iteratee, context) { + var result = -Infinity, lastComputed = -Infinity, + value, computed; + if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object') && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value > result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed > lastComputed || computed === -Infinity && result === -Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + }; + + // Return the minimum element (or element-based computation). + _.min = function(obj, iteratee, context) { + var result = Infinity, lastComputed = Infinity, + value, computed; + if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object') && obj != null) { + obj = isArrayLike(obj) ? obj : _.values(obj); + for (var i = 0, length = obj.length; i < length; i++) { + value = obj[i]; + if (value != null && value < result) { + result = value; + } + } + } else { + iteratee = cb(iteratee, context); + _.each(obj, function(v, index, list) { + computed = iteratee(v, index, list); + if (computed < lastComputed || computed === Infinity && result === Infinity) { + result = v; + lastComputed = computed; + } + }); + } + return result; + }; + + // Shuffle a collection. + _.shuffle = function(obj) { + return _.sample(obj, Infinity); + }; + + // Sample **n** random values from a collection using the modern version of the + // [Fisher-Yates shuffle](http://en.wikipedia.org/wiki/Fisher–Yates_shuffle). + // If **n** is not specified, returns a single random element. + // The internal `guard` argument allows it to work with `map`. + _.sample = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = _.random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); + }; + + // Sort the object's values by a criterion produced by an iteratee. + _.sortBy = function(obj, iteratee, context) { + var index = 0; + iteratee = cb(iteratee, context); + return _.pluck(_.map(obj, function(value, key, list) { + return { + value: value, + index: index++, + criteria: iteratee(value, key, list) + }; + }).sort(function(left, right) { + var a = left.criteria; + var b = right.criteria; + if (a !== b) { + if (a > b || a === void 0) return 1; + if (a < b || b === void 0) return -1; + } + return left.index - right.index; + }), 'value'); + }; + + // An internal function used for aggregate "group by" operations. + var group = function(behavior, partition) { + return function(obj, iteratee, context) { + var result = partition ? [[], []] : {}; + iteratee = cb(iteratee, context); + _.each(obj, function(value, index) { + var key = iteratee(value, index, obj); + behavior(result, value, key); + }); + return result; + }; + }; + + // Groups the object's values by a criterion. Pass either a string attribute + // to group by, or a function that returns the criterion. + _.groupBy = group(function(result, value, key) { + if (_.has(result, key)) result[key].push(value); else result[key] = [value]; + }); + + // Indexes the object's values by a criterion, similar to `groupBy`, but for + // when you know that your index values will be unique. + _.indexBy = group(function(result, value, key) { + result[key] = value; + }); + + // Counts instances of an object that group by a certain criterion. Pass + // either a string attribute to count by, or a function that returns the + // criterion. + _.countBy = group(function(result, value, key) { + if (_.has(result, key)) result[key]++; else result[key] = 1; + }); + + var reStrSymbol = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; + // Safely create a real, live array from anything iterable. + _.toArray = function(obj) { + if (!obj) return []; + if (_.isArray(obj)) return slice.call(obj); + if (_.isString(obj)) { + // Keep surrogate pair characters together + return obj.match(reStrSymbol); + } + if (isArrayLike(obj)) return _.map(obj, _.identity); + return _.values(obj); + }; + + // Return the number of elements in an object. + _.size = function(obj) { + if (obj == null) return 0; + return isArrayLike(obj) ? obj.length : _.keys(obj).length; + }; + + // Split a collection into two arrays: one whose elements all satisfy the given + // predicate, and one whose elements all do not satisfy the predicate. + _.partition = group(function(result, value, pass) { + result[pass ? 0 : 1].push(value); + }, true); + + // Array Functions + // --------------- + + // Get the first element of an array. Passing **n** will return the first N + // values in the array. Aliased as `head` and `take`. The **guard** check + // allows it to work with `_.map`. + _.first = _.head = _.take = function(array, n, guard) { + if (array == null || array.length < 1) return void 0; + if (n == null || guard) return array[0]; + return _.initial(array, array.length - n); + }; + + // Returns everything but the last entry of the array. Especially useful on + // the arguments object. Passing **n** will return all the values in + // the array, excluding the last N. + _.initial = function(array, n, guard) { + return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n))); + }; + + // Get the last element of an array. Passing **n** will return the last N + // values in the array. + _.last = function(array, n, guard) { + if (array == null || array.length < 1) return void 0; + if (n == null || guard) return array[array.length - 1]; + return _.rest(array, Math.max(0, array.length - n)); + }; + + // Returns everything but the first entry of the array. Aliased as `tail` and `drop`. + // Especially useful on the arguments object. Passing an **n** will return + // the rest N values in the array. + _.rest = _.tail = _.drop = function(array, n, guard) { + return slice.call(array, n == null || guard ? 1 : n); + }; + + // Trim out all falsy values from an array. + _.compact = function(array) { + return _.filter(array, Boolean); + }; + + // Internal implementation of a recursive `flatten` function. + var flatten = function(input, shallow, strict, output) { + output = output || []; + var idx = output.length; + for (var i = 0, length = getLength(input); i < length; i++) { + var value = input[i]; + if (isArrayLike(value) && (_.isArray(value) || _.isArguments(value))) { + // Flatten current level of array or arguments object. + if (shallow) { + var j = 0, len = value.length; + while (j < len) output[idx++] = value[j++]; + } else { + flatten(value, shallow, strict, output); + idx = output.length; + } + } else if (!strict) { + output[idx++] = value; + } + } + return output; + }; + + // Flatten out an array, either recursively (by default), or just one level. + _.flatten = function(array, shallow) { + return flatten(array, shallow, false); + }; + + // Return a version of the array that does not contain the specified value(s). + _.without = restArgs(function(array, otherArrays) { + return _.difference(array, otherArrays); + }); + + // Produce a duplicate-free version of the array. If the array has already + // been sorted, you have the option of using a faster algorithm. + // Aliased as `unique`. + _.uniq = _.unique = function(array, isSorted, iteratee, context) { + if (!_.isBoolean(isSorted)) { + context = iteratee; + iteratee = isSorted; + isSorted = false; + } + if (iteratee != null) iteratee = cb(iteratee, context); + var result = []; + var seen = []; + for (var i = 0, length = getLength(array); i < length; i++) { + var value = array[i], + computed = iteratee ? iteratee(value, i, array) : value; + if (isSorted) { + if (!i || seen !== computed) result.push(value); + seen = computed; + } else if (iteratee) { + if (!_.contains(seen, computed)) { + seen.push(computed); + result.push(value); + } + } else if (!_.contains(result, value)) { + result.push(value); + } + } + return result; + }; + + // Produce an array that contains the union: each distinct element from all of + // the passed-in arrays. + _.union = restArgs(function(arrays) { + return _.uniq(flatten(arrays, true, true)); + }); + + // Produce an array that contains every item shared between all the + // passed-in arrays. + _.intersection = function(array) { + var result = []; + var argsLength = arguments.length; + for (var i = 0, length = getLength(array); i < length; i++) { + var item = array[i]; + if (_.contains(result, item)) continue; + var j; + for (j = 1; j < argsLength; j++) { + if (!_.contains(arguments[j], item)) break; + } + if (j === argsLength) result.push(item); + } + return result; + }; + + // Take the difference between one array and a number of other arrays. + // Only the elements present in just the first array will remain. + _.difference = restArgs(function(array, rest) { + rest = flatten(rest, true, true); + return _.filter(array, function(value){ + return !_.contains(rest, value); + }); + }); + + // Complement of _.zip. Unzip accepts an array of arrays and groups + // each array's elements on shared indices. + _.unzip = function(array) { + var length = array && _.max(array, getLength).length || 0; + var result = Array(length); + + for (var index = 0; index < length; index++) { + result[index] = _.pluck(array, index); + } + return result; + }; + + // Zip together multiple lists into a single array -- elements that share + // an index go together. + _.zip = restArgs(_.unzip); + + // Converts lists into objects. Pass either a single array of `[key, value]` + // pairs, or two parallel arrays of the same length -- one of keys, and one of + // the corresponding values. Passing by pairs is the reverse of _.pairs. + _.object = function(list, values) { + var result = {}; + for (var i = 0, length = getLength(list); i < length; i++) { + if (values) { + result[list[i]] = values[i]; + } else { + result[list[i][0]] = list[i][1]; + } + } + return result; + }; + + // Generator function to create the findIndex and findLastIndex functions. + var createPredicateIndexFinder = function(dir) { + return function(array, predicate, context) { + predicate = cb(predicate, context); + var length = getLength(array); + var index = dir > 0 ? 0 : length - 1; + for (; index >= 0 && index < length; index += dir) { + if (predicate(array[index], index, array)) return index; + } + return -1; + }; + }; + + // Returns the first index on an array-like that passes a predicate test. + _.findIndex = createPredicateIndexFinder(1); + _.findLastIndex = createPredicateIndexFinder(-1); + + // Use a comparator function to figure out the smallest index at which + // an object should be inserted so as to maintain order. Uses binary search. + _.sortedIndex = function(array, obj, iteratee, context) { + iteratee = cb(iteratee, context, 1); + var value = iteratee(obj); + var low = 0, high = getLength(array); + while (low < high) { + var mid = Math.floor((low + high) / 2); + if (iteratee(array[mid]) < value) low = mid + 1; else high = mid; + } + return low; + }; + + // Generator function to create the indexOf and lastIndexOf functions. + var createIndexFinder = function(dir, predicateFind, sortedIndex) { + return function(array, item, idx) { + var i = 0, length = getLength(array); + if (typeof idx == 'number') { + if (dir > 0) { + i = idx >= 0 ? idx : Math.max(idx + length, i); + } else { + length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1; + } + } else if (sortedIndex && idx && length) { + idx = sortedIndex(array, item); + return array[idx] === item ? idx : -1; + } + if (item !== item) { + idx = predicateFind(slice.call(array, i, length), _.isNaN); + return idx >= 0 ? idx + i : -1; + } + for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) { + if (array[idx] === item) return idx; + } + return -1; + }; + }; + + // Return the position of the first occurrence of an item in an array, + // or -1 if the item is not included in the array. + // If the array is large and already in sort order, pass `true` + // for **isSorted** to use binary search. + _.indexOf = createIndexFinder(1, _.findIndex, _.sortedIndex); + _.lastIndexOf = createIndexFinder(-1, _.findLastIndex); + + // Generate an integer Array containing an arithmetic progression. A port of + // the native Python `range()` function. See + // [the Python documentation](http://docs.python.org/library/functions.html#range). + _.range = function(start, stop, step) { + if (stop == null) { + stop = start || 0; + start = 0; + } + if (!step) { + step = stop < start ? -1 : 1; + } + + var length = Math.max(Math.ceil((stop - start) / step), 0); + var range = Array(length); + + for (var idx = 0; idx < length; idx++, start += step) { + range[idx] = start; + } + + return range; + }; + + // Split an **array** into several arrays containing **count** or less elements + // of initial array. + _.chunk = function(array, count) { + if (count == null || count < 1) return []; + + var result = []; + var i = 0, length = array.length; + while (i < length) { + result.push(slice.call(array, i, i += count)); + } + return result; + }; + + // Function (ahem) Functions + // ------------------ + + // Determines whether to execute a function as a constructor + // or a normal function with the provided arguments. + var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { + if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); + var self = baseCreate(sourceFunc.prototype); + var result = sourceFunc.apply(self, args); + if (_.isObject(result)) return result; + return self; + }; + + // Create a function bound to a given object (assigning `this`, and arguments, + // optionally). Delegates to **ECMAScript 5**'s native `Function.bind` if + // available. + _.bind = restArgs(function(func, context, args) { + if (!_.isFunction(func)) throw new TypeError('Bind must be called on a function'); + var bound = restArgs(function(callArgs) { + return executeBound(func, bound, context, this, args.concat(callArgs)); + }); + return bound; + }); + + // Partially apply a function by creating a version that has had some of its + // arguments pre-filled, without changing its dynamic `this` context. _ acts + // as a placeholder by default, allowing any combination of arguments to be + // pre-filled. Set `_.partial.placeholder` for a custom placeholder argument. + _.partial = restArgs(function(func, boundArgs) { + var placeholder = _.partial.placeholder; + var bound = function() { + var position = 0, length = boundArgs.length; + var args = Array(length); + for (var i = 0; i < length; i++) { + args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i]; + } + while (position < arguments.length) args.push(arguments[position++]); + return executeBound(func, bound, this, this, args); + }; + return bound; + }); + + _.partial.placeholder = _; + + // Bind a number of an object's methods to that object. Remaining arguments + // are the method names to be bound. Useful for ensuring that all callbacks + // defined on an object belong to it. + _.bindAll = restArgs(function(obj, keys) { + keys = flatten(keys, false, false); + var index = keys.length; + if (index < 1) throw new Error('bindAll must be passed function names'); + while (index--) { + var key = keys[index]; + obj[key] = _.bind(obj[key], obj); + } + }); + + // Memoize an expensive function by storing its results. + _.memoize = function(func, hasher) { + var memoize = function(key) { + var cache = memoize.cache; + var address = '' + (hasher ? hasher.apply(this, arguments) : key); + if (!_.has(cache, address)) cache[address] = func.apply(this, arguments); + return cache[address]; + }; + memoize.cache = {}; + return memoize; + }; + + // Delays a function for the given number of milliseconds, and then calls + // it with the arguments supplied. + _.delay = restArgs(function(func, wait, args) { + return setTimeout(function() { + return func.apply(null, args); + }, wait); + }); + + // Defers a function, scheduling it to run after the current call stack has + // cleared. + _.defer = _.partial(_.delay, _, 1); + + // Returns a function, that, when invoked, will only be triggered at most once + // during a given window of time. Normally, the throttled function will run + // as much as it can, without ever going more than once per `wait` duration; + // but if you'd like to disable the execution on the leading edge, pass + // `{leading: false}`. To disable execution on the trailing edge, ditto. + _.throttle = function(func, wait, options) { + var timeout, context, args, result; + var previous = 0; + if (!options) options = {}; + + var later = function() { + previous = options.leading === false ? 0 : _.now(); + timeout = null; + result = func.apply(context, args); + if (!timeout) context = args = null; + }; + + var throttled = function() { + var now = _.now(); + if (!previous && options.leading === false) previous = now; + var remaining = wait - (now - previous); + context = this; + args = arguments; + if (remaining <= 0 || remaining > wait) { + if (timeout) { + clearTimeout(timeout); + timeout = null; + } + previous = now; + result = func.apply(context, args); + if (!timeout) context = args = null; + } else if (!timeout && options.trailing !== false) { + timeout = setTimeout(later, remaining); + } + return result; + }; + + throttled.cancel = function() { + clearTimeout(timeout); + previous = 0; + timeout = context = args = null; + }; + + return throttled; + }; + + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + _.debounce = function(func, wait, immediate) { + var timeout, result; + + var later = function(context, args) { + timeout = null; + if (args) result = func.apply(context, args); + }; + + var debounced = restArgs(function(args) { + if (timeout) clearTimeout(timeout); + if (immediate) { + var callNow = !timeout; + timeout = setTimeout(later, wait); + if (callNow) result = func.apply(this, args); + } else { + timeout = _.delay(later, wait, this, args); + } + + return result; + }); + + debounced.cancel = function() { + clearTimeout(timeout); + timeout = null; + }; + + return debounced; + }; + + // Returns the first function passed as an argument to the second, + // allowing you to adjust arguments, run code before and after, and + // conditionally execute the original function. + _.wrap = function(func, wrapper) { + return _.partial(wrapper, func); + }; + + // Returns a negated version of the passed-in predicate. + _.negate = function(predicate) { + return function() { + return !predicate.apply(this, arguments); + }; + }; + + // Returns a function that is the composition of a list of functions, each + // consuming the return value of the function that follows. + _.compose = function() { + var args = arguments; + var start = args.length - 1; + return function() { + var i = start; + var result = args[start].apply(this, arguments); + while (i--) result = args[i].call(this, result); + return result; + }; + }; + + // Returns a function that will only be executed on and after the Nth call. + _.after = function(times, func) { + return function() { + if (--times < 1) { + return func.apply(this, arguments); + } + }; + }; + + // Returns a function that will only be executed up to (but not including) the Nth call. + _.before = function(times, func) { + var memo; + return function() { + if (--times > 0) { + memo = func.apply(this, arguments); + } + if (times <= 1) func = null; + return memo; + }; + }; + + // Returns a function that will be executed at most one time, no matter how + // often you call it. Useful for lazy initialization. + _.once = _.partial(_.before, 2); + + _.restArgs = restArgs; + + // Object Functions + // ---------------- + + // Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed. + var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString'); + var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString', + 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; + + var collectNonEnumProps = function(obj, keys) { + var nonEnumIdx = nonEnumerableProps.length; + var constructor = obj.constructor; + var proto = _.isFunction(constructor) && constructor.prototype || ObjProto; + + // Constructor is a special case. + var prop = 'constructor'; + if (_.has(obj, prop) && !_.contains(keys, prop)) keys.push(prop); + + while (nonEnumIdx--) { + prop = nonEnumerableProps[nonEnumIdx]; + if (prop in obj && obj[prop] !== proto[prop] && !_.contains(keys, prop)) { + keys.push(prop); + } + } + }; + + // Retrieve the names of an object's own properties. + // Delegates to **ECMAScript 5**'s native `Object.keys`. + _.keys = function(obj) { + if (!_.isObject(obj)) return []; + if (nativeKeys) return nativeKeys(obj); + var keys = []; + for (var key in obj) if (_.has(obj, key)) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve all the property names of an object. + _.allKeys = function(obj) { + if (!_.isObject(obj)) return []; + var keys = []; + for (var key in obj) keys.push(key); + // Ahem, IE < 9. + if (hasEnumBug) collectNonEnumProps(obj, keys); + return keys; + }; + + // Retrieve the values of an object's properties. + _.values = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var values = Array(length); + for (var i = 0; i < length; i++) { + values[i] = obj[keys[i]]; + } + return values; + }; + + // Returns the results of applying the iteratee to each element of the object. + // In contrast to _.map it returns an object. + _.mapObject = function(obj, iteratee, context) { + iteratee = cb(iteratee, context); + var keys = _.keys(obj), + length = keys.length, + results = {}; + for (var index = 0; index < length; index++) { + var currentKey = keys[index]; + results[currentKey] = iteratee(obj[currentKey], currentKey, obj); + } + return results; + }; + + // Convert an object into a list of `[key, value]` pairs. + // The opposite of _.object. + _.pairs = function(obj) { + var keys = _.keys(obj); + var length = keys.length; + var pairs = Array(length); + for (var i = 0; i < length; i++) { + pairs[i] = [keys[i], obj[keys[i]]]; + } + return pairs; + }; + + // Invert the keys and values of an object. The values must be serializable. + _.invert = function(obj) { + var result = {}; + var keys = _.keys(obj); + for (var i = 0, length = keys.length; i < length; i++) { + result[obj[keys[i]]] = keys[i]; + } + return result; + }; + + // Return a sorted list of the function names available on the object. + // Aliased as `methods`. + _.functions = _.methods = function(obj) { + var names = []; + for (var key in obj) { + if (_.isFunction(obj[key])) names.push(key); + } + return names.sort(); + }; + + // An internal function for creating assigner functions. + var createAssigner = function(keysFunc, defaults) { + return function(obj) { + var length = arguments.length; + if (defaults) obj = Object(obj); + if (length < 2 || obj == null) return obj; + for (var index = 1; index < length; index++) { + var source = arguments[index], + keys = keysFunc(source), + l = keys.length; + for (var i = 0; i < l; i++) { + var key = keys[i]; + if (!defaults || obj[key] === void 0) obj[key] = source[key]; + } + } + return obj; + }; + }; + + // Extend a given object with all the properties in passed-in object(s). + _.extend = createAssigner(_.allKeys); + + // Assigns a given object with all the own properties in the passed-in object(s). + // (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) + _.extendOwn = _.assign = createAssigner(_.keys); + + // Returns the first key on an object that passes a predicate test. + _.findKey = function(obj, predicate, context) { + predicate = cb(predicate, context); + var keys = _.keys(obj), key; + for (var i = 0, length = keys.length; i < length; i++) { + key = keys[i]; + if (predicate(obj[key], key, obj)) return key; + } + }; + + // Internal pick helper function to determine if `obj` has key `key`. + var keyInObj = function(value, key, obj) { + return key in obj; + }; + + // Return a copy of the object only containing the whitelisted properties. + _.pick = restArgs(function(obj, keys) { + var result = {}, iteratee = keys[0]; + if (obj == null) return result; + if (_.isFunction(iteratee)) { + if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]); + keys = _.allKeys(obj); + } else { + iteratee = keyInObj; + keys = flatten(keys, false, false); + obj = Object(obj); + } + for (var i = 0, length = keys.length; i < length; i++) { + var key = keys[i]; + var value = obj[key]; + if (iteratee(value, key, obj)) result[key] = value; + } + return result; + }); + + // Return a copy of the object without the blacklisted properties. + _.omit = restArgs(function(obj, keys) { + var iteratee = keys[0], context; + if (_.isFunction(iteratee)) { + iteratee = _.negate(iteratee); + if (keys.length > 1) context = keys[1]; + } else { + keys = _.map(flatten(keys, false, false), String); + iteratee = function(value, key) { + return !_.contains(keys, key); + }; + } + return _.pick(obj, iteratee, context); + }); + + // Fill in a given object with default properties. + _.defaults = createAssigner(_.allKeys, true); + + // Creates an object that inherits from the given prototype object. + // If additional properties are provided then they will be added to the + // created object. + _.create = function(prototype, props) { + var result = baseCreate(prototype); + if (props) _.extendOwn(result, props); + return result; + }; + + // Create a (shallow-cloned) duplicate of an object. + _.clone = function(obj) { + if (!_.isObject(obj)) return obj; + return _.isArray(obj) ? obj.slice() : _.extend({}, obj); + }; + + // Invokes interceptor with the obj, and then returns obj. + // The primary purpose of this method is to "tap into" a method chain, in + // order to perform operations on intermediate results within the chain. + _.tap = function(obj, interceptor) { + interceptor(obj); + return obj; + }; + + // Returns whether an object has a given set of `key:value` pairs. + _.isMatch = function(object, attrs) { + var keys = _.keys(attrs), length = keys.length; + if (object == null) return !length; + var obj = Object(object); + for (var i = 0; i < length; i++) { + var key = keys[i]; + if (attrs[key] !== obj[key] || !(key in obj)) return false; + } + return true; + }; + + + // Internal recursive comparison function for `isEqual`. + var eq, deepEq; + eq = function(a, b, aStack, bStack) { + // Identical objects are equal. `0 === -0`, but they aren't identical. + // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal). + if (a === b) return a !== 0 || 1 / a === 1 / b; + // A strict comparison is necessary because `null == undefined`. + if (a == null || b == null) return a === b; + // `NaN`s are equivalent, but non-reflexive. + if (a !== a) return b !== b; + // Exhaust primitive checks + var type = typeof a; + if (type !== 'function' && type !== 'object' && typeof b != 'object') return false; + return deepEq(a, b, aStack, bStack); + }; + + // Internal recursive comparison function for `isEqual`. + deepEq = function(a, b, aStack, bStack) { + // Unwrap any wrapped objects. + if (a instanceof _) a = a._wrapped; + if (b instanceof _) b = b._wrapped; + // Compare `[[Class]]` names. + var className = toString.call(a); + if (className !== toString.call(b)) return false; + switch (className) { + // Strings, numbers, regular expressions, dates, and booleans are compared by value. + case '[object RegExp]': + // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i') + case '[object String]': + // Primitives and their corresponding object wrappers are equivalent; thus, `"5"` is + // equivalent to `new String("5")`. + return '' + a === '' + b; + case '[object Number]': + // `NaN`s are equivalent, but non-reflexive. + // Object(NaN) is equivalent to NaN. + if (+a !== +a) return +b !== +b; + // An `egal` comparison is performed for other numeric values. + return +a === 0 ? 1 / +a === 1 / b : +a === +b; + case '[object Date]': + case '[object Boolean]': + // Coerce dates and booleans to numeric primitive values. Dates are compared by their + // millisecond representations. Note that invalid dates with millisecond representations + // of `NaN` are not equivalent. + return +a === +b; + case '[object Symbol]': + return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b); + } + + var areArrays = className === '[object Array]'; + if (!areArrays) { + if (typeof a != 'object' || typeof b != 'object') return false; + + // Objects with different constructors are not equivalent, but `Object`s or `Array`s + // from different frames are. + var aCtor = a.constructor, bCtor = b.constructor; + if (aCtor !== bCtor && !(_.isFunction(aCtor) && aCtor instanceof aCtor && + _.isFunction(bCtor) && bCtor instanceof bCtor) + && ('constructor' in a && 'constructor' in b)) { + return false; + } + } + // Assume equality for cyclic structures. The algorithm for detecting cyclic + // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`. + + // Initializing stack of traversed objects. + // It's done here since we only need them for objects and arrays comparison. + aStack = aStack || []; + bStack = bStack || []; + var length = aStack.length; + while (length--) { + // Linear search. Performance is inversely proportional to the number of + // unique nested structures. + if (aStack[length] === a) return bStack[length] === b; + } + + // Add the first object to the stack of traversed objects. + aStack.push(a); + bStack.push(b); + + // Recursively compare objects and arrays. + if (areArrays) { + // Compare array lengths to determine if a deep comparison is necessary. + length = a.length; + if (length !== b.length) return false; + // Deep compare the contents, ignoring non-numeric properties. + while (length--) { + if (!eq(a[length], b[length], aStack, bStack)) return false; + } + } else { + // Deep compare objects. + var keys = _.keys(a), key; + length = keys.length; + // Ensure that both objects contain the same number of properties before comparing deep equality. + if (_.keys(b).length !== length) return false; + while (length--) { + // Deep compare each member + key = keys[length]; + if (!(_.has(b, key) && eq(a[key], b[key], aStack, bStack))) return false; + } + } + // Remove the first object from the stack of traversed objects. + aStack.pop(); + bStack.pop(); + return true; + }; + + // Perform a deep comparison to check if two objects are equal. + _.isEqual = function(a, b) { + return eq(a, b); + }; + + // Is a given array, string, or object empty? + // An "empty" object has no enumerable own-properties. + _.isEmpty = function(obj) { + if (obj == null) return true; + if (isArrayLike(obj) && (_.isArray(obj) || _.isString(obj) || _.isArguments(obj))) return obj.length === 0; + return _.keys(obj).length === 0; + }; + + // Is a given value a DOM element? + _.isElement = function(obj) { + return !!(obj && obj.nodeType === 1); + }; + + // Is a given value an array? + // Delegates to ECMA5's native Array.isArray + _.isArray = nativeIsArray || function(obj) { + return toString.call(obj) === '[object Array]'; + }; + + // Is a given variable an object? + _.isObject = function(obj) { + var type = typeof obj; + return type === 'function' || type === 'object' && !!obj; + }; + + // Add some isType methods: isArguments, isFunction, isString, isNumber, isDate, isRegExp, isError, isMap, isWeakMap, isSet, isWeakSet. + _.each(['Arguments', 'Function', 'String', 'Number', 'Date', 'RegExp', 'Error', 'Symbol', 'Map', 'WeakMap', 'Set', 'WeakSet'], function(name) { + _['is' + name] = function(obj) { + return toString.call(obj) === '[object ' + name + ']'; + }; + }); + + // Define a fallback version of the method in browsers (ahem, IE < 9), where + // there isn't any inspectable "Arguments" type. + if (!_.isArguments(arguments)) { + _.isArguments = function(obj) { + return _.has(obj, 'callee'); + }; + } + + // Optimize `isFunction` if appropriate. Work around some typeof bugs in old v8, + // IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236). + var nodelist = root.document && root.document.childNodes; + if (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') { + _.isFunction = function(obj) { + return typeof obj == 'function' || false; + }; + } + + // Is a given object a finite number? + _.isFinite = function(obj) { + return !_.isSymbol(obj) && isFinite(obj) && !isNaN(parseFloat(obj)); + }; + + // Is the given value `NaN`? + _.isNaN = function(obj) { + return _.isNumber(obj) && isNaN(obj); + }; + + // Is a given value a boolean? + _.isBoolean = function(obj) { + return obj === true || obj === false || toString.call(obj) === '[object Boolean]'; + }; + + // Is a given value equal to null? + _.isNull = function(obj) { + return obj === null; + }; + + // Is a given variable undefined? + _.isUndefined = function(obj) { + return obj === void 0; + }; + + // Shortcut function for checking if an object has a given property directly + // on itself (in other words, not on a prototype). + _.has = function(obj, key) { + return obj != null && hasOwnProperty.call(obj, key); + }; + + // Utility Functions + // ----------------- + + // Run Underscore.js in *noConflict* mode, returning the `_` variable to its + // previous owner. Returns a reference to the Underscore object. + _.noConflict = function() { + root._ = previousUnderscore; + return this; + }; + + // Keep the identity function around for default iteratees. + _.identity = function(value) { + return value; + }; + + // Predicate-generating functions. Often useful outside of Underscore. + _.constant = function(value) { + return function() { + return value; + }; + }; + + _.noop = function(){}; + + _.property = property; + + // Generates a function for a given object that returns a given property. + _.propertyOf = function(obj) { + return obj == null ? function(){} : function(key) { + return obj[key]; + }; + }; + + // Returns a predicate for checking whether an object has a given set of + // `key:value` pairs. + _.matcher = _.matches = function(attrs) { + attrs = _.extendOwn({}, attrs); + return function(obj) { + return _.isMatch(obj, attrs); + }; + }; + + // Run a function **n** times. + _.times = function(n, iteratee, context) { + var accum = Array(Math.max(0, n)); + iteratee = optimizeCb(iteratee, context, 1); + for (var i = 0; i < n; i++) accum[i] = iteratee(i); + return accum; + }; + + // Return a random integer between min and max (inclusive). + _.random = function(min, max) { + if (max == null) { + max = min; + min = 0; + } + return min + Math.floor(Math.random() * (max - min + 1)); + }; + + // A (possibly faster) way to get the current timestamp as an integer. + _.now = Date.now || function() { + return new Date().getTime(); + }; + + // List of HTML entities for escaping. + var escapeMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + var unescapeMap = _.invert(escapeMap); + + // Functions for escaping and unescaping strings to/from HTML interpolation. + var createEscaper = function(map) { + var escaper = function(match) { + return map[match]; + }; + // Regexes for identifying a key that needs to be escaped. + var source = '(?:' + _.keys(map).join('|') + ')'; + var testRegexp = RegExp(source); + var replaceRegexp = RegExp(source, 'g'); + return function(string) { + string = string == null ? '' : '' + string; + return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string; + }; + }; + _.escape = createEscaper(escapeMap); + _.unescape = createEscaper(unescapeMap); + + // If the value of the named `property` is a function then invoke it with the + // `object` as context; otherwise, return it. + _.result = function(object, prop, fallback) { + var value = object == null ? void 0 : object[prop]; + if (value === void 0) { + value = fallback; + } + return _.isFunction(value) ? value.call(object) : value; + }; + + // Generate a unique integer id (unique within the entire client session). + // Useful for temporary DOM ids. + var idCounter = 0; + _.uniqueId = function(prefix) { + var id = ++idCounter + ''; + return prefix ? prefix + id : id; + }; + + // By default, Underscore uses ERB-style template delimiters, change the + // following template settings to use alternative delimiters. + _.templateSettings = { + evaluate: /<%([\s\S]+?)%>/g, + interpolate: /<%=([\s\S]+?)%>/g, + escape: /<%-([\s\S]+?)%>/g + }; + + // When customizing `templateSettings`, if you don't want to define an + // interpolation, evaluation or escaping regex, we need one that is + // guaranteed not to match. + var noMatch = /(.)^/; + + // Certain characters need to be escaped so that they can be put into a + // string literal. + var escapes = { + "'": "'", + '\\': '\\', + '\r': 'r', + '\n': 'n', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + var escapeRegExp = /\\|'|\r|\n|\u2028|\u2029/g; + + var escapeChar = function(match) { + return '\\' + escapes[match]; + }; + + // JavaScript micro-templating, similar to John Resig's implementation. + // Underscore templating handles arbitrary delimiters, preserves whitespace, + // and correctly escapes quotes within interpolated code. + // NB: `oldSettings` only exists for backwards compatibility. + _.template = function(text, settings, oldSettings) { + if (!settings && oldSettings) settings = oldSettings; + settings = _.defaults({}, settings, _.templateSettings); + + // Combine delimiters into one regular expression via alternation. + var matcher = RegExp([ + (settings.escape || noMatch).source, + (settings.interpolate || noMatch).source, + (settings.evaluate || noMatch).source + ].join('|') + '|$', 'g'); + + // Compile the template source, escaping string literals appropriately. + var index = 0; + var source = "__p+='"; + text.replace(matcher, function(match, escape, interpolate, evaluate, offset) { + source += text.slice(index, offset).replace(escapeRegExp, escapeChar); + index = offset + match.length; + + if (escape) { + source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; + } else if (interpolate) { + source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'"; + } else if (evaluate) { + source += "';\n" + evaluate + "\n__p+='"; + } + + // Adobe VMs need the match returned to produce the correct offset. + return match; + }); + source += "';\n"; + + // If a variable is not specified, place data values in local scope. + if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; + + source = "var __t,__p='',__j=Array.prototype.join," + + "print=function(){__p+=__j.call(arguments,'');};\n" + + source + 'return __p;\n'; + + var render; + try { + render = new Function(settings.variable || 'obj', '_', source); + } catch (e) { + e.source = source; + throw e; + } + + var template = function(data) { + return render.call(this, data, _); + }; + + // Provide the compiled source as a convenience for precompilation. + var argument = settings.variable || 'obj'; + template.source = 'function(' + argument + '){\n' + source + '}'; + + return template; + }; + + // Add a "chain" function. Start chaining a wrapped Underscore object. + _.chain = function(obj) { + var instance = _(obj); + instance._chain = true; + return instance; + }; + + // OOP + // --------------- + // If Underscore is called as a function, it returns a wrapped object that + // can be used OO-style. This wrapper holds altered versions of all the + // underscore functions. Wrapped objects may be chained. + + // Helper function to continue chaining intermediate results. + var chainResult = function(instance, obj) { + return instance._chain ? _(obj).chain() : obj; + }; + + // Add your own custom functions to the Underscore object. + _.mixin = function(obj) { + _.each(_.functions(obj), function(name) { + var func = _[name] = obj[name]; + _.prototype[name] = function() { + var args = [this._wrapped]; + push.apply(args, arguments); + return chainResult(this, func.apply(_, args)); + }; + }); + return _; + }; + + // Add all of the Underscore functions to the wrapper object. + _.mixin(_); + + // Add all mutator Array functions to the wrapper. + _.each(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + var obj = this._wrapped; + method.apply(obj, arguments); + if ((name === 'shift' || name === 'splice') && obj.length === 0) delete obj[0]; + return chainResult(this, obj); + }; + }); + + // Add all accessor Array functions to the wrapper. + _.each(['concat', 'join', 'slice'], function(name) { + var method = ArrayProto[name]; + _.prototype[name] = function() { + return chainResult(this, method.apply(this._wrapped, arguments)); + }; + }); + + // Extracts the result from a wrapped and chained object. + _.prototype.value = function() { + return this._wrapped; + }; + + // Provide unwrapping proxy for some methods used in engine operations + // such as arithmetic and JSON stringification. + _.prototype.valueOf = _.prototype.toJSON = _.prototype.value; + + _.prototype.toString = function() { + return String(this._wrapped); + }; + + // AMD registration happens at the end for compatibility with AMD loaders + // that may not enforce next-turn semantics on modules. Even though general + // practice for AMD registration is to be anonymous, underscore registers + // as a named module because, like jQuery, it is a base library that is + // popular enough to be bundled in a third party lib, but not be part of + // an AMD load request. Those cases could generate an error when an + // anonymous define() is called outside of a loader request. + if (typeof define == 'function' && define.amd) { + define('underscore', [], function() { + return _; + }); + } +}()); diff --git a/system/admin/static/dashboard/css/admin.css b/system/admin/static/dashboard/css/admin.css index 4f22bda..7ee2cb8 100644 --- a/system/admin/static/dashboard/css/admin.css +++ b/system/admin/static/dashboard/css/admin.css @@ -1,5 +1,9 @@ .body {} +.navbar-fixed { + z-index: 10000 !important; +} + .nav-wrapper { width: 95%; max-width: 1300px; @@ -36,4 +40,31 @@ textarea { .clear.padding { padding: 10px 0; -}
\ No newline at end of file +} + +select.browser-default { + margin: 10px 0; +} + +.iso-texteditor { + position: relative; + margin: 20px 0; +} + +/* OVERRIDE Bootstrap + Materialize conflicts */ +.iso-texteditor.input-field label { + color: #9e9e9e; + position: absolute; + top: 0.8rem; + left: 0.75rem; + font-size: 0.8rem; + display: block; + font-weight: normal !important; + cursor: text; + transition: .2s ease-out; + -webkit-transform: translateY(-140%); + -moz-transform: translateY(-140%); + -ms-transform: translateY(-140%); + -o-transform: translateY(-140%); + transform: translateY(-140%); +} diff --git a/system/admin/static/editor/css/materialNote.css b/system/admin/static/editor/css/materialNote.css new file mode 100644 index 0000000..6cbe90e --- /dev/null +++ b/system/admin/static/editor/css/materialNote.css @@ -0,0 +1,2160 @@ +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; } + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; } + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; } + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; } + +.materialize-red.lighten-3 { + background-color: #f3989b !important; } + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; } + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; } + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; } + +.materialize-red.lighten-1 { + background-color: #ea454b !important; } + +.materialize-red-text.text-lighten-1 { + color: #ea454b !important; } + +.materialize-red { + background-color: #e51c23 !important; } + +.materialize-red-text { + color: #e51c23 !important; } + +.materialize-red.darken-1 { + background-color: #d0181e !important; } + +.materialize-red-text.text-darken-1 { + color: #d0181e !important; } + +.materialize-red.darken-2 { + background-color: #b9151b !important; } + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; } + +.materialize-red.darken-3 { + background-color: #a21318 !important; } + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; } + +.materialize-red.darken-4 { + background-color: #8b1014 !important; } + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; } + +.red.lighten-5 { + background-color: #FFEBEE !important; } + +.red-text.text-lighten-5 { + color: #FFEBEE !important; } + +.red.lighten-4 { + background-color: #FFCDD2 !important; } + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; } + +.red.lighten-3 { + background-color: #EF9A9A !important; } + +.red-text.text-lighten-3 { + color: #EF9A9A !important; } + +.red.lighten-2 { + background-color: #E57373 !important; } + +.red-text.text-lighten-2 { + color: #E57373 !important; } + +.red.lighten-1 { + background-color: #EF5350 !important; } + +.red-text.text-lighten-1 { + color: #EF5350 !important; } + +.red { + background-color: #F44336 !important; } + +.red-text { + color: #F44336 !important; } + +.red.darken-1 { + background-color: #E53935 !important; } + +.red-text.text-darken-1 { + color: #E53935 !important; } + +.red.darken-2 { + background-color: #D32F2F !important; } + +.red-text.text-darken-2 { + color: #D32F2F !important; } + +.red.darken-3 { + background-color: #C62828 !important; } + +.red-text.text-darken-3 { + color: #C62828 !important; } + +.red.darken-4 { + background-color: #B71C1C !important; } + +.red-text.text-darken-4 { + color: #B71C1C !important; } + +.red.accent-1 { + background-color: #FF8A80 !important; } + +.red-text.text-accent-1 { + color: #FF8A80 !important; } + +.red.accent-2 { + background-color: #FF5252 !important; } + +.red-text.text-accent-2 { + color: #FF5252 !important; } + +.red.accent-3 { + background-color: #FF1744 !important; } + +.red-text.text-accent-3 { + color: #FF1744 !important; } + +.red.accent-4 { + background-color: #D50000 !important; } + +.red-text.text-accent-4 { + color: #D50000 !important; } + +.pink.lighten-5 { + background-color: #fce4ec !important; } + +.pink-text.text-lighten-5 { + color: #fce4ec !important; } + +.pink.lighten-4 { + background-color: #f8bbd0 !important; } + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; } + +.pink.lighten-3 { + background-color: #f48fb1 !important; } + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; } + +.pink.lighten-2 { + background-color: #f06292 !important; } + +.pink-text.text-lighten-2 { + color: #f06292 !important; } + +.pink.lighten-1 { + background-color: #ec407a !important; } + +.pink-text.text-lighten-1 { + color: #ec407a !important; } + +.pink { + background-color: #e91e63 !important; } + +.pink-text { + color: #e91e63 !important; } + +.pink.darken-1 { + background-color: #d81b60 !important; } + +.pink-text.text-darken-1 { + color: #d81b60 !important; } + +.pink.darken-2 { + background-color: #c2185b !important; } + +.pink-text.text-darken-2 { + color: #c2185b !important; } + +.pink.darken-3 { + background-color: #ad1457 !important; } + +.pink-text.text-darken-3 { + color: #ad1457 !important; } + +.pink.darken-4 { + background-color: #880e4f !important; } + +.pink-text.text-darken-4 { + color: #880e4f !important; } + +.pink.accent-1 { + background-color: #ff80ab !important; } + +.pink-text.text-accent-1 { + color: #ff80ab !important; } + +.pink.accent-2 { + background-color: #ff4081 !important; } + +.pink-text.text-accent-2 { + color: #ff4081 !important; } + +.pink.accent-3 { + background-color: #f50057 !important; } + +.pink-text.text-accent-3 { + color: #f50057 !important; } + +.pink.accent-4 { + background-color: #c51162 !important; } + +.pink-text.text-accent-4 { + color: #c51162 !important; } + +.purple.lighten-5 { + background-color: #f3e5f5 !important; } + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; } + +.purple.lighten-4 { + background-color: #e1bee7 !important; } + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; } + +.purple.lighten-3 { + background-color: #ce93d8 !important; } + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; } + +.purple.lighten-2 { + background-color: #ba68c8 !important; } + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; } + +.purple.lighten-1 { + background-color: #ab47bc !important; } + +.purple-text.text-lighten-1 { + color: #ab47bc !important; } + +.purple { + background-color: #9c27b0 !important; } + +.purple-text { + color: #9c27b0 !important; } + +.purple.darken-1 { + background-color: #8e24aa !important; } + +.purple-text.text-darken-1 { + color: #8e24aa !important; } + +.purple.darken-2 { + background-color: #7b1fa2 !important; } + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; } + +.purple.darken-3 { + background-color: #6a1b9a !important; } + +.purple-text.text-darken-3 { + color: #6a1b9a !important; } + +.purple.darken-4 { + background-color: #4a148c !important; } + +.purple-text.text-darken-4 { + color: #4a148c !important; } + +.purple.accent-1 { + background-color: #ea80fc !important; } + +.purple-text.text-accent-1 { + color: #ea80fc !important; } + +.purple.accent-2 { + background-color: #e040fb !important; } + +.purple-text.text-accent-2 { + color: #e040fb !important; } + +.purple.accent-3 { + background-color: #d500f9 !important; } + +.purple-text.text-accent-3 { + color: #d500f9 !important; } + +.purple.accent-4 { + background-color: #aa00ff !important; } + +.purple-text.text-accent-4 { + color: #aa00ff !important; } + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; } + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; } + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; } + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; } + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; } + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; } + +.deep-purple.lighten-2 { + background-color: #9575cd !important; } + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; } + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; } + +.deep-purple-text.text-lighten-1 { + color: #7e57c2 !important; } + +.deep-purple { + background-color: #673ab7 !important; } + +.deep-purple-text { + color: #673ab7 !important; } + +.deep-purple.darken-1 { + background-color: #5e35b1 !important; } + +.deep-purple-text.text-darken-1 { + color: #5e35b1 !important; } + +.deep-purple.darken-2 { + background-color: #512da8 !important; } + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; } + +.deep-purple.darken-3 { + background-color: #4527a0 !important; } + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; } + +.deep-purple.darken-4 { + background-color: #311b92 !important; } + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; } + +.deep-purple.accent-1 { + background-color: #b388ff !important; } + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; } + +.deep-purple.accent-2 { + background-color: #7c4dff !important; } + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; } + +.deep-purple.accent-3 { + background-color: #651fff !important; } + +.deep-purple-text.text-accent-3 { + color: #651fff !important; } + +.deep-purple.accent-4 { + background-color: #6200ea !important; } + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; } + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; } + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; } + +.indigo.lighten-4 { + background-color: #c5cae9 !important; } + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; } + +.indigo.lighten-3 { + background-color: #9fa8da !important; } + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; } + +.indigo.lighten-2 { + background-color: #7986cb !important; } + +.indigo-text.text-lighten-2 { + color: #7986cb !important; } + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; } + +.indigo-text.text-lighten-1 { + color: #5c6bc0 !important; } + +.indigo { + background-color: #3f51b5 !important; } + +.indigo-text { + color: #3f51b5 !important; } + +.indigo.darken-1 { + background-color: #3949ab !important; } + +.indigo-text.text-darken-1 { + color: #3949ab !important; } + +.indigo.darken-2 { + background-color: #303f9f !important; } + +.indigo-text.text-darken-2 { + color: #303f9f !important; } + +.indigo.darken-3 { + background-color: #283593 !important; } + +.indigo-text.text-darken-3 { + color: #283593 !important; } + +.indigo.darken-4 { + background-color: #1a237e !important; } + +.indigo-text.text-darken-4 { + color: #1a237e !important; } + +.indigo.accent-1 { + background-color: #8c9eff !important; } + +.indigo-text.text-accent-1 { + color: #8c9eff !important; } + +.indigo.accent-2 { + background-color: #536dfe !important; } + +.indigo-text.text-accent-2 { + color: #536dfe !important; } + +.indigo.accent-3 { + background-color: #3d5afe !important; } + +.indigo-text.text-accent-3 { + color: #3d5afe !important; } + +.indigo.accent-4 { + background-color: #304ffe !important; } + +.indigo-text.text-accent-4 { + color: #304ffe !important; } + +.blue.lighten-5 { + background-color: #E3F2FD !important; } + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; } + +.blue.lighten-4 { + background-color: #BBDEFB !important; } + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; } + +.blue.lighten-3 { + background-color: #90CAF9 !important; } + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; } + +.blue.lighten-2 { + background-color: #64B5F6 !important; } + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; } + +.blue.lighten-1 { + background-color: #42A5F5 !important; } + +.blue-text.text-lighten-1 { + color: #42A5F5 !important; } + +.blue { + background-color: #2196F3 !important; } + +.blue-text { + color: #2196F3 !important; } + +.blue.darken-1 { + background-color: #1E88E5 !important; } + +.blue-text.text-darken-1 { + color: #1E88E5 !important; } + +.blue.darken-2 { + background-color: #1976D2 !important; } + +.blue-text.text-darken-2 { + color: #1976D2 !important; } + +.blue.darken-3 { + background-color: #1565C0 !important; } + +.blue-text.text-darken-3 { + color: #1565C0 !important; } + +.blue.darken-4 { + background-color: #0D47A1 !important; } + +.blue-text.text-darken-4 { + color: #0D47A1 !important; } + +.blue.accent-1 { + background-color: #82B1FF !important; } + +.blue-text.text-accent-1 { + color: #82B1FF !important; } + +.blue.accent-2 { + background-color: #448AFF !important; } + +.blue-text.text-accent-2 { + color: #448AFF !important; } + +.blue.accent-3 { + background-color: #2979FF !important; } + +.blue-text.text-accent-3 { + color: #2979FF !important; } + +.blue.accent-4 { + background-color: #2962FF !important; } + +.blue-text.text-accent-4 { + color: #2962FF !important; } + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; } + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; } + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; } + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; } + +.light-blue.lighten-3 { + background-color: #81d4fa !important; } + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; } + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; } + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; } + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; } + +.light-blue-text.text-lighten-1 { + color: #29b6f6 !important; } + +.light-blue { + background-color: #03a9f4 !important; } + +.light-blue-text { + color: #03a9f4 !important; } + +.light-blue.darken-1 { + background-color: #039be5 !important; } + +.light-blue-text.text-darken-1 { + color: #039be5 !important; } + +.light-blue.darken-2 { + background-color: #0288d1 !important; } + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; } + +.light-blue.darken-3 { + background-color: #0277bd !important; } + +.light-blue-text.text-darken-3 { + color: #0277bd !important; } + +.light-blue.darken-4 { + background-color: #01579b !important; } + +.light-blue-text.text-darken-4 { + color: #01579b !important; } + +.light-blue.accent-1 { + background-color: #80d8ff !important; } + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; } + +.light-blue.accent-2 { + background-color: #40c4ff !important; } + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; } + +.light-blue.accent-3 { + background-color: #00b0ff !important; } + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; } + +.light-blue.accent-4 { + background-color: #0091ea !important; } + +.light-blue-text.text-accent-4 { + color: #0091ea !important; } + +.cyan.lighten-5 { + background-color: #e0f7fa !important; } + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; } + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; } + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; } + +.cyan.lighten-3 { + background-color: #80deea !important; } + +.cyan-text.text-lighten-3 { + color: #80deea !important; } + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; } + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; } + +.cyan.lighten-1 { + background-color: #26c6da !important; } + +.cyan-text.text-lighten-1 { + color: #26c6da !important; } + +.cyan { + background-color: #00bcd4 !important; } + +.cyan-text { + color: #00bcd4 !important; } + +.cyan.darken-1 { + background-color: #00acc1 !important; } + +.cyan-text.text-darken-1 { + color: #00acc1 !important; } + +.cyan.darken-2 { + background-color: #0097a7 !important; } + +.cyan-text.text-darken-2 { + color: #0097a7 !important; } + +.cyan.darken-3 { + background-color: #00838f !important; } + +.cyan-text.text-darken-3 { + color: #00838f !important; } + +.cyan.darken-4 { + background-color: #006064 !important; } + +.cyan-text.text-darken-4 { + color: #006064 !important; } + +.cyan.accent-1 { + background-color: #84ffff !important; } + +.cyan-text.text-accent-1 { + color: #84ffff !important; } + +.cyan.accent-2 { + background-color: #18ffff !important; } + +.cyan-text.text-accent-2 { + color: #18ffff !important; } + +.cyan.accent-3 { + background-color: #00e5ff !important; } + +.cyan-text.text-accent-3 { + color: #00e5ff !important; } + +.cyan.accent-4 { + background-color: #00b8d4 !important; } + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; } + +.teal.lighten-5 { + background-color: #e0f2f1 !important; } + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; } + +.teal.lighten-4 { + background-color: #b2dfdb !important; } + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; } + +.teal.lighten-3 { + background-color: #80cbc4 !important; } + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; } + +.teal.lighten-2 { + background-color: #4db6ac !important; } + +.teal-text.text-lighten-2 { + color: #4db6ac !important; } + +.teal.lighten-1 { + background-color: #26a69a !important; } + +.teal-text.text-lighten-1 { + color: #26a69a !important; } + +.teal { + background-color: #009688 !important; } + +.teal-text { + color: #009688 !important; } + +.teal.darken-1 { + background-color: #00897b !important; } + +.teal-text.text-darken-1 { + color: #00897b !important; } + +.teal.darken-2 { + background-color: #00796b !important; } + +.teal-text.text-darken-2 { + color: #00796b !important; } + +.teal.darken-3 { + background-color: #00695c !important; } + +.teal-text.text-darken-3 { + color: #00695c !important; } + +.teal.darken-4 { + background-color: #004d40 !important; } + +.teal-text.text-darken-4 { + color: #004d40 !important; } + +.teal.accent-1 { + background-color: #a7ffeb !important; } + +.teal-text.text-accent-1 { + color: #a7ffeb !important; } + +.teal.accent-2 { + background-color: #64ffda !important; } + +.teal-text.text-accent-2 { + color: #64ffda !important; } + +.teal.accent-3 { + background-color: #1de9b6 !important; } + +.teal-text.text-accent-3 { + color: #1de9b6 !important; } + +.teal.accent-4 { + background-color: #00bfa5 !important; } + +.teal-text.text-accent-4 { + color: #00bfa5 !important; } + +.green.lighten-5 { + background-color: #E8F5E9 !important; } + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; } + +.green.lighten-4 { + background-color: #C8E6C9 !important; } + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; } + +.green.lighten-3 { + background-color: #A5D6A7 !important; } + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; } + +.green.lighten-2 { + background-color: #81C784 !important; } + +.green-text.text-lighten-2 { + color: #81C784 !important; } + +.green.lighten-1 { + background-color: #66BB6A !important; } + +.green-text.text-lighten-1 { + color: #66BB6A !important; } + +.green { + background-color: #4CAF50 !important; } + +.green-text { + color: #4CAF50 !important; } + +.green.darken-1 { + background-color: #43A047 !important; } + +.green-text.text-darken-1 { + color: #43A047 !important; } + +.green.darken-2 { + background-color: #388E3C !important; } + +.green-text.text-darken-2 { + color: #388E3C !important; } + +.green.darken-3 { + background-color: #2E7D32 !important; } + +.green-text.text-darken-3 { + color: #2E7D32 !important; } + +.green.darken-4 { + background-color: #1B5E20 !important; } + +.green-text.text-darken-4 { + color: #1B5E20 !important; } + +.green.accent-1 { + background-color: #B9F6CA !important; } + +.green-text.text-accent-1 { + color: #B9F6CA !important; } + +.green.accent-2 { + background-color: #69F0AE !important; } + +.green-text.text-accent-2 { + color: #69F0AE !important; } + +.green.accent-3 { + background-color: #00E676 !important; } + +.green-text.text-accent-3 { + color: #00E676 !important; } + +.green.accent-4 { + background-color: #00C853 !important; } + +.green-text.text-accent-4 { + color: #00C853 !important; } + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; } + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; } + +.light-green.lighten-4 { + background-color: #dcedc8 !important; } + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; } + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; } + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; } + +.light-green.lighten-2 { + background-color: #aed581 !important; } + +.light-green-text.text-lighten-2 { + color: #aed581 !important; } + +.light-green.lighten-1 { + background-color: #9ccc65 !important; } + +.light-green-text.text-lighten-1 { + color: #9ccc65 !important; } + +.light-green { + background-color: #8bc34a !important; } + +.light-green-text { + color: #8bc34a !important; } + +.light-green.darken-1 { + background-color: #7cb342 !important; } + +.light-green-text.text-darken-1 { + color: #7cb342 !important; } + +.light-green.darken-2 { + background-color: #689f38 !important; } + +.light-green-text.text-darken-2 { + color: #689f38 !important; } + +.light-green.darken-3 { + background-color: #558b2f !important; } + +.light-green-text.text-darken-3 { + color: #558b2f !important; } + +.light-green.darken-4 { + background-color: #33691e !important; } + +.light-green-text.text-darken-4 { + color: #33691e !important; } + +.light-green.accent-1 { + background-color: #ccff90 !important; } + +.light-green-text.text-accent-1 { + color: #ccff90 !important; } + +.light-green.accent-2 { + background-color: #b2ff59 !important; } + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; } + +.light-green.accent-3 { + background-color: #76ff03 !important; } + +.light-green-text.text-accent-3 { + color: #76ff03 !important; } + +.light-green.accent-4 { + background-color: #64dd17 !important; } + +.light-green-text.text-accent-4 { + color: #64dd17 !important; } + +.lime.lighten-5 { + background-color: #f9fbe7 !important; } + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; } + +.lime.lighten-4 { + background-color: #f0f4c3 !important; } + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; } + +.lime.lighten-3 { + background-color: #e6ee9c !important; } + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; } + +.lime.lighten-2 { + background-color: #dce775 !important; } + +.lime-text.text-lighten-2 { + color: #dce775 !important; } + +.lime.lighten-1 { + background-color: #d4e157 !important; } + +.lime-text.text-lighten-1 { + color: #d4e157 !important; } + +.lime { + background-color: #cddc39 !important; } + +.lime-text { + color: #cddc39 !important; } + +.lime.darken-1 { + background-color: #c0ca33 !important; } + +.lime-text.text-darken-1 { + color: #c0ca33 !important; } + +.lime.darken-2 { + background-color: #afb42b !important; } + +.lime-text.text-darken-2 { + color: #afb42b !important; } + +.lime.darken-3 { + background-color: #9e9d24 !important; } + +.lime-text.text-darken-3 { + color: #9e9d24 !important; } + +.lime.darken-4 { + background-color: #827717 !important; } + +.lime-text.text-darken-4 { + color: #827717 !important; } + +.lime.accent-1 { + background-color: #f4ff81 !important; } + +.lime-text.text-accent-1 { + color: #f4ff81 !important; } + +.lime.accent-2 { + background-color: #eeff41 !important; } + +.lime-text.text-accent-2 { + color: #eeff41 !important; } + +.lime.accent-3 { + background-color: #c6ff00 !important; } + +.lime-text.text-accent-3 { + color: #c6ff00 !important; } + +.lime.accent-4 { + background-color: #aeea00 !important; } + +.lime-text.text-accent-4 { + color: #aeea00 !important; } + +.yellow.lighten-5 { + background-color: #fffde7 !important; } + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; } + +.yellow.lighten-4 { + background-color: #fff9c4 !important; } + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; } + +.yellow.lighten-3 { + background-color: #fff59d !important; } + +.yellow-text.text-lighten-3 { + color: #fff59d !important; } + +.yellow.lighten-2 { + background-color: #fff176 !important; } + +.yellow-text.text-lighten-2 { + color: #fff176 !important; } + +.yellow.lighten-1 { + background-color: #ffee58 !important; } + +.yellow-text.text-lighten-1 { + color: #ffee58 !important; } + +.yellow { + background-color: #ffeb3b !important; } + +.yellow-text { + color: #ffeb3b !important; } + +.yellow.darken-1 { + background-color: #fdd835 !important; } + +.yellow-text.text-darken-1 { + color: #fdd835 !important; } + +.yellow.darken-2 { + background-color: #fbc02d !important; } + +.yellow-text.text-darken-2 { + color: #fbc02d !important; } + +.yellow.darken-3 { + background-color: #f9a825 !important; } + +.yellow-text.text-darken-3 { + color: #f9a825 !important; } + +.yellow.darken-4 { + background-color: #f57f17 !important; } + +.yellow-text.text-darken-4 { + color: #f57f17 !important; } + +.yellow.accent-1 { + background-color: #ffff8d !important; } + +.yellow-text.text-accent-1 { + color: #ffff8d !important; } + +.yellow.accent-2 { + background-color: #ffff00 !important; } + +.yellow-text.text-accent-2 { + color: #ffff00 !important; } + +.yellow.accent-3 { + background-color: #ffea00 !important; } + +.yellow-text.text-accent-3 { + color: #ffea00 !important; } + +.yellow.accent-4 { + background-color: #ffd600 !important; } + +.yellow-text.text-accent-4 { + color: #ffd600 !important; } + +.amber.lighten-5 { + background-color: #fff8e1 !important; } + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; } + +.amber.lighten-4 { + background-color: #ffecb3 !important; } + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; } + +.amber.lighten-3 { + background-color: #ffe082 !important; } + +.amber-text.text-lighten-3 { + color: #ffe082 !important; } + +.amber.lighten-2 { + background-color: #ffd54f !important; } + +.amber-text.text-lighten-2 { + color: #ffd54f !important; } + +.amber.lighten-1 { + background-color: #ffca28 !important; } + +.amber-text.text-lighten-1 { + color: #ffca28 !important; } + +.amber { + background-color: #ffc107 !important; } + +.amber-text { + color: #ffc107 !important; } + +.amber.darken-1 { + background-color: #ffb300 !important; } + +.amber-text.text-darken-1 { + color: #ffb300 !important; } + +.amber.darken-2 { + background-color: #ffa000 !important; } + +.amber-text.text-darken-2 { + color: #ffa000 !important; } + +.amber.darken-3 { + background-color: #ff8f00 !important; } + +.amber-text.text-darken-3 { + color: #ff8f00 !important; } + +.amber.darken-4 { + background-color: #ff6f00 !important; } + +.amber-text.text-darken-4 { + color: #ff6f00 !important; } + +.amber.accent-1 { + background-color: #ffe57f !important; } + +.amber-text.text-accent-1 { + color: #ffe57f !important; } + +.amber.accent-2 { + background-color: #ffd740 !important; } + +.amber-text.text-accent-2 { + color: #ffd740 !important; } + +.amber.accent-3 { + background-color: #ffc400 !important; } + +.amber-text.text-accent-3 { + color: #ffc400 !important; } + +.amber.accent-4 { + background-color: #ffab00 !important; } + +.amber-text.text-accent-4 { + color: #ffab00 !important; } + +.orange.lighten-5 { + background-color: #fff3e0 !important; } + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; } + +.orange.lighten-4 { + background-color: #ffe0b2 !important; } + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; } + +.orange.lighten-3 { + background-color: #ffcc80 !important; } + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; } + +.orange.lighten-2 { + background-color: #ffb74d !important; } + +.orange-text.text-lighten-2 { + color: #ffb74d !important; } + +.orange.lighten-1 { + background-color: #ffa726 !important; } + +.orange-text.text-lighten-1 { + color: #ffa726 !important; } + +.orange { + background-color: #ff9800 !important; } + +.orange-text { + color: #ff9800 !important; } + +.orange.darken-1 { + background-color: #fb8c00 !important; } + +.orange-text.text-darken-1 { + color: #fb8c00 !important; } + +.orange.darken-2 { + background-color: #f57c00 !important; } + +.orange-text.text-darken-2 { + color: #f57c00 !important; } + +.orange.darken-3 { + background-color: #ef6c00 !important; } + +.orange-text.text-darken-3 { + color: #ef6c00 !important; } + +.orange.darken-4 { + background-color: #e65100 !important; } + +.orange-text.text-darken-4 { + color: #e65100 !important; } + +.orange.accent-1 { + background-color: #ffd180 !important; } + +.orange-text.text-accent-1 { + color: #ffd180 !important; } + +.orange.accent-2 { + background-color: #ffab40 !important; } + +.orange-text.text-accent-2 { + color: #ffab40 !important; } + +.orange.accent-3 { + background-color: #ff9100 !important; } + +.orange-text.text-accent-3 { + color: #ff9100 !important; } + +.orange.accent-4 { + background-color: #ff6d00 !important; } + +.orange-text.text-accent-4 { + color: #ff6d00 !important; } + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; } + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; } + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; } + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; } + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; } + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; } + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; } + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; } + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; } + +.deep-orange-text.text-lighten-1 { + color: #ff7043 !important; } + +.deep-orange { + background-color: #ff5722 !important; } + +.deep-orange-text { + color: #ff5722 !important; } + +.deep-orange.darken-1 { + background-color: #f4511e !important; } + +.deep-orange-text.text-darken-1 { + color: #f4511e !important; } + +.deep-orange.darken-2 { + background-color: #e64a19 !important; } + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; } + +.deep-orange.darken-3 { + background-color: #d84315 !important; } + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; } + +.deep-orange.darken-4 { + background-color: #bf360c !important; } + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; } + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; } + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; } + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; } + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; } + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; } + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; } + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; } + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; } + +.brown.lighten-5 { + background-color: #efebe9 !important; } + +.brown-text.text-lighten-5 { + color: #efebe9 !important; } + +.brown.lighten-4 { + background-color: #d7ccc8 !important; } + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; } + +.brown.lighten-3 { + background-color: #bcaaa4 !important; } + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; } + +.brown.lighten-2 { + background-color: #a1887f !important; } + +.brown-text.text-lighten-2 { + color: #a1887f !important; } + +.brown.lighten-1 { + background-color: #8d6e63 !important; } + +.brown-text.text-lighten-1 { + color: #8d6e63 !important; } + +.brown { + background-color: #795548 !important; } + +.brown-text { + color: #795548 !important; } + +.brown.darken-1 { + background-color: #6d4c41 !important; } + +.brown-text.text-darken-1 { + color: #6d4c41 !important; } + +.brown.darken-2 { + background-color: #5d4037 !important; } + +.brown-text.text-darken-2 { + color: #5d4037 !important; } + +.brown.darken-3 { + background-color: #4e342e !important; } + +.brown-text.text-darken-3 { + color: #4e342e !important; } + +.brown.darken-4 { + background-color: #3e2723 !important; } + +.brown-text.text-darken-4 { + color: #3e2723 !important; } + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; } + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; } + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; } + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; } + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; } + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; } + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; } + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; } + +.blue-grey.lighten-1 { + background-color: #78909c !important; } + +.blue-grey-text.text-lighten-1 { + color: #78909c !important; } + +.blue-grey { + background-color: #607d8b !important; } + +.blue-grey-text { + color: #607d8b !important; } + +.blue-grey.darken-1 { + background-color: #546e7a !important; } + +.blue-grey-text.text-darken-1 { + color: #546e7a !important; } + +.blue-grey.darken-2 { + background-color: #455a64 !important; } + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; } + +.blue-grey.darken-3 { + background-color: #37474f !important; } + +.blue-grey-text.text-darken-3 { + color: #37474f !important; } + +.blue-grey.darken-4 { + background-color: #263238 !important; } + +.blue-grey-text.text-darken-4 { + color: #263238 !important; } + +.grey.lighten-5 { + background-color: #fafafa !important; } + +.grey-text.text-lighten-5 { + color: #fafafa !important; } + +.grey.lighten-4 { + background-color: #f5f5f5 !important; } + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; } + +.grey.lighten-3 { + background-color: #eeeeee !important; } + +.grey-text.text-lighten-3 { + color: #eeeeee !important; } + +.grey.lighten-2 { + background-color: #e0e0e0 !important; } + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; } + +.grey.lighten-1 { + background-color: #bdbdbd !important; } + +.grey-text.text-lighten-1 { + color: #bdbdbd !important; } + +.grey { + background-color: #9e9e9e !important; } + +.grey-text { + color: #9e9e9e !important; } + +.grey.darken-1 { + background-color: #757575 !important; } + +.grey-text.text-darken-1 { + color: #757575 !important; } + +.grey.darken-2 { + background-color: #616161 !important; } + +.grey-text.text-darken-2 { + color: #616161 !important; } + +.grey.darken-3 { + background-color: #424242 !important; } + +.grey-text.text-darken-3 { + color: #424242 !important; } + +.grey.darken-4 { + background-color: #212121 !important; } + +.grey-text.text-darken-4 { + color: #212121 !important; } + +.shades.black { + background-color: #000000 !important; } + +.shades-text.text-black { + color: #000000 !important; } + +.shades.white { + background-color: #FFFFFF !important; } + +.shades-text.text-white { + color: #FFFFFF !important; } + +.shades.transparent { + background-color: transparent !important; } + +.shades-text.text-transparent { + color: transparent !important; } + +.black { + background-color: #000000 !important; } + +.black-text { + color: #000000 !important; } + +.white { + background-color: #FFFFFF !important; } + +.white-text { + color: #FFFFFF !important; } + +.transparent { + background-color: transparent !important; } + +.transparent-text { + color: transparent !important; } + +/*** Colors ***/ +/*** Badges ***/ +/*** Buttons ***/ +/*** Cards ***/ +/*** Collapsible ***/ +/*** Dropdown ***/ +/*** Fonts ***/ +/*** Forms ***/ +/*** Global ***/ +/*** Navbar ***/ +/*** SideNav ***/ +/*** Photo Slider ***/ +/*** Tabs ***/ +/*** Tables ***/ +/*** Toasts ***/ +/*** Typography ***/ +/*** Collections ***/ +/* Progress Bar */ +/* variables +=================================================================================*/ +.editorDialogs .modal, .note-editor .modal { + background-color: white; + color: #424242; + z-index: 1057 !important; + backface-visibility: hidden; } + .editorDialogs .modal .input-field input:not([readonly]), .editorDialogs .modal .input-field input.datepicker, .note-editor .modal .input-field input:not([readonly]), .note-editor .modal .input-field input.datepicker { + border-color: #424242 !important; } + .editorDialogs .modal .input-field input:focus:not([readonly]), .editorDialogs .modal .input-field input.datepicker:focus, .editorDialogs .modal textarea.materialize-textarea:focus:not([readonly]), .note-editor .modal .input-field input:focus:not([readonly]), .note-editor .modal .input-field input.datepicker:focus, .note-editor .modal textarea.materialize-textarea:focus:not([readonly]) { + box-shadow: 0 1px 0 0 #2196F3 !important; + border-color: #2196F3 !important; } + .editorDialogs .modal label, .editorDialogs .modal .input-field input:not([readonly]) + label, .editorDialogs .modal .input-field input.datepicker + label, .editorDialogs .modal .input-field .prefix, .editorDialogs .modal .note-editor + label, .note-editor .modal label, .note-editor .modal .input-field input:not([readonly]) + label, .note-editor .modal .input-field input.datepicker + label, .note-editor .modal .input-field .prefix, .note-editor .modal .note-editor + label { + color: #424242 !important; } + .editorDialogs .modal .input-field input:focus:not([readonly]) + label, .editorDialogs .modal .input-field input.datepicker:focus + label, .editorDialogs .modal .input-field .prefix.active, .editorDialogs .modal textarea.materialize-textarea:focus:not([readonly]) + label, .note-editor .modal .input-field input:focus:not([readonly]) + label, .note-editor .modal .input-field input.datepicker:focus + label, .note-editor .modal .input-field .prefix.active, .note-editor .modal textarea.materialize-textarea:focus:not([readonly]) + label { + color: #2196F3 !important; } + .editorDialogs .modal .btn, .note-editor .modal .btn { + background-color: #0D47A1; + color: white !important; } + .editorDialogs .modal .btn:hover, .note-editor .modal .btn:hover { + background-color: #115cd0 !important; } + .editorDialogs .modal .btn.disabled, .note-editor .modal .btn.disabled { + background-color: #07285a !important; } + .editorDialogs .modal .modal-footer, .note-editor .modal .modal-footer { + background-color: #c7c7c7; } + .editorDialogs .modal .modal-footer .btnClose, .note-editor .modal .modal-footer .btnClose { + margin-right: 15px; + background-color: #B71C1C; } + .editorDialogs .modal .modal-footer .btnClose:hover, .note-editor .modal .modal-footer .btnClose:hover { + background-color: #de2828 !important; } + .editorDialogs .modal .canvasContainerEmpty, .note-editor .modal .canvasContainerEmpty { + border: solid 5px #2196F3; } + +.note-editor .note-editable::-webkit-scrollbar, .editorDialogs .modal-content::-webkit-scrollbar, .note-editor .note-color-palette::-webkit-scrollbar, .note-editor .note-codable::-webkit-scrollbar, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar { + width: 17px !important; } +.note-editor .note-editable::-webkit-scrollbar-track, .editorDialogs .modal-content::-webkit-scrollbar-track, .note-editor .note-color-palette::-webkit-scrollbar-track, .note-editor .note-codable::-webkit-scrollbar-track, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar-track { + background-color: #e0e0e0 !important; } +.note-editor .note-editable::-webkit-scrollbar-thumb, .editorDialogs .modal-content::-webkit-scrollbar-thumb, .note-editor .note-color-palette::-webkit-scrollbar-thumb, .note-editor .note-codable::-webkit-scrollbar-thumb, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar-thumb { + background-color: white !important; } +.note-editor .note-editable::-webkit-scrollbar-thumb:hover, .editorDialogs .modal-content::-webkit-scrollbar-thumb:hover, .note-editor .note-color-palette::-webkit-scrollbar-thumb:hover, .note-editor .note-codable::-webkit-scrollbar-thumb:hover, .modal.modal-fixed-footer .modal-content::-webkit-scrollbar-thumb:hover { + background-color: white !important; } + +.note-editor { + position: relative; + border-left: 1px solid #e0e0e0; + border-bottom: 1px solid #e0e0e0; + border-right: 1px solid #e0e0e0; } + .note-editor .img-circle { + border-radius: 50%; } + .note-editor .img-rounded { + border-radius: 5%; } + .note-editor .img-thumbnail { + border: solid 2px #e0e0e0; + height: 200px; } + .note-editor .img-bordered { + border: solid 5px #e0e0e0; } + .note-editor .btn:hover { + background-color: #fafafa !important; } + .note-editor .btn.active { + background-color: #2196F3; } + .note-editor .note-editable ul li { + list-style-type: square !important; + display: list-item; + list-style-position: inside; } + .note-editor .note-dialog > div { + display: none; } + .note-editor .note-dialog .form-group { + margin-right: 0; + margin-left: 0; } + .note-editor .note-dialog .note-modal-form { + margin: 0; } + .note-editor .note-dialog .note-image-dialog .note-dropzone { + min-height: 100px; + margin-bottom: 10px; + font-size: 30px; + line-height: 4; + color: lightgray; + text-align: center; + border: 4px dashed lightgray; } + .note-editor .transparent { + opacity: 0; } + .note-editor .note-resizebar { + background-color: #e0e0e0; + width: 100%; + height: 13px; + cursor: ns-resize; + padding-top: 1px; } + .note-editor .note-resizebar .note-icon-bar { + width: 20px; + margin: 2px auto; + border-top: 2px solid white; } + .note-editor .note-toolbar { + position: relative; + color: #424242; + background-color: #e0e0e0; + margin: 0; + z-index: 1052; } + .note-editor .note-toolbar ul { + padding: 0; } + .note-editor .note-toolbar .btn.disabled, .note-editor .note-toolbar button.disabled { + display: none; } + .note-editor .note-toolbar .dropdown { + cursor: pointer; } + .note-editor .note-toolbar .note-current-fontname { + min-width: 134px; + display: inline-block; + text-align: left; } + .note-editor .note-handle .note-control-selection { + position: absolute; + display: none; + border: 2px solid #e0e0e0; } + .note-editor .note-handle .note-control-selection .note-control-selection-bg { + width: 100%; + height: 100%; + z-index: 3; + background-color: rgba(117, 117, 117, 0.3); } + .note-editor .note-handle .note-control-selection > div { + position: absolute; } + .note-editor .note-handle .note-control-selection .note-control-handle { + width: 7px; + height: 7px; + border: 1px solid black; } + .note-editor .note-handle .note-control-selection .note-control-holder { + width: 7px; + height: 7px; + border: 1px solid black; } + .note-editor .note-handle .note-control-selection .note-control-sizing { + width: 15px; + height: 15px; + background-color: #e0e0e0; + z-index: 5; + cursor: se-resize; } + .note-editor .note-handle .note-control-selection .note-control-nw { + top: -5px; + left: -5px; + border-right: 0; + border-bottom: 0; } + .note-editor .note-handle .note-control-selection .note-control-ne { + top: -5px; + right: -5px; + border-bottom: 0; + border-left: none; } + .note-editor .note-handle .note-control-selection .note-control-sw { + bottom: -5px; + left: -5px; + border-top: 0; + border-right: 0; } + .note-editor .note-handle .note-control-selection .note-control-se { + right: -5px; + bottom: -5px; } + .note-editor .note-handle .note-control-selection .note-control-selection-info { + right: 0; + bottom: 0; + padding: 5px; + margin: 17px; + font-size: 15px; + color: #424242; + background-color: #e0e0e0; + z-index: 5; } + +.note-dialog .note-help-dialog { + color: #e0e0e0; } + .note-dialog .note-help-dialog h4 { + color: #424242; } + .note-dialog .note-help-dialog thead { + background-color: #2196F3; } + .note-dialog .note-help-dialog tbody { + background-color: #e0e0e0; } + +.note-editor .btn-group, .popover .btn-group { + display: inline-block; + margin-right: 10px; + position: relative; } + .note-editor .btn-group ul, .popover .btn-group ul { + padding: 0; } + .note-editor .btn-group .closeLeft, .popover .btn-group .closeLeft { + padding-right: 0 !important; + margin-right: 0 !important; } + .note-editor .btn-group .closeLeft i, .popover .btn-group .closeLeft i { + margin-right: 0 !important; } + .note-editor .btn-group i.left, .popover .btn-group i.left { + margin-right: 5px; } +.note-editor .note-toolbar .btn, .popover .note-toolbar .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: #e0e0e0; } +.note-editor .btnSecond, .popover .btnSecond { + background-color: #0D47A1 !important; } +.note-editor .btnThird, .popover .btnThird { + background-color: #B71C1C !important; } +.note-editor note-toolbar button, .note-editor button, .note-editor .note-toolbar .btn, .popover note-toolbar button, .popover button, .popover .note-toolbar .btn { + background-color: #e0e0e0; + border: none; + height: 36px; + text-transform: uppercase; + color: #424242 !important; } +.note-editor [type="checkbox"]:checked + label:before, .note-editor [type="checkbox"]:checked + label:before, .popover [type="checkbox"]:checked + label:before, .popover [type="checkbox"]:checked + label:before { + border-right-color: #0D47A1 !important; + border-bottom-color: #0D47A1 !important; } +.note-editor .note-palette-title, .popover .note-palette-title { + padding: 0 !important; } +.note-editor .colorName, .popover .colorName { + display: inline-block; + color: #424242; } + @media only screen and (max-width: 600px) { + .note-editor .colorName, .popover .colorName { + display: none; } } +.note-editor .note-color-palette, .popover .note-color-palette { + line-height: 10px; + border: solid 3px #e0e0e0; + padding: 0 !important; + overflow-x: scroll; + overflow-y: hidden; } + .note-editor .note-color-palette .note-color-row, .popover .note-color-palette .note-color-row { + padding: 0 !important; + min-width: 300px; } + .note-editor .note-color-palette button.note-color-btn, .popover .note-color-palette button.note-color-btn { + width: 20px; + height: 20px; + padding: 0; + margin: 0; } + .note-editor .note-color-palette .note-color-btn:hover:after, .popover .note-color-palette .note-color-btn:hover:after { + position: absolute; + width: 30px; + height: 30px; + content: ""; + background-color: inherit; + margin-top: -15px; + margin-left: -15px; } +.note-editor .note-dimension-picker, .popover .note-dimension-picker { + overflow: hidden; } +.note-editor .largeDropdown, .popover .largeDropdown { + width: 290px; } +.note-editor .dropdown-menu, .popover .dropdown-menu { + z-index: 1033; } + .note-editor .dropdown-menu.note-check, .popover .dropdown-menu.note-check { + min-width: 80px; } + .note-editor .dropdown-menu label, .popover .dropdown-menu label { + color: #424242 !important; } +.note-editor ul.dropdown-menu, .popover ul.dropdown-menu { + position: absolute; + top: 20px; + background-color: #fafafa; + border-left: 3px solid #e0e0e0; + border-bottom: 3px solid #e0e0e0; + border-right: 3px solid #e0e0e0; } + .note-editor ul.dropdown-menu#colors, .popover ul.dropdown-menu#colors { + width: 342px; } + .note-editor ul.dropdown-menu#colors .indicator, .popover ul.dropdown-menu#colors .indicator { + width: 50%; + left: 0; } + .note-editor ul.dropdown-menu .colorTable, .popover ul.dropdown-menu .colorTable { + padding: 3px 0; } + .note-editor ul.dropdown-menu .tabs, .popover ul.dropdown-menu .tabs { + background-color: #e0e0e0; } + .note-editor ul.dropdown-menu .tabs:hover, .popover ul.dropdown-menu .tabs:hover { + background-color: #e0e0e0; } + .note-editor ul.dropdown-menu .tabs .tab a, .note-editor ul.dropdown-menu .tabs .tab a:hover, .popover ul.dropdown-menu .tabs .tab a, .popover ul.dropdown-menu .tabs .tab a:hover { + color: #9e9e9e; } + .note-editor ul.dropdown-menu .tabs .indicator, .popover ul.dropdown-menu .tabs .indicator { + background-color: #9e9e9e; } + .note-editor ul.dropdown-menu li, .popover ul.dropdown-menu li { + list-style-type: none; + padding: 0 !important; } + .note-editor ul.dropdown-menu li div, .popover ul.dropdown-menu li div { + padding: 3px 15px; + cursor: pointer; } + +.note-popover .popover { + position: absolute; + max-width: none; + color: #424242; } + .note-popover .popover .arrow { + width: 0; + height: 0; + border-style: solid; + border-width: 0 10px 10px 10px; + border-color: transparent transparent #e0e0e0 transparent; } + .note-popover .popover .popover-content { + background-color: #e0e0e0; } + .note-popover .popover .popover-content > a { + margin-left: 12px; } + .note-popover .popover .popover-content a { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle; } + .note-popover .popover .popover-content .arrow { + left: 20px; } + .note-popover .popover .popover-content .btn-group { + display: inline-block; } + .note-popover .popover .popover-content .btn-group .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: #e0e0e0; + color: #424242 !important; } + +.note-popover .popover .popover-content .note-para .dropdown-menu, .note-toolbar .note-para .dropdown-menu { + min-width: 172px; + padding: 5px; } + +.note-popover .popover .popover-content .note-para .dropdown-menu > div:first-child, .note-toolbar .note-para .dropdown-menu > div:first-child { + margin-right: 5px; } + +.note-editor .note-dropzone { + position: absolute; + z-index: 100; + display: none; + color: #87cefa; + background-color: white; + border: 2px dashed #87cefa; + opacity: .95; + pointer-event: none; } + +.note-editor .note-dropzone .note-dropzone-message { + display: table-cell; + font-size: 28px; + font-weight: bold; + text-align: center; + vertical-align: middle; } + +.note-editor .note-dropzone.hover { + color: #098ddf; + border: 2px dashed #098ddf; } + +.note-editor.dragover .note-dropzone { + display: table; } + +.note-editor.fullscreen { + position: fixed; + top: 0; + left: 0; + z-index: 2021; + width: 100%; } + +.note-editor.fullscreen .note-editable { + background-color: white; } + +.note-editor.fullscreen .note-resizebar { + display: none; } + +.note-editor.codeview .note-editable { + display: none; } + +.note-editor.codeview .note-codable { + display: block; } + +.note-editor .note-statusbar { + background-color: #f5f5f5; } + +.note-editor .note-editable[contenteditable=true]:empty:not(:focus):before { + color: #a9a9a9; + content: attr(data-placeholder); } + +.note-editor .note-editable { + padding: 10px; + overflow: auto; + outline: 0; } + +.note-editor .note-editable[contenteditable="false"] { + background-color: #e5e5e5; } + +.note-editor .note-codable { + display: none; + width: 100%; + padding: 10px; + margin-bottom: 0; + font-family: Menlo, Monaco, monospace, sans-serif; + font-size: 14px; + color: #ccc; + background-color: #222; + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + resize: none; } + +.note-air-editor { + outline: 0; } + +.note-popover .popover .popover-content, +.note-toolbar { + padding: 0; + margin: 0; } + +.note-popover .popover .popover-content > .btn-group, +.note-toolbar > .btn-group { + margin-top: 0; + margin-right: 5px; + margin-left: 0; } + +.note-popover .popover .popover-content .btn-group .note-table, +.note-toolbar .btn-group .note-table { + min-width: 0; + padding: 5px; } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker, +.note-toolbar .btn-group .note-table .note-dimension-picker { + font-size: 18px; } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher { + position: absolute !important; + z-index: 3; + width: 260px; + height: 260px; + cursor: pointer; } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted { + position: relative !important; + z-index: 1; + width: 312px; + height: 130px; + background-size: 26px 26px; + background-image: repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), repeating-linear-gradient(-90deg, transparent, transparent 4px, #fff 4px, #fff 26px); } + +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted { + position: absolute !important; + z-index: 2; + width: 26px; + height: 26px; + background-size: 26px 26px; + background-image: repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), repeating-linear-gradient(-90deg, transparent, transparent 4px, #2196F3 4px, #2196F3 26px); } + +.note-popover .popover .popover-content .note-style h1, +.note-toolbar .note-style h1, +.note-popover .popover .popover-content .note-style h2, +.note-toolbar .note-style h2, +.note-popover .popover .popover-content .note-style h3, +.note-toolbar .note-style h3, +.note-popover .popover .popover-content .note-style h4, +.note-toolbar .note-style h4, +.note-popover .popover .popover-content .note-style h5, +.note-toolbar .note-style h5, +.note-popover .popover .popover-content .note-style h6, +.note-toolbar .note-style h6, +.note-popover .popover .popover-content .note-style blockquote, +.note-toolbar .note-style blockquote { + margin: 0; } + +.note-popover .popover .popover-content .note-color .dropdown-toggle, +.note-toolbar .note-color .dropdown-toggle { + width: 20px; + padding-left: 5px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group, +.note-toolbar .note-color .dropdown-menu .btn-group { + margin: 0; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group:first-child, +.note-toolbar .note-color .dropdown-menu .btn-group:first-child { + margin: 0 5px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-palette-title, +.note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title { + margin: 2px 7px; + font-size: 12px; + text-align: center; + border-bottom: 1px solid #eee; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset { + padding: 0 3px; + margin: 3px; + font-size: 11px; + cursor: pointer; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-row, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-row { + height: 20px; } + +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset:hover, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover { + background: #eee; } + +/*.note-popover .popover .popover-content .dropdown-menu, +.note-toolbar .dropdown-menu { + min-width: 90px +}*/ +.note-popover .popover .popover-content .dropdown-menu.right, +.note-toolbar .dropdown-menu.right { + right: 0; + left: auto; } + +.note-popover .popover .popover-content .dropdown-menu.right::before, +.note-toolbar .dropdown-menu.right::before { + right: 9px; + left: auto !important; } + +.note-popover .popover .popover-content .dropdown-menu.right::after, +.note-toolbar .dropdown-menu.right::after { + right: 10px; + left: auto !important; } + +.note-popover .popover .popover-content .dropdown-menu.note-check li a i, +.note-toolbar .dropdown-menu.note-check li a i { + color: deepskyblue; + visibility: hidden; } + +.note-popover .popover .popover-content .dropdown-menu.note-check li a.checked i, +.note-toolbar .dropdown-menu.note-check li a.checked i { + visibility: visible; } + +.note-popover .popover .popover-content .note-fontsize-10, +.note-toolbar .note-fontsize-10 { + font-size: 10px; } + +/*# sourceMappingURL=materialNote.css.map */ diff --git a/system/admin/static/editor/css/materialNote.css.map b/system/admin/static/editor/css/materialNote.css.map new file mode 100644 index 0000000..9c59b74 --- /dev/null +++ b/system/admin/static/editor/css/materialNote.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../sass/components/_color.scss","../sass/components/_variables.scss","../sass/materialNote.scss"], +"names": [], +"file": "materialNote.css" +}
\ No newline at end of file diff --git a/system/admin/static/editor/css/materialize.css b/system/admin/static/editor/css/materialize.css new file mode 100644 index 0000000..334ebbc --- /dev/null +++ b/system/admin/static/editor/css/materialize.css @@ -0,0 +1,8284 @@ +.materialize-red.lighten-5 { + background-color: #fdeaeb !important; } + +.materialize-red-text.text-lighten-5 { + color: #fdeaeb !important; } + +.materialize-red.lighten-4 { + background-color: #f8c1c3 !important; } + +.materialize-red-text.text-lighten-4 { + color: #f8c1c3 !important; } + +.materialize-red.lighten-3 { + background-color: #f3989b !important; } + +.materialize-red-text.text-lighten-3 { + color: #f3989b !important; } + +.materialize-red.lighten-2 { + background-color: #ee6e73 !important; } + +.materialize-red-text.text-lighten-2 { + color: #ee6e73 !important; } + +.materialize-red.lighten-1 { + background-color: #ea454b !important; } + +.materialize-red-text.text-lighten-1 { + color: #ea454b !important; } + +.materialize-red { + background-color: #e51c23 !important; } + +.materialize-red-text { + color: #e51c23 !important; } + +.materialize-red.darken-1 { + background-color: #d0181e !important; } + +.materialize-red-text.text-darken-1 { + color: #d0181e !important; } + +.materialize-red.darken-2 { + background-color: #b9151b !important; } + +.materialize-red-text.text-darken-2 { + color: #b9151b !important; } + +.materialize-red.darken-3 { + background-color: #a21318 !important; } + +.materialize-red-text.text-darken-3 { + color: #a21318 !important; } + +.materialize-red.darken-4 { + background-color: #8b1014 !important; } + +.materialize-red-text.text-darken-4 { + color: #8b1014 !important; } + +.red.lighten-5 { + background-color: #FFEBEE !important; } + +.red-text.text-lighten-5 { + color: #FFEBEE !important; } + +.red.lighten-4 { + background-color: #FFCDD2 !important; } + +.red-text.text-lighten-4 { + color: #FFCDD2 !important; } + +.red.lighten-3 { + background-color: #EF9A9A !important; } + +.red-text.text-lighten-3 { + color: #EF9A9A !important; } + +.red.lighten-2 { + background-color: #E57373 !important; } + +.red-text.text-lighten-2 { + color: #E57373 !important; } + +.red.lighten-1 { + background-color: #EF5350 !important; } + +.red-text.text-lighten-1 { + color: #EF5350 !important; } + +.red { + background-color: #F44336 !important; } + +.red-text { + color: #F44336 !important; } + +.red.darken-1 { + background-color: #E53935 !important; } + +.red-text.text-darken-1 { + color: #E53935 !important; } + +.red.darken-2 { + background-color: #D32F2F !important; } + +.red-text.text-darken-2 { + color: #D32F2F !important; } + +.red.darken-3 { + background-color: #C62828 !important; } + +.red-text.text-darken-3 { + color: #C62828 !important; } + +.red.darken-4 { + background-color: #B71C1C !important; } + +.red-text.text-darken-4 { + color: #B71C1C !important; } + +.red.accent-1 { + background-color: #FF8A80 !important; } + +.red-text.text-accent-1 { + color: #FF8A80 !important; } + +.red.accent-2 { + background-color: #FF5252 !important; } + +.red-text.text-accent-2 { + color: #FF5252 !important; } + +.red.accent-3 { + background-color: #FF1744 !important; } + +.red-text.text-accent-3 { + color: #FF1744 !important; } + +.red.accent-4 { + background-color: #D50000 !important; } + +.red-text.text-accent-4 { + color: #D50000 !important; } + +.pink.lighten-5 { + background-color: #fce4ec !important; } + +.pink-text.text-lighten-5 { + color: #fce4ec !important; } + +.pink.lighten-4 { + background-color: #f8bbd0 !important; } + +.pink-text.text-lighten-4 { + color: #f8bbd0 !important; } + +.pink.lighten-3 { + background-color: #f48fb1 !important; } + +.pink-text.text-lighten-3 { + color: #f48fb1 !important; } + +.pink.lighten-2 { + background-color: #f06292 !important; } + +.pink-text.text-lighten-2 { + color: #f06292 !important; } + +.pink.lighten-1 { + background-color: #ec407a !important; } + +.pink-text.text-lighten-1 { + color: #ec407a !important; } + +.pink { + background-color: #e91e63 !important; } + +.pink-text { + color: #e91e63 !important; } + +.pink.darken-1 { + background-color: #d81b60 !important; } + +.pink-text.text-darken-1 { + color: #d81b60 !important; } + +.pink.darken-2 { + background-color: #c2185b !important; } + +.pink-text.text-darken-2 { + color: #c2185b !important; } + +.pink.darken-3 { + background-color: #ad1457 !important; } + +.pink-text.text-darken-3 { + color: #ad1457 !important; } + +.pink.darken-4 { + background-color: #880e4f !important; } + +.pink-text.text-darken-4 { + color: #880e4f !important; } + +.pink.accent-1 { + background-color: #ff80ab !important; } + +.pink-text.text-accent-1 { + color: #ff80ab !important; } + +.pink.accent-2 { + background-color: #ff4081 !important; } + +.pink-text.text-accent-2 { + color: #ff4081 !important; } + +.pink.accent-3 { + background-color: #f50057 !important; } + +.pink-text.text-accent-3 { + color: #f50057 !important; } + +.pink.accent-4 { + background-color: #c51162 !important; } + +.pink-text.text-accent-4 { + color: #c51162 !important; } + +.purple.lighten-5 { + background-color: #f3e5f5 !important; } + +.purple-text.text-lighten-5 { + color: #f3e5f5 !important; } + +.purple.lighten-4 { + background-color: #e1bee7 !important; } + +.purple-text.text-lighten-4 { + color: #e1bee7 !important; } + +.purple.lighten-3 { + background-color: #ce93d8 !important; } + +.purple-text.text-lighten-3 { + color: #ce93d8 !important; } + +.purple.lighten-2 { + background-color: #ba68c8 !important; } + +.purple-text.text-lighten-2 { + color: #ba68c8 !important; } + +.purple.lighten-1 { + background-color: #ab47bc !important; } + +.purple-text.text-lighten-1 { + color: #ab47bc !important; } + +.purple { + background-color: #9c27b0 !important; } + +.purple-text { + color: #9c27b0 !important; } + +.purple.darken-1 { + background-color: #8e24aa !important; } + +.purple-text.text-darken-1 { + color: #8e24aa !important; } + +.purple.darken-2 { + background-color: #7b1fa2 !important; } + +.purple-text.text-darken-2 { + color: #7b1fa2 !important; } + +.purple.darken-3 { + background-color: #6a1b9a !important; } + +.purple-text.text-darken-3 { + color: #6a1b9a !important; } + +.purple.darken-4 { + background-color: #4a148c !important; } + +.purple-text.text-darken-4 { + color: #4a148c !important; } + +.purple.accent-1 { + background-color: #ea80fc !important; } + +.purple-text.text-accent-1 { + color: #ea80fc !important; } + +.purple.accent-2 { + background-color: #e040fb !important; } + +.purple-text.text-accent-2 { + color: #e040fb !important; } + +.purple.accent-3 { + background-color: #d500f9 !important; } + +.purple-text.text-accent-3 { + color: #d500f9 !important; } + +.purple.accent-4 { + background-color: #aa00ff !important; } + +.purple-text.text-accent-4 { + color: #aa00ff !important; } + +.deep-purple.lighten-5 { + background-color: #ede7f6 !important; } + +.deep-purple-text.text-lighten-5 { + color: #ede7f6 !important; } + +.deep-purple.lighten-4 { + background-color: #d1c4e9 !important; } + +.deep-purple-text.text-lighten-4 { + color: #d1c4e9 !important; } + +.deep-purple.lighten-3 { + background-color: #b39ddb !important; } + +.deep-purple-text.text-lighten-3 { + color: #b39ddb !important; } + +.deep-purple.lighten-2 { + background-color: #9575cd !important; } + +.deep-purple-text.text-lighten-2 { + color: #9575cd !important; } + +.deep-purple.lighten-1 { + background-color: #7e57c2 !important; } + +.deep-purple-text.text-lighten-1 { + color: #7e57c2 !important; } + +.deep-purple { + background-color: #673ab7 !important; } + +.deep-purple-text { + color: #673ab7 !important; } + +.deep-purple.darken-1 { + background-color: #5e35b1 !important; } + +.deep-purple-text.text-darken-1 { + color: #5e35b1 !important; } + +.deep-purple.darken-2 { + background-color: #512da8 !important; } + +.deep-purple-text.text-darken-2 { + color: #512da8 !important; } + +.deep-purple.darken-3 { + background-color: #4527a0 !important; } + +.deep-purple-text.text-darken-3 { + color: #4527a0 !important; } + +.deep-purple.darken-4 { + background-color: #311b92 !important; } + +.deep-purple-text.text-darken-4 { + color: #311b92 !important; } + +.deep-purple.accent-1 { + background-color: #b388ff !important; } + +.deep-purple-text.text-accent-1 { + color: #b388ff !important; } + +.deep-purple.accent-2 { + background-color: #7c4dff !important; } + +.deep-purple-text.text-accent-2 { + color: #7c4dff !important; } + +.deep-purple.accent-3 { + background-color: #651fff !important; } + +.deep-purple-text.text-accent-3 { + color: #651fff !important; } + +.deep-purple.accent-4 { + background-color: #6200ea !important; } + +.deep-purple-text.text-accent-4 { + color: #6200ea !important; } + +.indigo.lighten-5 { + background-color: #e8eaf6 !important; } + +.indigo-text.text-lighten-5 { + color: #e8eaf6 !important; } + +.indigo.lighten-4 { + background-color: #c5cae9 !important; } + +.indigo-text.text-lighten-4 { + color: #c5cae9 !important; } + +.indigo.lighten-3 { + background-color: #9fa8da !important; } + +.indigo-text.text-lighten-3 { + color: #9fa8da !important; } + +.indigo.lighten-2 { + background-color: #7986cb !important; } + +.indigo-text.text-lighten-2 { + color: #7986cb !important; } + +.indigo.lighten-1 { + background-color: #5c6bc0 !important; } + +.indigo-text.text-lighten-1 { + color: #5c6bc0 !important; } + +.indigo { + background-color: #3f51b5 !important; } + +.indigo-text { + color: #3f51b5 !important; } + +.indigo.darken-1 { + background-color: #3949ab !important; } + +.indigo-text.text-darken-1 { + color: #3949ab !important; } + +.indigo.darken-2 { + background-color: #303f9f !important; } + +.indigo-text.text-darken-2 { + color: #303f9f !important; } + +.indigo.darken-3 { + background-color: #283593 !important; } + +.indigo-text.text-darken-3 { + color: #283593 !important; } + +.indigo.darken-4 { + background-color: #1a237e !important; } + +.indigo-text.text-darken-4 { + color: #1a237e !important; } + +.indigo.accent-1 { + background-color: #8c9eff !important; } + +.indigo-text.text-accent-1 { + color: #8c9eff !important; } + +.indigo.accent-2 { + background-color: #536dfe !important; } + +.indigo-text.text-accent-2 { + color: #536dfe !important; } + +.indigo.accent-3 { + background-color: #3d5afe !important; } + +.indigo-text.text-accent-3 { + color: #3d5afe !important; } + +.indigo.accent-4 { + background-color: #304ffe !important; } + +.indigo-text.text-accent-4 { + color: #304ffe !important; } + +.blue.lighten-5 { + background-color: #E3F2FD !important; } + +.blue-text.text-lighten-5 { + color: #E3F2FD !important; } + +.blue.lighten-4 { + background-color: #BBDEFB !important; } + +.blue-text.text-lighten-4 { + color: #BBDEFB !important; } + +.blue.lighten-3 { + background-color: #90CAF9 !important; } + +.blue-text.text-lighten-3 { + color: #90CAF9 !important; } + +.blue.lighten-2 { + background-color: #64B5F6 !important; } + +.blue-text.text-lighten-2 { + color: #64B5F6 !important; } + +.blue.lighten-1 { + background-color: #42A5F5 !important; } + +.blue-text.text-lighten-1 { + color: #42A5F5 !important; } + +.blue { + background-color: #2196F3 !important; } + +.blue-text { + color: #2196F3 !important; } + +.blue.darken-1 { + background-color: #1E88E5 !important; } + +.blue-text.text-darken-1 { + color: #1E88E5 !important; } + +.blue.darken-2 { + background-color: #1976D2 !important; } + +.blue-text.text-darken-2 { + color: #1976D2 !important; } + +.blue.darken-3 { + background-color: #1565C0 !important; } + +.blue-text.text-darken-3 { + color: #1565C0 !important; } + +.blue.darken-4 { + background-color: #0D47A1 !important; } + +.blue-text.text-darken-4 { + color: #0D47A1 !important; } + +.blue.accent-1 { + background-color: #82B1FF !important; } + +.blue-text.text-accent-1 { + color: #82B1FF !important; } + +.blue.accent-2 { + background-color: #448AFF !important; } + +.blue-text.text-accent-2 { + color: #448AFF !important; } + +.blue.accent-3 { + background-color: #2979FF !important; } + +.blue-text.text-accent-3 { + color: #2979FF !important; } + +.blue.accent-4 { + background-color: #2962FF !important; } + +.blue-text.text-accent-4 { + color: #2962FF !important; } + +.light-blue.lighten-5 { + background-color: #e1f5fe !important; } + +.light-blue-text.text-lighten-5 { + color: #e1f5fe !important; } + +.light-blue.lighten-4 { + background-color: #b3e5fc !important; } + +.light-blue-text.text-lighten-4 { + color: #b3e5fc !important; } + +.light-blue.lighten-3 { + background-color: #81d4fa !important; } + +.light-blue-text.text-lighten-3 { + color: #81d4fa !important; } + +.light-blue.lighten-2 { + background-color: #4fc3f7 !important; } + +.light-blue-text.text-lighten-2 { + color: #4fc3f7 !important; } + +.light-blue.lighten-1 { + background-color: #29b6f6 !important; } + +.light-blue-text.text-lighten-1 { + color: #29b6f6 !important; } + +.light-blue { + background-color: #03a9f4 !important; } + +.light-blue-text { + color: #03a9f4 !important; } + +.light-blue.darken-1 { + background-color: #039be5 !important; } + +.light-blue-text.text-darken-1 { + color: #039be5 !important; } + +.light-blue.darken-2 { + background-color: #0288d1 !important; } + +.light-blue-text.text-darken-2 { + color: #0288d1 !important; } + +.light-blue.darken-3 { + background-color: #0277bd !important; } + +.light-blue-text.text-darken-3 { + color: #0277bd !important; } + +.light-blue.darken-4 { + background-color: #01579b !important; } + +.light-blue-text.text-darken-4 { + color: #01579b !important; } + +.light-blue.accent-1 { + background-color: #80d8ff !important; } + +.light-blue-text.text-accent-1 { + color: #80d8ff !important; } + +.light-blue.accent-2 { + background-color: #40c4ff !important; } + +.light-blue-text.text-accent-2 { + color: #40c4ff !important; } + +.light-blue.accent-3 { + background-color: #00b0ff !important; } + +.light-blue-text.text-accent-3 { + color: #00b0ff !important; } + +.light-blue.accent-4 { + background-color: #0091ea !important; } + +.light-blue-text.text-accent-4 { + color: #0091ea !important; } + +.cyan.lighten-5 { + background-color: #e0f7fa !important; } + +.cyan-text.text-lighten-5 { + color: #e0f7fa !important; } + +.cyan.lighten-4 { + background-color: #b2ebf2 !important; } + +.cyan-text.text-lighten-4 { + color: #b2ebf2 !important; } + +.cyan.lighten-3 { + background-color: #80deea !important; } + +.cyan-text.text-lighten-3 { + color: #80deea !important; } + +.cyan.lighten-2 { + background-color: #4dd0e1 !important; } + +.cyan-text.text-lighten-2 { + color: #4dd0e1 !important; } + +.cyan.lighten-1 { + background-color: #26c6da !important; } + +.cyan-text.text-lighten-1 { + color: #26c6da !important; } + +.cyan { + background-color: #00bcd4 !important; } + +.cyan-text { + color: #00bcd4 !important; } + +.cyan.darken-1 { + background-color: #00acc1 !important; } + +.cyan-text.text-darken-1 { + color: #00acc1 !important; } + +.cyan.darken-2 { + background-color: #0097a7 !important; } + +.cyan-text.text-darken-2 { + color: #0097a7 !important; } + +.cyan.darken-3 { + background-color: #00838f !important; } + +.cyan-text.text-darken-3 { + color: #00838f !important; } + +.cyan.darken-4 { + background-color: #006064 !important; } + +.cyan-text.text-darken-4 { + color: #006064 !important; } + +.cyan.accent-1 { + background-color: #84ffff !important; } + +.cyan-text.text-accent-1 { + color: #84ffff !important; } + +.cyan.accent-2 { + background-color: #18ffff !important; } + +.cyan-text.text-accent-2 { + color: #18ffff !important; } + +.cyan.accent-3 { + background-color: #00e5ff !important; } + +.cyan-text.text-accent-3 { + color: #00e5ff !important; } + +.cyan.accent-4 { + background-color: #00b8d4 !important; } + +.cyan-text.text-accent-4 { + color: #00b8d4 !important; } + +.teal.lighten-5 { + background-color: #e0f2f1 !important; } + +.teal-text.text-lighten-5 { + color: #e0f2f1 !important; } + +.teal.lighten-4 { + background-color: #b2dfdb !important; } + +.teal-text.text-lighten-4 { + color: #b2dfdb !important; } + +.teal.lighten-3 { + background-color: #80cbc4 !important; } + +.teal-text.text-lighten-3 { + color: #80cbc4 !important; } + +.teal.lighten-2 { + background-color: #4db6ac !important; } + +.teal-text.text-lighten-2 { + color: #4db6ac !important; } + +.teal.lighten-1 { + background-color: #26a69a !important; } + +.teal-text.text-lighten-1 { + color: #26a69a !important; } + +.teal { + background-color: #009688 !important; } + +.teal-text { + color: #009688 !important; } + +.teal.darken-1 { + background-color: #00897b !important; } + +.teal-text.text-darken-1 { + color: #00897b !important; } + +.teal.darken-2 { + background-color: #00796b !important; } + +.teal-text.text-darken-2 { + color: #00796b !important; } + +.teal.darken-3 { + background-color: #00695c !important; } + +.teal-text.text-darken-3 { + color: #00695c !important; } + +.teal.darken-4 { + background-color: #004d40 !important; } + +.teal-text.text-darken-4 { + color: #004d40 !important; } + +.teal.accent-1 { + background-color: #a7ffeb !important; } + +.teal-text.text-accent-1 { + color: #a7ffeb !important; } + +.teal.accent-2 { + background-color: #64ffda !important; } + +.teal-text.text-accent-2 { + color: #64ffda !important; } + +.teal.accent-3 { + background-color: #1de9b6 !important; } + +.teal-text.text-accent-3 { + color: #1de9b6 !important; } + +.teal.accent-4 { + background-color: #00bfa5 !important; } + +.teal-text.text-accent-4 { + color: #00bfa5 !important; } + +.green.lighten-5 { + background-color: #E8F5E9 !important; } + +.green-text.text-lighten-5 { + color: #E8F5E9 !important; } + +.green.lighten-4 { + background-color: #C8E6C9 !important; } + +.green-text.text-lighten-4 { + color: #C8E6C9 !important; } + +.green.lighten-3 { + background-color: #A5D6A7 !important; } + +.green-text.text-lighten-3 { + color: #A5D6A7 !important; } + +.green.lighten-2 { + background-color: #81C784 !important; } + +.green-text.text-lighten-2 { + color: #81C784 !important; } + +.green.lighten-1 { + background-color: #66BB6A !important; } + +.green-text.text-lighten-1 { + color: #66BB6A !important; } + +.green { + background-color: #4CAF50 !important; } + +.green-text { + color: #4CAF50 !important; } + +.green.darken-1 { + background-color: #43A047 !important; } + +.green-text.text-darken-1 { + color: #43A047 !important; } + +.green.darken-2 { + background-color: #388E3C !important; } + +.green-text.text-darken-2 { + color: #388E3C !important; } + +.green.darken-3 { + background-color: #2E7D32 !important; } + +.green-text.text-darken-3 { + color: #2E7D32 !important; } + +.green.darken-4 { + background-color: #1B5E20 !important; } + +.green-text.text-darken-4 { + color: #1B5E20 !important; } + +.green.accent-1 { + background-color: #B9F6CA !important; } + +.green-text.text-accent-1 { + color: #B9F6CA !important; } + +.green.accent-2 { + background-color: #69F0AE !important; } + +.green-text.text-accent-2 { + color: #69F0AE !important; } + +.green.accent-3 { + background-color: #00E676 !important; } + +.green-text.text-accent-3 { + color: #00E676 !important; } + +.green.accent-4 { + background-color: #00C853 !important; } + +.green-text.text-accent-4 { + color: #00C853 !important; } + +.light-green.lighten-5 { + background-color: #f1f8e9 !important; } + +.light-green-text.text-lighten-5 { + color: #f1f8e9 !important; } + +.light-green.lighten-4 { + background-color: #dcedc8 !important; } + +.light-green-text.text-lighten-4 { + color: #dcedc8 !important; } + +.light-green.lighten-3 { + background-color: #c5e1a5 !important; } + +.light-green-text.text-lighten-3 { + color: #c5e1a5 !important; } + +.light-green.lighten-2 { + background-color: #aed581 !important; } + +.light-green-text.text-lighten-2 { + color: #aed581 !important; } + +.light-green.lighten-1 { + background-color: #9ccc65 !important; } + +.light-green-text.text-lighten-1 { + color: #9ccc65 !important; } + +.light-green { + background-color: #8bc34a !important; } + +.light-green-text { + color: #8bc34a !important; } + +.light-green.darken-1 { + background-color: #7cb342 !important; } + +.light-green-text.text-darken-1 { + color: #7cb342 !important; } + +.light-green.darken-2 { + background-color: #689f38 !important; } + +.light-green-text.text-darken-2 { + color: #689f38 !important; } + +.light-green.darken-3 { + background-color: #558b2f !important; } + +.light-green-text.text-darken-3 { + color: #558b2f !important; } + +.light-green.darken-4 { + background-color: #33691e !important; } + +.light-green-text.text-darken-4 { + color: #33691e !important; } + +.light-green.accent-1 { + background-color: #ccff90 !important; } + +.light-green-text.text-accent-1 { + color: #ccff90 !important; } + +.light-green.accent-2 { + background-color: #b2ff59 !important; } + +.light-green-text.text-accent-2 { + color: #b2ff59 !important; } + +.light-green.accent-3 { + background-color: #76ff03 !important; } + +.light-green-text.text-accent-3 { + color: #76ff03 !important; } + +.light-green.accent-4 { + background-color: #64dd17 !important; } + +.light-green-text.text-accent-4 { + color: #64dd17 !important; } + +.lime.lighten-5 { + background-color: #f9fbe7 !important; } + +.lime-text.text-lighten-5 { + color: #f9fbe7 !important; } + +.lime.lighten-4 { + background-color: #f0f4c3 !important; } + +.lime-text.text-lighten-4 { + color: #f0f4c3 !important; } + +.lime.lighten-3 { + background-color: #e6ee9c !important; } + +.lime-text.text-lighten-3 { + color: #e6ee9c !important; } + +.lime.lighten-2 { + background-color: #dce775 !important; } + +.lime-text.text-lighten-2 { + color: #dce775 !important; } + +.lime.lighten-1 { + background-color: #d4e157 !important; } + +.lime-text.text-lighten-1 { + color: #d4e157 !important; } + +.lime { + background-color: #cddc39 !important; } + +.lime-text { + color: #cddc39 !important; } + +.lime.darken-1 { + background-color: #c0ca33 !important; } + +.lime-text.text-darken-1 { + color: #c0ca33 !important; } + +.lime.darken-2 { + background-color: #afb42b !important; } + +.lime-text.text-darken-2 { + color: #afb42b !important; } + +.lime.darken-3 { + background-color: #9e9d24 !important; } + +.lime-text.text-darken-3 { + color: #9e9d24 !important; } + +.lime.darken-4 { + background-color: #827717 !important; } + +.lime-text.text-darken-4 { + color: #827717 !important; } + +.lime.accent-1 { + background-color: #f4ff81 !important; } + +.lime-text.text-accent-1 { + color: #f4ff81 !important; } + +.lime.accent-2 { + background-color: #eeff41 !important; } + +.lime-text.text-accent-2 { + color: #eeff41 !important; } + +.lime.accent-3 { + background-color: #c6ff00 !important; } + +.lime-text.text-accent-3 { + color: #c6ff00 !important; } + +.lime.accent-4 { + background-color: #aeea00 !important; } + +.lime-text.text-accent-4 { + color: #aeea00 !important; } + +.yellow.lighten-5 { + background-color: #fffde7 !important; } + +.yellow-text.text-lighten-5 { + color: #fffde7 !important; } + +.yellow.lighten-4 { + background-color: #fff9c4 !important; } + +.yellow-text.text-lighten-4 { + color: #fff9c4 !important; } + +.yellow.lighten-3 { + background-color: #fff59d !important; } + +.yellow-text.text-lighten-3 { + color: #fff59d !important; } + +.yellow.lighten-2 { + background-color: #fff176 !important; } + +.yellow-text.text-lighten-2 { + color: #fff176 !important; } + +.yellow.lighten-1 { + background-color: #ffee58 !important; } + +.yellow-text.text-lighten-1 { + color: #ffee58 !important; } + +.yellow { + background-color: #ffeb3b !important; } + +.yellow-text { + color: #ffeb3b !important; } + +.yellow.darken-1 { + background-color: #fdd835 !important; } + +.yellow-text.text-darken-1 { + color: #fdd835 !important; } + +.yellow.darken-2 { + background-color: #fbc02d !important; } + +.yellow-text.text-darken-2 { + color: #fbc02d !important; } + +.yellow.darken-3 { + background-color: #f9a825 !important; } + +.yellow-text.text-darken-3 { + color: #f9a825 !important; } + +.yellow.darken-4 { + background-color: #f57f17 !important; } + +.yellow-text.text-darken-4 { + color: #f57f17 !important; } + +.yellow.accent-1 { + background-color: #ffff8d !important; } + +.yellow-text.text-accent-1 { + color: #ffff8d !important; } + +.yellow.accent-2 { + background-color: #ffff00 !important; } + +.yellow-text.text-accent-2 { + color: #ffff00 !important; } + +.yellow.accent-3 { + background-color: #ffea00 !important; } + +.yellow-text.text-accent-3 { + color: #ffea00 !important; } + +.yellow.accent-4 { + background-color: #ffd600 !important; } + +.yellow-text.text-accent-4 { + color: #ffd600 !important; } + +.amber.lighten-5 { + background-color: #fff8e1 !important; } + +.amber-text.text-lighten-5 { + color: #fff8e1 !important; } + +.amber.lighten-4 { + background-color: #ffecb3 !important; } + +.amber-text.text-lighten-4 { + color: #ffecb3 !important; } + +.amber.lighten-3 { + background-color: #ffe082 !important; } + +.amber-text.text-lighten-3 { + color: #ffe082 !important; } + +.amber.lighten-2 { + background-color: #ffd54f !important; } + +.amber-text.text-lighten-2 { + color: #ffd54f !important; } + +.amber.lighten-1 { + background-color: #ffca28 !important; } + +.amber-text.text-lighten-1 { + color: #ffca28 !important; } + +.amber { + background-color: #ffc107 !important; } + +.amber-text { + color: #ffc107 !important; } + +.amber.darken-1 { + background-color: #ffb300 !important; } + +.amber-text.text-darken-1 { + color: #ffb300 !important; } + +.amber.darken-2 { + background-color: #ffa000 !important; } + +.amber-text.text-darken-2 { + color: #ffa000 !important; } + +.amber.darken-3 { + background-color: #ff8f00 !important; } + +.amber-text.text-darken-3 { + color: #ff8f00 !important; } + +.amber.darken-4 { + background-color: #ff6f00 !important; } + +.amber-text.text-darken-4 { + color: #ff6f00 !important; } + +.amber.accent-1 { + background-color: #ffe57f !important; } + +.amber-text.text-accent-1 { + color: #ffe57f !important; } + +.amber.accent-2 { + background-color: #ffd740 !important; } + +.amber-text.text-accent-2 { + color: #ffd740 !important; } + +.amber.accent-3 { + background-color: #ffc400 !important; } + +.amber-text.text-accent-3 { + color: #ffc400 !important; } + +.amber.accent-4 { + background-color: #ffab00 !important; } + +.amber-text.text-accent-4 { + color: #ffab00 !important; } + +.orange.lighten-5 { + background-color: #fff3e0 !important; } + +.orange-text.text-lighten-5 { + color: #fff3e0 !important; } + +.orange.lighten-4 { + background-color: #ffe0b2 !important; } + +.orange-text.text-lighten-4 { + color: #ffe0b2 !important; } + +.orange.lighten-3 { + background-color: #ffcc80 !important; } + +.orange-text.text-lighten-3 { + color: #ffcc80 !important; } + +.orange.lighten-2 { + background-color: #ffb74d !important; } + +.orange-text.text-lighten-2 { + color: #ffb74d !important; } + +.orange.lighten-1 { + background-color: #ffa726 !important; } + +.orange-text.text-lighten-1 { + color: #ffa726 !important; } + +.orange { + background-color: #ff9800 !important; } + +.orange-text { + color: #ff9800 !important; } + +.orange.darken-1 { + background-color: #fb8c00 !important; } + +.orange-text.text-darken-1 { + color: #fb8c00 !important; } + +.orange.darken-2 { + background-color: #f57c00 !important; } + +.orange-text.text-darken-2 { + color: #f57c00 !important; } + +.orange.darken-3 { + background-color: #ef6c00 !important; } + +.orange-text.text-darken-3 { + color: #ef6c00 !important; } + +.orange.darken-4 { + background-color: #e65100 !important; } + +.orange-text.text-darken-4 { + color: #e65100 !important; } + +.orange.accent-1 { + background-color: #ffd180 !important; } + +.orange-text.text-accent-1 { + color: #ffd180 !important; } + +.orange.accent-2 { + background-color: #ffab40 !important; } + +.orange-text.text-accent-2 { + color: #ffab40 !important; } + +.orange.accent-3 { + background-color: #ff9100 !important; } + +.orange-text.text-accent-3 { + color: #ff9100 !important; } + +.orange.accent-4 { + background-color: #ff6d00 !important; } + +.orange-text.text-accent-4 { + color: #ff6d00 !important; } + +.deep-orange.lighten-5 { + background-color: #fbe9e7 !important; } + +.deep-orange-text.text-lighten-5 { + color: #fbe9e7 !important; } + +.deep-orange.lighten-4 { + background-color: #ffccbc !important; } + +.deep-orange-text.text-lighten-4 { + color: #ffccbc !important; } + +.deep-orange.lighten-3 { + background-color: #ffab91 !important; } + +.deep-orange-text.text-lighten-3 { + color: #ffab91 !important; } + +.deep-orange.lighten-2 { + background-color: #ff8a65 !important; } + +.deep-orange-text.text-lighten-2 { + color: #ff8a65 !important; } + +.deep-orange.lighten-1 { + background-color: #ff7043 !important; } + +.deep-orange-text.text-lighten-1 { + color: #ff7043 !important; } + +.deep-orange { + background-color: #ff5722 !important; } + +.deep-orange-text { + color: #ff5722 !important; } + +.deep-orange.darken-1 { + background-color: #f4511e !important; } + +.deep-orange-text.text-darken-1 { + color: #f4511e !important; } + +.deep-orange.darken-2 { + background-color: #e64a19 !important; } + +.deep-orange-text.text-darken-2 { + color: #e64a19 !important; } + +.deep-orange.darken-3 { + background-color: #d84315 !important; } + +.deep-orange-text.text-darken-3 { + color: #d84315 !important; } + +.deep-orange.darken-4 { + background-color: #bf360c !important; } + +.deep-orange-text.text-darken-4 { + color: #bf360c !important; } + +.deep-orange.accent-1 { + background-color: #ff9e80 !important; } + +.deep-orange-text.text-accent-1 { + color: #ff9e80 !important; } + +.deep-orange.accent-2 { + background-color: #ff6e40 !important; } + +.deep-orange-text.text-accent-2 { + color: #ff6e40 !important; } + +.deep-orange.accent-3 { + background-color: #ff3d00 !important; } + +.deep-orange-text.text-accent-3 { + color: #ff3d00 !important; } + +.deep-orange.accent-4 { + background-color: #dd2c00 !important; } + +.deep-orange-text.text-accent-4 { + color: #dd2c00 !important; } + +.brown.lighten-5 { + background-color: #efebe9 !important; } + +.brown-text.text-lighten-5 { + color: #efebe9 !important; } + +.brown.lighten-4 { + background-color: #d7ccc8 !important; } + +.brown-text.text-lighten-4 { + color: #d7ccc8 !important; } + +.brown.lighten-3 { + background-color: #bcaaa4 !important; } + +.brown-text.text-lighten-3 { + color: #bcaaa4 !important; } + +.brown.lighten-2 { + background-color: #a1887f !important; } + +.brown-text.text-lighten-2 { + color: #a1887f !important; } + +.brown.lighten-1 { + background-color: #8d6e63 !important; } + +.brown-text.text-lighten-1 { + color: #8d6e63 !important; } + +.brown { + background-color: #795548 !important; } + +.brown-text { + color: #795548 !important; } + +.brown.darken-1 { + background-color: #6d4c41 !important; } + +.brown-text.text-darken-1 { + color: #6d4c41 !important; } + +.brown.darken-2 { + background-color: #5d4037 !important; } + +.brown-text.text-darken-2 { + color: #5d4037 !important; } + +.brown.darken-3 { + background-color: #4e342e !important; } + +.brown-text.text-darken-3 { + color: #4e342e !important; } + +.brown.darken-4 { + background-color: #3e2723 !important; } + +.brown-text.text-darken-4 { + color: #3e2723 !important; } + +.blue-grey.lighten-5 { + background-color: #eceff1 !important; } + +.blue-grey-text.text-lighten-5 { + color: #eceff1 !important; } + +.blue-grey.lighten-4 { + background-color: #cfd8dc !important; } + +.blue-grey-text.text-lighten-4 { + color: #cfd8dc !important; } + +.blue-grey.lighten-3 { + background-color: #b0bec5 !important; } + +.blue-grey-text.text-lighten-3 { + color: #b0bec5 !important; } + +.blue-grey.lighten-2 { + background-color: #90a4ae !important; } + +.blue-grey-text.text-lighten-2 { + color: #90a4ae !important; } + +.blue-grey.lighten-1 { + background-color: #78909c !important; } + +.blue-grey-text.text-lighten-1 { + color: #78909c !important; } + +.blue-grey { + background-color: #607d8b !important; } + +.blue-grey-text { + color: #607d8b !important; } + +.blue-grey.darken-1 { + background-color: #546e7a !important; } + +.blue-grey-text.text-darken-1 { + color: #546e7a !important; } + +.blue-grey.darken-2 { + background-color: #455a64 !important; } + +.blue-grey-text.text-darken-2 { + color: #455a64 !important; } + +.blue-grey.darken-3 { + background-color: #37474f !important; } + +.blue-grey-text.text-darken-3 { + color: #37474f !important; } + +.blue-grey.darken-4 { + background-color: #263238 !important; } + +.blue-grey-text.text-darken-4 { + color: #263238 !important; } + +.grey.lighten-5 { + background-color: #fafafa !important; } + +.grey-text.text-lighten-5 { + color: #fafafa !important; } + +.grey.lighten-4 { + background-color: #f5f5f5 !important; } + +.grey-text.text-lighten-4 { + color: #f5f5f5 !important; } + +.grey.lighten-3 { + background-color: #eeeeee !important; } + +.grey-text.text-lighten-3 { + color: #eeeeee !important; } + +.grey.lighten-2 { + background-color: #e0e0e0 !important; } + +.grey-text.text-lighten-2 { + color: #e0e0e0 !important; } + +.grey.lighten-1 { + background-color: #bdbdbd !important; } + +.grey-text.text-lighten-1 { + color: #bdbdbd !important; } + +.grey { + background-color: #9e9e9e !important; } + +.grey-text { + color: #9e9e9e !important; } + +.grey.darken-1 { + background-color: #757575 !important; } + +.grey-text.text-darken-1 { + color: #757575 !important; } + +.grey.darken-2 { + background-color: #616161 !important; } + +.grey-text.text-darken-2 { + color: #616161 !important; } + +.grey.darken-3 { + background-color: #424242 !important; } + +.grey-text.text-darken-3 { + color: #424242 !important; } + +.grey.darken-4 { + background-color: #212121 !important; } + +.grey-text.text-darken-4 { + color: #212121 !important; } + +.shades.black { + background-color: #000000 !important; } + +.shades-text.text-black { + color: #000000 !important; } + +.shades.white { + background-color: #FFFFFF !important; } + +.shades-text.text-white { + color: #FFFFFF !important; } + +.shades.transparent { + background-color: transparent !important; } + +.shades-text.text-transparent { + color: transparent !important; } + +.black { + background-color: #000000 !important; } + +.black-text { + color: #000000 !important; } + +.white { + background-color: #FFFFFF !important; } + +.white-text { + color: #FFFFFF !important; } + +.transparent { + background-color: transparent !important; } + +.transparent-text { + color: transparent !important; } + +/*** Colors ***/ +/*** Badges ***/ +/*** Buttons ***/ +/*** Cards ***/ +/*** Collapsible ***/ +/*** Dropdown ***/ +/*** Fonts ***/ +/*** Forms ***/ +/*** Global ***/ +/*** Navbar ***/ +/*** SideNav ***/ +/*** Photo Slider ***/ +/*** Tabs ***/ +/*** Tables ***/ +/*** Toasts ***/ +/*** Typography ***/ +/*** Collections ***/ +/* Progress Bar */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ +html { + font-family: sans-serif; + /* 1 */ + -ms-text-size-adjust: 100%; + /* 2 */ + -webkit-text-size-adjust: 100%; + /* 2 */ } + +/** + * Remove default margin. + */ +body { + margin: 0; } + +/* HTML5 display definitions + ========================================================================== */ +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; } + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ +audio, +canvas, +progress, +video { + display: inline-block; + /* 1 */ + vertical-align: baseline; + /* 2 */ } + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ +audio:not([controls]) { + display: none; + height: 0; } + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ +[hidden], +template { + display: none; } + +/* Links + ========================================================================== */ +/** + * Remove the gray background color from active links in IE 10. + */ +a { + background-color: transparent; } + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ +a:active, +a:hover { + outline: 0; } + +/* Text-level semantics + ========================================================================== */ +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ +abbr[title] { + border-bottom: 1px dotted; } + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ +b, +strong { + font-weight: bold; } + +/** + * Address styling not present in Safari and Chrome. + */ +dfn { + font-style: italic; } + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ +h1 { + font-size: 2em; + margin: 0.67em 0; } + +/** + * Address styling not present in IE 8/9. + */ +mark { + background: #ff0; + color: #000; } + +/** + * Address inconsistent and variable font size in all browsers. + */ +small { + font-size: 80%; } + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; } + +sup { + top: -0.5em; } + +sub { + bottom: -0.25em; } + +/* Embedded content + ========================================================================== */ +/** + * Remove border when inside `a` element in IE 8/9/10. + */ +img { + border: 0; } + +/** + * Correct overflow not hidden in IE 9/10/11. + */ +svg:not(:root) { + overflow: hidden; } + +/* Grouping content + ========================================================================== */ +/** + * Address margin not present in IE 8/9 and Safari. + */ +figure { + margin: 1em 40px; } + +/** + * Address differences between Firefox and other browsers. + */ +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; } + +/** + * Contain overflow in all browsers. + */ +pre { + overflow: auto; } + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; } + +/* Forms + ========================================================================== */ +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ +button, +input, +optgroup, +select, +textarea { + color: inherit; + /* 1 */ + font: inherit; + /* 2 */ + margin: 0; + /* 3 */ } + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ +button { + overflow: visible; } + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ +button, +select { + text-transform: none; } + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ +/* 1 */ +html input[type="button"], +button, +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + /* 2 */ + cursor: pointer; + /* 3 */ } + +/** + * Re-set default cursor for disabled elements. + */ +button[disabled], +html input[disabled] { + cursor: default; } + +/** + * Remove inner padding and border in Firefox 4+. + */ +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; } + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ +input { + line-height: normal; } + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; } + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ +input[type="search"] { + -webkit-appearance: textfield; + /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; + /* 2 */ + box-sizing: content-box; } + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; } + +/** + * Define consistent border, margin, and padding. + */ +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; } + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ +legend { + border: 0; + /* 1 */ + padding: 0; + /* 2 */ } + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ +textarea { + overflow: auto; } + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ +optgroup { + font-weight: bold; } + +/* Tables + ========================================================================== */ +/** + * Remove most spacing between table cells. + */ +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + +html { + box-sizing: border-box; } + +*, *:before, *:after { + box-sizing: inherit; } + +ul { + list-style-type: none; } + +a { + color: #039be5; + text-decoration: none; + -webkit-tap-highlight-color: transparent; } + +.valign-wrapper { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; } + .valign-wrapper .valign { + display: block; } + +ul { + padding: 0; } + ul li { + list-style-type: none; } + +.clearfix { + clear: both; } + +.z-depth-0 { + box-shadow: none !important; } + +.z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); } + +.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); } + +.z-depth-2 { + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.z-depth-3 { + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); } + +.z-depth-4, .modal { + box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); } + +.z-depth-5 { + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); } + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } + +.divider { + height: 1px; + overflow: hidden; + background-color: #e0e0e0; } + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid #ee6e73; } + +i { + line-height: inherit; } + i.left { + float: left; + margin-right: 15px; } + i.right { + float: right; + margin-left: 15px; } + i.tiny { + font-size: 1rem; } + i.small { + font-size: 2rem; } + i.medium { + font-size: 4rem; } + i.large { + font-size: 6rem; } + +img.responsive-img, +video.responsive-video { + max-width: 100%; + height: auto; } + +.pagination li { + float: left; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; + border-radius: 2px; + text-align: center; } + .pagination li a { + color: #444; } + .pagination li.active a { + color: #fff; } + .pagination li.active { + background-color: #ee6e73; } + .pagination li.disabled a { + cursor: default; + color: #999; } + .pagination li i { + font-size: 2rem; } +.pagination li.pages ul li { + display: inline-block; + float: none; } + +@media only screen and (max-width: 992px) { + .pagination { + width: 100%; } + .pagination li.prev, + .pagination li.next { + width: 10%; } + .pagination li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; } } +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; } + +.parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; } + .parallax img { + display: none; + position: absolute; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + transform: translateX(-50%); } + +.pin-top, .pin-bottom { + position: relative; } + +.pinned { + position: fixed !important; } + +/********************* + Transition Classes +**********************/ +ul.staggered-list li { + opacity: 0; } + +.fade-in { + opacity: 0; + transform-origin: 0 50%; } + +/********************* + Media Query Classes +**********************/ +@media only screen and (max-width: 600px) { + .hide-on-small-only, .hide-on-small-and-down { + display: none !important; } } + +@media only screen and (max-width: 992px) { + .hide-on-med-and-down { + display: none !important; } } + +@media only screen and (min-width: 601px) { + .hide-on-med-and-up { + display: none !important; } } + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .hide-on-med-only { + display: none !important; } } + +@media only screen and (min-width: 993px) { + .hide-on-large-only { + display: none !important; } } + +@media only screen and (min-width: 993px) { + .show-on-large { + display: initial !important; } } + +@media only screen and (min-width: 600px) and (max-width: 992px) { + .show-on-medium { + display: initial !important; } } + +@media only screen and (max-width: 600px) { + .show-on-small { + display: initial !important; } } + +@media only screen and (min-width: 601px) { + .show-on-medium-and-up { + display: initial !important; } } + +@media only screen and (max-width: 992px) { + .show-on-medium-and-down { + display: initial !important; } } + +@media only screen and (max-width: 600px) { + .center-on-small-only { + text-align: center; } } + +footer.page-footer { + margin-top: 20px; + padding-top: 20px; + background-color: #ee6e73; } + footer.page-footer .footer-copyright { + overflow: hidden; + height: 50px; + line-height: 50px; + color: rgba(255, 255, 255, 0.8); + background-color: rgba(51, 51, 51, 0.08); } + +table, th, td { + border: none; } + +table { + width: 100%; + display: table; } + table.bordered > thead > tr, table.bordered > tbody > tr { + border-bottom: 1px solid #d0d0d0; } + table.striped > tbody > tr:nth-child(odd) { + background-color: #f2f2f2; } + table.striped > tbody > tr > td { + border-radius: 0px; } + table.hoverable > tbody > tr { + -webkit-transition: background-color 0.25s ease; + -moz-transition: background-color 0.25s ease; + -o-transition: background-color 0.25s ease; + -ms-transition: background-color 0.25s ease; + transition: background-color 0.25s ease; } + table.hoverable > tbody > tr:hover { + background-color: #f2f2f2; } + table.centered thead tr th, table.centered tbody tr td { + text-align: center; } + +thead { + border-bottom: 1px solid #d0d0d0; } + +td, th { + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; } + +@media only screen and (max-width: 992px) { + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + /* sort out borders */ } + table.responsive-table th, + table.responsive-table td { + margin: 0; + vertical-align: top; } + table.responsive-table th { + text-align: left; } + table.responsive-table thead { + display: block; + float: left; } + table.responsive-table thead tr { + display: block; + padding: 0 10px 0 0; } + table.responsive-table thead tr th::before { + content: "\00a0"; } + table.responsive-table tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; } + table.responsive-table tbody tr { + display: inline-block; + vertical-align: top; } + table.responsive-table th { + display: block; + text-align: right; } + table.responsive-table td { + display: block; + min-height: 1.25em; + text-align: left; } + table.responsive-table tr { + padding: 0 10px; } + table.responsive-table thead { + border: 0; + border-right: 1px solid #d0d0d0; } + table.responsive-table.bordered th { + border-bottom: 0; + border-left: 0; } + table.responsive-table.bordered td { + border-left: 0; + border-right: 0; + border-bottom: 0; } + table.responsive-table.bordered tr { + border: 0; } + table.responsive-table.bordered tbody tr { + border-right: 1px solid #d0d0d0; } } +.collection { + margin: 0.5rem 0 1rem 0; + border: 1px solid #e0e0e0; + border-radius: 2px; + overflow: hidden; + position: relative; } + .collection .collection-item { + background-color: #fff; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid #e0e0e0; } + .collection .collection-item.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; } + .collection .collection-item.avatar .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; } + .collection .collection-item.avatar i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; } + .collection .collection-item.avatar .title { + font-size: 16px; } + .collection .collection-item.avatar p { + margin: 0; } + .collection .collection-item.avatar .secondary-content { + position: absolute; + top: 16px; + right: 16px; } + .collection .collection-item:last-child { + border-bottom: none; } + .collection .collection-item.active { + background-color: #26a69a; + color: #eafaf9; } + .collection a.collection-item { + display: block; + -webkit-transition: 0.25s; + -moz-transition: 0.25s; + -o-transition: 0.25s; + -ms-transition: 0.25s; + transition: 0.25s; + color: #26a69a; } + .collection a.collection-item:not(.active):hover { + background-color: #ddd; } + .collection.with-header .collection-header { + background-color: #fff; + border-bottom: 1px solid #e0e0e0; + padding: 10px 20px; } + .collection.with-header .collection-item { + padding-left: 30px; } + .collection.with-header .collection-item.avatar { + padding-left: 72px; } + +.secondary-content { + float: right; + color: #26a69a; } + +span.badge { + min-width: 3rem; + padding: 0 6px; + text-align: center; + font-size: 1rem; + line-height: inherit; + color: #757575; + position: absolute; + right: 15px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + span.badge.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: #26a69a; + border-radius: 2px; } + span.badge.new:after { + content: " new"; } + +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; } + .video-container.no-controls { + padding-top: 0; } + .video-container iframe, .video-container object, .video-container embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; } + +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: #acece6; + border-radius: 2px; + margin: 0.5rem 0 1rem 0; + overflow: hidden; } + .progress .determinate { + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + background-color: #26a69a; + -webkit-transition: width 0.3s linear; + -moz-transition: width 0.3s linear; + -o-transition: width 0.3s linear; + -ms-transition: width 0.3s linear; + transition: width 0.3s linear; } + .progress .indeterminate { + background-color: #26a69a; } + .progress .indeterminate:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -moz-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -ms-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + -o-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; + animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } + .progress .indeterminate:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + will-change: left, right; + -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -moz-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -ms-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -o-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; + -webkit-animation-delay: 1.15s; + -moz-animation-delay: 1.15s; + -ms-animation-delay: 1.15s; + -o-animation-delay: 1.15s; + animation-delay: 1.15s; } + +@-webkit-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + 60% { + left: 100%; + right: -90%; } + 100% { + left: 100%; + right: -90%; } } +@-moz-keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + 60% { + left: 100%; + right: -90%; } + 100% { + left: 100%; + right: -90%; } } +@keyframes indeterminate { + 0% { + left: -35%; + right: 100%; } + 60% { + left: 100%; + right: -90%; } + 100% { + left: 100%; + right: -90%; } } +@-webkit-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + 60% { + left: 107%; + right: -8%; } + 100% { + left: 107%; + right: -8%; } } +@-moz-keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + 60% { + left: 107%; + right: -8%; } + 100% { + left: 107%; + right: -8%; } } +@keyframes indeterminate-short { + 0% { + left: -200%; + right: 100%; } + 60% { + left: 107%; + right: -8%; } + 100% { + left: 107%; + right: -8%; } } +/******************* + Utility Classes +*******************/ +.hide { + display: none !important; } + +.left-align { + text-align: left; } + +.right-align { + text-align: right; } + +.center, .center-align { + text-align: center; } + +.left { + float: left !important; } + +.right { + float: right !important; } + +.no-select, input[type=range], input[type=range] + .thumb { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.circle { + border-radius: 50%; } + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; } + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; } + +.no-padding { + padding: 0 !important; } + +@font-face { + font-family: "Material-Design-Icons"; + src: url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"), url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"), url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"), url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"), url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg"); + font-weight: normal; + font-style: normal; } +[class^="mdi-"], [class*="mdi-"] { + speak: none; + display: inline-block; + font-family: "Material-Design-Icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-rendering: auto; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); } + [class^="mdi-"]:before, [class*="mdi-"]:before { + display: inline-block; + speak: none; + text-decoration: inherit; } + [class^="mdi-"].pull-left, [class*="mdi-"].pull-left { + margin-right: .3em; } + [class^="mdi-"].pull-right, [class*="mdi-"].pull-right { + margin-left: .3em; } + [class^="mdi-"].mdi-lg:before, [class^="mdi-"].mdi-lg:after, [class*="mdi-"].mdi-lg:before, [class*="mdi-"].mdi-lg:after { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; } + [class^="mdi-"].mdi-2x:before, [class^="mdi-"].mdi-2x:after, [class*="mdi-"].mdi-2x:before, [class*="mdi-"].mdi-2x:after { + font-size: 2em; } + [class^="mdi-"].mdi-3x:before, [class^="mdi-"].mdi-3x:after, [class*="mdi-"].mdi-3x:before, [class*="mdi-"].mdi-3x:after { + font-size: 3em; } + [class^="mdi-"].mdi-4x:before, [class^="mdi-"].mdi-4x:after, [class*="mdi-"].mdi-4x:before, [class*="mdi-"].mdi-4x:after { + font-size: 4em; } + [class^="mdi-"].mdi-5x:before, [class^="mdi-"].mdi-5x:after, [class*="mdi-"].mdi-5x:before, [class*="mdi-"].mdi-5x:after { + font-size: 5em; } + +[class^="mdi-device-signal-cellular-"]:after, +[class^="mdi-device-battery-"]:after, +[class^="mdi-device-battery-charging-"]:after, +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after, +[class^="mdi-device-signal-wifi-"]:after, +[class^="mdi-device-signal-wifi-statusbar-not-connected"]:after, +.mdi-device-network-wifi:after { + opacity: .3; + position: absolute; + left: 0; + top: 0; + z-index: 1; + display: inline-block; + speak: none; + text-decoration: inherit; } + +[class^="mdi-device-signal-cellular-"]:after { + content: "\e758"; } + +[class^="mdi-device-battery-"]:after { + content: "\e735"; } + +[class^="mdi-device-battery-charging-"]:after { + content: "\e733"; } + +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after { + content: "\e75d"; } + +[class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after { + content: "\e765"; } + +[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after { + content: "\e8f7"; } + +.mdi-device-signal-cellular-off:after, .mdi-device-signal-cellular-null:after, .mdi-device-signal-cellular-no-sim:after, .mdi-device-signal-wifi-off:after, .mdi-device-signal-wifi-4-bar:after, .mdi-device-signal-cellular-4-bar:after, .mdi-device-battery-alert:after, .mdi-device-signal-cellular-connected-no-internet-4-bar:after, .mdi-device-battery-std:after, .mdi-device-battery-full .mdi-device-battery-unknown:after { + content: ""; } + +.mdi-fw { + width: 1.28571429em; + text-align: center; } + +.mdi-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; } + +.mdi-ul > li { + position: relative; } + +.mdi-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; } + +.mdi-li.mdi-lg { + left: -1.85714286em; } + +.mdi-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; } + +.mdi-spin { + -webkit-animation: mdi-spin 2s infinite linear; + animation: mdi-spin 2s infinite linear; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +.mdi-pulse { + -webkit-animation: mdi-spin 1s steps(8) infinite; + animation: mdi-spin 1s steps(8) infinite; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; } + +@-webkit-keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +@keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); } } +.mdi-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); } + +.mdi-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); } + +.mdi-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); } + +.mdi-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); } + +.mdi-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); } + +:root .mdi-rotate-90, +:root .mdi-rotate-180, +:root .mdi-rotate-270, +:root .mdi-flip-horizontal, +:root .mdi-flip-vertical { + filter: none; } + +.mdi-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; } + +.mdi-stack-1x, +.mdi-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; } + +.mdi-stack-1x { + line-height: inherit; } + +.mdi-stack-2x { + font-size: 2em; } + +.mdi-inverse { + color: #ffffff; } + +/* Start Icons */ +.mdi-action-3d-rotation:before { + content: "\e600"; } + +.mdi-action-accessibility:before { + content: "\e601"; } + +.mdi-action-account-balance-wallet:before { + content: "\e602"; } + +.mdi-action-account-balance:before { + content: "\e603"; } + +.mdi-action-account-box:before { + content: "\e604"; } + +.mdi-action-account-child:before { + content: "\e605"; } + +.mdi-action-account-circle:before { + content: "\e606"; } + +.mdi-action-add-shopping-cart:before { + content: "\e607"; } + +.mdi-action-alarm-add:before { + content: "\e608"; } + +.mdi-action-alarm-off:before { + content: "\e609"; } + +.mdi-action-alarm-on:before { + content: "\e60a"; } + +.mdi-action-alarm:before { + content: "\e60b"; } + +.mdi-action-android:before { + content: "\e60c"; } + +.mdi-action-announcement:before { + content: "\e60d"; } + +.mdi-action-aspect-ratio:before { + content: "\e60e"; } + +.mdi-action-assessment:before { + content: "\e60f"; } + +.mdi-action-assignment-ind:before { + content: "\e610"; } + +.mdi-action-assignment-late:before { + content: "\e611"; } + +.mdi-action-assignment-return:before { + content: "\e612"; } + +.mdi-action-assignment-returned:before { + content: "\e613"; } + +.mdi-action-assignment-turned-in:before { + content: "\e614"; } + +.mdi-action-assignment:before { + content: "\e615"; } + +.mdi-action-autorenew:before { + content: "\e616"; } + +.mdi-action-backup:before { + content: "\e617"; } + +.mdi-action-book:before { + content: "\e618"; } + +.mdi-action-bookmark-outline:before { + content: "\e619"; } + +.mdi-action-bookmark:before { + content: "\e61a"; } + +.mdi-action-bug-report:before { + content: "\e61b"; } + +.mdi-action-cached:before { + content: "\e61c"; } + +.mdi-action-check-circle:before { + content: "\e61d"; } + +.mdi-action-class:before { + content: "\e61e"; } + +.mdi-action-credit-card:before { + content: "\e61f"; } + +.mdi-action-dashboard:before { + content: "\e620"; } + +.mdi-action-delete:before { + content: "\e621"; } + +.mdi-action-description:before { + content: "\e622"; } + +.mdi-action-dns:before { + content: "\e623"; } + +.mdi-action-done-all:before { + content: "\e624"; } + +.mdi-action-done:before { + content: "\e625"; } + +.mdi-action-event:before { + content: "\e626"; } + +.mdi-action-exit-to-app:before { + content: "\e627"; } + +.mdi-action-explore:before { + content: "\e628"; } + +.mdi-action-extension:before { + content: "\e629"; } + +.mdi-action-face-unlock:before { + content: "\e62a"; } + +.mdi-action-favorite-outline:before { + content: "\e62b"; } + +.mdi-action-favorite:before { + content: "\e62c"; } + +.mdi-action-find-in-page:before { + content: "\e62d"; } + +.mdi-action-find-replace:before { + content: "\e62e"; } + +.mdi-action-flip-to-back:before { + content: "\e62f"; } + +.mdi-action-flip-to-front:before { + content: "\e630"; } + +.mdi-action-get-app:before { + content: "\e631"; } + +.mdi-action-grade:before { + content: "\e632"; } + +.mdi-action-group-work:before { + content: "\e633"; } + +.mdi-action-help:before { + content: "\e634"; } + +.mdi-action-highlight-remove:before { + content: "\e635"; } + +.mdi-action-history:before { + content: "\e636"; } + +.mdi-action-home:before { + content: "\e637"; } + +.mdi-action-https:before { + content: "\e638"; } + +.mdi-action-info-outline:before { + content: "\e639"; } + +.mdi-action-info:before { + content: "\e63a"; } + +.mdi-action-input:before { + content: "\e63b"; } + +.mdi-action-invert-colors:before { + content: "\e63c"; } + +.mdi-action-label-outline:before { + content: "\e63d"; } + +.mdi-action-label:before { + content: "\e63e"; } + +.mdi-action-language:before { + content: "\e63f"; } + +.mdi-action-launch:before { + content: "\e640"; } + +.mdi-action-list:before { + content: "\e641"; } + +.mdi-action-lock-open:before { + content: "\e642"; } + +.mdi-action-lock-outline:before { + content: "\e643"; } + +.mdi-action-lock:before { + content: "\e644"; } + +.mdi-action-loyalty:before { + content: "\e645"; } + +.mdi-action-markunread-mailbox:before { + content: "\e646"; } + +.mdi-action-note-add:before { + content: "\e647"; } + +.mdi-action-open-in-browser:before { + content: "\e648"; } + +.mdi-action-open-in-new:before { + content: "\e649"; } + +.mdi-action-open-with:before { + content: "\e64a"; } + +.mdi-action-pageview:before { + content: "\e64b"; } + +.mdi-action-payment:before { + content: "\e64c"; } + +.mdi-action-perm-camera-mic:before { + content: "\e64d"; } + +.mdi-action-perm-contact-cal:before { + content: "\e64e"; } + +.mdi-action-perm-data-setting:before { + content: "\e64f"; } + +.mdi-action-perm-device-info:before { + content: "\e650"; } + +.mdi-action-perm-identity:before { + content: "\e651"; } + +.mdi-action-perm-media:before { + content: "\e652"; } + +.mdi-action-perm-phone-msg:before { + content: "\e653"; } + +.mdi-action-perm-scan-wifi:before { + content: "\e654"; } + +.mdi-action-picture-in-picture:before { + content: "\e655"; } + +.mdi-action-polymer:before { + content: "\e656"; } + +.mdi-action-print:before { + content: "\e657"; } + +.mdi-action-query-builder:before { + content: "\e658"; } + +.mdi-action-question-answer:before { + content: "\e659"; } + +.mdi-action-receipt:before { + content: "\e65a"; } + +.mdi-action-redeem:before { + content: "\e65b"; } + +.mdi-action-reorder:before { + content: "\e65c"; } + +.mdi-action-report-problem:before { + content: "\e65d"; } + +.mdi-action-restore:before { + content: "\e65e"; } + +.mdi-action-room:before { + content: "\e65f"; } + +.mdi-action-schedule:before { + content: "\e660"; } + +.mdi-action-search:before { + content: "\e661"; } + +.mdi-action-settings-applications:before { + content: "\e662"; } + +.mdi-action-settings-backup-restore:before { + content: "\e663"; } + +.mdi-action-settings-bluetooth:before { + content: "\e664"; } + +.mdi-action-settings-cell:before { + content: "\e665"; } + +.mdi-action-settings-display:before { + content: "\e666"; } + +.mdi-action-settings-ethernet:before { + content: "\e667"; } + +.mdi-action-settings-input-antenna:before { + content: "\e668"; } + +.mdi-action-settings-input-component:before { + content: "\e669"; } + +.mdi-action-settings-input-composite:before { + content: "\e66a"; } + +.mdi-action-settings-input-hdmi:before { + content: "\e66b"; } + +.mdi-action-settings-input-svideo:before { + content: "\e66c"; } + +.mdi-action-settings-overscan:before { + content: "\e66d"; } + +.mdi-action-settings-phone:before { + content: "\e66e"; } + +.mdi-action-settings-power:before { + content: "\e66f"; } + +.mdi-action-settings-remote:before { + content: "\e670"; } + +.mdi-action-settings-voice:before { + content: "\e671"; } + +.mdi-action-settings:before { + content: "\e672"; } + +.mdi-action-shop-two:before { + content: "\e673"; } + +.mdi-action-shop:before { + content: "\e674"; } + +.mdi-action-shopping-basket:before { + content: "\e675"; } + +.mdi-action-shopping-cart:before { + content: "\e676"; } + +.mdi-action-speaker-notes:before { + content: "\e677"; } + +.mdi-action-spellcheck:before { + content: "\e678"; } + +.mdi-action-star-rate:before { + content: "\e679"; } + +.mdi-action-stars:before { + content: "\e67a"; } + +.mdi-action-store:before { + content: "\e67b"; } + +.mdi-action-subject:before { + content: "\e67c"; } + +.mdi-action-supervisor-account:before { + content: "\e67d"; } + +.mdi-action-swap-horiz:before { + content: "\e67e"; } + +.mdi-action-swap-vert-circle:before { + content: "\e67f"; } + +.mdi-action-swap-vert:before { + content: "\e680"; } + +.mdi-action-system-update-tv:before { + content: "\e681"; } + +.mdi-action-tab-unselected:before { + content: "\e682"; } + +.mdi-action-tab:before { + content: "\e683"; } + +.mdi-action-theaters:before { + content: "\e684"; } + +.mdi-action-thumb-down:before { + content: "\e685"; } + +.mdi-action-thumb-up:before { + content: "\e686"; } + +.mdi-action-thumbs-up-down:before { + content: "\e687"; } + +.mdi-action-toc:before { + content: "\e688"; } + +.mdi-action-today:before { + content: "\e689"; } + +.mdi-action-track-changes:before { + content: "\e68a"; } + +.mdi-action-translate:before { + content: "\e68b"; } + +.mdi-action-trending-down:before { + content: "\e68c"; } + +.mdi-action-trending-neutral:before { + content: "\e68d"; } + +.mdi-action-trending-up:before { + content: "\e68e"; } + +.mdi-action-turned-in-not:before { + content: "\e68f"; } + +.mdi-action-turned-in:before { + content: "\e690"; } + +.mdi-action-verified-user:before { + content: "\e691"; } + +.mdi-action-view-agenda:before { + content: "\e692"; } + +.mdi-action-view-array:before { + content: "\e693"; } + +.mdi-action-view-carousel:before { + content: "\e694"; } + +.mdi-action-view-column:before { + content: "\e695"; } + +.mdi-action-view-day:before { + content: "\e696"; } + +.mdi-action-view-headline:before { + content: "\e697"; } + +.mdi-action-view-list:before { + content: "\e698"; } + +.mdi-action-view-module:before { + content: "\e699"; } + +.mdi-action-view-quilt:before { + content: "\e69a"; } + +.mdi-action-view-stream:before { + content: "\e69b"; } + +.mdi-action-view-week:before { + content: "\e69c"; } + +.mdi-action-visibility-off:before { + content: "\e69d"; } + +.mdi-action-visibility:before { + content: "\e69e"; } + +.mdi-action-wallet-giftcard:before { + content: "\e69f"; } + +.mdi-action-wallet-membership:before { + content: "\e6a0"; } + +.mdi-action-wallet-travel:before { + content: "\e6a1"; } + +.mdi-action-work:before { + content: "\e6a2"; } + +.mdi-alert-error:before { + content: "\e6a3"; } + +.mdi-alert-warning:before { + content: "\e6a4"; } + +.mdi-av-album:before { + content: "\e6a5"; } + +.mdi-av-closed-caption:before { + content: "\e6a6"; } + +.mdi-av-equalizer:before { + content: "\e6a7"; } + +.mdi-av-explicit:before { + content: "\e6a8"; } + +.mdi-av-fast-forward:before { + content: "\e6a9"; } + +.mdi-av-fast-rewind:before { + content: "\e6aa"; } + +.mdi-av-games:before { + content: "\e6ab"; } + +.mdi-av-hearing:before { + content: "\e6ac"; } + +.mdi-av-high-quality:before { + content: "\e6ad"; } + +.mdi-av-loop:before { + content: "\e6ae"; } + +.mdi-av-mic-none:before { + content: "\e6af"; } + +.mdi-av-mic-off:before { + content: "\e6b0"; } + +.mdi-av-mic:before { + content: "\e6b1"; } + +.mdi-av-movie:before { + content: "\e6b2"; } + +.mdi-av-my-library-add:before { + content: "\e6b3"; } + +.mdi-av-my-library-books:before { + content: "\e6b4"; } + +.mdi-av-my-library-music:before { + content: "\e6b5"; } + +.mdi-av-new-releases:before { + content: "\e6b6"; } + +.mdi-av-not-interested:before { + content: "\e6b7"; } + +.mdi-av-pause-circle-fill:before { + content: "\e6b8"; } + +.mdi-av-pause-circle-outline:before { + content: "\e6b9"; } + +.mdi-av-pause:before { + content: "\e6ba"; } + +.mdi-av-play-arrow:before { + content: "\e6bb"; } + +.mdi-av-play-circle-fill:before { + content: "\e6bc"; } + +.mdi-av-play-circle-outline:before { + content: "\e6bd"; } + +.mdi-av-play-shopping-bag:before { + content: "\e6be"; } + +.mdi-av-playlist-add:before { + content: "\e6bf"; } + +.mdi-av-queue-music:before { + content: "\e6c0"; } + +.mdi-av-queue:before { + content: "\e6c1"; } + +.mdi-av-radio:before { + content: "\e6c2"; } + +.mdi-av-recent-actors:before { + content: "\e6c3"; } + +.mdi-av-repeat-one:before { + content: "\e6c4"; } + +.mdi-av-repeat:before { + content: "\e6c5"; } + +.mdi-av-replay:before { + content: "\e6c6"; } + +.mdi-av-shuffle:before { + content: "\e6c7"; } + +.mdi-av-skip-next:before { + content: "\e6c8"; } + +.mdi-av-skip-previous:before { + content: "\e6c9"; } + +.mdi-av-snooze:before { + content: "\e6ca"; } + +.mdi-av-stop:before { + content: "\e6cb"; } + +.mdi-av-subtitles:before { + content: "\e6cc"; } + +.mdi-av-surround-sound:before { + content: "\e6cd"; } + +.mdi-av-timer:before { + content: "\e6ce"; } + +.mdi-av-video-collection:before { + content: "\e6cf"; } + +.mdi-av-videocam-off:before { + content: "\e6d0"; } + +.mdi-av-videocam:before { + content: "\e6d1"; } + +.mdi-av-volume-down:before { + content: "\e6d2"; } + +.mdi-av-volume-mute:before { + content: "\e6d3"; } + +.mdi-av-volume-off:before { + content: "\e6d4"; } + +.mdi-av-volume-up:before { + content: "\e6d5"; } + +.mdi-av-web:before { + content: "\e6d6"; } + +.mdi-communication-business:before { + content: "\e6d7"; } + +.mdi-communication-call-end:before { + content: "\e6d8"; } + +.mdi-communication-call-made:before { + content: "\e6d9"; } + +.mdi-communication-call-merge:before { + content: "\e6da"; } + +.mdi-communication-call-missed:before { + content: "\e6db"; } + +.mdi-communication-call-received:before { + content: "\e6dc"; } + +.mdi-communication-call-split:before { + content: "\e6dd"; } + +.mdi-communication-call:before { + content: "\e6de"; } + +.mdi-communication-chat:before { + content: "\e6df"; } + +.mdi-communication-clear-all:before { + content: "\e6e0"; } + +.mdi-communication-comment:before { + content: "\e6e1"; } + +.mdi-communication-contacts:before { + content: "\e6e2"; } + +.mdi-communication-dialer-sip:before { + content: "\e6e3"; } + +.mdi-communication-dialpad:before { + content: "\e6e4"; } + +.mdi-communication-dnd-on:before { + content: "\e6e5"; } + +.mdi-communication-email:before { + content: "\e6e6"; } + +.mdi-communication-forum:before { + content: "\e6e7"; } + +.mdi-communication-import-export:before { + content: "\e6e8"; } + +.mdi-communication-invert-colors-off:before { + content: "\e6e9"; } + +.mdi-communication-invert-colors-on:before { + content: "\e6ea"; } + +.mdi-communication-live-help:before { + content: "\e6eb"; } + +.mdi-communication-location-off:before { + content: "\e6ec"; } + +.mdi-communication-location-on:before { + content: "\e6ed"; } + +.mdi-communication-message:before { + content: "\e6ee"; } + +.mdi-communication-messenger:before { + content: "\e6ef"; } + +.mdi-communication-no-sim:before { + content: "\e6f0"; } + +.mdi-communication-phone:before { + content: "\e6f1"; } + +.mdi-communication-portable-wifi-off:before { + content: "\e6f2"; } + +.mdi-communication-quick-contacts-dialer:before { + content: "\e6f3"; } + +.mdi-communication-quick-contacts-mail:before { + content: "\e6f4"; } + +.mdi-communication-ring-volume:before { + content: "\e6f5"; } + +.mdi-communication-stay-current-landscape:before { + content: "\e6f6"; } + +.mdi-communication-stay-current-portrait:before { + content: "\e6f7"; } + +.mdi-communication-stay-primary-landscape:before { + content: "\e6f8"; } + +.mdi-communication-stay-primary-portrait:before { + content: "\e6f9"; } + +.mdi-communication-swap-calls:before { + content: "\e6fa"; } + +.mdi-communication-textsms:before { + content: "\e6fb"; } + +.mdi-communication-voicemail:before { + content: "\e6fc"; } + +.mdi-communication-vpn-key:before { + content: "\e6fd"; } + +.mdi-content-add-box:before { + content: "\e6fe"; } + +.mdi-content-add-circle-outline:before { + content: "\e6ff"; } + +.mdi-content-add-circle:before { + content: "\e700"; } + +.mdi-content-add:before { + content: "\e701"; } + +.mdi-content-archive:before { + content: "\e702"; } + +.mdi-content-backspace:before { + content: "\e703"; } + +.mdi-content-block:before { + content: "\e704"; } + +.mdi-content-clear:before { + content: "\e705"; } + +.mdi-content-content-copy:before { + content: "\e706"; } + +.mdi-content-content-cut:before { + content: "\e707"; } + +.mdi-content-content-paste:before { + content: "\e708"; } + +.mdi-content-create:before { + content: "\e709"; } + +.mdi-content-drafts:before { + content: "\e70a"; } + +.mdi-content-filter-list:before { + content: "\e70b"; } + +.mdi-content-flag:before { + content: "\e70c"; } + +.mdi-content-forward:before { + content: "\e70d"; } + +.mdi-content-gesture:before { + content: "\e70e"; } + +.mdi-content-inbox:before { + content: "\e70f"; } + +.mdi-content-link:before { + content: "\e710"; } + +.mdi-content-mail:before { + content: "\e711"; } + +.mdi-content-markunread:before { + content: "\e712"; } + +.mdi-content-redo:before { + content: "\e713"; } + +.mdi-content-remove-circle-outline:before { + content: "\e714"; } + +.mdi-content-remove-circle:before { + content: "\e715"; } + +.mdi-content-remove:before { + content: "\e716"; } + +.mdi-content-reply-all:before { + content: "\e717"; } + +.mdi-content-reply:before { + content: "\e718"; } + +.mdi-content-report:before { + content: "\e719"; } + +.mdi-content-save:before { + content: "\e71a"; } + +.mdi-content-select-all:before { + content: "\e71b"; } + +.mdi-content-send:before { + content: "\e71c"; } + +.mdi-content-sort:before { + content: "\e71d"; } + +.mdi-content-text-format:before { + content: "\e71e"; } + +.mdi-content-undo:before { + content: "\e71f"; } + +.mdi-editor-attach-file:before { + content: "\e776"; } + +.mdi-editor-attach-money:before { + content: "\e777"; } + +.mdi-editor-border-all:before { + content: "\e778"; } + +.mdi-editor-border-bottom:before { + content: "\e779"; } + +.mdi-editor-border-clear:before { + content: "\e77a"; } + +.mdi-editor-border-color:before { + content: "\e77b"; } + +.mdi-editor-border-horizontal:before { + content: "\e77c"; } + +.mdi-editor-border-inner:before { + content: "\e77d"; } + +.mdi-editor-border-left:before { + content: "\e77e"; } + +.mdi-editor-border-outer:before { + content: "\e77f"; } + +.mdi-editor-border-right:before { + content: "\e780"; } + +.mdi-editor-border-style:before { + content: "\e781"; } + +.mdi-editor-border-top:before { + content: "\e782"; } + +.mdi-editor-border-vertical:before { + content: "\e783"; } + +.mdi-editor-format-align-center:before { + content: "\e784"; } + +.mdi-editor-format-align-justify:before { + content: "\e785"; } + +.mdi-editor-format-align-left:before { + content: "\e786"; } + +.mdi-editor-format-align-right:before { + content: "\e787"; } + +.mdi-editor-format-bold:before { + content: "\e788"; } + +.mdi-editor-format-clear:before { + content: "\e789"; } + +.mdi-editor-format-color-fill:before { + content: "\e78a"; } + +.mdi-editor-format-color-reset:before { + content: "\e78b"; } + +.mdi-editor-format-color-text:before { + content: "\e78c"; } + +.mdi-editor-format-indent-decrease:before { + content: "\e78d"; } + +.mdi-editor-format-indent-increase:before { + content: "\e78e"; } + +.mdi-editor-format-italic:before { + content: "\e78f"; } + +.mdi-editor-format-line-spacing:before { + content: "\e790"; } + +.mdi-editor-format-list-bulleted:before { + content: "\e791"; } + +.mdi-editor-format-list-numbered:before { + content: "\e792"; } + +.mdi-editor-format-paint:before { + content: "\e793"; } + +.mdi-editor-format-quote:before { + content: "\e794"; } + +.mdi-editor-format-size:before { + content: "\e795"; } + +.mdi-editor-format-strikethrough:before { + content: "\e796"; } + +.mdi-editor-format-textdirection-l-to-r:before { + content: "\e797"; } + +.mdi-editor-format-textdirection-r-to-l:before { + content: "\e798"; } + +.mdi-editor-format-underline:before { + content: "\e799"; } + +.mdi-editor-functions:before { + content: "\e79a"; } + +.mdi-editor-insert-chart:before { + content: "\e79b"; } + +.mdi-editor-insert-comment:before { + content: "\e79c"; } + +.mdi-editor-insert-drive-file:before { + content: "\e79d"; } + +.mdi-editor-insert-emoticon:before { + content: "\e79e"; } + +.mdi-editor-insert-invitation:before { + content: "\e79f"; } + +.mdi-editor-insert-link:before { + content: "\e7a0"; } + +.mdi-editor-insert-photo:before { + content: "\e7a1"; } + +.mdi-editor-merge-type:before { + content: "\e7a2"; } + +.mdi-editor-mode-comment:before { + content: "\e7a3"; } + +.mdi-editor-mode-edit:before { + content: "\e7a4"; } + +.mdi-editor-publish:before { + content: "\e7a5"; } + +.mdi-editor-vertical-align-bottom:before { + content: "\e7a6"; } + +.mdi-editor-vertical-align-center:before { + content: "\e7a7"; } + +.mdi-editor-vertical-align-top:before { + content: "\e7a8"; } + +.mdi-editor-wrap-text:before { + content: "\e7a9"; } + +.mdi-file-attachment:before { + content: "\e7aa"; } + +.mdi-file-cloud-circle:before { + content: "\e7ab"; } + +.mdi-file-cloud-done:before { + content: "\e7ac"; } + +.mdi-file-cloud-download:before { + content: "\e7ad"; } + +.mdi-file-cloud-off:before { + content: "\e7ae"; } + +.mdi-file-cloud-queue:before { + content: "\e7af"; } + +.mdi-file-cloud-upload:before { + content: "\e7b0"; } + +.mdi-file-cloud:before { + content: "\e7b1"; } + +.mdi-file-file-download:before { + content: "\e7b2"; } + +.mdi-file-file-upload:before { + content: "\e7b3"; } + +.mdi-file-folder-open:before { + content: "\e7b4"; } + +.mdi-file-folder-shared:before { + content: "\e7b5"; } + +.mdi-file-folder:before { + content: "\e7b6"; } + +.mdi-device-access-alarm:before { + content: "\e720"; } + +.mdi-device-access-alarms:before { + content: "\e721"; } + +.mdi-device-access-time:before { + content: "\e722"; } + +.mdi-device-add-alarm:before { + content: "\e723"; } + +.mdi-device-airplanemode-off:before { + content: "\e724"; } + +.mdi-device-airplanemode-on:before { + content: "\e725"; } + +.mdi-device-battery-20:before { + content: "\e726"; } + +.mdi-device-battery-30:before { + content: "\e727"; } + +.mdi-device-battery-50:before { + content: "\e728"; } + +.mdi-device-battery-60:before { + content: "\e729"; } + +.mdi-device-battery-80:before { + content: "\e72a"; } + +.mdi-device-battery-90:before { + content: "\e72b"; } + +.mdi-device-battery-alert:before { + content: "\e72c"; } + +.mdi-device-battery-charging-20:before { + content: "\e72d"; } + +.mdi-device-battery-charging-30:before { + content: "\e72e"; } + +.mdi-device-battery-charging-50:before { + content: "\e72f"; } + +.mdi-device-battery-charging-60:before { + content: "\e730"; } + +.mdi-device-battery-charging-80:before { + content: "\e731"; } + +.mdi-device-battery-charging-90:before { + content: "\e732"; } + +.mdi-device-battery-charging-full:before { + content: "\e733"; } + +.mdi-device-battery-full:before { + content: "\e734"; } + +.mdi-device-battery-std:before { + content: "\e735"; } + +.mdi-device-battery-unknown:before { + content: "\e736"; } + +.mdi-device-bluetooth-connected:before { + content: "\e737"; } + +.mdi-device-bluetooth-disabled:before { + content: "\e738"; } + +.mdi-device-bluetooth-searching:before { + content: "\e739"; } + +.mdi-device-bluetooth:before { + content: "\e73a"; } + +.mdi-device-brightness-auto:before { + content: "\e73b"; } + +.mdi-device-brightness-high:before { + content: "\e73c"; } + +.mdi-device-brightness-low:before { + content: "\e73d"; } + +.mdi-device-brightness-medium:before { + content: "\e73e"; } + +.mdi-device-data-usage:before { + content: "\e73f"; } + +.mdi-device-developer-mode:before { + content: "\e740"; } + +.mdi-device-devices:before { + content: "\e741"; } + +.mdi-device-dvr:before { + content: "\e742"; } + +.mdi-device-gps-fixed:before { + content: "\e743"; } + +.mdi-device-gps-not-fixed:before { + content: "\e744"; } + +.mdi-device-gps-off:before { + content: "\e745"; } + +.mdi-device-location-disabled:before { + content: "\e746"; } + +.mdi-device-location-searching:before { + content: "\e747"; } + +.mdi-device-multitrack-audio:before { + content: "\e748"; } + +.mdi-device-network-cell:before { + content: "\e749"; } + +.mdi-device-network-wifi:before { + content: "\e74a"; } + +.mdi-device-nfc:before { + content: "\e74b"; } + +.mdi-device-now-wallpaper:before { + content: "\e74c"; } + +.mdi-device-now-widgets:before { + content: "\e74d"; } + +.mdi-device-screen-lock-landscape:before { + content: "\e74e"; } + +.mdi-device-screen-lock-portrait:before { + content: "\e74f"; } + +.mdi-device-screen-lock-rotation:before { + content: "\e750"; } + +.mdi-device-screen-rotation:before { + content: "\e751"; } + +.mdi-device-sd-storage:before { + content: "\e752"; } + +.mdi-device-settings-system-daydream:before { + content: "\e753"; } + +.mdi-device-signal-cellular-0-bar:before { + content: "\e754"; } + +.mdi-device-signal-cellular-1-bar:before { + content: "\e755"; } + +.mdi-device-signal-cellular-2-bar:before { + content: "\e756"; } + +.mdi-device-signal-cellular-3-bar:before { + content: "\e757"; } + +.mdi-device-signal-cellular-4-bar:before { + content: "\e758"; } + +.mdi-signal-wifi-statusbar-connected-no-internet-after:before { + content: "\e8f6"; } + +.mdi-device-signal-cellular-connected-no-internet-0-bar:before { + content: "\e759"; } + +.mdi-device-signal-cellular-connected-no-internet-1-bar:before { + content: "\e75a"; } + +.mdi-device-signal-cellular-connected-no-internet-2-bar:before { + content: "\e75b"; } + +.mdi-device-signal-cellular-connected-no-internet-3-bar:before { + content: "\e75c"; } + +.mdi-device-signal-cellular-connected-no-internet-4-bar:before { + content: "\e75d"; } + +.mdi-device-signal-cellular-no-sim:before { + content: "\e75e"; } + +.mdi-device-signal-cellular-null:before { + content: "\e75f"; } + +.mdi-device-signal-cellular-off:before { + content: "\e760"; } + +.mdi-device-signal-wifi-0-bar:before { + content: "\e761"; } + +.mdi-device-signal-wifi-1-bar:before { + content: "\e762"; } + +.mdi-device-signal-wifi-2-bar:before { + content: "\e763"; } + +.mdi-device-signal-wifi-3-bar:before { + content: "\e764"; } + +.mdi-device-signal-wifi-4-bar:before { + content: "\e765"; } + +.mdi-device-signal-wifi-off:before { + content: "\e766"; } + +.mdi-device-signal-wifi-statusbar-1-bar:before { + content: "\e767"; } + +.mdi-device-signal-wifi-statusbar-2-bar:before { + content: "\e768"; } + +.mdi-device-signal-wifi-statusbar-3-bar:before { + content: "\e769"; } + +.mdi-device-signal-wifi-statusbar-4-bar:before { + content: "\e76a"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-:before { + content: "\e76b"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet:before { + content: "\e76f"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { + content: "\e76c"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { + content: "\e76d"; } + +.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { + content: "\e76e"; } + +.mdi-signal-wifi-statusbar-not-connected-after:before { + content: "\e8f7"; } + +.mdi-device-signal-wifi-statusbar-not-connected:before { + content: "\e770"; } + +.mdi-device-signal-wifi-statusbar-null:before { + content: "\e771"; } + +.mdi-device-storage:before { + content: "\e772"; } + +.mdi-device-usb:before { + content: "\e773"; } + +.mdi-device-wifi-lock:before { + content: "\e774"; } + +.mdi-device-wifi-tethering:before { + content: "\e775"; } + +.mdi-hardware-cast-connected:before { + content: "\e7b7"; } + +.mdi-hardware-cast:before { + content: "\e7b8"; } + +.mdi-hardware-computer:before { + content: "\e7b9"; } + +.mdi-hardware-desktop-mac:before { + content: "\e7ba"; } + +.mdi-hardware-desktop-windows:before { + content: "\e7bb"; } + +.mdi-hardware-dock:before { + content: "\e7bc"; } + +.mdi-hardware-gamepad:before { + content: "\e7bd"; } + +.mdi-hardware-headset-mic:before { + content: "\e7be"; } + +.mdi-hardware-headset:before { + content: "\e7bf"; } + +.mdi-hardware-keyboard-alt:before { + content: "\e7c0"; } + +.mdi-hardware-keyboard-arrow-down:before { + content: "\e7c1"; } + +.mdi-hardware-keyboard-arrow-left:before { + content: "\e7c2"; } + +.mdi-hardware-keyboard-arrow-right:before { + content: "\e7c3"; } + +.mdi-hardware-keyboard-arrow-up:before { + content: "\e7c4"; } + +.mdi-hardware-keyboard-backspace:before { + content: "\e7c5"; } + +.mdi-hardware-keyboard-capslock:before { + content: "\e7c6"; } + +.mdi-hardware-keyboard-control:before { + content: "\e7c7"; } + +.mdi-hardware-keyboard-hide:before { + content: "\e7c8"; } + +.mdi-hardware-keyboard-return:before { + content: "\e7c9"; } + +.mdi-hardware-keyboard-tab:before { + content: "\e7ca"; } + +.mdi-hardware-keyboard-voice:before { + content: "\e7cb"; } + +.mdi-hardware-keyboard:before { + content: "\e7cc"; } + +.mdi-hardware-laptop-chromebook:before { + content: "\e7cd"; } + +.mdi-hardware-laptop-mac:before { + content: "\e7ce"; } + +.mdi-hardware-laptop-windows:before { + content: "\e7cf"; } + +.mdi-hardware-laptop:before { + content: "\e7d0"; } + +.mdi-hardware-memory:before { + content: "\e7d1"; } + +.mdi-hardware-mouse:before { + content: "\e7d2"; } + +.mdi-hardware-phone-android:before { + content: "\e7d3"; } + +.mdi-hardware-phone-iphone:before { + content: "\e7d4"; } + +.mdi-hardware-phonelink-off:before { + content: "\e7d5"; } + +.mdi-hardware-phonelink:before { + content: "\e7d6"; } + +.mdi-hardware-security:before { + content: "\e7d7"; } + +.mdi-hardware-sim-card:before { + content: "\e7d8"; } + +.mdi-hardware-smartphone:before { + content: "\e7d9"; } + +.mdi-hardware-speaker:before { + content: "\e7da"; } + +.mdi-hardware-tablet-android:before { + content: "\e7db"; } + +.mdi-hardware-tablet-mac:before { + content: "\e7dc"; } + +.mdi-hardware-tablet:before { + content: "\e7dd"; } + +.mdi-hardware-tv:before { + content: "\e7de"; } + +.mdi-hardware-watch:before { + content: "\e7df"; } + +.mdi-image-add-to-photos:before { + content: "\e7e0"; } + +.mdi-image-adjust:before { + content: "\e7e1"; } + +.mdi-image-assistant-photo:before { + content: "\e7e2"; } + +.mdi-image-audiotrack:before { + content: "\e7e3"; } + +.mdi-image-blur-circular:before { + content: "\e7e4"; } + +.mdi-image-blur-linear:before { + content: "\e7e5"; } + +.mdi-image-blur-off:before { + content: "\e7e6"; } + +.mdi-image-blur-on:before { + content: "\e7e7"; } + +.mdi-image-brightness-1:before { + content: "\e7e8"; } + +.mdi-image-brightness-2:before { + content: "\e7e9"; } + +.mdi-image-brightness-3:before { + content: "\e7ea"; } + +.mdi-image-brightness-4:before { + content: "\e7eb"; } + +.mdi-image-brightness-5:before { + content: "\e7ec"; } + +.mdi-image-brightness-6:before { + content: "\e7ed"; } + +.mdi-image-brightness-7:before { + content: "\e7ee"; } + +.mdi-image-brush:before { + content: "\e7ef"; } + +.mdi-image-camera-alt:before { + content: "\e7f0"; } + +.mdi-image-camera-front:before { + content: "\e7f1"; } + +.mdi-image-camera-rear:before { + content: "\e7f2"; } + +.mdi-image-camera-roll:before { + content: "\e7f3"; } + +.mdi-image-camera:before { + content: "\e7f4"; } + +.mdi-image-center-focus-strong:before { + content: "\e7f5"; } + +.mdi-image-center-focus-weak:before { + content: "\e7f6"; } + +.mdi-image-collections:before { + content: "\e7f7"; } + +.mdi-image-color-lens:before { + content: "\e7f8"; } + +.mdi-image-colorize:before { + content: "\e7f9"; } + +.mdi-image-compare:before { + content: "\e7fa"; } + +.mdi-image-control-point-duplicate:before { + content: "\e7fb"; } + +.mdi-image-control-point:before { + content: "\e7fc"; } + +.mdi-image-crop-3-2:before { + content: "\e7fd"; } + +.mdi-image-crop-5-4:before { + content: "\e7fe"; } + +.mdi-image-crop-7-5:before { + content: "\e7ff"; } + +.mdi-image-crop-16-9:before { + content: "\e800"; } + +.mdi-image-crop-din:before { + content: "\e801"; } + +.mdi-image-crop-free:before { + content: "\e802"; } + +.mdi-image-crop-landscape:before { + content: "\e803"; } + +.mdi-image-crop-original:before { + content: "\e804"; } + +.mdi-image-crop-portrait:before { + content: "\e805"; } + +.mdi-image-crop-square:before { + content: "\e806"; } + +.mdi-image-crop:before { + content: "\e807"; } + +.mdi-image-dehaze:before { + content: "\e808"; } + +.mdi-image-details:before { + content: "\e809"; } + +.mdi-image-edit:before { + content: "\e80a"; } + +.mdi-image-exposure-minus-1:before { + content: "\e80b"; } + +.mdi-image-exposure-minus-2:before { + content: "\e80c"; } + +.mdi-image-exposure-plus-1:before { + content: "\e80d"; } + +.mdi-image-exposure-plus-2:before { + content: "\e80e"; } + +.mdi-image-exposure-zero:before { + content: "\e80f"; } + +.mdi-image-exposure:before { + content: "\e810"; } + +.mdi-image-filter-1:before { + content: "\e811"; } + +.mdi-image-filter-2:before { + content: "\e812"; } + +.mdi-image-filter-3:before { + content: "\e813"; } + +.mdi-image-filter-4:before { + content: "\e814"; } + +.mdi-image-filter-5:before { + content: "\e815"; } + +.mdi-image-filter-6:before { + content: "\e816"; } + +.mdi-image-filter-7:before { + content: "\e817"; } + +.mdi-image-filter-8:before { + content: "\e818"; } + +.mdi-image-filter-9-plus:before { + content: "\e819"; } + +.mdi-image-filter-9:before { + content: "\e81a"; } + +.mdi-image-filter-b-and-w:before { + content: "\e81b"; } + +.mdi-image-filter-center-focus:before { + content: "\e81c"; } + +.mdi-image-filter-drama:before { + content: "\e81d"; } + +.mdi-image-filter-frames:before { + content: "\e81e"; } + +.mdi-image-filter-hdr:before { + content: "\e81f"; } + +.mdi-image-filter-none:before { + content: "\e820"; } + +.mdi-image-filter-tilt-shift:before { + content: "\e821"; } + +.mdi-image-filter-vintage:before { + content: "\e822"; } + +.mdi-image-filter:before { + content: "\e823"; } + +.mdi-image-flare:before { + content: "\e824"; } + +.mdi-image-flash-auto:before { + content: "\e825"; } + +.mdi-image-flash-off:before { + content: "\e826"; } + +.mdi-image-flash-on:before { + content: "\e827"; } + +.mdi-image-flip:before { + content: "\e828"; } + +.mdi-image-gradient:before { + content: "\e829"; } + +.mdi-image-grain:before { + content: "\e82a"; } + +.mdi-image-grid-off:before { + content: "\e82b"; } + +.mdi-image-grid-on:before { + content: "\e82c"; } + +.mdi-image-hdr-off:before { + content: "\e82d"; } + +.mdi-image-hdr-on:before { + content: "\e82e"; } + +.mdi-image-hdr-strong:before { + content: "\e82f"; } + +.mdi-image-hdr-weak:before { + content: "\e830"; } + +.mdi-image-healing:before { + content: "\e831"; } + +.mdi-image-image-aspect-ratio:before { + content: "\e832"; } + +.mdi-image-image:before { + content: "\e833"; } + +.mdi-image-iso:before { + content: "\e834"; } + +.mdi-image-landscape:before { + content: "\e835"; } + +.mdi-image-leak-add:before { + content: "\e836"; } + +.mdi-image-leak-remove:before { + content: "\e837"; } + +.mdi-image-lens:before { + content: "\e838"; } + +.mdi-image-looks-3:before { + content: "\e839"; } + +.mdi-image-looks-4:before { + content: "\e83a"; } + +.mdi-image-looks-5:before { + content: "\e83b"; } + +.mdi-image-looks-6:before { + content: "\e83c"; } + +.mdi-image-looks-one:before { + content: "\e83d"; } + +.mdi-image-looks-two:before { + content: "\e83e"; } + +.mdi-image-looks:before { + content: "\e83f"; } + +.mdi-image-loupe:before { + content: "\e840"; } + +.mdi-image-movie-creation:before { + content: "\e841"; } + +.mdi-image-nature-people:before { + content: "\e842"; } + +.mdi-image-nature:before { + content: "\e843"; } + +.mdi-image-navigate-before:before { + content: "\e844"; } + +.mdi-image-navigate-next:before { + content: "\e845"; } + +.mdi-image-palette:before { + content: "\e846"; } + +.mdi-image-panorama-fisheye:before { + content: "\e847"; } + +.mdi-image-panorama-horizontal:before { + content: "\e848"; } + +.mdi-image-panorama-vertical:before { + content: "\e849"; } + +.mdi-image-panorama-wide-angle:before { + content: "\e84a"; } + +.mdi-image-panorama:before { + content: "\e84b"; } + +.mdi-image-photo-album:before { + content: "\e84c"; } + +.mdi-image-photo-camera:before { + content: "\e84d"; } + +.mdi-image-photo-library:before { + content: "\e84e"; } + +.mdi-image-photo:before { + content: "\e84f"; } + +.mdi-image-portrait:before { + content: "\e850"; } + +.mdi-image-remove-red-eye:before { + content: "\e851"; } + +.mdi-image-rotate-left:before { + content: "\e852"; } + +.mdi-image-rotate-right:before { + content: "\e853"; } + +.mdi-image-slideshow:before { + content: "\e854"; } + +.mdi-image-straighten:before { + content: "\e855"; } + +.mdi-image-style:before { + content: "\e856"; } + +.mdi-image-switch-camera:before { + content: "\e857"; } + +.mdi-image-switch-video:before { + content: "\e858"; } + +.mdi-image-tag-faces:before { + content: "\e859"; } + +.mdi-image-texture:before { + content: "\e85a"; } + +.mdi-image-timelapse:before { + content: "\e85b"; } + +.mdi-image-timer-3:before { + content: "\e85c"; } + +.mdi-image-timer-10:before { + content: "\e85d"; } + +.mdi-image-timer-auto:before { + content: "\e85e"; } + +.mdi-image-timer-off:before { + content: "\e85f"; } + +.mdi-image-timer:before { + content: "\e860"; } + +.mdi-image-tonality:before { + content: "\e861"; } + +.mdi-image-transform:before { + content: "\e862"; } + +.mdi-image-tune:before { + content: "\e863"; } + +.mdi-image-wb-auto:before { + content: "\e864"; } + +.mdi-image-wb-cloudy:before { + content: "\e865"; } + +.mdi-image-wb-incandescent:before { + content: "\e866"; } + +.mdi-image-wb-irradescent:before { + content: "\e867"; } + +.mdi-image-wb-sunny:before { + content: "\e868"; } + +.mdi-maps-beenhere:before { + content: "\e869"; } + +.mdi-maps-directions-bike:before { + content: "\e86a"; } + +.mdi-maps-directions-bus:before { + content: "\e86b"; } + +.mdi-maps-directions-car:before { + content: "\e86c"; } + +.mdi-maps-directions-ferry:before { + content: "\e86d"; } + +.mdi-maps-directions-subway:before { + content: "\e86e"; } + +.mdi-maps-directions-train:before { + content: "\e86f"; } + +.mdi-maps-directions-transit:before { + content: "\e870"; } + +.mdi-maps-directions-walk:before { + content: "\e871"; } + +.mdi-maps-directions:before { + content: "\e872"; } + +.mdi-maps-flight:before { + content: "\e873"; } + +.mdi-maps-hotel:before { + content: "\e874"; } + +.mdi-maps-layers-clear:before { + content: "\e875"; } + +.mdi-maps-layers:before { + content: "\e876"; } + +.mdi-maps-local-airport:before { + content: "\e877"; } + +.mdi-maps-local-atm:before { + content: "\e878"; } + +.mdi-maps-local-attraction:before { + content: "\e879"; } + +.mdi-maps-local-bar:before { + content: "\e87a"; } + +.mdi-maps-local-cafe:before { + content: "\e87b"; } + +.mdi-maps-local-car-wash:before { + content: "\e87c"; } + +.mdi-maps-local-convenience-store:before { + content: "\e87d"; } + +.mdi-maps-local-drink:before { + content: "\e87e"; } + +.mdi-maps-local-florist:before { + content: "\e87f"; } + +.mdi-maps-local-gas-station:before { + content: "\e880"; } + +.mdi-maps-local-grocery-store:before { + content: "\e881"; } + +.mdi-maps-local-hospital:before { + content: "\e882"; } + +.mdi-maps-local-hotel:before { + content: "\e883"; } + +.mdi-maps-local-laundry-service:before { + content: "\e884"; } + +.mdi-maps-local-library:before { + content: "\e885"; } + +.mdi-maps-local-mall:before { + content: "\e886"; } + +.mdi-maps-local-movies:before { + content: "\e887"; } + +.mdi-maps-local-offer:before { + content: "\e888"; } + +.mdi-maps-local-parking:before { + content: "\e889"; } + +.mdi-maps-local-pharmacy:before { + content: "\e88a"; } + +.mdi-maps-local-phone:before { + content: "\e88b"; } + +.mdi-maps-local-pizza:before { + content: "\e88c"; } + +.mdi-maps-local-play:before { + content: "\e88d"; } + +.mdi-maps-local-post-office:before { + content: "\e88e"; } + +.mdi-maps-local-print-shop:before { + content: "\e88f"; } + +.mdi-maps-local-restaurant:before { + content: "\e890"; } + +.mdi-maps-local-see:before { + content: "\e891"; } + +.mdi-maps-local-shipping:before { + content: "\e892"; } + +.mdi-maps-local-taxi:before { + content: "\e893"; } + +.mdi-maps-location-history:before { + content: "\e894"; } + +.mdi-maps-map:before { + content: "\e895"; } + +.mdi-maps-my-location:before { + content: "\e896"; } + +.mdi-maps-navigation:before { + content: "\e897"; } + +.mdi-maps-pin-drop:before { + content: "\e898"; } + +.mdi-maps-place:before { + content: "\e899"; } + +.mdi-maps-rate-review:before { + content: "\e89a"; } + +.mdi-maps-restaurant-menu:before { + content: "\e89b"; } + +.mdi-maps-satellite:before { + content: "\e89c"; } + +.mdi-maps-store-mall-directory:before { + content: "\e89d"; } + +.mdi-maps-terrain:before { + content: "\e89e"; } + +.mdi-maps-traffic:before { + content: "\e89f"; } + +.mdi-navigation-apps:before { + content: "\e8a0"; } + +.mdi-navigation-arrow-back:before { + content: "\e8a1"; } + +.mdi-navigation-arrow-drop-down-circle:before { + content: "\e8a2"; } + +.mdi-navigation-arrow-drop-down:before { + content: "\e8a3"; } + +.mdi-navigation-arrow-drop-up:before { + content: "\e8a4"; } + +.mdi-navigation-arrow-forward:before { + content: "\e8a5"; } + +.mdi-navigation-cancel:before { + content: "\e8a6"; } + +.mdi-navigation-check:before { + content: "\e8a7"; } + +.mdi-navigation-chevron-left:before { + content: "\e8a8"; } + +.mdi-navigation-chevron-right:before { + content: "\e8a9"; } + +.mdi-navigation-close:before { + content: "\e8aa"; } + +.mdi-navigation-expand-less:before { + content: "\e8ab"; } + +.mdi-navigation-expand-more:before { + content: "\e8ac"; } + +.mdi-navigation-fullscreen-exit:before { + content: "\e8ad"; } + +.mdi-navigation-fullscreen:before { + content: "\e8ae"; } + +.mdi-navigation-menu:before { + content: "\e8af"; } + +.mdi-navigation-more-horiz:before { + content: "\e8b0"; } + +.mdi-navigation-more-vert:before { + content: "\e8b1"; } + +.mdi-navigation-refresh:before { + content: "\e8b2"; } + +.mdi-navigation-unfold-less:before { + content: "\e8b3"; } + +.mdi-navigation-unfold-more:before { + content: "\e8b4"; } + +.mdi-notification-adb:before { + content: "\e8b5"; } + +.mdi-notification-bluetooth-audio:before { + content: "\e8b6"; } + +.mdi-notification-disc-full:before { + content: "\e8b7"; } + +.mdi-notification-dnd-forwardslash:before { + content: "\e8b8"; } + +.mdi-notification-do-not-disturb:before { + content: "\e8b9"; } + +.mdi-notification-drive-eta:before { + content: "\e8ba"; } + +.mdi-notification-event-available:before { + content: "\e8bb"; } + +.mdi-notification-event-busy:before { + content: "\e8bc"; } + +.mdi-notification-event-note:before { + content: "\e8bd"; } + +.mdi-notification-folder-special:before { + content: "\e8be"; } + +.mdi-notification-mms:before { + content: "\e8bf"; } + +.mdi-notification-more:before { + content: "\e8c0"; } + +.mdi-notification-network-locked:before { + content: "\e8c1"; } + +.mdi-notification-phone-bluetooth-speaker:before { + content: "\e8c2"; } + +.mdi-notification-phone-forwarded:before { + content: "\e8c3"; } + +.mdi-notification-phone-in-talk:before { + content: "\e8c4"; } + +.mdi-notification-phone-locked:before { + content: "\e8c5"; } + +.mdi-notification-phone-missed:before { + content: "\e8c6"; } + +.mdi-notification-phone-paused:before { + content: "\e8c7"; } + +.mdi-notification-play-download:before { + content: "\e8c8"; } + +.mdi-notification-play-install:before { + content: "\e8c9"; } + +.mdi-notification-sd-card:before { + content: "\e8ca"; } + +.mdi-notification-sim-card-alert:before { + content: "\e8cb"; } + +.mdi-notification-sms-failed:before { + content: "\e8cc"; } + +.mdi-notification-sms:before { + content: "\e8cd"; } + +.mdi-notification-sync-disabled:before { + content: "\e8ce"; } + +.mdi-notification-sync-problem:before { + content: "\e8cf"; } + +.mdi-notification-sync:before { + content: "\e8d0"; } + +.mdi-notification-system-update:before { + content: "\e8d1"; } + +.mdi-notification-tap-and-play:before { + content: "\e8d2"; } + +.mdi-notification-time-to-leave:before { + content: "\e8d3"; } + +.mdi-notification-vibration:before { + content: "\e8d4"; } + +.mdi-notification-voice-chat:before { + content: "\e8d5"; } + +.mdi-notification-vpn-lock:before { + content: "\e8d6"; } + +.mdi-social-cake:before { + content: "\e8d7"; } + +.mdi-social-domain:before { + content: "\e8d8"; } + +.mdi-social-group-add:before { + content: "\e8d9"; } + +.mdi-social-group:before { + content: "\e8da"; } + +.mdi-social-location-city:before { + content: "\e8db"; } + +.mdi-social-mood:before { + content: "\e8dc"; } + +.mdi-social-notifications-none:before { + content: "\e8dd"; } + +.mdi-social-notifications-off:before { + content: "\e8de"; } + +.mdi-social-notifications-on:before { + content: "\e8df"; } + +.mdi-social-notifications-paused:before { + content: "\e8e0"; } + +.mdi-social-notifications:before { + content: "\e8e1"; } + +.mdi-social-pages:before { + content: "\e8e2"; } + +.mdi-social-party-mode:before { + content: "\e8e3"; } + +.mdi-social-people-outline:before { + content: "\e8e4"; } + +.mdi-social-people:before { + content: "\e8e5"; } + +.mdi-social-person-add:before { + content: "\e8e6"; } + +.mdi-social-person-outline:before { + content: "\e8e7"; } + +.mdi-social-person:before { + content: "\e8e8"; } + +.mdi-social-plus-one:before { + content: "\e8e9"; } + +.mdi-social-poll:before { + content: "\e8ea"; } + +.mdi-social-public:before { + content: "\e8eb"; } + +.mdi-social-school:before { + content: "\e8ec"; } + +.mdi-social-share:before { + content: "\e8ed"; } + +.mdi-social-whatshot:before { + content: "\e8ee"; } + +.mdi-toggle-check-box-outline-blank:before { + content: "\e8ef"; } + +.mdi-toggle-check-box:before { + content: "\e8f0"; } + +.mdi-toggle-radio-button-off:before { + content: "\e8f1"; } + +.mdi-toggle-radio-button-on:before { + content: "\e8f2"; } + +.mdi-toggle-star-half:before { + content: "\e8f3"; } + +.mdi-toggle-star-outline:before { + content: "\e8f4"; } + +.mdi-toggle-star:before { + content: "\e8f5"; } + +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; } + +@media only screen and (min-width: 601px) { + .container { + width: 85%; } } +@media only screen and (min-width: 993px) { + .container { + width: 70%; } } +.container .row { + margin-left: -0.75rem; + margin-right: -0.75rem; } + +.section { + padding-top: 1rem; + padding-bottom: 1rem; } + .section.no-pad { + padding: 0; } + .section.no-pad-bot { + padding-bottom: 0; } + .section.no-pad-top { + padding-top: 0; } + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; } + .row:after { + content: ""; + display: table; + clear: both; } + .row .col { + float: left; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0 0.75rem; } + .row .col.s1 { + width: 8.33333%; + margin-left: 0; } + .row .col.s2 { + width: 16.66667%; + margin-left: 0; } + .row .col.s3 { + width: 25%; + margin-left: 0; } + .row .col.s4 { + width: 33.33333%; + margin-left: 0; } + .row .col.s5 { + width: 41.66667%; + margin-left: 0; } + .row .col.s6 { + width: 50%; + margin-left: 0; } + .row .col.s7 { + width: 58.33333%; + margin-left: 0; } + .row .col.s8 { + width: 66.66667%; + margin-left: 0; } + .row .col.s9 { + width: 75%; + margin-left: 0; } + .row .col.s10 { + width: 83.33333%; + margin-left: 0; } + .row .col.s11 { + width: 91.66667%; + margin-left: 0; } + .row .col.s12 { + width: 100%; + margin-left: 0; } + .row .col.offset-s1 { + margin-left: 8.33333%; } + .row .col.offset-s2 { + margin-left: 16.66667%; } + .row .col.offset-s3 { + margin-left: 25%; } + .row .col.offset-s4 { + margin-left: 33.33333%; } + .row .col.offset-s5 { + margin-left: 41.66667%; } + .row .col.offset-s6 { + margin-left: 50%; } + .row .col.offset-s7 { + margin-left: 58.33333%; } + .row .col.offset-s8 { + margin-left: 66.66667%; } + .row .col.offset-s9 { + margin-left: 75%; } + .row .col.offset-s10 { + margin-left: 83.33333%; } + .row .col.offset-s11 { + margin-left: 91.66667%; } + .row .col.offset-s12 { + margin-left: 100%; } + @media only screen and (min-width: 601px) { + .row .col.m1 { + width: 8.33333%; + margin-left: 0; } + .row .col.m2 { + width: 16.66667%; + margin-left: 0; } + .row .col.m3 { + width: 25%; + margin-left: 0; } + .row .col.m4 { + width: 33.33333%; + margin-left: 0; } + .row .col.m5 { + width: 41.66667%; + margin-left: 0; } + .row .col.m6 { + width: 50%; + margin-left: 0; } + .row .col.m7 { + width: 58.33333%; + margin-left: 0; } + .row .col.m8 { + width: 66.66667%; + margin-left: 0; } + .row .col.m9 { + width: 75%; + margin-left: 0; } + .row .col.m10 { + width: 83.33333%; + margin-left: 0; } + .row .col.m11 { + width: 91.66667%; + margin-left: 0; } + .row .col.m12 { + width: 100%; + margin-left: 0; } + .row .col.offset-m1 { + margin-left: 8.33333%; } + .row .col.offset-m2 { + margin-left: 16.66667%; } + .row .col.offset-m3 { + margin-left: 25%; } + .row .col.offset-m4 { + margin-left: 33.33333%; } + .row .col.offset-m5 { + margin-left: 41.66667%; } + .row .col.offset-m6 { + margin-left: 50%; } + .row .col.offset-m7 { + margin-left: 58.33333%; } + .row .col.offset-m8 { + margin-left: 66.66667%; } + .row .col.offset-m9 { + margin-left: 75%; } + .row .col.offset-m10 { + margin-left: 83.33333%; } + .row .col.offset-m11 { + margin-left: 91.66667%; } + .row .col.offset-m12 { + margin-left: 100%; } } + @media only screen and (min-width: 993px) { + .row .col.l1 { + width: 8.33333%; + margin-left: 0; } + .row .col.l2 { + width: 16.66667%; + margin-left: 0; } + .row .col.l3 { + width: 25%; + margin-left: 0; } + .row .col.l4 { + width: 33.33333%; + margin-left: 0; } + .row .col.l5 { + width: 41.66667%; + margin-left: 0; } + .row .col.l6 { + width: 50%; + margin-left: 0; } + .row .col.l7 { + width: 58.33333%; + margin-left: 0; } + .row .col.l8 { + width: 66.66667%; + margin-left: 0; } + .row .col.l9 { + width: 75%; + margin-left: 0; } + .row .col.l10 { + width: 83.33333%; + margin-left: 0; } + .row .col.l11 { + width: 91.66667%; + margin-left: 0; } + .row .col.l12 { + width: 100%; + margin-left: 0; } + .row .col.offset-l1 { + margin-left: 8.33333%; } + .row .col.offset-l2 { + margin-left: 16.66667%; } + .row .col.offset-l3 { + margin-left: 25%; } + .row .col.offset-l4 { + margin-left: 33.33333%; } + .row .col.offset-l5 { + margin-left: 41.66667%; } + .row .col.offset-l6 { + margin-left: 50%; } + .row .col.offset-l7 { + margin-left: 58.33333%; } + .row .col.offset-l8 { + margin-left: 66.66667%; } + .row .col.offset-l9 { + margin-left: 75%; } + .row .col.offset-l10 { + margin-left: 83.33333%; } + .row .col.offset-l11 { + margin-left: 91.66667%; } + .row .col.offset-l12 { + margin-left: 100%; } } + +nav { + color: #fff; + background-color: #ee6e73; + width: 100%; + height: 56px; + line-height: 56px; } + nav a { + color: #fff; } + nav .nav-wrapper { + position: relative; + height: 100%; } + nav .nav-wrapper i { + display: block; + font-size: 2rem; } + @media only screen and (min-width: 993px) { + nav a.button-collapse { + display: none; } } + nav .button-collapse { + float: left; + position: relative; + z-index: 1; + height: 56px; } + nav .button-collapse i { + font-size: 2.7rem; + height: 56px; + line-height: 56px; } + nav .brand-logo { + position: absolute; + color: #fff; + display: inline-block; + font-size: 2.1rem; + padding: 0; + white-space: nowrap; } + nav .brand-logo.center { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } + @media only screen and (max-width: 992px) { + nav .brand-logo { + left: 50%; + -webkit-transform: translateX(-50%); + -moz-transform: translateX(-50%); + -ms-transform: translateX(-50%); + -o-transform: translateX(-50%); + transform: translateX(-50%); } } + nav .brand-logo.right { + right: 0.5rem; + padding: 0; } + nav ul { + margin: 0; } + nav ul li { + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + -o-transition: background-color 0.3s; + -ms-transition: background-color 0.3s; + transition: background-color 0.3s; + float: left; + padding: 0; } + nav ul li:hover, nav ul li.active { + background-color: rgba(0, 0, 0, 0.1); } + nav ul a { + font-size: 1rem; + color: #fff; + display: block; + padding: 0 15px; } + nav ul.left { + float: left; } + nav .input-field { + margin: 0; } + nav .input-field input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; } + nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { + border: none; + box-shadow: none; } + nav .input-field label { + top: 0; + left: 0; } + nav .input-field label i { + color: rgba(255, 255, 255, 0.7); + -webkit-transition: color 0.3s; + -moz-transition: color 0.3s; + -o-transition: color 0.3s; + -ms-transition: color 0.3s; + transition: color 0.3s; } + nav .input-field label.active i { + color: #fff; } + nav .input-field label.active { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); } + +.navbar-fixed { + position: relative; + height: 56px; + z-index: 998; } + .navbar-fixed nav { + position: fixed; } + +@media only screen and (min-width: 601px) { + nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + height: 64px; + line-height: 64px; } + + .navbar-fixed { + height: 64px; } } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Thin.woff2") format("woff2"), url("../font/roboto/Roboto-Thin.woff") format("woff"), url("../font/roboto/Roboto-Thin.ttf") format("truetype"); + font-weight: 200; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Light.woff2") format("woff2"), url("../font/roboto/Roboto-Light.woff") format("woff"), url("../font/roboto/Roboto-Light.ttf") format("truetype"); + font-weight: 300; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Regular.woff2") format("woff2"), url("../font/roboto/Roboto-Regular.woff") format("woff"), url("../font/roboto/Roboto-Regular.ttf") format("truetype"); + font-weight: 400; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Medium.woff2") format("woff2"), url("../font/roboto/Roboto-Medium.woff") format("woff"), url("../font/roboto/Roboto-Medium.ttf") format("truetype"); + font-weight: 500; } +@font-face { + font-family: "Roboto"; + src: url("../font/roboto/Roboto-Bold.woff2") format("woff2"), url("../font/roboto/Roboto-Bold.woff") format("woff"), url("../font/roboto/Roboto-Bold.ttf") format("truetype"); + font-weight: 700; } +a { + text-decoration: none; } + +html { + line-height: 1.5; + font-family: "Roboto", sans-serif; + font-weight: normal; + color: rgba(0, 0, 0, 0.87); } + @media only screen and (min-width: 0) { + html { + font-size: 14px; } } + @media only screen and (min-width: 992px) { + html { + font-size: 14.5px; } } + @media only screen and (min-width: 1200px) { + html { + font-size: 15px; } } + +h1, h2, h3, h4, h5, h6 { + font-weight: 400; + line-height: 1.1; } + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; } + +h1 { + font-size: 4.2rem; + line-height: 110%; + margin: 2.1rem 0 1.68rem 0; } + +h2 { + font-size: 3.56rem; + line-height: 110%; + margin: 1.78rem 0 1.424rem 0; } + +h3 { + font-size: 2.92rem; + line-height: 110%; + margin: 1.46rem 0 1.168rem 0; } + +h4 { + font-size: 2.28rem; + line-height: 110%; + margin: 1.14rem 0 0.912rem 0; } + +h5 { + font-size: 1.64rem; + line-height: 110%; + margin: 0.82rem 0 0.656rem 0; } + +h6 { + font-size: 1rem; + line-height: 110%; + margin: 0.5rem 0 0.4rem 0; } + +em { + font-style: italic; } + +strong { + font-weight: 500; } + +small { + font-size: 75%; } + +.light, footer.page-footer .footer-copyright { + font-weight: 300; } + +.thin { + font-weight: 200; } + +.flow-text { + font-weight: 300; } + @media only screen and (min-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + @media only screen and (min-width: 390px) { + .flow-text { + font-size: 1.224rem; } } + @media only screen and (min-width: 420px) { + .flow-text { + font-size: 1.248rem; } } + @media only screen and (min-width: 450px) { + .flow-text { + font-size: 1.272rem; } } + @media only screen and (min-width: 480px) { + .flow-text { + font-size: 1.296rem; } } + @media only screen and (min-width: 510px) { + .flow-text { + font-size: 1.32rem; } } + @media only screen and (min-width: 540px) { + .flow-text { + font-size: 1.344rem; } } + @media only screen and (min-width: 570px) { + .flow-text { + font-size: 1.368rem; } } + @media only screen and (min-width: 600px) { + .flow-text { + font-size: 1.392rem; } } + @media only screen and (min-width: 630px) { + .flow-text { + font-size: 1.416rem; } } + @media only screen and (min-width: 660px) { + .flow-text { + font-size: 1.44rem; } } + @media only screen and (min-width: 690px) { + .flow-text { + font-size: 1.464rem; } } + @media only screen and (min-width: 720px) { + .flow-text { + font-size: 1.488rem; } } + @media only screen and (min-width: 750px) { + .flow-text { + font-size: 1.512rem; } } + @media only screen and (min-width: 780px) { + .flow-text { + font-size: 1.536rem; } } + @media only screen and (min-width: 810px) { + .flow-text { + font-size: 1.56rem; } } + @media only screen and (min-width: 840px) { + .flow-text { + font-size: 1.584rem; } } + @media only screen and (min-width: 870px) { + .flow-text { + font-size: 1.608rem; } } + @media only screen and (min-width: 900px) { + .flow-text { + font-size: 1.632rem; } } + @media only screen and (min-width: 930px) { + .flow-text { + font-size: 1.656rem; } } + @media only screen and (min-width: 960px) { + .flow-text { + font-size: 1.68rem; } } + @media only screen and (max-width: 360px) { + .flow-text { + font-size: 1.2rem; } } + +.card-panel { + transition: box-shadow .25s; + padding: 20px; + margin: 0.5rem 0 1rem 0; + border-radius: 2px; + background-color: #fff; } + +.card { + position: relative; + overflow: hidden; + margin: 0.5rem 0 1rem 0; + background-color: #fff; + transition: box-shadow .25s; + border-radius: 2px; } + .card .card-title { + color: #fff; + font-size: 24px; + font-weight: 300; } + .card .card-title.activator { + cursor: pointer; } + .card.small, .card.medium, .card.large { + position: relative; } + .card.small .card-image, .card.medium .card-image, .card.large .card-image { + overflow: hidden; } + .card.small .card-content, .card.medium .card-content, .card.large .card-content { + overflow: hidden; } + .card.small .card-action, .card.medium .card-action, .card.large .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; } + .card.small { + height: 300px; } + .card.small .card-image { + height: 150px; } + .card.small .card-content { + height: 150px; } + .card.medium { + height: 400px; } + .card.medium .card-image { + height: 250px; } + .card.medium .card-content { + height: 150px; } + .card.large { + height: 500px; } + .card.large .card-image { + height: 330px; } + .card.large .card-content { + height: 170px; } + .card .card-image { + position: relative; } + .card .card-image img { + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; } + .card .card-image .card-title { + position: absolute; + bottom: 0; + left: 0; + padding: 20px; } + .card .card-content { + padding: 20px; + border-radius: 0 0 2px 2px; } + .card .card-content p { + margin: 0; + color: inherit; } + .card .card-content .card-title { + line-height: 48px; } + .card .card-action { + border-top: 1px solid rgba(160, 160, 160, 0.2); + padding: 20px; } + .card .card-action a { + color: #ffab40; + margin-right: 20px; + -webkit-transition: color 0.3s ease; + -moz-transition: color 0.3s ease; + -o-transition: color 0.3s ease; + -ms-transition: color 0.3s ease; + transition: color 0.3s ease; + text-transform: uppercase; } + .card .card-action a:hover { + color: #ffd8a6; } + .card .card-reveal { + padding: 20px; + position: absolute; + background-color: #fff; + width: 100%; + overflow-y: auto; + top: 100%; + height: 100%; + z-index: 1; + display: none; } + .card .card-reveal .card-title { + cursor: pointer; + display: block; } + +#toast-container { + display: block; + position: fixed; + z-index: 1001; } + @media only screen and (max-width: 600px) { + #toast-container { + min-width: 100%; + bottom: 0%; } } + @media only screen and (min-width: 601px) and (max-width: 992px) { + #toast-container { + min-width: 30%; + left: 5%; + bottom: 7%; } } + @media only screen and (min-width: 993px) { + #toast-container { + min-width: 8%; + top: 10%; + right: 7%; } } + +.toast { + border-radius: 2px; + top: 0; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width: 100%; + height: 48px; + line-height: 48px; + background-color: #323232; + padding: 0 25px; + font-size: 1.1rem; + font-weight: 300; + color: #fff; + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; + -webkit-flex-align: center; + -ms-flex-align: center; + -webkit-align-items: center; + align-items: center; + -webkit-justify-content: space-between; + justify-content: space-between; } + .toast .btn, .toast .btn-large, .toast .btn-flat { + margin: 0; + margin-left: 3rem; } + .toast.rounded { + border-radius: 24px; } + @media only screen and (max-width: 600px) { + .toast { + width: 100%; + border-radius: 0; } } + @media only screen and (min-width: 601px) and (max-width: 992px) { + .toast { + float: left; } } + @media only screen and (min-width: 993px) { + .toast { + float: right; } } + +.tabs { + position: relative; + height: 48px; + background-color: #fff; + margin: 0 auto; + width: 100%; + white-space: nowrap; } + .tabs .tab { + display: block; + float: left; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0 20px; + margin: 0; + text-transform: uppercase; + letter-spacing: .8px; + width: 15%; } + .tabs .tab a { + color: #ee6e73; + display: block; + width: 100%; + height: 100%; + -webkit-transition: color 0.28s ease; + -moz-transition: color 0.28s ease; + -o-transition: color 0.28s ease; + -ms-transition: color 0.28s ease; + transition: color 0.28s ease; } + .tabs .tab a:hover { + color: #f9c9cb; } + .tabs .tab.disabled a { + color: #f9c9cb; + cursor: default; } + .tabs .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: #f6b2b5; + will-change: left, right; } + +.tabs .tab { + padding: 0; } + +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 1rem; + opacity: 0; + display: none; + position: absolute; + text-align: center; + overflow: hidden; + left: 0; + top: 0; + will-change: top, left; } + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + border-radius: 0 0 14px 14px; + background-color: #323232; + z-index: -1; + -webkit-transform-origin: 50% 10%; + -moz-transform-origin: 50% 10%; + -ms-transform-origin: 50% 10%; + -o-transform-origin: 50% 10%; + transform-origin: 50% 10%; + will-change: transform, opacity; } + +.btn, .btn-large, .btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: 36px; + line-height: 36px; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + -webkit-tap-highlight-color: transparent; } + +.btn.disabled, .disabled.btn-large, .btn-floating.disabled, .btn-large.disabled, .btn:disabled, .btn-large:disabled, .btn-large:disabled, .btn-floating:disabled { + background-color: #DFDFDF !important; + box-shadow: none; + color: #9F9F9F !important; + cursor: default; } + .btn.disabled *, .disabled.btn-large *, .btn-floating.disabled *, .btn-large.disabled *, .btn:disabled *, .btn-large:disabled *, .btn-large:disabled *, .btn-floating:disabled * { + pointer-events: none; } + .btn.disabled:hover, .disabled.btn-large:hover, .btn-floating.disabled:hover, .btn-large.disabled:hover, .btn:disabled:hover, .btn-large:disabled:hover, .btn-large:disabled:hover, .btn-floating:disabled:hover { + background-color: #DFDFDF; + color: #9F9F9F; } + +.btn i, .btn-large i, .btn-floating i, .btn-large i, .btn-flat i { + font-size: 1.3rem; + line-height: inherit; } + +.btn, .btn-large { + text-decoration: none; + color: #fff; + background-color: #26a69a; + text-align: center; + letter-spacing: .5px; + -webkit-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -ms-transition: 0.2s ease-out; + transition: 0.2s ease-out; + cursor: pointer; } + .btn:hover, .btn-large:hover { + background-color: #2bbbad; } + +.btn-floating { + display: inline-block; + color: #fff; + position: relative; + overflow: hidden; + z-index: 1; + width: 37px; + height: 37px; + line-height: 37px; + padding: 0; + background-color: #26a69a; + border-radius: 50%; + transition: .3s; + cursor: pointer; + vertical-align: middle; } + .btn-floating i { + width: inherit; + display: inline-block; + text-align: center; + color: #fff; + font-size: 1.6rem; + line-height: 37px; } + .btn-floating:before { + border-radius: 0; } + .btn-floating.btn-large { + width: 55.5px; + height: 55.5px; } + .btn-floating.btn-large i { + line-height: 55.5px; } + +button.btn-floating { + border: none; } + +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 998; } + .fixed-action-btn ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; } + .fixed-action-btn ul li { + margin-bottom: 15px; } + .fixed-action-btn ul a.btn-floating { + opacity: 0; } + +.btn-flat { + box-shadow: none; + background-color: transparent; + color: #343434; + cursor: pointer; } + .btn-flat.disabled { + color: #b3b3b3; + cursor: default; } + +.btn-large { + height: 54px; + line-height: 56px; } + .btn-large i { + font-size: 1.6rem; } + +.btn-block { + display: block; } + +.dropdown-content { + background-color: #fff; + margin: 0; + display: none; + min-width: 100px; + max-height: 650px; + overflow-y: auto; + opacity: 0; + position: absolute; + z-index: 999; + will-change: width, height; } + .dropdown-content li { + clear: both; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + line-height: 1.5rem; + width: 100%; + text-align: left; + text-transform: none; } + .dropdown-content li:hover, .dropdown-content li.active { + background-color: #eee; } + .dropdown-content li > a, .dropdown-content li > span { + font-size: 1.2rem; + color: #26a69a; + display: block; + padding: 1rem 1rem; } + .dropdown-content li > a > i { + height: inherit; + line-height: inherit; } + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + vertical-align: middle; + z-index: 1; + will-change: opacity, transform; + -webkit-transition: all 0.3s ease-out; + -moz-transition: all 0.3s ease-out; + -o-transition: all 0.3s ease-out; + -ms-transition: all 0.3s ease-out; + transition: all 0.3s ease-out; } + .waves-effect .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top: -10px; + margin-left: -10px; + opacity: 0; + background: rgba(0, 0, 0, 0.2); + -webkit-transition: all 0.7s ease-out; + -moz-transition: all 0.7s ease-out; + -o-transition: all 0.7s ease-out; + -ms-transition: all 0.7s ease-out; + transition: all 0.7s ease-out; + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); + pointer-events: none; } + .waves-effect.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); } + .waves-effect.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, 0.7); } + .waves-effect.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, 0.7); } + .waves-effect.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, 0.7); } + .waves-effect.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.7); } + .waves-effect.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.7); } + .waves-effect.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.7); } + +.waves-notransition { + -webkit-transition: none !important; + -moz-transition: none !important; + -o-transition: none !important; + -ms-transition: none !important; + transition: none !important; } + +.waves-circle { + -webkit-transform: translateZ(0); + -moz-transform: translateZ(0); + -ms-transform: translateZ(0); + -o-transform: translateZ(0); + transform: translateZ(0); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; } + .waves-input-wrapper .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; } + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; } + +.waves-block { + display: block; } + +/* Firefox Bug: link not triggered */ +a.waves-effect .waves-ripple { + z-index: -1; } + +.modal { + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + border-radius: 2px; + will-change: top, opacity; } + @media only screen and (max-width: 992px) { + .modal { + width: 80%; } } + .modal h1, .modal h2, .modal h3, .modal h4 { + margin-top: 0; } + .modal .modal-content { + padding: 24px; } + .modal .modal-close { + cursor: pointer; } + .modal .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; } + .modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { + float: right; + margin: 6px 0; } + +.lean-overlay { + position: fixed; + z-index: 999; + top: -100px; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + will-change: opacity; } + +.modal.modal-fixed-footer { + padding: 0; + height: 70%; } + .modal.modal-fixed-footer .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; } + .modal.modal-fixed-footer .modal-footer { + border-top: 1px solid rgba(0, 0, 0, 0.1); + position: absolute; + bottom: 0; } + +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; } + +.collapsible { + border-top: 1px solid #ddd; + border-right: 1px solid #ddd; + border-left: 1px solid #ddd; + margin: 0.5rem 0 1rem 0; } + +.collapsible-header { + display: block; + cursor: pointer; + height: 3rem; + line-height: 3rem; + padding: 0 1rem; + background-color: #fff; + border-bottom: 1px solid #ddd; } + .collapsible-header i { + width: 2rem; + font-size: 1.6rem; + line-height: 3rem; + display: block; + float: left; + text-align: center; + margin-right: 1rem; } + +.collapsible-body { + display: none; + border-bottom: 1px solid #ddd; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; } + .collapsible-body p { + margin: 0; + padding: 2rem; } + +.side-nav .collapsible { + border: none; + box-shadow: none; } + .side-nav .collapsible li { + padding: 0; } +.side-nav .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + margin: 0 1rem; } + .side-nav .collapsible-header i { + line-height: inherit; } +.side-nav .collapsible-body { + border: 0; + background-color: #fff; } + .side-nav .collapsible-body li a { + margin: 0 1rem 0 2rem; } + +.collapsible.popout { + border: none; + box-shadow: none; } + .collapsible.popout > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + margin: 0 24px; + transition: margin 0.35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } + .collapsible.popout > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; } + +.materialboxed { + cursor: zoom-in; + position: relative; + -webkit-transition: opacity 0.4s; + -moz-transition: opacity 0.4s; + -o-transition: opacity 0.4s; + -ms-transition: opacity 0.4s; + transition: opacity 0.4s; } + .materialboxed:hover { + will-change: left, top, width, height; } + .materialboxed:hover:not(.active) { + opacity: .8; } + +.materialboxed.active { + cursor: zoom-out; } + +#materialbox-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #292929; + z-index: 999; + will-change: opacity; } + +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; } + +/* Remove Focus Boxes */ +select:focus { + outline: 1px solid #c9f3ef; } + +button:focus { + outline: none; + background-color: #2ab7a9; } + +label { + font-size: 0.8rem; + color: #9e9e9e; } + +/*************************** + Text Inputs + Textarea +****************************/ +::-webkit-input-placeholder { + color: #d1d1d1; } + +:-moz-placeholder { + /* Firefox 18- */ + color: #d1d1d1; } + +::-moz-placeholder { + /* Firefox 19+ */ + color: #d1d1d1; } + +:-ms-input-placeholder { + color: #d1d1d1; } + +input[type=text], +input[type=password], +input[type=email], +input[type=url], +input[type=time], +input[type=date], +input[type=datetime-local], +input[type=tel], +input[type=number], +input[type=search], +textarea.materialize-textarea { + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + box-shadow: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + transition: all .3s; } + input[type=text]:disabled, input[type=text][readonly="readonly"], + input[type=password]:disabled, + input[type=password][readonly="readonly"], + input[type=email]:disabled, + input[type=email][readonly="readonly"], + input[type=url]:disabled, + input[type=url][readonly="readonly"], + input[type=time]:disabled, + input[type=time][readonly="readonly"], + input[type=date]:disabled, + input[type=date][readonly="readonly"], + input[type=datetime-local]:disabled, + input[type=datetime-local][readonly="readonly"], + input[type=tel]:disabled, + input[type=tel][readonly="readonly"], + input[type=number]:disabled, + input[type=number][readonly="readonly"], + input[type=search]:disabled, + input[type=search][readonly="readonly"], + textarea.materialize-textarea:disabled, + textarea.materialize-textarea[readonly="readonly"] { + color: rgba(0, 0, 0, 0.26); + border-bottom: 1px dotted rgba(0, 0, 0, 0.26); } + input[type=text]:disabled + label, input[type=text][readonly="readonly"] + label, + input[type=password]:disabled + label, + input[type=password][readonly="readonly"] + label, + input[type=email]:disabled + label, + input[type=email][readonly="readonly"] + label, + input[type=url]:disabled + label, + input[type=url][readonly="readonly"] + label, + input[type=time]:disabled + label, + input[type=time][readonly="readonly"] + label, + input[type=date]:disabled + label, + input[type=date][readonly="readonly"] + label, + input[type=datetime-local]:disabled + label, + input[type=datetime-local][readonly="readonly"] + label, + input[type=tel]:disabled + label, + input[type=tel][readonly="readonly"] + label, + input[type=number]:disabled + label, + input[type=number][readonly="readonly"] + label, + input[type=search]:disabled + label, + input[type=search][readonly="readonly"] + label, + textarea.materialize-textarea:disabled + label, + textarea.materialize-textarea[readonly="readonly"] + label { + color: rgba(0, 0, 0, 0.26); } + input[type=text]:focus:not([readonly]), + input[type=password]:focus:not([readonly]), + input[type=email]:focus:not([readonly]), + input[type=url]:focus:not([readonly]), + input[type=time]:focus:not([readonly]), + input[type=date]:focus:not([readonly]), + input[type=datetime-local]:focus:not([readonly]), + input[type=tel]:focus:not([readonly]), + input[type=number]:focus:not([readonly]), + input[type=search]:focus:not([readonly]), + textarea.materialize-textarea:focus:not([readonly]) { + border-bottom: 1px solid #26a69a; + box-shadow: 0 1px 0 0 #26a69a; } + input[type=text]:focus:not([readonly]) + label, + input[type=password]:focus:not([readonly]) + label, + input[type=email]:focus:not([readonly]) + label, + input[type=url]:focus:not([readonly]) + label, + input[type=time]:focus:not([readonly]) + label, + input[type=date]:focus:not([readonly]) + label, + input[type=datetime-local]:focus:not([readonly]) + label, + input[type=tel]:focus:not([readonly]) + label, + input[type=number]:focus:not([readonly]) + label, + input[type=search]:focus:not([readonly]) + label, + textarea.materialize-textarea:focus:not([readonly]) + label { + color: #26a69a; } + input[type=text].valid, input[type=text]:focus.valid, + input[type=password].valid, + input[type=password]:focus.valid, + input[type=email].valid, + input[type=email]:focus.valid, + input[type=url].valid, + input[type=url]:focus.valid, + input[type=time].valid, + input[type=time]:focus.valid, + input[type=date].valid, + input[type=date]:focus.valid, + input[type=datetime-local].valid, + input[type=datetime-local]:focus.valid, + input[type=tel].valid, + input[type=tel]:focus.valid, + input[type=number].valid, + input[type=number]:focus.valid, + input[type=search].valid, + input[type=search]:focus.valid, + textarea.materialize-textarea.valid, + textarea.materialize-textarea:focus.valid { + border-bottom: 1px solid #4CAF50; + box-shadow: 0 1px 0 0 #4CAF50; } + input[type=text].valid + label:after, input[type=text]:focus.valid + label:after, + input[type=password].valid + label:after, + input[type=password]:focus.valid + label:after, + input[type=email].valid + label:after, + input[type=email]:focus.valid + label:after, + input[type=url].valid + label:after, + input[type=url]:focus.valid + label:after, + input[type=time].valid + label:after, + input[type=time]:focus.valid + label:after, + input[type=date].valid + label:after, + input[type=date]:focus.valid + label:after, + input[type=datetime-local].valid + label:after, + input[type=datetime-local]:focus.valid + label:after, + input[type=tel].valid + label:after, + input[type=tel]:focus.valid + label:after, + input[type=number].valid + label:after, + input[type=number]:focus.valid + label:after, + input[type=search].valid + label:after, + input[type=search]:focus.valid + label:after, + textarea.materialize-textarea.valid + label:after, + textarea.materialize-textarea:focus.valid + label:after { + content: attr(data-success); + color: #4CAF50; + opacity: 1; } + input[type=text].invalid, input[type=text]:focus.invalid, + input[type=password].invalid, + input[type=password]:focus.invalid, + input[type=email].invalid, + input[type=email]:focus.invalid, + input[type=url].invalid, + input[type=url]:focus.invalid, + input[type=time].invalid, + input[type=time]:focus.invalid, + input[type=date].invalid, + input[type=date]:focus.invalid, + input[type=datetime-local].invalid, + input[type=datetime-local]:focus.invalid, + input[type=tel].invalid, + input[type=tel]:focus.invalid, + input[type=number].invalid, + input[type=number]:focus.invalid, + input[type=search].invalid, + input[type=search]:focus.invalid, + textarea.materialize-textarea.invalid, + textarea.materialize-textarea:focus.invalid { + border-bottom: 1px solid #F44336; + box-shadow: 0 1px 0 0 #F44336; } + input[type=text].invalid + label:after, input[type=text]:focus.invalid + label:after, + input[type=password].invalid + label:after, + input[type=password]:focus.invalid + label:after, + input[type=email].invalid + label:after, + input[type=email]:focus.invalid + label:after, + input[type=url].invalid + label:after, + input[type=url]:focus.invalid + label:after, + input[type=time].invalid + label:after, + input[type=time]:focus.invalid + label:after, + input[type=date].invalid + label:after, + input[type=date]:focus.invalid + label:after, + input[type=datetime-local].invalid + label:after, + input[type=datetime-local]:focus.invalid + label:after, + input[type=tel].invalid + label:after, + input[type=tel]:focus.invalid + label:after, + input[type=number].invalid + label:after, + input[type=number]:focus.invalid + label:after, + input[type=search].invalid + label:after, + input[type=search]:focus.invalid + label:after, + textarea.materialize-textarea.invalid + label:after, + textarea.materialize-textarea:focus.invalid + label:after { + content: attr(data-error); + color: #F44336; + opacity: 1; } + input[type=text] + label:after, + input[type=password] + label:after, + input[type=email] + label:after, + input[type=url] + label:after, + input[type=time] + label:after, + input[type=date] + label:after, + input[type=datetime-local] + label:after, + input[type=tel] + label:after, + input[type=number] + label:after, + input[type=search] + label:after, + textarea.materialize-textarea + label:after { + display: block; + content: ""; + position: absolute; + top: 65px; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; } + +.input-field { + position: relative; + margin-top: 1rem; } + .input-field label { + color: #9e9e9e; + position: absolute; + top: 0.8rem; + left: 0.75rem; + font-size: 1rem; + cursor: text; + -webkit-transition: 0.2s ease-out; + -moz-transition: 0.2s ease-out; + -o-transition: 0.2s ease-out; + -ms-transition: 0.2s ease-out; + transition: 0.2s ease-out; } + .input-field label.active { + font-size: 0.8rem; + -webkit-transform: translateY(-140%); + -moz-transform: translateY(-140%); + -ms-transform: translateY(-140%); + -o-transform: translateY(-140%); + transform: translateY(-140%); } + .input-field .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + -webkit-transition: color 0.2s; + -moz-transition: color 0.2s; + -o-transition: color 0.2s; + -ms-transition: color 0.2s; + transition: color 0.2s; } + .input-field .prefix.active { + color: #26a69a; } + .input-field .prefix ~ input, + .input-field .prefix ~ textarea { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); } + .input-field .prefix ~ textarea { + padding-top: .8rem; } + .input-field .prefix ~ label { + margin-left: 3rem; } + @media only screen and (max-width: 992px) { + .input-field .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); } } + @media only screen and (max-width: 600px) { + .input-field .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); } } + +.input-field input[type=search] { + display: block; + line-height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); } + .input-field input[type=search]:focus { + background-color: #fff; + border: 0; + box-shadow: none; + color: #444; } + .input-field input[type=search]:focus + label i, .input-field input[type=search]:focus ~ .mdi-navigation-close { + color: #444; } + .input-field input[type=search] + label { + left: 1rem; } + .input-field input[type=search] ~ .mdi-navigation-close { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + transition: .3s color; } + +textarea { + width: 100%; + height: 3rem; + background-color: transparent; } + textarea.materialize-textarea { + overflow-y: hidden; + /* prevents scroll bar flash */ + padding: 1.6rem 0; + /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; } + +.hiddendiv { + display: none; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; + /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; + /* prevents text jump on Enter keypress */ } + +/*************** + Radio Buttons +***************/ +/* Remove default Radio Buttons */ +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="radio"]:not(:checked) + label, +[type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-transition: 0.28s ease; + -moz-transition: 0.28s ease; + -o-transition: 0.28s ease; + -ms-transition: 0.28s ease; + transition: 0.28s ease; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -khtml-user-select: none; + /* webkit (konqueror) browsers */ + -ms-user-select: none; + /* IE10+ */ } + +[type="radio"] + label:before, +[type="radio"] + label:after { + content: ''; + position: absolute; + left: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + -webkit-transition: 0.28s ease; + -moz-transition: 0.28s ease; + -o-transition: 0.28s ease; + -ms-transition: 0.28s ease; + transition: 0.28s ease; } + +/* Unchecked styles */ +[type="radio"]:not(:checked) + label:before { + border-radius: 50%; + border: 2px solid #5a5a5a; } + +[type="radio"]:not(:checked) + label:after { + border-radius: 50%; + border: 2px solid #5a5a5a; + z-index: -1; + -webkit-transform: scale(0); + -moz-transform: scale(0); + -ms-transform: scale(0); + -o-transform: scale(0); + transform: scale(0); } + +/* Checked styles */ +[type="radio"]:checked + label:before { + border-radius: 50%; + border: 2px solid transparent; } + +[type="radio"]:checked + label:after { + border-radius: 50%; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; + -webkit-transform: scale(1.02); + -moz-transform: scale(1.02); + -ms-transform: scale(1.02); + -o-transform: scale(1.02); + transform: scale(1.02); } + +/* Radio With gap */ +[type="radio"].with-gap:checked + label:before { + border-radius: 50%; + border: 2px solid #26a69a; } + +[type="radio"].with-gap:checked + label:after { + border-radius: 50%; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; + -webkit-transform: scale(0.5); + -moz-transform: scale(0.5); + -ms-transform: scale(0.5); + -o-transform: scale(0.5); + transform: scale(0.5); } + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + label:before { + border: 2px solid rgba(0, 0, 0, 0.26); } + +[type="radio"].with-gap:disabled:checked + label:after { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, +[type="radio"]:disabled:checked + label:before { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled + label { + color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:not(:checked) + label:before { + border-color: rgba(0, 0, 0, 0.26); } + +[type="radio"]:disabled:checked + label:after { + background-color: rgba(0, 0, 0, 0.26); + border-color: #BDBDBD; } + +/*************** + Checkboxes +***************/ +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; } + +form p:last-child { + margin-bottom: 0; } + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; } + +[type="checkbox"] { + /* checkbox aspect */ } + [type="checkbox"] + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -khtml-user-select: none; + /* webkit (konqueror) browsers */ + -ms-user-select: none; + /* IE10+ */ } + [type="checkbox"] + label:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid #5a5a5a; + border-radius: 1px; + margin-top: 2px; + -webkit-transition: 0.2s; + -moz-transition: 0.2s; + -o-transition: 0.2s; + -ms-transition: 0.2s; + transition: 0.2s; } + [type="checkbox"]:not(:checked):disabled + label:before { + border: none; + background-color: rgba(0, 0, 0, 0.26); } + +[type="checkbox"]:checked + label:before { + top: -4px; + left: -3px; + width: 12px; + height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #26a69a; + border-bottom: 2px solid #26a69a; + -webkit-transform: rotate(40deg); + -moz-transform: rotate(40deg); + -ms-transform: rotate(40deg); + -o-transform: rotate(40deg); + transform: rotate(40deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:checked:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + border-bottom: 2px solid rgba(0, 0, 0, 0.26); } + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate + label:before { + left: -10px; + top: -11px; + width: 10px; + height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid #26a69a; + border-bottom: none; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -ms-transform: rotate(90deg); + -o-transform: rotate(90deg); + transform: rotate(90deg); + -webkit-backface-visibility: hidden; + -webkit-transform-origin: 100% 100%; + -moz-transform-origin: 100% 100%; + -ms-transform-origin: 100% 100%; + -o-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"]:indeterminate:disabled + label:before { + border-right: 2px solid rgba(0, 0, 0, 0.26); + background-color: transparent; } + +[type="checkbox"].filled-in + label:after { + border-radius: 2px; } +[type="checkbox"].filled-in + label:before, +[type="checkbox"].filled-in + label:after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; } +[type="checkbox"].filled-in:not(:checked) + label:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:not(:checked) + label:after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid #5a5a5a; + top: 0px; + z-index: 0; } +[type="checkbox"].filled-in:checked + label:before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid #fff; + border-bottom: 2px solid #fff; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; } +[type="checkbox"].filled-in:checked + label:after { + top: 0px; + width: 20px; + height: 20px; + border: 2px solid #26a69a; + background-color: #26a69a; + z-index: 0; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:before { + background-color: transparent; + border: 2px solid transparent; } +[type="checkbox"].filled-in:disabled:not(:checked) + label:after { + border-color: transparent; + background-color: #BDBDBD; } +[type="checkbox"].filled-in:disabled:checked + label:before { + background-color: transparent; } +[type="checkbox"].filled-in:disabled:checked + label:after { + background-color: #BDBDBD; + border-color: #BDBDBD; } + +/*************** + Switch +***************/ +.switch, +.switch * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; } + +.switch label { + cursor: pointer; } + +.switch label input[type=checkbox] { + opacity: 0; + width: 0; + height: 0; } + +.switch label input[type=checkbox]:checked + .lever { + background-color: #84c7c1; } + +.switch label input[type=checkbox]:checked + .lever:after { + background-color: #26a69a; } + +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 40px; + height: 15px; + background-color: #818181; + border-radius: 15px; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; } + +.switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 21px; + height: 21px; + background-color: #F1F1F1; + border-radius: 21px; + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); + left: -5px; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; } + +input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); } + +input[type=checkbox]:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); } + +.switch label input[type=checkbox]:checked + .lever:after { + left: 24px; } + +.switch input[type=checkbox][disabled] + .lever { + cursor: default; } + +.switch label input[type=checkbox][disabled] + .lever:after, +.switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: #BDBDBD; } + +/*************** + Select Field +***************/ +.select-label { + position: absolute; } + +.select-wrapper { + position: relative; } + .select-wrapper input.select-dropdown { + position: relative; + cursor: pointer; + background-color: transparent; + border: none; + border-bottom: 1px solid #9e9e9e; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + display: block; } + .select-wrapper span.caret { + color: initial; + position: absolute; + right: 0; + top: 16px; + font-size: 10px; } + .select-wrapper span.caret.disabled { + color: rgba(0, 0, 0, 0.26); } + .select-wrapper + label { + position: absolute; + top: -14px; + font-size: 0.8rem; } + +select { + display: none; } + +select.browser-default { + display: block; } + +select:disabled { + color: rgba(0, 0, 0, 0.3); } + +.select-wrapper input.select-dropdown:disabled { + color: rgba(0, 0, 0, 0.3); + cursor: default; + -webkit-user-select: none; + /* webkit (safari, chrome) browsers */ + -moz-user-select: none; + /* mozilla browsers */ + -ms-user-select: none; + /* IE10+ */ + border-bottom: 1px solid rgba(0, 0, 0, 0.3); } + +.select-wrapper i { + color: rgba(0, 0, 0, 0.3); } + +.select-dropdown li.disabled { + color: rgba(0, 0, 0, 0.3); + background-color: transparent; } + +/********************* + File Input +**********************/ +.file-field { + position: relative; } + .file-field .file-path-wrapper { + overflow: hidden; + padding-left: 10px; } + .file-field input.file-path { + width: 100%; } + .file-field .btn, .file-field .btn-large { + float: left; + height: 3rem; + line-height: 3rem; } + .file-field span { + cursor: pointer; } + .file-field input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); } + +/*************** + Range +***************/ +.range-field { + position: relative; } + +input[type=range], input[type=range] + .thumb { + cursor: pointer; } + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0px; + padding: 0; } + +input[type=range] + .thumb { + position: absolute; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: #26a69a; + top: 10px; + margin-left: -6px; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -ms-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; + -webkit-transform: rotate(-45deg); + -moz-transform: rotate(-45deg); + -ms-transform: rotate(-45deg); + -o-transform: rotate(-45deg); + transform: rotate(-45deg); } + input[type=range] + .thumb .value { + display: block; + width: 30px; + text-align: center; + color: #26a69a; + font-size: 0; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); } + input[type=range] + .thumb.active { + border-radius: 50% 50% 50% 0; } + input[type=range] + .thumb.active .value { + color: #fff; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; } + +input[type=range]:focus { + outline: none; } + +input[type=range] { + -webkit-appearance: none; } + +input[type=range]::-webkit-slider-runnable-track { + height: 3px; + background: #c2c0c2; + border: none; } + +input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background-color: #26a69a; + transform-origin: 50% 50%; + margin: -5px 0 0 0; + -webkit-transition: 0.3s; + -moz-transition: 0.3s; + -o-transition: 0.3s; + -ms-transition: 0.3s; + transition: 0.3s; } + +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ccc; } + +input[type=range] { + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + /*required for proper track sizing in FF*/ } + +input[type=range]::-moz-range-track { + height: 3px; + background: #ddd; + border: none; } + +input[type=range]::-moz-range-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; + margin-top: -5px; } + +/*hide the outline behind the border*/ +input[type=range]:-moz-focusring { + outline: 1px solid white; + outline-offset: -1px; } + +input[type=range]:focus::-moz-range-track { + background: #ccc; } + +input[type=range]::-ms-track { + height: 3px; + /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ + background: transparent; + /*leave room for the larger thumb to overflow with a transparent border */ + border-color: transparent; + border-width: 6px 0; + /*remove default tick marks*/ + color: transparent; } + +input[type=range]::-ms-fill-lower { + background: #777; } + +input[type=range]::-ms-fill-upper { + background: #ddd; } + +input[type=range]::-ms-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: #26a69a; } + +input[type=range]:focus::-ms-fill-lower { + background: #888; } + +input[type=range]:focus::-ms-fill-upper { + background: #ccc; } + +/*************************** + Text Inputs + Textarea +****************************/ +select { + background-color: rgba(255, 255, 255, 0.9); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; } + +/*************** + Nav List +***************/ +.table-of-contents.fixed { + position: fixed; } +.table-of-contents li { + padding: 2px 0; } +.table-of-contents a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 20px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; } + .table-of-contents a:hover { + color: #a8a8a8; + padding-left: 19px; + border-left: 1px solid #ea4a4f; } + .table-of-contents a.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid #ea4a4f; } + +.side-nav { + position: fixed; + width: 240px; + left: -105%; + top: 0; + margin: 0; + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); + padding-bottom: 60px; + background-color: #fff; + z-index: 999; + overflow-y: auto; + will-change: left; } + .side-nav.right-aligned { + will-change: right; + right: -105%; + left: auto; } + .side-nav .collapsible { + margin: 0; } + .side-nav li { + float: none; + padding: 0 15px; } + .side-nav li:hover, .side-nav li.active { + background-color: #ddd; } + .side-nav a { + color: #444; + display: block; + font-size: 1rem; + height: 64px; + line-height: 64px; + padding: 0 15px; } + +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; } + +.side-nav.fixed a { + display: block; + padding: 0 15px; + color: #444; } + +.side-nav.fixed { + left: 0; + position: fixed; } + .side-nav.fixed.right-aligned { + right: 0; + left: auto; } + +@media only screen and (max-width: 992px) { + .side-nav.fixed { + left: -105%; } + .side-nav.fixed.right-aligned { + right: -105%; + left: auto; } } +.side-nav .collapsible-body li.active, +.side-nav.fixed .collapsible-body li.active { + background-color: #ee6e73; } + .side-nav .collapsible-body li.active a, + .side-nav.fixed .collapsible-body li.active a { + color: #fff; } + +#sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + height: 120vh; + background-color: rgba(0, 0, 0, 0.5); + z-index: 997; + will-change: opacity; } + +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ +.preloader-wrapper { + display: inline-block; + position: relative; + width: 48px; + height: 48px; } + .preloader-wrapper.small { + width: 36px; + height: 36px; } + .preloader-wrapper.big { + width: 64px; + height: 64px; } + .preloader-wrapper.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; } + +@-webkit-keyframes container-rotate { + to { + -webkit-transform: rotate(360deg); } } +@keyframes container-rotate { + to { + transform: rotate(360deg); } } +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; } + +.spinner-blue, +.spinner-blue-only { + border-color: #4285f4; } + +.spinner-red, +.spinner-red-only { + border-color: #db4437; } + +.spinner-yellow, +.spinner-yellow-only { + border-color: #f4b400; } + +.spinner-green, +.spinner-green-only { + border-color: #0f9d58; } + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .spinner-layer.spinner-blue-only, +.active .spinner-layer.spinner-red-only, +.active .spinner-layer.spinner-yellow-only, +.active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { + -webkit-transform: rotate(135deg); } + /* 0.5 * ARCSIZE */ + 25% { + -webkit-transform: rotate(270deg); } + /* 1 * ARCSIZE */ + 37.5% { + -webkit-transform: rotate(405deg); } + /* 1.5 * ARCSIZE */ + 50% { + -webkit-transform: rotate(540deg); } + /* 2 * ARCSIZE */ + 62.5% { + -webkit-transform: rotate(675deg); } + /* 2.5 * ARCSIZE */ + 75% { + -webkit-transform: rotate(810deg); } + /* 3 * ARCSIZE */ + 87.5% { + -webkit-transform: rotate(945deg); } + /* 3.5 * ARCSIZE */ + to { + -webkit-transform: rotate(1080deg); } + /* 4 * ARCSIZE */ } +@keyframes fill-unfill-rotate { + 12.5% { + transform: rotate(135deg); } + /* 0.5 * ARCSIZE */ + 25% { + transform: rotate(270deg); } + /* 1 * ARCSIZE */ + 37.5% { + transform: rotate(405deg); } + /* 1.5 * ARCSIZE */ + 50% { + transform: rotate(540deg); } + /* 2 * ARCSIZE */ + 62.5% { + transform: rotate(675deg); } + /* 2.5 * ARCSIZE */ + 75% { + transform: rotate(810deg); } + /* 3 * ARCSIZE */ + 87.5% { + transform: rotate(945deg); } + /* 3.5 * ARCSIZE */ + to { + transform: rotate(1080deg); } + /* 4 * ARCSIZE */ } +@-webkit-keyframes blue-fade-in-out { + from { + opacity: 1; } + 25% { + opacity: 1; } + 26% { + opacity: 0; } + 89% { + opacity: 0; } + 90% { + opacity: 1; } + 100% { + opacity: 1; } } +@keyframes blue-fade-in-out { + from { + opacity: 1; } + 25% { + opacity: 1; } + 26% { + opacity: 0; } + 89% { + opacity: 0; } + 90% { + opacity: 1; } + 100% { + opacity: 1; } } +@-webkit-keyframes red-fade-in-out { + from { + opacity: 0; } + 15% { + opacity: 0; } + 25% { + opacity: 1; } + 50% { + opacity: 1; } + 51% { + opacity: 0; } } +@keyframes red-fade-in-out { + from { + opacity: 0; } + 15% { + opacity: 0; } + 25% { + opacity: 1; } + 50% { + opacity: 1; } + 51% { + opacity: 0; } } +@-webkit-keyframes yellow-fade-in-out { + from { + opacity: 0; } + 40% { + opacity: 0; } + 50% { + opacity: 1; } + 75% { + opacity: 1; } + 76% { + opacity: 0; } } +@keyframes yellow-fade-in-out { + from { + opacity: 0; } + 40% { + opacity: 0; } + 50% { + opacity: 1; } + 75% { + opacity: 1; } + 76% { + opacity: 0; } } +@-webkit-keyframes green-fade-in-out { + from { + opacity: 0; } + 65% { + opacity: 0; } + 75% { + opacity: 1; } + 90% { + opacity: 1; } + 100% { + opacity: 0; } } +@keyframes green-fade-in-out { + from { + opacity: 0; } + 65% { + opacity: 0; } + 75% { + opacity: 1; } + 90% { + opacity: 1; } + 100% { + opacity: 0; } } +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; } + +.gap-patch .circle { + width: 1000%; + left: -450%; } + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; } + .circle-clipper .circle { + width: 200%; + height: 100%; + border-width: 3px; + /* STROKEWIDTH */ + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; } + .circle-clipper.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); } + .circle-clipper.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); } + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } + +@-webkit-keyframes left-spin { + from { + -webkit-transform: rotate(130deg); } + 50% { + -webkit-transform: rotate(-5deg); } + to { + -webkit-transform: rotate(130deg); } } +@keyframes left-spin { + from { + transform: rotate(130deg); } + 50% { + transform: rotate(-5deg); } + to { + transform: rotate(130deg); } } +@-webkit-keyframes right-spin { + from { + -webkit-transform: rotate(-130deg); } + 50% { + -webkit-transform: rotate(5deg); } + to { + -webkit-transform: rotate(-130deg); } } +@keyframes right-spin { + from { + transform: rotate(-130deg); } + 50% { + transform: rotate(5deg); } + to { + transform: rotate(-130deg); } } +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); } + +@-webkit-keyframes fade-out { + from { + opacity: 1; } + to { + opacity: 0; } } +@keyframes fade-out { + from { + opacity: 1; } + to { + opacity: 0; } } +.slider { + position: relative; + height: 400px; + width: 100%; } + .slider.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; } + .slider.fullscreen ul.slides { + height: 100%; } + .slider.fullscreen ul.indicators { + z-index: 2; + bottom: 30px; } + .slider .slides { + background-color: #9e9e9e; + margin: 0; + height: 400px; } + .slider .slides li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; } + .slider .slides li img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; } + .slider .slides li .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; } + .slider .slides li .caption p { + color: #e0e0e0; } + .slider .slides li.active { + z-index: 2; } + .slider .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; } + .slider .indicators .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: #e0e0e0; + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + -o-transition: background-color 0.3s; + -ms-transition: background-color 0.3s; + transition: background-color 0.3s; + border-radius: 50%; } + .slider .indicators .indicator-item.active { + background-color: #4CAF50; } + +/* ========================================================================== + $BASE-PICKER + ========================================================================== */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000000; + position: absolute; + z-index: 10000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +/** + * The picker input element. + */ +.picker__input { + cursor: default; } + +/** + * When the picker is opened, the input element is "activated". + */ +.picker__input.picker__input--active { + border-color: #0089ec; } + +/** + * The holder is the only "scrollable" top-level container element. + */ +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; } + +/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +/** + * Make the holder and frame fullscreen. + */ +.picker__holder, +.picker__frame { + bottom: 0; + left: 0; + right: 0; + top: 100%; } + +/** + * The holder should overlay the entire screen. + */ +.picker__holder { + position: fixed; + -webkit-transition: background 0.15s ease-out, top 0s 0.15s; + -moz-transition: background 0.15s ease-out, top 0s 0.15s; + transition: background 0.15s ease-out, top 0s 0.15s; + -webkit-backface-visibility: hidden; } + +/** + * The frame that bounds the box contents of the picker. + */ +.picker__frame { + position: absolute; + margin: 0 auto; + min-width: 256px; + width: 300px; + max-height: 350px; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + -webkit-transition: all 0.15s ease-out; + -moz-transition: all 0.15s ease-out; + transition: all 0.15s ease-out; } + +@media (min-height: 28.875em) { + .picker__frame { + overflow: visible; + top: auto; + bottom: -100%; + max-height: 80%; } } +@media (min-height: 40.125em) { + .picker__frame { + margin-bottom: 7.5%; } } +/** + * The wrapper sets the stage to vertically align the box contents. + */ +.picker__wrap { + display: table; + width: 100%; + height: 100%; } + +@media (min-height: 28.875em) { + .picker__wrap { + display: block; } } +/** + * The box contains all the picker contents. + */ +.picker__box { + background: #ffffff; + display: table-cell; + vertical-align: middle; } + +@media (min-height: 28.875em) { + .picker__box { + display: block; + border: 1px solid #777777; + border-top-color: #898989; + border-bottom-width: 0; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); } } +/** + * When the picker opens... + */ +.picker--opened .picker__holder { + top: 0; + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; + zoom: 1; + background: rgba(0, 0, 0, 0.32); + -webkit-transition: background 0.15s ease-out; + -moz-transition: background 0.15s ease-out; + transition: background 0.15s ease-out; } + +.picker--opened .picker__frame { + top: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; } + +@media (min-height: 35.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: 20% auto; } } +/** + * For `large` screens, transform into an inline picker. + */ +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__input.picker__input--active { + border-color: #E3F2FD; } + +.picker__frame { + margin: 0 auto; + max-width: 325px; } + +@media (min-height: 38.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: auto; } } +/* ========================================================================== + $BASE-DATE-PICKER + ========================================================================== */ +/** + * The picker box. + */ +.picker__box { + padding: 0 1em; } + +/** + * The header containing the month and year stuff. + */ +.picker__header { + text-align: center; + position: relative; + margin-top: .75em; } + +/** + * The month and year labels. + */ +.picker__month, +.picker__year { + display: inline-block; + margin-left: .25em; + margin-right: .25em; } + +/** + * The month and year selectors. + */ +.picker__select--month, +.picker__select--year { + height: 2em; + padding: 0; + margin-left: .25em; + margin-right: .25em; } + +.picker__select--month.browser-default { + display: inline; + background-color: #FFFFFF; + width: 40%; } + +.picker__select--year.browser-default { + display: inline; + background-color: #FFFFFF; + width: 25%; } + +.picker__select--month:focus, +.picker__select--year:focus { + border-color: rgba(0, 0, 0, 0.05); } + +/** + * The month navigation buttons. + */ +.picker__nav--prev, +.picker__nav--next { + position: absolute; + padding: .5em 1.25em; + width: 1em; + height: 1em; + box-sizing: content-box; + top: -0.25em; } + +.picker__nav--prev { + left: -1em; + padding-right: 1.25em; } + +.picker__nav--next { + right: -1em; + padding-left: 1.25em; } + +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: none; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; } + +/** + * The calendar table of dates + */ +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: 1rem; + width: 100%; + margin-top: .75em; + margin-bottom: .5em; } + +.picker__table th, .picker__table td { + text-align: center; } + +.picker__table td { + margin: 0; + padding: 0; } + +/** + * The weekday labels + */ +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999999; + font-weight: 500; + /* Increase the spacing a tad */ } + +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: .5em; } } +/** + * The days on the calendar + */ +.picker__day--today { + position: relative; + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; } + +.picker__day--disabled:before { + border-top-color: #aaaaaa; } + +.picker__day--infocus:hover { + cursor: pointer; + color: #000; + font-weight: 500; } + +.picker__day--outfocus { + display: none; + padding: .75rem 0; + color: #fff; } + +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; + font-weight: 500; } + +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + cursor: pointer; } + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.75); + -moz-transform: scale(0.75); + -ms-transform: scale(0.75); + -o-transform: scale(0.75); + transform: scale(0.75); + background: #0089ec; + color: #ffffff; } + +.picker__day--disabled, +.picker__day--disabled:hover, +.picker--focused .picker__day--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; } + +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; } + +/** + * The footer containing the "today", "clear", and "close" buttons. + */ +.picker__footer { + text-align: center; + display: flex; + align-items: center; + justify-content: space-between; } + +.picker__button--today, +.picker__button--clear, +.picker__button--close { + border: 1px solid #ffffff; + background: #ffffff; + font-size: .8em; + padding: .66em 0; + font-weight: bold; + width: 33%; + display: inline-block; + vertical-align: bottom; } + +.picker__button--today:hover, +.picker__button--clear:hover, +.picker__button--close:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; } + +.picker__button--today:focus, +.picker__button--clear:focus, +.picker__button--close:focus { + background: #b1dcfb; + border-color: rgba(0, 0, 0, 0.05); + outline: none; } + +.picker__button--today:before, +.picker__button--clear:before, +.picker__button--close:before { + position: relative; + display: inline-block; + height: 0; } + +.picker__button--today:before, +.picker__button--clear:before { + content: " "; + margin-right: .45em; } + +.picker__button--today:before { + top: -0.05em; + width: 0; + border-top: 0.66em solid #0059bc; + border-left: .66em solid transparent; } + +.picker__button--clear:before { + top: -0.25em; + width: .66em; + border-top: 3px solid #ee2200; } + +.picker__button--close:before { + content: "\D7"; + top: -0.1em; + vertical-align: top; + font-size: 1.1em; + margin-right: .35em; + color: #777777; } + +.picker__button--today[disabled], +.picker__button--today[disabled]:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; } + +.picker__button--today[disabled]:before { + border-top-color: #aaaaaa; } + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__box { + border-radius: 2px; + overflow: hidden; } + +.picker__date-display { + text-align: center; + background-color: #26a69a; + color: #fff; + padding-bottom: 15px; + font-weight: 300; } + +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: #a1ded8; } + +.picker__weekday-display { + background-color: #1f897f; + padding: 10px; + font-weight: 200; + letter-spacing: .5; + font-size: 1rem; + margin-bottom: 15px; } + +.picker__month-display { + text-transform: uppercase; + font-size: 2rem; } + +.picker__day-display { + font-size: 4.5rem; + font-weight: 400; } + +.picker__year-display { + font-size: 1.8rem; + color: rgba(255, 255, 255, 0.4); } + +.picker__box { + padding: 0; } + +.picker__calendar-container { + padding: 0 1rem; } + .picker__calendar-container thead { + border: none; } + +.picker__table { + margin-top: 0; + margin-bottom: .5em; } + +.picker__day--infocus { + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; } + +.picker__day.picker__day--today { + color: #26a69a; } + +.picker__day.picker__day--today.picker__day--selected { + color: #fff; } + +.picker__weekday { + font-size: .9rem; } + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + border-radius: 50%; + -webkit-transform: scale(0.9); + -moz-transform: scale(0.9); + -ms-transform: scale(0.9); + -o-transform: scale(0.9); + transform: scale(0.9); + background-color: #26a69a; + color: #ffffff; } + .picker__day--selected.picker__day--outfocus, + .picker__day--selected:hover.picker__day--outfocus, + .picker--focused .picker__day--selected.picker__day--outfocus { + background-color: #a1ded8; } + +.picker__footer { + text-align: right; + padding: 5px 10px; } + +.picker__close, .picker__today { + font-size: 1.1rem; + padding: 0 1rem; + color: #26a69a; } + +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: 0.75em solid #676767; + width: 0; + height: 0; + display: block; + margin: 0 auto; } + +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #676767; } + +button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { + background-color: #a1ded8; } + +/* ========================================================================== + $BASE-TIME-PICKER + ========================================================================== */ +/** + * The list of times. + */ +.picker__list { + list-style: none; + padding: 0.75em 0 4.2em; + margin: 0; } + +/** + * The times on the clock. + */ +.picker__list-item { + border-bottom: 1px solid #dddddd; + border-top: 1px solid #dddddd; + margin-bottom: -1px; + position: relative; + background: #ffffff; + padding: .75em 1.25em; } + +@media (min-height: 46.75em) { + .picker__list-item { + padding: .5em 1em; } } +/* Hovered time */ +.picker__list-item:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; } + +/* Highlighted and hovered/focused time */ +.picker__list-item--highlighted { + border-color: #0089ec; + z-index: 10; } + +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + cursor: pointer; + color: #000000; + background: #b1dcfb; } + +/* Selected and hovered/focused time */ +.picker__list-item--selected, +.picker__list-item--selected:hover, +.picker--focused .picker__list-item--selected { + background: #0089ec; + color: #ffffff; + z-index: 10; } + +/* Disabled time */ +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; + border-color: #dddddd; + z-index: auto; } + +/** + * The clear button + */ +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: none; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666; } + +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000000; + background: #b1dcfb; + background: #ee2200; + border-color: #ee2200; + cursor: pointer; + color: #ffffff; + outline: none; } + +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: bold; } + +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; } + +/* ========================================================================== + $DEFAULT-TIME-PICKER + ========================================================================== */ +/** + * The frame the bounds the time picker. + */ +.picker--time .picker__frame { + min-width: 256px; + max-width: 320px; } + +/** + * The picker box. + */ +.picker--time .picker__box { + font-size: 1em; + background: #f2f2f2; + padding: 0; } + +@media (min-height: 40.125em) { + .picker--time .picker__box { + margin-bottom: 5em; } } + +/*# sourceMappingURL=materialize.css.map */ diff --git a/system/admin/static/editor/css/materialize.css.map b/system/admin/static/editor/css/materialize.css.map new file mode 100644 index 0000000..ec81214 --- /dev/null +++ b/system/admin/static/editor/css/materialize.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "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", +"sources": ["../sass/components/_color.scss","../sass/components/_normalize.scss","../sass/components/_global.scss","../sass/components/_variables.scss","../sass/components/_prefixer.scss","../sass/components/_icons-material-design.scss","../sass/components/_grid.scss","../sass/components/_navbar.scss","../sass/components/_roboto.scss","../sass/components/_typography.scss","../sass/components/_cards.scss","../sass/components/_toast.scss","../sass/components/_tabs.scss","../sass/components/_tooltip.scss","../sass/components/_buttons.scss","../sass/components/_dropdown.scss","../sass/components/_waves.scss","../sass/components/_modal.scss","../sass/components/_collapsible.scss","../sass/components/_materialbox.scss","../sass/components/_form.scss","../sass/components/_table_of_contents.scss","../sass/components/_sideNav.scss","../sass/components/_preloader.scss","../sass/components/_slider.scss","../sass/components/date_picker/_default.scss","../sass/components/date_picker/_default.date.scss","../sass/components/date_picker/_default.time.scss"], +"names": [], +"file": "materialize.css" +} diff --git a/system/admin/static/editor/font/roboto/Roboto-Bold.ttf b/system/admin/static/editor/font/roboto/Roboto-Bold.ttf Binary files differnew file mode 100644 index 0000000..68822ca --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Bold.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Bold.woff b/system/admin/static/editor/font/roboto/Roboto-Bold.woff Binary files differnew file mode 100644 index 0000000..1f75afd --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Bold.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Bold.woff2 b/system/admin/static/editor/font/roboto/Roboto-Bold.woff2 Binary files differnew file mode 100644 index 0000000..350d1c3 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Bold.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Light.ttf b/system/admin/static/editor/font/roboto/Roboto-Light.ttf Binary files differnew file mode 100644 index 0000000..aa45340 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Light.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Light.woff b/system/admin/static/editor/font/roboto/Roboto-Light.woff Binary files differnew file mode 100644 index 0000000..3480c6c --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Light.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Light.woff2 b/system/admin/static/editor/font/roboto/Roboto-Light.woff2 Binary files differnew file mode 100644 index 0000000..9a4d98c --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Light.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Medium.ttf b/system/admin/static/editor/font/roboto/Roboto-Medium.ttf Binary files differnew file mode 100644 index 0000000..a3c1a1f --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Medium.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Medium.woff b/system/admin/static/editor/font/roboto/Roboto-Medium.woff Binary files differnew file mode 100644 index 0000000..1186773 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Medium.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Medium.woff2 b/system/admin/static/editor/font/roboto/Roboto-Medium.woff2 Binary files differnew file mode 100644 index 0000000..d10a592 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Medium.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Regular.ttf b/system/admin/static/editor/font/roboto/Roboto-Regular.ttf Binary files differnew file mode 100644 index 0000000..0e58508 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Regular.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Regular.woff b/system/admin/static/editor/font/roboto/Roboto-Regular.woff Binary files differnew file mode 100644 index 0000000..f823258 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Regular.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Regular.woff2 b/system/admin/static/editor/font/roboto/Roboto-Regular.woff2 Binary files differnew file mode 100644 index 0000000..b7082ef --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Regular.woff2 diff --git a/system/admin/static/editor/font/roboto/Roboto-Thin.ttf b/system/admin/static/editor/font/roboto/Roboto-Thin.ttf Binary files differnew file mode 100644 index 0000000..8779333 --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Thin.ttf diff --git a/system/admin/static/editor/font/roboto/Roboto-Thin.woff b/system/admin/static/editor/font/roboto/Roboto-Thin.woff Binary files differnew file mode 100644 index 0000000..2a98c1e --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Thin.woff diff --git a/system/admin/static/editor/font/roboto/Roboto-Thin.woff2 b/system/admin/static/editor/font/roboto/Roboto-Thin.woff2 Binary files differnew file mode 100644 index 0000000..a38025a --- /dev/null +++ b/system/admin/static/editor/font/roboto/Roboto-Thin.woff2 diff --git a/system/admin/static/editor/js/ckMaterializeOverrides.js b/system/admin/static/editor/js/ckMaterializeOverrides.js new file mode 100644 index 0000000..fd1b2db --- /dev/null +++ b/system/admin/static/editor/js/ckMaterializeOverrides.js @@ -0,0 +1,172 @@ +(function ($) { + $.fn.ckTooltip = function (options) { + var timeout = null, + counter = null, + started = false, + counterInterval = null, + margin = 5; + + // Defaults + var defaults = { + delay: 350 + }; + options = $.extend(defaults, options); + + return this.each(function(){ + var origin = $(this); + + // Create Text span + var tooltip_text = $('<span></span>').text(origin.attr('data-tooltip')); + + // Create tooltip + var newTooltip = $('<div></div>'); + newTooltip.addClass('material-tooltip').append(tooltip_text); + newTooltip.appendTo($('body')); + + var backdrop = $('<div></div>').addClass('backdrop'); + backdrop.appendTo(newTooltip); + backdrop.css({ top: 0, left:0 }); + + //Destroy previously binded events + //$(this).off('mouseenter mouseleave'); + + $.event.special.destroyed = { + remove: function(o) { + if (o.handler) { + o.handler(); + } + } + }; + $(this).bind('destroyed', function() { + newTooltip.remove(); + }); + + // Mouse In + $(this).on({ + mouseenter: function(e) { + var tooltip_delay = origin.data("delay"); + + tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay; + counter = 0; + counterInterval = setInterval(function(){ + counter += 10; + + if (counter >= tooltip_delay && started === false) { + started = true; + newTooltip.css({ display: 'block', left: '0px', top: '0px' }); + + // Set Tooltip text + newTooltip.children('span').text(origin.attr('data-tooltip')); + + // Tooltip positioning + var originWidth = origin.outerWidth(); + var originHeight = origin.outerHeight(); + var tooltipPosition = origin.attr('data-position'); + var tooltipHeight = newTooltip.outerHeight(); + var tooltipWidth = newTooltip.outerWidth(); + var tooltipVerticalMovement = '0px'; + var tooltipHorizontalMovement = '0px'; + var scale_factor = 8; + + if (tooltipPosition === "top") { + // Top Position + newTooltip.css({ + top: origin.offset().top - tooltipHeight - margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '-10px'; + backdrop.css({ + borderRadius: '14px 14px 0 0', + transformOrigin: '50% 90%', + marginTop: tooltipHeight, + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + + }); + } + // Left Position + else if (tooltipPosition === "left") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left - tooltipWidth - margin + }); + tooltipHorizontalMovement = '-10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '14px 0 0 14px', + transformOrigin: '95% 50%', + marginTop: tooltipHeight/2, + marginLeft: tooltipWidth + }); + } + // Right Position + else if (tooltipPosition === "right") { + newTooltip.css({ + top: origin.offset().top + originHeight/2 - tooltipHeight/2, + left: origin.offset().left + originWidth + margin + }); + tooltipHorizontalMovement = '+10px'; + backdrop.css({ + width: '14px', + height: '14px', + borderRadius: '0 14px 14px 0', + transformOrigin: '5% 50%', + marginTop: tooltipHeight/2, + marginLeft: '0px' + }); + } + else { + // Bottom Position + newTooltip.css({ + top: origin.offset().top + origin.outerHeight() + margin, + left: origin.offset().left + originWidth/2 - tooltipWidth/2 + }); + tooltipVerticalMovement = '+10px'; + backdrop.css({ + marginLeft: (tooltipWidth/2) - (backdrop.width()/2) + }); + } + + // Calculate Scale to fill + scale_factor = tooltipWidth / 8; + if (scale_factor < 8) { + scale_factor = 8; + } + if (tooltipPosition === "right" || tooltipPosition === "left") { + scale_factor = tooltipWidth / 10; + if (scale_factor < 6) + scale_factor = 6; + } + + newTooltip.velocity({ opacity: 1, marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 150, queue: false }); + backdrop.css({ display: 'block' }) + .velocity({opacity:1},{duration: 50, delay: 0, queue: false}) + .velocity({scale: scale_factor}, {duration: 150, delay: 0, queue: false, easing: 'easeInOutQuad'}); + } + }, 10); // End Interval + + // Mouse Out + }, + mouseleave: function(){ + // Reset State + clearInterval(counterInterval); + counter = 0; + + // Animate back + newTooltip.velocity({ + opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 150, queue: false, delay: 50 } + ); + backdrop.velocity({opacity: 0, scale: 1}, { + duration:150, + delay: 50, queue: false, + complete: function(){ + backdrop.css('display', 'none'); + newTooltip.css('display', 'none'); + started = false;} + }); + } + }); + }); + }; + +}(jQuery)); diff --git a/system/admin/static/editor/js/materialNote.js b/system/admin/static/editor/js/materialNote.js new file mode 100644 index 0000000..02e1bd2 --- /dev/null +++ b/system/admin/static/editor/js/materialNote.js @@ -0,0 +1,7469 @@ +/** + * MaterialNote v1.2.1 + * Super simple wysiwyg editor on Materialize + * a fork of materialnote.js => http://materialnote.org/ + * + * original summernote credits: + * summernote.js + * Copyright 2013-2015 Alan Hong. and other contributors + * summernote (and so materialNote) may be freely distributed under the MIT license./ + * (https://raw.githubusercontent.com/Cerealkillerway/materialNote/master/license.txt) + * + * edited by CK (http://www.web-forge.info) + * thanks to Tox for code review (http://emanuele.itoscano.com/) + */ +(function(factory) { + /* global define */ + if (typeof define === 'function' && define.amd) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else { + // Browser globals: jQuery + factory(window.jQuery); + } +}(function($) { + + if (!Array.prototype.reduce) { + /** + * Array.prototype.reduce polyfill + * @param {Function} callback + * @param {Value} [initialValue] + * @return {Value} + * @see http://goo.gl/WNriQD + */ + Array.prototype.reduce = function(callback) { + var t = Object(this), len = t.length >>> 0, k = 0, value; + + if (arguments.length === 2) { + value = arguments[1]; + } else { + while (k < len && !(k in t)) { + k++; + } + if (k >= len) { + throw new TypeError('Reduce of empty array with no initial value'); + } + value = t[k++]; + } + for (; k < len; k++) { + if (k in t) { + value = callback(value, t[k], k, t); + } + } + return value; + }; + } + + if ('function' !== typeof Array.prototype.filter) { + /** + * Array.prototype.filter polyfill + * @param {Function} func + * @return {Array} + * @see http://goo.gl/T1KFnq + */ + Array.prototype.filter = function(func) { + var t = Object(this), len = t.length >>> 0; + var res = []; + var thisArg = arguments.length >= 2 ? arguments[1] : void 0; + + for (var i = 0; i < len; i++) { + if (i in t) { + var val = t[i]; + + if (func.call(thisArg, val, i, t)) { + res.push(val); + } + } + } + return res; + }; + } + +var isSupportAmd = typeof define === 'function' && define.amd; + +/** +* returns whether font is installed or not. +* @param {String} fontName +* @return {Boolean} +*/ +var isFontInstalled = function(fontName) { + if (fontName === "Roboto") return true; + var testFontName = fontName === 'Comic Sans MS' ? 'Courier New' : 'Comic Sans MS'; + var $tester = $('<div>').css({ + position: 'absolute', + left: '-9999px', + top: '-9999px', + fontSize: '200px' + }).text('mmmmmmmmmwwwwwww').appendTo(document.body); + + var originalWidth = $tester.css('fontFamily', testFontName).width(); + var width = $tester.css('fontFamily', fontName + ',' + testFontName).width(); + + $tester.remove(); + + return originalWidth !== width; +}; + + +var userAgent = navigator.userAgent; + +/** +* @class core.agent +* Object which check platform and agent +* @singleton +* @alternateClassName agent +*/ +var agent = { + /** @property {Boolean} [isMac=false] true if this agent is Mac */ + isMac: navigator.appVersion.indexOf('Mac') > -1, + /** @property {Boolean} [isMSIE=false] true if this agent is a Internet Explorer */ + isMSIE: /MSIE|Trident/i.test(userAgent), + /** @property {Boolean} [isFF=false] true if this agent is a Firefox */ + isFF: /firefox/i.test(userAgent), + isWebkit: /webkit/i.test(userAgent), + /** @property {Boolean} [isSafari=false] true if this agent is a Safari */ + isSafari: /safari/i.test(userAgent), + /** @property {String} jqueryVersion current jQuery version string */ + jqueryVersion: parseFloat($.fn.jquery), + isSupportAmd: isSupportAmd, + hasCodeMirror: isSupportAmd ? require.specified('CodeMirror') : !!window.CodeMirror, + isFontInstalled: isFontInstalled, + isW3CRangeSupport: !!document.createRange +}; + +/** +* @class core.func +* func utils (for high-order func's arg) +* @singleton +* @alternateClassName func +*/ +var func = (function() { + var eq = function(itemA) { + return function(itemB) { + return itemA === itemB; + }; + }; + + var eq2 = function(itemA, itemB) { + return itemA === itemB; + }; + + var peq2 = function(propName) { + return function(itemA, itemB) { + return itemA[propName] === itemB[propName]; + }; + }; + + var ok = function() { + return true; + }; + + var fail = function() { + return false; + }; + + var not = function(f) { + return function() { + return !f.apply(f, arguments); + }; + }; + + var and = function(fA, fB) { + return function(item) { + return fA(item) && fB(item); + }; + }; + + var self = function(a) { + return a; + }; + + var idCounter = 0; + + /** + * generate a globally-unique id + * @param {String} [prefix] + */ + var uniqueId = function(prefix) { + var id = ++idCounter + ''; + + return prefix ? prefix + id : id; + }; + + /** + * returns bnd (bounds) from rect + * - IE Compatability Issue: http://goo.gl/sRLOAo + * - Scroll Issue: http://goo.gl/sNjUc + * @param {Rect} rect + * @return {Object} bounds + * @return {Number} bounds.top + * @return {Number} bounds.left + * @return {Number} bounds.width + * @return {Number} bounds.height + */ + var rect2bnd = function(rect) { + var $document = $(document); + return { + top: rect.top + $document.scrollTop(), + left: rect.left + $document.scrollLeft(), + width: rect.right - rect.left, + height: rect.bottom - rect.top + }; + }; + + /** + * returns a copy of the object where the keys have become the values and the values the keys. + * @param {Object} obj + * @return {Object} + */ + var invertObject = function(obj) { + var inverted = {}; + + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + inverted[obj[key]] = key; + } + } + return inverted; + }; + + /** + * @param {String} namespace + * @param {String} [prefix] + * @return {String} + */ + var namespaceToCamel = function(namespace, prefix) { + prefix = prefix || ''; + return prefix + namespace.split('.').map(function(name) { + return name.substring(0, 1).toUpperCase() + name.substring(1); + }).join(''); + }; + + return { + eq: eq, + eq2: eq2, + peq2: peq2, + ok: ok, + fail: fail, + self: self, + not: not, + and: and, + uniqueId: uniqueId, + rect2bnd: rect2bnd, + invertObject: invertObject, + namespaceToCamel: namespaceToCamel + }; +})(); //end func + + +/** +* @class core.list +* list utils +* @singleton +* @alternateClassName list +*/ +var list = (function() { + /** + * returns the first item of an array. + * @param {Array} array + */ + var head = function(array) { + return array[0]; + }; + + /** + * returns the last item of an array. + * @param {Array} array + */ + var last = function(array) { + return array[array.length - 1]; + }; + + /** + * returns everything but the last entry of the array. + * @param {Array} array + */ + var initial = function(array) { + return array.slice(0, array.length - 1); + }; + + /** + * returns the rest of the items in an array. + * @param {Array} array + */ + var tail = function(array) { + return array.slice(1); + }; + + /** + * returns item of array + */ + var find = function(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + var item = array[idx]; + + if (pred(item)) { + return item; + } + } + }; + + /** + * returns true if all of the values in the array pass the predicate truth test. + */ + var all = function(array, pred) { + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!pred(array[idx])) { + return false; + } + } + return true; + }; + + /** + * returns true if the value is present in the list. + */ + var contains = function(array, item) { + return $.inArray(item, array) !== -1; + }; + + /** + * get sum from a list + * @param {Array} array - array + * @param {Function} fn - iterator + */ + var sum = function(array, fn) { + fn = fn || func.self; + return array.reduce(function(memo, v) { + return memo + fn(v); + }, 0); + }; + + /** + * returns a copy of the collection with array type. + * @param {Collection} collection - collection eg) node.childNodes, ... + */ + var from = function(collection) { + var result = [], idx = -1, length = collection.length; + while (++idx < length) { + result[idx] = collection[idx]; + } + return result; + }; + + /** + * cluster elements by predicate function. + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + * @param {Array[]} + */ + var clusterBy = function(array, fn) { + if (!array.length) { return []; } + var aTail = tail(array); + + return aTail.reduce(function(memo, v) { + var aLast = last(memo); + if (fn(last(aLast), v)) { + aLast[aLast.length] = v; + } else { + memo[memo.length] = [v]; + } + return memo; + }, [[head(array)]]); + }; + + /** + * returns a copy of the array with all falsy values removed + * @param {Array} array - array + * @param {Function} fn - predicate function for cluster rule + */ + var compact = function(array) { + var aResult = []; + + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (array[idx]) { aResult.push(array[idx]); } + } + return aResult; + }; + + /** + * produces a duplicate-free version of the array + * @param {Array} array + */ + var unique = function(array) { + var results = []; + + for (var idx = 0, len = array.length; idx < len; idx ++) { + if (!contains(results, array[idx])) { + results.push(array[idx]); + } + } + return results; + }; + + /** + * returns next item. + * @param {Array} array + */ + var next = function(array, item) { + var idx = array.indexOf(item); + + if (idx === -1) {return null;} + return array[idx + 1]; + }; + + /** + * returns prev item. + * @param {Array} array + */ + var prev = function(array, item) { + var idx = array.indexOf(item); + + if (idx === -1) {return null;} + return array[idx - 1]; + }; + + + return {head: head, last: last, initial: initial, tail: tail, prev: prev, next: next, find: find, contains: contains, all: all, sum: sum, from: from, clusterBy: clusterBy, compact: compact, unique: unique}; +})(); //end list + + +var NBSP_CHAR = String.fromCharCode(160); +var ZERO_WIDTH_NBSP_CHAR = '\ufeff'; + +/** +* @class core.dom +* Dom functions +* @singleton +* @alternateClassName dom +*/ +var dom = (function() { + /** + * @method isEditable + * returns whether node is `note-editable` or not. + * @param {Node} node + * @return {Boolean} + */ + var isEditable = function(node) { + return node && $(node).hasClass('note-editable'); + }; + + /** + * @method isControlSizing + * returns whether node is `note-control-sizing` or not. + * @param {Node} node + * @return {Boolean} + */ + var isControlSizing = function(node) { + return node && $(node).hasClass('note-control-sizing'); + }; + + /** + * @method buildLayoutInfo + * build layoutInfo from $editor(.note-editor) + * @param {jQuery} $editor + * @return {Object} + * @return {Function} return.editor + * @return {Node} return.dropzone + * @return {Node} return.toolbar + * @return {Node} return.editable + * @return {Node} return.codable + * @return {Node} return.popover + * @return {Node} return.handle + * @return {Node} return.dialog + */ + var buildLayoutInfo = function($editor) { + var makeFinder; + + // air mode + if ($editor.hasClass('note-air-editor')) { + var id = list.last($editor.attr('id').split('-')); + + makeFinder = function(sIdPrefix) { + return function() { return $(sIdPrefix + id); }; + }; + + return { + editor: function() { return $editor; }, + holder : function() { return $editor.data('holder'); }, + editable: function() { return $editor; }, + popover: makeFinder('#note-popover-'), + handle: makeFinder('#note-handle-'), + dialog: makeFinder('#note-dialog-') + }; + // frame mode + } else { + makeFinder = function(sClassName) { + return function() { return $editor.find(sClassName); }; + }; + return { + editor: function() { return $editor; }, + holder : function() { return $editor.data('holder'); }, + dropzone: makeFinder('.note-dropzone'), + toolbar: makeFinder('.note-toolbar'), + editable: makeFinder('.note-editable'), + codable: makeFinder('.note-codable'), + statusbar: makeFinder('.note-statusbar'), + popover: makeFinder('.note-popover'), + handle: makeFinder('.note-handle'), + dialog: makeFinder('.note-dialog') + }; + } + }; + + /** + * returns makeLayoutInfo from editor's descendant node. + * @private + * @param {Node} descendant + * @return {Object} + */ + var makeLayoutInfo = function(descendant) { + var $target = $(descendant).closest('.note-editor, .note-air-editor, .note-air-layout'); + + if (!$target.length) { + return null; + } + var $editor; + + if ($target.is('.note-editor, .note-air-editor')) { + $editor = $target; + } else { + $editor = $('#note-editor-' + list.last($target.attr('id').split('-'))); + } + return buildLayoutInfo($editor); + }; + + /** + * @method makePredByNodeName + * returns predicate which judge whether nodeName is same + * @param {String} nodeName + * @return {Function} + */ + var makePredByNodeName = function(nodeName) { + nodeName = nodeName.toUpperCase(); + return function(node) { + return node && node.nodeName.toUpperCase() === nodeName; + }; + }; + + /** + * @method isText + * @param {Node} node + * @return {Boolean} true if node's type is text(3) + */ + var isText = function(node) { + return node && node.nodeType === 3; + }; + + /** + * ex) br, col, embed, hr, img, input, ... + * @see http://www.w3.org/html/wg/drafts/html/master/syntax.html#void-elements + */ + var isVoid = function(node) { + return node && /^BR|^IMG|^HR/.test(node.nodeName.toUpperCase()); + }; + + var isPara = function(node) { + if (isEditable(node)) { + return false; + } + // Chrome(v31.0), FF(v25.0.1) use DIV for paragraph + return node && /^DIV|^P|^LI|^H[1-7]/.test(node.nodeName.toUpperCase()); + }; + + var isLi = makePredByNodeName('LI'); + + var isPurePara = function(node) { + return isPara(node) && !isLi(node); + }; + + var isTable = makePredByNodeName('TABLE'); + + var isInline = function(node) { + return !isBodyContainer(node) && !isList(node) && !isPara(node) && !isTable(node) && !isBlockquote(node); + }; + + var isList = function(node) { + return node && /^UL|^OL/.test(node.nodeName.toUpperCase()); + }; + + var isCell = function(node) { + return node && /^TD|^TH/.test(node.nodeName.toUpperCase()); + }; + + var isBlockquote = makePredByNodeName('BLOCKQUOTE'); + + var isBodyContainer = function(node) { + return isCell(node) || isBlockquote(node) || isEditable(node); + }; + + var isAnchor = makePredByNodeName('A'); + + var isParaInline = function(node) { + return isInline(node) && !!ancestor(node, isPara); + }; + + var isBodyInline = function(node) { + return isInline(node) && !ancestor(node, isPara); + }; + + var isBody = makePredByNodeName('BODY'); + + /** + * returns whether nodeB is closest sibling of nodeA + * @param {Node} nodeA + * @param {Node} nodeB + * @return {Boolean} + */ + var isClosestSibling = function(nodeA, nodeB) { + return nodeA.nextSibling === nodeB || nodeA.previousSibling === nodeB; + }; + + /** + * returns array of closest siblings with node + * @param {Node} node + * @param {function} [pred] - predicate function + * @return {Node[]} + */ + var withClosestSiblings = function(node, pred) { + pred = pred || func.ok; + var siblings = []; + + if (node.previousSibling && pred(node.previousSibling)) { + siblings.push(node.previousSibling); + } + siblings.push(node); + if (node.nextSibling && pred(node.nextSibling)) { + siblings.push(node.nextSibling); + } + return siblings; + }; + + /** + * blank HTML for cursor position + * - [workaround] for MSIE IE doesn't works with bogus br + */ + var blankHTML = agent.isMSIE ? ' ' : '<br>'; + + /** + * @method nodeLength + * returns #text's text size or element's childNodes size + * @param {Node} node + */ + var nodeLength = function(node) { + if (isText(node)) { + return node.nodeValue.length; + } + return node.childNodes.length; + }; + + /** + * returns whether node is empty or not. + * @param {Node} node + * @return {Boolean} + */ + var isEmpty = function(node) { + var len = nodeLength(node); + + if (len === 0) { + return true; + } else if (!isText(node) && len === 1 && node.innerHTML === blankHTML) { + return true; + } else if (list.all(node.childNodes, isText) && node.innerHTML === '') { + return true; + } + return false; + }; + + /** + * padding blankHTML if node is empty (for cursor position) + */ + var paddingBlankHTML = function(node) { + if (!isVoid(node) && !nodeLength(node)) { + node.innerHTML = blankHTML; + } + }; + + /** + * find nearest ancestor predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var ancestor = function(node, pred) { + while (node) { + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * find nearest ancestor only single child blood line and predicate hit + * + * @param {Node} node + * @param {Function} pred - predicate function + */ + var singleChildAncestor = function(node, pred) { + node = node.parentNode; + + while (node) { + if (nodeLength(node) !== 1) { break; } + if (pred(node)) { return node; } + if (isEditable(node)) { break; } + + node = node.parentNode; + } + return null; + }; + + /** + * returns new array of ancestor nodes (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listAncestor = function(node, pred) { + pred = pred || func.fail; + + var ancestors = []; + ancestor(node, function(el) { + if (!isEditable(el)) { + ancestors.push(el); + } + + return pred(el); + }); + return ancestors; + }; + + /** + * find farthest ancestor predicate hit + */ + var lastAncestor = function(node, pred) { + var ancestors = listAncestor(node); + return list.last(ancestors.filter(pred)); + }; + + /** + * returns common ancestor node between two nodes. + * + * @param {Node} nodeA + * @param {Node} nodeB + */ + var commonAncestor = function(nodeA, nodeB) { + var ancestors = listAncestor(nodeA); + for (var n = nodeB; n; n = n.parentNode) { + if ($.inArray(n, ancestors) > -1) { return n; } + } + return null; // difference document area + }; + + /** + * listing all previous siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [optional] pred - predicate function + */ + var listPrev = function(node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.previousSibling; + } + return nodes; + }; + + /** + * listing next siblings (until predicate hit). + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listNext = function(node, pred) { + pred = pred || func.fail; + + var nodes = []; + while (node) { + if (pred(node)) { break; } + nodes.push(node); + node = node.nextSibling; + } + return nodes; + }; + + /** + * listing descendant nodes + * + * @param {Node} node + * @param {Function} [pred] - predicate function + */ + var listDescendant = function(node, pred) { + var descendents = []; + pred = pred || func.ok; + + // start DFS(depth first search) with node + (function fnWalk(current) { + if (node !== current && pred(current)) { + descendents.push(current); + } + for (var idx = 0, len = current.childNodes.length; idx < len; idx++) { + fnWalk(current.childNodes[idx]); + } + })(node); + + return descendents; + }; + + /** + * wrap node with new tag. + * + * @param {Node} node + * @param {Node} tagName of wrapper + * @return {Node} - wrapper + */ + var wrap = function(node, wrapperName) { + var parent = node.parentNode; + var wrapper = $('<' + wrapperName + '>')[0]; + + parent.insertBefore(wrapper, node); + wrapper.appendChild(node); + + return wrapper; + }; + + /** + * insert node after preceding + * + * @param {Node} node + * @param {Node} preceding - predicate function + */ + var insertAfter = function(node, preceding) { + var next = preceding.nextSibling, parent = preceding.parentNode; + if (next) { + parent.insertBefore(node, next); + } else { + parent.appendChild(node); + } + return node; + }; + + /** + * append elements. + * + * @param {Node} node + * @param {Collection} aChild + */ + var appendChildNodes = function(node, aChild) { + $.each(aChild, function(idx, child) { + node.appendChild(child); + }); + return node; + }; + + /** + * returns whether boundaryPoint is left edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isLeftEdgePoint = function(point) { + return point.offset === 0; + }; + + /** + * returns whether boundaryPoint is right edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isRightEdgePoint = function(point) { + return point.offset === nodeLength(point.node); + }; + + /** + * returns whether boundaryPoint is edge or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isEdgePoint = function(point) { + return isLeftEdgePoint(point) || isRightEdgePoint(point); + }; + + /** + * returns wheter node is left edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isLeftEdgeOf = function(node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== 0) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns whether node is right edge of ancestor or not. + * + * @param {Node} node + * @param {Node} ancestor + * @return {Boolean} + */ + var isRightEdgeOf = function(node, ancestor) { + while (node && node !== ancestor) { + if (position(node) !== nodeLength(node.parentNode) - 1) { + return false; + } + node = node.parentNode; + } + + return true; + }; + + /** + * returns offset from parent. + * + * @param {Node} node + */ + var position = function(node) { + var offset = 0; + while ((node = node.previousSibling)) { + offset += 1; + } + return offset; + }; + + var hasChildren = function(node) { + return !!(node && node.childNodes && node.childNodes.length); + }; + + /** + * returns previous boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var prevPoint = function(point, isSkipInnerOffset) { + var node, offset; + + if (point.offset === 0) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node); + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset - 1]; + offset = nodeLength(node); + } else { + node = point.node; + offset = isSkipInnerOffset ? 0 : point.offset - 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns next boundaryPoint + * + * @param {BoundaryPoint} point + * @param {Boolean} isSkipInnerOffset + * @return {BoundaryPoint} + */ + var nextPoint = function(point, isSkipInnerOffset) { + var node, offset; + + if (nodeLength(point.node) === point.offset) { + if (isEditable(point.node)) { + return null; + } + + node = point.node.parentNode; + offset = position(point.node) + 1; + } else if (hasChildren(point.node)) { + node = point.node.childNodes[point.offset]; + offset = 0; + } else { + node = point.node; + offset = isSkipInnerOffset ? nodeLength(point.node) : point.offset + 1; + } + + return { + node: node, + offset: offset + }; + }; + + /** + * returns whether pointA and pointB is same or not. + * + * @param {BoundaryPoint} pointA + * @param {BoundaryPoint} pointB + * @return {Boolean} + */ + var isSamePoint = function(pointA, pointB) { + return pointA.node === pointB.node && pointA.offset === pointB.offset; + }; + + /** + * returns whether point is visible (can set cursor) or not. + * + * @param {BoundaryPoint} point + * @return {Boolean} + */ + var isVisiblePoint = function(point) { + if (isText(point.node) || !hasChildren(point.node) || isEmpty(point.node)) { + return true; + } + + var leftNode = point.node.childNodes[point.offset - 1]; + var rightNode = point.node.childNodes[point.offset]; + if ((!leftNode || isVoid(leftNode)) && (!rightNode || isVoid(rightNode))) { + return true; + } + + return false; + }; + + /** + * @method prevPointUtil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var prevPointUntil = function(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = prevPoint(point); + } + + return null; + }; + + /** + * @method nextPointUntil + * + * @param {BoundaryPoint} point + * @param {Function} pred + * @return {BoundaryPoint} + */ + var nextPointUntil = function(point, pred) { + while (point) { + if (pred(point)) { + return point; + } + + point = nextPoint(point); + } + + return null; + }; + + /** + * returns whether point has character or not. + * + * @param {Point} point + * @return {Boolean} + */ + var isCharPoint = function(point) { + if (!isText(point.node)) { + return false; + } + + var ch = point.node.nodeValue.charAt(point.offset - 1); + return ch && (ch !== ' ' && ch !== NBSP_CHAR); + }; + + /** + * @method walkPoint + * + * @param {BoundaryPoint} startPoint + * @param {BoundaryPoint} endPoint + * @param {Function} handler + * @param {Boolean} isSkipInnerOffset + */ + var walkPoint = function(startPoint, endPoint, handler, isSkipInnerOffset) { + var point = startPoint; + + while (point) { + handler(point); + + if (isSamePoint(point, endPoint)) { + break; + } + + var isSkipOffset = isSkipInnerOffset && + startPoint.node !== point.node && + endPoint.node !== point.node; + point = nextPoint(point, isSkipOffset); + } + }; + + /** + * @method makeOffsetPath + * + * return offsetPath(array of offset) from ancestor + * + * @param {Node} ancestor - ancestor node + * @param {Node} node + */ + var makeOffsetPath = function(ancestor, node) { + var ancestors = listAncestor(node, func.eq(ancestor)); + return $.map(ancestors, position).reverse(); + }; + + /** + * @method fromOffsetPath + * + * return element from offsetPath(array of offset) + * + * @param {Node} ancestor - ancestor node + * @param {array} offsets - offsetPath + */ + var fromOffsetPath = function(ancestor, offsets) { + var current = ancestor; + for (var i = 0, len = offsets.length; i < len; i++) { + if (current.childNodes.length <= offsets[i]) { + current = current.childNodes[current.childNodes.length - 1]; + } else { + current = current.childNodes[offsets[i]]; + } + } + return current; + }; + + /** + * @method splitNode + * + * split element or #text + * + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitNode = function(point, options) { + var isSkipPaddingBlankHTML = options && options.isSkipPaddingBlankHTML; + var isNotSplitEdgePoint = options && options.isNotSplitEdgePoint; + + // edge case + if (isEdgePoint(point) && (isText(point.node) || isNotSplitEdgePoint)) { + if (isLeftEdgePoint(point)) { + return point.node; + } else if (isRightEdgePoint(point)) { + return point.node.nextSibling; + } + } + + // split #text + if (isText(point.node)) { + return point.node.splitText(point.offset); + } else { + var childNode = point.node.childNodes[point.offset]; + var clone = insertAfter(point.node.cloneNode(false), point.node); + appendChildNodes(clone, listNext(childNode)); + + if (!isSkipPaddingBlankHTML) { + paddingBlankHTML(point.node); + paddingBlankHTML(clone); + } + + return clone; + } + }; + + /** + * @method splitTree + * + * split tree by point + * + * @param {Node} root - split root + * @param {BoundaryPoint} point + * @param {Object} [options] + * @param {Boolean} [options.isSkipPaddingBlankHTML] - default: false + * @param {Boolean} [options.isNotSplitEdgePoint] - default: false + * @return {Node} right node of boundaryPoint + */ + var splitTree = function(root, point, options) { + // ex) [#text, <span>, <p>] + var ancestors = listAncestor(point.node, func.eq(root)); + + if (!ancestors.length) { + return null; + } else if (ancestors.length === 1) { + return splitNode(point, options); + } + + return ancestors.reduce(function(node, parent) { + if (node === point.node) { + node = splitNode(point, options); + } + + return splitNode({ + node: parent, + offset: node ? dom.position(node) : nodeLength(parent) + }, options); + }); + }; + + /** + * split point + * + * @param {Point} point + * @param {Boolean} isInline + * @return {Object} + */ + var splitPoint = function(point, isInline) { + // find splitRoot, container + // - inline: splitRoot is a child of paragraph + // - block: splitRoot is a child of bodyContainer + var pred = isInline ? isPara : isBodyContainer; + var ancestors = listAncestor(point.node, pred); + var topAncestor = list.last(ancestors) || point.node; + + var splitRoot, container; + if (pred(topAncestor)) { + splitRoot = ancestors[ancestors.length - 2]; + container = topAncestor; + } else { + splitRoot = topAncestor; + container = splitRoot.parentNode; + } + + // if splitRoot is exists, split with splitTree + var pivot = splitRoot && splitTree(splitRoot, point, { + isSkipPaddingBlankHTML: isInline, + isNotSplitEdgePoint: isInline + }); + + // if container is point.node, find pivot with point.offset + if (!pivot && container === point.node) { + pivot = point.node.childNodes[point.offset]; + } + + return { + rightNode: pivot, + container: container + }; + }; + + var create = function(nodeName) { + return document.createElement(nodeName); + }; + + var createText = function(text) { + return document.createTextNode(text); + }; + + /** + * @method remove + * + * remove node, (isRemoveChild: remove child or not) + * + * @param {Node} node + * @param {Boolean} isRemoveChild + */ + var remove = function(node, isRemoveChild) { + if (!node || !node.parentNode) { return; } + if (node.removeNode) { return node.removeNode(isRemoveChild); } + + var parent = node.parentNode; + if (!isRemoveChild) { + var nodes = []; + var i, len; + for (i = 0, len = node.childNodes.length; i < len; i++) { + nodes.push(node.childNodes[i]); + } + + for (i = 0, len = nodes.length; i < len; i++) { + parent.insertBefore(nodes[i], node); + } + } + + parent.removeChild(node); + }; + + /** + * @method removeWhile + * + * @param {Node} node + * @param {Function} pred + */ + var removeWhile = function(node, pred) { + while (node) { + if (isEditable(node) || !pred(node)) { + break; + } + + var parent = node.parentNode; + remove(node); + node = parent; + } + }; + + /** + * @method replace + * + * replace node with provided nodeName + * + * @param {Node} node + * @param {String} nodeName + * @return {Node} - new node + */ + var replace = function(node, nodeName) { + if (node.nodeName.toUpperCase() === nodeName.toUpperCase()) { + return node; + } + + var newNode = create(nodeName); + + if (node.style.cssText) { + newNode.style.cssText = node.style.cssText; + } + + appendChildNodes(newNode, list.from(node.childNodes)); + insertAfter(newNode, node); + remove(node); + + return newNode; + }; + + var isTextarea = makePredByNodeName('TEXTAREA'); + + /** + * @param {jQuery} $node + * @param {Boolean} [stripLinebreaks] - default: false + */ + var value = function($node, stripLinebreaks) { + var val = isTextarea($node[0]) ? $node.val() : $node.html(); + if (stripLinebreaks) { + return val.replace(/[\n\r]/g, ''); + } + return val; + }; + + /** + * @method html + * + * get the HTML contents of node + * + * @param {jQuery} $node + * @param {Boolean} [isNewlineOnBlock] + */ + var html = function($node, isNewlineOnBlock) { + var markup = value($node); + + if (isNewlineOnBlock) { + var regexTag = /<(\/?)(\b(?!!)[^>\s]*)(.*?)(\s*\/?>)/g; + markup = markup.replace(regexTag, function(match, endSlash, name) { + name = name.toUpperCase(); + var isEndOfInlineContainer = /^DIV|^TD|^TH|^P|^LI|^H[1-7]/.test(name) && + !!endSlash; + var isBlockNode = /^BLOCKQUOTE|^TABLE|^TBODY|^TR|^HR|^UL|^OL/.test(name); + + return match + ((isEndOfInlineContainer || isBlockNode) ? '\n' : ''); + }); + markup = $.trim(markup); + } + + return markup; + }; + + return { + /** @property {String} NBSP_CHAR */ + NBSP_CHAR: NBSP_CHAR, + /** @property {String} ZERO_WIDTH_NBSP_CHAR */ + ZERO_WIDTH_NBSP_CHAR: ZERO_WIDTH_NBSP_CHAR, + /** @property {String} blank */ + blank: blankHTML, + /** @property {String} emptyPara */ + emptyPara: '<p>' + blankHTML + '</p>', + makePredByNodeName: makePredByNodeName, + isEditable: isEditable, + isControlSizing: isControlSizing, + buildLayoutInfo: buildLayoutInfo, + makeLayoutInfo: makeLayoutInfo, + isText: isText, + isVoid: isVoid, + isPara: isPara, + isPurePara: isPurePara, + isInline: isInline, + isBlock: func.not(isInline), + isBodyInline: isBodyInline, + isBody: isBody, + isParaInline: isParaInline, + isList: isList, + isTable: isTable, + isCell: isCell, + isBlockquote: isBlockquote, + isBodyContainer: isBodyContainer, + isAnchor: isAnchor, + isDiv: makePredByNodeName('DIV'), + isLi: isLi, + isBR: makePredByNodeName('BR'), + isSpan: makePredByNodeName('SPAN'), + isB: makePredByNodeName('B'), + isU: makePredByNodeName('U'), + isS: makePredByNodeName('S'), + isI: makePredByNodeName('I'), + isImg: makePredByNodeName('IMG'), + isTextarea: isTextarea, + isEmpty: isEmpty, + isEmptyAnchor: func.and(isAnchor, isEmpty), + isClosestSibling: isClosestSibling, + withClosestSiblings: withClosestSiblings, + nodeLength: nodeLength, + isLeftEdgePoint: isLeftEdgePoint, + isRightEdgePoint: isRightEdgePoint, + isEdgePoint: isEdgePoint, + isLeftEdgeOf: isLeftEdgeOf, + isRightEdgeOf: isRightEdgeOf, + prevPoint: prevPoint, + nextPoint: nextPoint, + isSamePoint: isSamePoint, + isVisiblePoint: isVisiblePoint, + prevPointUntil: prevPointUntil, + nextPointUntil: nextPointUntil, + isCharPoint: isCharPoint, + walkPoint: walkPoint, + ancestor: ancestor, + singleChildAncestor: singleChildAncestor, + listAncestor: listAncestor, + lastAncestor: lastAncestor, + listNext: listNext, + listPrev: listPrev, + listDescendant: listDescendant, + commonAncestor: commonAncestor, + wrap: wrap, + insertAfter: insertAfter, + appendChildNodes: appendChildNodes, + position: position, + hasChildren: hasChildren, + makeOffsetPath: makeOffsetPath, + fromOffsetPath: fromOffsetPath, + splitTree: splitTree, + splitPoint: splitPoint, + create: create, + createText: createText, + remove: remove, + removeWhile: removeWhile, + replace: replace, + html: html, + value: value + }; + })(); + + + var range = (function() { + + /** + * return boundaryPoint from TextRange, inspired by Andy Na's HuskyRange.js + * + * @param {TextRange} textRange + * @param {Boolean} isStart + * @return {BoundaryPoint} + * + * @see http://msdn.microsoft.com/en-us/library/ie/ms535872(v=vs.85).aspx + */ + var textRangeToPoint = function(textRange, isStart) { + var container = textRange.parentElement(), offset; + + var tester = document.body.createTextRange(), prevContainer; + var childNodes = list.from(container.childNodes); + for (offset = 0; offset < childNodes.length; offset++) { + if (dom.isText(childNodes[offset])) { + continue; + } + tester.moveToElementText(childNodes[offset]); + if (tester.compareEndPoints('StartToStart', textRange) >= 0) { + break; + } + prevContainer = childNodes[offset]; + } + + if (offset !== 0 && dom.isText(childNodes[offset - 1])) { + var textRangeStart = document.body.createTextRange(), curTextNode = null; + textRangeStart.moveToElementText(prevContainer || container); + textRangeStart.collapse(!prevContainer); + curTextNode = prevContainer ? prevContainer.nextSibling : container.firstChild; + + var pointTester = textRange.duplicate(); + pointTester.setEndPoint('StartToStart', textRangeStart); + var textCount = pointTester.text.replace(/[\r\n]/g, '').length; + + while (textCount > curTextNode.nodeValue.length && curTextNode.nextSibling) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + /* jshint ignore:start */ + var dummy = curTextNode.nodeValue; // enforce IE to re-reference curTextNode, hack + /* jshint ignore:end */ + + if (isStart && curTextNode.nextSibling && dom.isText(curTextNode.nextSibling) && + textCount === curTextNode.nodeValue.length) { + textCount -= curTextNode.nodeValue.length; + curTextNode = curTextNode.nextSibling; + } + + container = curTextNode; + offset = textCount; + } + + return { + cont: container, + offset: offset + }; + }; + + /** + * return TextRange from boundary point (inspired by google closure-library) + * @param {BoundaryPoint} point + * @return {TextRange} + */ + var pointToTextRange = function(point) { + var textRangeInfo = function(container, offset) { + var node, isCollapseToStart; + + if (dom.isText(container)) { + var prevTextNodes = dom.listPrev(container, func.not(dom.isText)); + var prevContainer = list.last(prevTextNodes).previousSibling; + node = prevContainer || container.parentNode; + offset += list.sum(list.tail(prevTextNodes), dom.nodeLength); + isCollapseToStart = !prevContainer; + } else { + node = container.childNodes[offset] || container; + if (dom.isText(node)) { + return textRangeInfo(node, 0); + } + + offset = 0; + isCollapseToStart = false; + } + + return { + node: node, + collapseToStart: isCollapseToStart, + offset: offset + }; + }; + + var textRange = document.body.createTextRange(); + var info = textRangeInfo(point.node, point.offset); + + textRange.moveToElementText(info.node); + textRange.collapse(info.collapseToStart); + textRange.moveStart('character', info.offset); + return textRange; + }; + + /** + * Wrapped Range + * + * @constructor + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + */ + var WrappedRange = function(sc, so, ec, eo) { + this.sc = sc; + this.so = so; + this.ec = ec; + this.eo = eo; + + // nativeRange: get nativeRange from sc, so, ec, eo + var nativeRange = function() { + if (agent.isW3CRangeSupport) { + var w3cRange = document.createRange(); + w3cRange.setStart(sc, so); + w3cRange.setEnd(ec, eo); + + return w3cRange; + } else { + var textRange = pointToTextRange({ + node: sc, + offset: so + }); + + textRange.setEndPoint('EndToEnd', pointToTextRange({ + node: ec, + offset: eo + })); + + return textRange; + } + }; + + this.getPoints = function() { + return { + sc: sc, + so: so, + ec: ec, + eo: eo + }; + }; + + this.getStartPoint = function() { + return { + node: sc, + offset: so + }; + }; + + this.getEndPoint = function() { + return { + node: ec, + offset: eo + }; + }; + + /** + * select update visible range + */ + this.select = function() { + var nativeRng = nativeRange(); + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (selection.rangeCount > 0) { + selection.removeAllRanges(); + } + selection.addRange(nativeRng); + } else { + nativeRng.select(); + } + + return this; + }; + + /** + * @return {WrappedRange} + */ + this.normalize = function() { + + /** + * @param {BoundaryPoint} point + * @return {BoundaryPoint} + */ + var getVisiblePoint = function(point) { + if (!dom.isVisiblePoint(point)) { + if (dom.isLeftEdgePoint(point)) { + point = dom.nextPointUntil(point, dom.isVisiblePoint); + } else { + point = dom.prevPointUntil(point, dom.isVisiblePoint); + } + } + return point; + }; + + var startPoint = getVisiblePoint(this.getStartPoint()); + var endPoint = getVisiblePoint(this.getEndPoint()); + + return new WrappedRange( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ); + }; + + /** + * returns matched nodes on range + * + * @param {Function} [pred] - predicate function + * @param {Object} [options] + * @param {Boolean} [options.includeAncestor] + * @param {Boolean} [options.fullyContains] + * @return {Node[]} + */ + this.nodes = function(pred, options) { + pred = pred || func.ok; + + var includeAncestor = options && options.includeAncestor; + var fullyContains = options && options.fullyContains; + + // TODO compare points and sort + var startPoint = this.getStartPoint(); + var endPoint = this.getEndPoint(); + + var nodes = []; + var leftEdgeNodes = []; + + dom.walkPoint(startPoint, endPoint, function(point) { + if (dom.isEditable(point.node)) { + return; + } + + var node; + if (fullyContains) { + if (dom.isLeftEdgePoint(point)) { + leftEdgeNodes.push(point.node); + } + if (dom.isRightEdgePoint(point) && list.contains(leftEdgeNodes, point.node)) { + node = point.node; + } + } else if (includeAncestor) { + node = dom.ancestor(point.node, pred); + } else { + node = point.node; + } + + if (node && pred(node)) { + nodes.push(node); + } + }, true); + + return list.unique(nodes); + }; + + /** + * returns commonAncestor of range + * @return {Element} - commonAncestor + */ + this.commonAncestor = function() { + return dom.commonAncestor(sc, ec); + }; + + /** + * returns expanded range by pred + * + * @param {Function} pred - predicate function + * @return {WrappedRange} + */ + this.expand = function(pred) { + var startAncestor = dom.ancestor(sc, pred); + var endAncestor = dom.ancestor(ec, pred); + + if (!startAncestor && !endAncestor) { + return new WrappedRange(sc, so, ec, eo); + } + + var boundaryPoints = this.getPoints(); + + if (startAncestor) { + boundaryPoints.sc = startAncestor; + boundaryPoints.so = 0; + } + + if (endAncestor) { + boundaryPoints.ec = endAncestor; + boundaryPoints.eo = dom.nodeLength(endAncestor); + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * @param {Boolean} isCollapseToStart + * @return {WrappedRange} + */ + this.collapse = function(isCollapseToStart) { + if (isCollapseToStart) { + return new WrappedRange(sc, so, sc, so); + } else { + return new WrappedRange(ec, eo, ec, eo); + } + }; + + /** + * splitText on range + */ + this.splitText = function() { + var isSameContainer = sc === ec; + var boundaryPoints = this.getPoints(); + + if (dom.isText(ec) && !dom.isEdgePoint(this.getEndPoint())) { + ec.splitText(eo); + } + + if (dom.isText(sc) && !dom.isEdgePoint(this.getStartPoint())) { + boundaryPoints.sc = sc.splitText(so); + boundaryPoints.so = 0; + + if (isSameContainer) { + boundaryPoints.ec = boundaryPoints.sc; + boundaryPoints.eo = eo - so; + } + } + + return new WrappedRange( + boundaryPoints.sc, + boundaryPoints.so, + boundaryPoints.ec, + boundaryPoints.eo + ); + }; + + /** + * delete contents on range + * @return {WrappedRange} + */ + this.deleteContents = function() { + if (this.isCollapsed()) { + return this; + } + + var rng = this.splitText(); + var nodes = rng.nodes(null, { + fullyContains: true + }); + + // find new cursor point + var point = dom.prevPointUntil(rng.getStartPoint(), function(point) { + return !list.contains(nodes, point.node); + }); + + var emptyParents = []; + $.each(nodes, function(idx, node) { + // find empty parents + var parent = node.parentNode; + if (point.node !== parent && dom.nodeLength(parent) === 1) { + emptyParents.push(parent); + } + dom.remove(node, false); + }); + + // remove empty parents + $.each(emptyParents, function(idx, node) { + dom.remove(node, false); + }); + + return new WrappedRange( + point.node, + point.offset, + point.node, + point.offset + ).normalize(); + }; + + /** + * makeIsOn: return isOn(pred) function + */ + var makeIsOn = function(pred) { + return function() { + var ancestor = dom.ancestor(sc, pred); + return !!ancestor && (ancestor === dom.ancestor(ec, pred)); + }; + }; + + // isOnEditable: judge whether range is on editable or not + this.isOnEditable = makeIsOn(dom.isEditable); + // isOnList: judge whether range is on list node or not + this.isOnList = makeIsOn(dom.isList); + // isOnAnchor: judge whether range is on anchor node or not + this.isOnAnchor = makeIsOn(dom.isAnchor); + // isOnAnchor: judge whether range is on cell node or not + this.isOnCell = makeIsOn(dom.isCell); + + /** + * @param {Function} pred + * @return {Boolean} + */ + this.isLeftEdgeOf = function(pred) { + if (!dom.isLeftEdgePoint(this.getStartPoint())) { + return false; + } + + var node = dom.ancestor(this.sc, pred); + return node && dom.isLeftEdgeOf(this.sc, node); + }; + + /** + * returns whether range was collapsed or not + */ + this.isCollapsed = function() { + return sc === ec && so === eo; + }; + + /** + * wrap inline nodes which children of body with paragraph + * + * @return {WrappedRange} + */ + this.wrapBodyInlineWithPara = function() { + if (dom.isBodyContainer(sc) && dom.isEmpty(sc)) { + sc.innerHTML = dom.emptyPara; + return new WrappedRange(sc.firstChild, 0, sc.firstChild, 0); + } + + if (dom.isParaInline(sc) || dom.isPara(sc)) { + return this.normalize(); + } + + // find inline top ancestor + var topAncestor; + if (dom.isInline(sc)) { + var ancestors = dom.listAncestor(sc, func.not(dom.isInline)); + topAncestor = list.last(ancestors); + if (!dom.isInline(topAncestor)) { + topAncestor = ancestors[ancestors.length - 2] || sc.childNodes[so]; + } + } else { + topAncestor = sc.childNodes[so > 0 ? so - 1 : 0]; + } + + // siblings not in paragraph + var inlineSiblings = dom.listPrev(topAncestor, dom.isParaInline).reverse(); + inlineSiblings = inlineSiblings.concat(dom.listNext(topAncestor.nextSibling, dom.isParaInline)); + + // wrap with paragraph + if (inlineSiblings.length) { + var para = dom.wrap(list.head(inlineSiblings), 'p'); + dom.appendChildNodes(para, list.tail(inlineSiblings)); + } + + return this.normalize(); + }; + + /** + * insert node at current cursor + * + * @param {Node} node + * @return {Node} + */ + this.insertNode = function(node) { + var rng = this.wrapBodyInlineWithPara().deleteContents(); + var info = dom.splitPoint(rng.getStartPoint(), dom.isInline(node)); + + if (info.rightNode) { + info.rightNode.parentNode.insertBefore(node, info.rightNode); + } else { + info.container.appendChild(node); + } + + return node; + }; + + + /** + * insert html at current cursor + */ + this.pasteHTML = function(markup) { + var self = this; + var contentsContainer = $('<div></div>').html(markup)[0]; + var childNodes = list.from(contentsContainer.childNodes); + + this.wrapBodyInlineWithPara().deleteContents(); + + return $.map(childNodes.reverse(), function(childNode) { + return self.insertNode(childNode); + }).reverse(); + }; + + /** + * returns text in range + * + * @return {String} + */ + this.toString = function() { + var nativeRng = nativeRange(); + return agent.isW3CRangeSupport ? nativeRng.toString() : nativeRng.text; + }; + + /** + * returns range for word before cursor + * + * @param {Boolean} [findAfter] - find after cursor, default: false + * @return {WrappedRange} + */ + this.getWordRange = function(findAfter) { + var endPoint = this.getEndPoint(); + + if (!dom.isCharPoint(endPoint)) { + return this; + } + + var startPoint = dom.prevPointUntil(endPoint, function(point) { + return !dom.isCharPoint(point); + }); + + if (findAfter) { + endPoint = dom.nextPointUntil(endPoint, function(point) { + return !dom.isCharPoint(point); + }); + } + + return new WrappedRange( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ); + }; + + /** + * create offsetPath bookmark + * + * @param {Node} editable + */ + this.bookmark = function(editable) { + return { + s: { + path: dom.makeOffsetPath(editable, sc), + offset: so + }, + e: { + path: dom.makeOffsetPath(editable, ec), + offset: eo + } + }; + }; + + /** + * create offsetPath bookmark base on paragraph + * + * @param {Node[]} paras + */ + this.paraBookmark = function(paras) { + return { + s: { + path: list.tail(dom.makeOffsetPath(list.head(paras), sc)), + offset: so + }, + e: { + path: list.tail(dom.makeOffsetPath(list.last(paras), ec)), + offset: eo + } + }; + }; + + /** + * getClientRects + * @return {Rect[]} + */ + this.getClientRects = function() { + var nativeRng = nativeRange(); + return nativeRng.getClientRects(); + }; + }; + + /** + * @class core.range + * + * Data structure + * * BoundaryPoint: a point of dom tree + * * BoundaryPoints: two boundaryPoints corresponding to the start and the end of the Range + * + * See to http://www.w3.org/TR/DOM-Level-2-Traversal-Range/ranges.html#Level-2-Range-Position + * + * @singleton + * @alternateClassName range + */ + return { + /** + * @method + * + * create Range Object From arguments or Browser Selection + * + * @param {Node} sc - start container + * @param {Number} so - start offset + * @param {Node} ec - end container + * @param {Number} eo - end offset + * @return {WrappedRange} + */ + create : function(sc, so, ec, eo) { + if (!arguments.length) { // from Browser Selection + if (agent.isW3CRangeSupport) { + var selection = document.getSelection(); + if (!selection || selection.rangeCount === 0) { + return null; + } else if (dom.isBody(selection.anchorNode)) { + // Firefox: returns entire body as range on initialization. We won't never need it. + return null; + } + + var nativeRng = selection.getRangeAt(0); + sc = nativeRng.startContainer; + so = nativeRng.startOffset; + ec = nativeRng.endContainer; + eo = nativeRng.endOffset; + } else { // IE8: TextRange + var textRange = document.selection.createRange(); + var textRangeEnd = textRange.duplicate(); + textRangeEnd.collapse(false); + var textRangeStart = textRange; + textRangeStart.collapse(true); + + var startPoint = textRangeToPoint(textRangeStart, true), + endPoint = textRangeToPoint(textRangeEnd, false); + + // same visible point case: range was collapsed. + if (dom.isText(startPoint.node) && dom.isLeftEdgePoint(startPoint) && + dom.isTextNode(endPoint.node) && dom.isRightEdgePoint(endPoint) && + endPoint.node.nextSibling === startPoint.node) { + startPoint = endPoint; + } + + sc = startPoint.cont; + so = startPoint.offset; + ec = endPoint.cont; + eo = endPoint.offset; + } + } else if (arguments.length === 2) { //collapsed + ec = sc; + eo = so; + } + return new WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from node + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNode: function(node) { + var sc = node; + var so = 0; + var ec = node; + var eo = dom.nodeLength(ec); + + // browsers can't target a picture or void node + if (dom.isVoid(sc)) { + so = dom.listPrev(sc).length - 1; + sc = sc.parentNode; + } + if (dom.isBR(ec)) { + eo = dom.listPrev(ec).length - 1; + ec = ec.parentNode; + } else if (dom.isVoid(ec)) { + eo = dom.listPrev(ec).length; + ec = ec.parentNode; + } + + return this.create(sc, so, ec, eo); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeBefore: function(node) { + return this.createFromNode(node).collapse(true); + }, + + /** + * create WrappedRange from node after position + * + * @param {Node} node + * @return {WrappedRange} + */ + createFromNodeAfter: function(node) { + return this.createFromNode(node).collapse(); + }, + + /** + * @method + * + * create WrappedRange from bookmark + * + * @param {Node} editable + * @param {Object} bookmark + * @return {WrappedRange} + */ + createFromBookmark : function(editable, bookmark) { + var sc = dom.fromOffsetPath(editable, bookmark.s.path); + var so = bookmark.s.offset; + var ec = dom.fromOffsetPath(editable, bookmark.e.path); + var eo = bookmark.e.offset; + return new WrappedRange(sc, so, ec, eo); + }, + + /** + * @method + * + * create WrappedRange from paraBookmark + * + * @param {Object} bookmark + * @param {Node[]} paras + * @return {WrappedRange} + */ + createFromParaBookmark: function(bookmark, paras) { + var so = bookmark.s.offset; + var eo = bookmark.e.offset; + var sc = dom.fromOffsetPath(list.head(paras), bookmark.s.path); + var ec = dom.fromOffsetPath(list.last(paras), bookmark.e.path); + + return new WrappedRange(sc, so, ec, eo); + } + }; + })(); + + /** + * @class defaults + * @singleton + */ + // >>>>>>> CK + var defaults = { + /** @property */ + version: '0.6.9', + + /** + * for event options, reference to EventHandler.attach + * @property {Object} options + * @property {String/Number} [options.width=null] set editor width + * @property {String/Number} [options.height=null] set editor height, ex) 300 + * @property {String/Number} options.minHeight set minimum height of editor + * @property {String/Number} options.maxHeight + * @property {String/Number} options.focus + * @property {Number} options.tabsize + * @property {Boolean} options.styleWithSpan + * @property {Object} options.codemirror + * @property {Object} [options.codemirror.mode='text/html'] + * @property {Object} [options.codemirror.htmlMode=true] + * @property {Object} [options.codemirror.lineNumbers=true] + * @property {String} [options.lang=en-US] language 'en-US', 'ko-KR', ... + * @property {String} [options.direction=null] text direction, ex) 'rtl' + * @property {Array} [options.toolbar] + * @property {Boolean} [options.airMode=false] + * @property {Array} [options.airPopover] + * @property {Fucntion} [options.onInit] initialize + * @property {Fucntion} [options.onsubmit] + */ + options: { + // >>>>>>> CK extra options + defaultTextColor: '#212121', // default text color (used by color tool) + defaultBackColor: '#ddd', // default text color (used by color tool) + followingToolbar: true, // make the toolbar follow on window scroll + otherStaticBarClass: "staticTop", // default class for other static bars eventually used on webapp + + width: null, // set editor width + height: null, // set editor height, ex) 300 + + minHeight: null, // set minimum height of editor + maxHeight: null, // set maximum height of editor + + focus: false, // set focus to editable area after initializing materialnote + + tabsize: 4, // size of tab ex) 2 or 4 + styleWithSpan: true, // style with span (Chrome and FF only) + + disableLinkTarget: false, // hide link Target Checkbox + disableDragAndDrop: false, // disable drag and drop event + disableResizeEditor: false, // disable resizing editor + + shortcuts: true, // enable keyboard shortcuts + + placeholder: false, // enable placeholder text + prettifyHtml: true, // enable prettifying html while toggling codeview + + iconPrefix: '', // prefix for css icon classes + icons: { + font: { + bold: 'format_bold', + italic: 'format_italic', + underline: 'format_underlined', + clear: 'clear', + height: 'format_size', + strikethrough: 'strikethrough_s', + superscript: 'vertical_align_top', + subscript: 'vertical_align_bottom' + }, + image: { + image: 'image', + floatLeft: 'format_align_left', + floatRight: 'format_align_right', + floatNone: 'format_align_justify', + shapeRounded: 'crop_3_2', + shapeCircle: 'panorama_fish_eye', + shapeThumbnail: 'collections', + bordered: 'border_outer', + shapeNone: 'image', + remove: 'delete' + }, + link: { + link: 'insert_link', + unlink: 'clear', + edit: 'create' + }, + table: { + table: 'border_all' + }, + hr: { + insert: 'add' + }, + style: { + style: 'border_color' + }, + lists: { + unordered: 'format_list_bulleted', + ordered: 'format_list_numbered' + }, + options: { + help: 'help', + fullscreen: 'settings_overscan', + codeview: 'code' + }, + paragraph: { + paragraph: 'format_textdirection_l_to_r', + outdent: 'format_indent_decrease', + indent: 'format_indent_increase', + left: 'format_align_left', + center: 'format_align_center', + right: 'format_align_right', + justify: 'format_align_justify' + }, + color: { + recent: 'format_color_text' + }, + history: { + undo: 'undo', + redo: 'redo' + }, + misc: { + check: 'check' + } + }, + + codemirror: { // codemirror options + mode: 'text/html', + htmlMode: true, + indentWithTabs: true, + tabSize: 4, + lineNumbers: true, + theme: 'monokai', + maxHighlightLength: 'Infinity' + }, + + // language + lang: 'en-US', // language 'en-US', 'ko-KR', ... + direction: null, // text direction, ex) 'rtl' + + // toolbar + toolbar: [ + ['style', ['style']], + ['font', ['bold', 'italic', 'underline', 'clear']], + // ['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']], + ['fontname', ['fontname']], + ['fontsize', ['fontsize']], + ['color', ['color']], + ['para', ['ul', 'ol', 'paragraph']], + ['height', ['height']], + ['table', ['table']], + ['insert', ['link', 'picture', 'hr']], + ['view', ['fullscreen', 'codeview']], + ['help', ['help']] + ], + + plugin : {}, + + // air mode: inline editor + airMode: false, + // airPopover: [ + // ['style', ['style']], + // ['font', ['bold', 'italic', 'underline', 'clear']], + // ['fontname', ['fontname']], + // ['color', ['color']], + // ['para', ['ul', 'ol', 'paragraph']], + // ['height', ['height']], + // ['table', ['table']], + // ['insert', ['link', 'picture']], + // ['help', ['help']] + // ], + airPopover: [ + ['color', ['color']], + ['font', ['bold', 'underline', 'clear']], + ['para', ['ul', 'paragraph']], + ['table', ['table']], + ['insert', ['link', 'picture']] + ], + + // style tag + styleTags: ['p', 'blockquote', 'pre', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'], + + // default fontName + defaultFontName: 'Roboto', + + // fontName + fontNames: [ + 'Roboto', 'Arial', 'Arial Black', 'Comic Sans MS', 'Courier New', + 'Helvetica Neue', 'Helvetica', 'Impact', 'Times New Roman', 'Verdana' + ], + fontNamesIgnoreCheck: [], + + fontSizes: ['12', '13', '14', '15', '16', '17', '18', '25', '37'], + + // pallete colors(n x n) + colors: [//grey brown dpurple purple indigo blue cyan green lgreen yellow amber orange dorange red pink + ['#fafafa', '#efebe9', '#7e57c2', '#ab47bc', '#5c6bc0', '#42a5f5', '#26c6da', '#66bb6a', '#9ccc65', '#ffee58', '#ffca28', '#ffa726', '#ff7043', '#ef5350', '#ec407a'], + ['#f5f5f5', '#d7ccc8', '#673ab7', '#9c27b0', '#3f51b5', '#2196f3', '#00bcd4', '#4caf50', '#8bc34a', '#ffeb3b', '#ffc107', '#ff9800', '#ff5722', '#f44336', '#e91e63'], + ['#eeeeee', '#bcaaa4', '#5e35b1', '#8e24aa', '#3949ab', '#1e88e5', '#00acc1', '#43a047', '#7cb342', '#fdd835', '#ffb300', '#fb8c00', '#f4511e', '#e53935', '#d81b60'], + ['#e0e0e0', '#a1887f', '#512da8', '#7b1fa2', '#303f9f', '#1976d2', '#0097a7', '#388e3c', '#689f38', '#fbc02d', '#ffa000', '#f57c00', '#e64a19', '#d32f2f', '#c2185b'], + ['#bdbdbd', '#8d6e63', '#4527a0', '#6a1b9a', '#283593', '#1565c0', '#00838f', '#2e7d32', '#558b2f', '#f9a825', '#ff8f00', '#ef6c00', '#d84315', '#c62828', '#ad1457'], + ['#9e9e9e', '#795548', '#311b92', '#4a148c', '#1a237e', '#0d47a1', '#006064', '#1b5e20', '#33691e', '#f57f17', '#ff6f00', '#e65100', '#bf360c', '#b71c1c', '#880e4f'], + ['#757575', '#6d4c41', '#b388ff', '#ea80fc', '#8c9eff', '#82b1ff', '#84ffff', '#b9f6ca', '#ccff90', '#ffff8d', '#ffe57f', '#ffd180', '#ff9e80', '#ff8a80', '#ff80ab'], + ['#616161', '#5d4037', '#7c4dff', '#e040fb', '#536dfe', '#448aff', '#18ffff', '#69f0ae', '#b2ff59', '#ffff00', '#ffd740', '#ffab40', '#ff6e40', '#ff5252', '#ff4081'], + ['#424242', '#4e342e', '#651fff', '#d500f9', '#3d5afe', '#2979ff', '#00e5ff', '#00e676', '#76ff03', '#ffea00', '#ffc400', '#ff9100', '#ff3d00', '#ff1744', '#f50057'], + ['#212121', '#3e2723', '#6200ea', '#aa00ff', '#304ffe', '#2962ff', '#00b8d4', '#00c853', '#64dd17', '#ffd600', '#ffab00', '#ff6d00', '#dd2c00', '#d50000', '#c51162'], + ], + // pallete colors(n x n) + colorTitles: [ + //grey brown dpurple purple indigo blue cyan green lgreen yellow amber orange dorange red pink + ['grey lighten5', 'brown lighten5', 'deep-purple lighten1', 'purple lighten1', 'indigo lighten1', 'blue lighten1', 'cyan lighten1', 'green lighten1', 'light-green lighten1', 'yellow lighten1', 'amber lighten1', 'orange lighten1', 'deep-orange lighten1', 'red lighten1', 'pink lighten1'], + ['grey lighten4', 'brown lighten4', 'deep-purple', 'purple', 'indigo', 'blue', 'cyan', 'green', 'light-green', 'yellow', 'amber', 'orange', 'deep-orange', 'red', 'pink' ], + ['grey lighten3', 'brown lighten3', 'deep-purple darken1', 'purple darken1', 'indigo darken1', 'blue darken1', 'cyan darken1', 'green darken1', 'light-green darken1', 'yellow darken1', 'amber darken1', 'orange darken1', 'deep-orange darken1', 'red darken1', 'pink darken1' ], + ['grey lighten2', 'brown lighten2', 'deep-purple darken2', 'purple darken2', 'indigo darken2', 'blue darken2', 'cyan darken2', 'green darken2', 'light-green darken2', 'yellow darken2', 'amber darken2', 'orange darken2', 'deep-orange darken2', 'red darken2', 'pink darken2' ], + ['grey lighten1', 'brown lighten1', 'deep-purple darken3', 'purple darken3', 'indigo darken3', 'blue darken3', 'cyan darken3', 'green darken3', 'light-green darken3', 'yellow darken3', 'amber darken3', 'orange darken3', 'deep-orange darken3', 'red darken3', 'pink darken3' ], + ['grey', 'brown', 'deep-purple darken4', 'purple darken4', 'indigo darken4', 'blue darken4', 'cyan darken4', 'green darken4', 'light-green darken4', 'yellow darken4', 'amber darken4', 'orange darken4', 'deep-orange darken4', 'red darken4', 'pink darken4' ], + ['grey darken1', 'brown darken1', 'deep-purple accent1', 'purple accent1', 'indigo accent1', 'blue accent1', 'cyan accent1', 'green accent1', 'light-green accent1', 'yellow accent1', 'amber accent1', 'orange accent1', 'deep-orange accent1', 'red accent1', 'pink accent1' ], + ['grey darken2', 'brown darken2', 'deep-purple accent2', 'purple accent2', 'indigo accent2', 'blue accent2', 'cyan accent2', 'green accent2', 'light-green accent2', 'yellow accent2', 'amber accent2', 'orange accent2', 'deep-orange accent2', 'red accent2', 'pink accent2' ], + ['grey darken3', 'brown darken3', 'deep-purple accent3', 'purple accent3', 'indigo accent3', 'blue accent3', 'cyan accent3', 'green accent3', 'light-green accent3', 'yellow accent3', 'amber accent3', 'orange accent3', 'deep-orange accent3', 'red accent3', 'pink accent3' ], + ['grey darken4', 'brown darken4', 'deep-purple accent4', 'purple accent4', 'indigo accent4', 'blue accent4', 'cyan accent4', 'green accent4', 'light-green accent4', 'yellow accent4', 'amber accent4', 'orange accent4', 'deep-orange accent4', 'red accent4', 'pink accent4' ], + ], + + // lineHeight + lineHeights: ['1.0', '1.2', '1.4', '1.5', '1.6', '1.8', '2.0', '3.0'], + + // insertTable max size + insertTableMaxSize: { + col: 12, + row: 10 + }, + + // image + maximumImageFileSize: null, // size in bytes, null = no limit + + // callbacks + oninit: null, // initialize + onfocus: null, // editable has focus + onblur: null, // editable out of focus + onenter: null, // enter key pressed + onkeyup: null, // keyup + onkeydown: null, // keydown + onImageUpload: null, // imageUpload + onImageUploadError: null, // imageUploadError + onMediaDelete: null, // media delete + onToolbarClick: null, + onsubmit: null, + + /** + * manipulate link address when user create link + * @param {String} sLinkUrl + * @return {String} + */ + onCreateLink: function(sLinkUrl) { + if (sLinkUrl.indexOf('@') !== -1 && sLinkUrl.indexOf(':') === -1) { + sLinkUrl = 'mailto:' + sLinkUrl; + } + + return sLinkUrl; + }, + + keyMap: { + pc: { + 'ENTER': 'insertParagraph', + 'CTRL+Z': 'undo', + 'CTRL+Y': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CTRL+B': 'bold', + 'CTRL+I': 'italic', + 'CTRL+U': 'underline', + 'CTRL+SHIFT+S': 'strikethrough', + 'CTRL+BACKSLASH': 'removeFormat', + 'CTRL+SHIFT+L': 'justifyLeft', + 'CTRL+SHIFT+E': 'justifyCenter', + 'CTRL+SHIFT+R': 'justifyRight', + 'CTRL+SHIFT+J': 'justifyFull', + 'CTRL+SHIFT+NUM7': 'insertUnorderedList', + 'CTRL+SHIFT+NUM8': 'insertOrderedList', + 'CTRL+LEFTBRACKET': 'outdent', + 'CTRL+RIGHTBRACKET': 'indent', + 'CTRL+NUM0': 'formatPara', + 'CTRL+NUM1': 'formatH1', + 'CTRL+NUM2': 'formatH2', + 'CTRL+NUM3': 'formatH3', + 'CTRL+NUM4': 'formatH4', + 'CTRL+NUM5': 'formatH5', + 'CTRL+NUM6': 'formatH6', + 'CTRL+ENTER': 'insertHorizontalRule', + 'CTRL+K': 'showLinkDialog' + }, + + mac: { + 'ENTER': 'insertParagraph', + 'CMD+Z': 'undo', + 'CMD+SHIFT+Z': 'redo', + 'TAB': 'tab', + 'SHIFT+TAB': 'untab', + 'CMD+B': 'bold', + 'CMD+I': 'italic', + 'CMD+U': 'underline', + 'CMD+SHIFT+S': 'strikethrough', + 'CMD+BACKSLASH': 'removeFormat', + 'CMD+SHIFT+L': 'justifyLeft', + 'CMD+SHIFT+E': 'justifyCenter', + 'CMD+SHIFT+R': 'justifyRight', + 'CMD+SHIFT+J': 'justifyFull', + 'CMD+SHIFT+NUM7': 'insertUnorderedList', + 'CMD+SHIFT+NUM8': 'insertOrderedList', + 'CMD+LEFTBRACKET': 'outdent', + 'CMD+RIGHTBRACKET': 'indent', + 'CMD+NUM0': 'formatPara', + 'CMD+NUM1': 'formatH1', + 'CMD+NUM2': 'formatH2', + 'CMD+NUM3': 'formatH3', + 'CMD+NUM4': 'formatH4', + 'CMD+NUM5': 'formatH5', + 'CMD+NUM6': 'formatH6', + 'CMD+ENTER': 'insertHorizontalRule', + 'CMD+K': 'showLinkDialog' + } + } + }, + + // default language: en-US + lang: { + 'en-US': { + font: { + bold: 'Bold', + italic: 'Italic', + underline: 'Underline', + clear: 'Remove Font Style', + height: 'Line Height', + name: 'Font Family', + strikethrough: 'Strikethrough', + subscript: 'Subscript', + superscript: 'Superscript', + size: 'Font Size' + }, + image: { + image: 'Picture', + insert: 'Insert Image', + resizeFull: 'Resize Full', + resizeHalf: 'Resize Half', + resizeQuarter: 'Resize Quarter', + floatLeft: 'Float Left', + floatRight: 'Float Right', + floatNone: 'Float None', + shapeRounded: 'Shape: Rounded', + shapeCircle: 'Shape: Circle', + bordered: 'Bordered', + shapeThumbnail: 'Shape: Thumbnail', + shapeNone: 'Shape: None', + dragImageHere: 'Drag image or text here', + dropImage: 'Drop image or Text', + selectFromFiles: 'Select from files', + maximumFileSize: 'Maximum file size', + maximumFileSizeError: 'Maximum file size exceeded.', + url: 'Image URL', + remove: 'Remove Image' + }, + link: { + link: 'Link', + insert: 'Insert Link', + unlink: 'Unlink', + edit: 'Edit', + textToDisplay: 'Text to display', + url: 'To what URL should this link go?', + openInNewWindow: 'Open in new window' + }, + table: { + table: 'Table', + striped: 'Striped', + hoverable: 'Hoverable', + responsive: 'Responsive', + bordered: 'Bordered' + }, + hr: { + insert: 'Insert Horizontal Rule' + }, + style: { + style: 'Style', + normal: 'Normal', + blockquote: 'Quote', + pre: 'Code', + h1: 'Header 1', + h2: 'Header 2', + h3: 'Header 3', + h4: 'Header 4', + h5: 'Header 5', + h6: 'Header 6' + }, + lists: { + unordered: 'Unordered list', + ordered: 'Ordered list' + }, + options: { + help: 'Help', + fullscreen: 'Full Screen', + codeview: 'Code View' + }, + paragraph: { + paragraph: 'Paragraph', + outdent: 'Outdent', + indent: 'Indent', + left: 'Align left', + center: 'Align center', + right: 'Align right', + justify: 'Justify full' + }, + color: { + recent: 'Recent Color', + more: 'More Color', + background: 'Back', + foreground: 'Text', + transparent: 'Transparent', + setTransparent: 'Transparent', + reset: 'Reset', + resetToDefault: 'Default' + }, + shortcut: { + shortcuts: 'Keyboard shortcuts', + close: 'Close', + textFormatting: 'Text formatting', + action: 'Action', + paragraphFormatting: 'Paragraph formatting', + documentStyle: 'Document Style', + extraKeys: 'Extra keys' + }, + history: { + undo: 'Undo', + redo: 'Redo' + } + } + } + }; + + /** + * @class core.async + * + * Async functions which returns `Promise` + * + * @singleton + * @alternateClassName async + */ + var async = (function() { + /** + * @method readFileAsDataURL + * + * read contents of file as representing URL + * + * @param {File} file + * @return {Promise} - then: sDataUrl + */ + var readFileAsDataURL = function(file) { + return $.Deferred(function(deferred) { + $.extend(new FileReader(), { + onload: function(e) { + var sDataURL = e.target.result; + deferred.resolve(sDataURL); + }, + onerror: function() { + deferred.reject(this); + } + }).readAsDataURL(file); + }).promise(); + }; + + /** + * @method createImage + * + * create `<image>` from url string + * + * @param {String} sUrl + * @param {String} filename + * @return {Promise} - then: $image + */ + var createImage = function(sUrl, filename) { + return $.Deferred(function(deferred) { + var $img = $('<img>'); + + $img.one('load', function() { + $img.off('error abort'); + deferred.resolve($img); + }).one('error abort', function() { + $img.off('load').detach(); + deferred.reject($img); + }).css({ + display: 'none' + }).appendTo(document.body).attr({ + 'src': sUrl, + 'data-filename': filename + }); + }).promise(); + }; + + return { + readFileAsDataURL: readFileAsDataURL, + createImage: createImage + }; + })(); + + /** + * @class core.key + * + * Object for keycodes. + * + * @singleton + * @alternateClassName key + */ + var key = (function() { + var keyMap = { + 'BACKSPACE': 8, + 'TAB': 9, + 'ENTER': 13, + 'SPACE': 32, + + // Number: 0-9 + 'NUM0': 48, + 'NUM1': 49, + 'NUM2': 50, + 'NUM3': 51, + 'NUM4': 52, + 'NUM5': 53, + 'NUM6': 54, + 'NUM7': 55, + 'NUM8': 56, + + // Alphabet: a-z + 'B': 66, + 'E': 69, + 'I': 73, + 'J': 74, + 'K': 75, + 'L': 76, + 'R': 82, + 'S': 83, + 'U': 85, + 'Y': 89, + 'Z': 90, + + 'SLASH': 191, + 'LEFTBRACKET': 219, + 'BACKSLASH': 220, + 'RIGHTBRACKET': 221 + }; + + return { + /** + * @method isEdit + * + * @param {Number} keyCode + * @return {Boolean} + */ + isEdit: function(keyCode) { + return list.contains([8, 9, 13, 32], keyCode); + }, + /** + * @method isMove + * + * @param {Number} keyCode + * @return {Boolean} + */ + isMove: function(keyCode) { + return list.contains([37, 38, 39, 40], keyCode); + }, + /** + * @property {Object} nameFromCode + * @property {String} nameFromCode.8 "BACKSPACE" + */ + nameFromCode: func.invertObject(keyMap), + code: keyMap + }; + })(); + + /** + * @class editing.History + * + * Editor History + * + */ + var History = function($editable) { + var stack = [], stackOffset = -1; + var editable = $editable[0]; + + var makeSnapshot = function() { + var rng = range.create(); + var emptyBookmark = {s: {path: [], offset: 0}, e: {path: [], offset: 0}}; + + return { + contents: $editable.html(), + bookmark: (rng ? rng.bookmark(editable) : emptyBookmark) + }; + }; + + var applySnapshot = function(snapshot) { + if (snapshot.contents !== null) { + $editable.html(snapshot.contents); + } + if (snapshot.bookmark !== null) { + range.createFromBookmark(editable, snapshot.bookmark).select(); + } + }; + + /** + * undo + */ + this.undo = function() { + if (0 < stackOffset) { + stackOffset--; + applySnapshot(stack[stackOffset]); + } + }; + + /** + * redo + */ + this.redo = function() { + if (stack.length - 1 > stackOffset) { + stackOffset++; + applySnapshot(stack[stackOffset]); + } + }; + + /** + * recorded undo + */ + this.recordUndo = function() { + stackOffset++; + + // Wash out stack after stackOffset + if (stack.length > stackOffset) { + stack = stack.slice(0, stackOffset); + } + + // Create new snapshot and push it to the end + stack.push(makeSnapshot()); + }; + + // Create first undo stack + this.recordUndo(); + }; + + /** + * @class editing.Style + * + * Style + * + */ + var Style = function() { + /** + * @method jQueryCSS + * + * [workaround] for old jQuery + * passing an array of style properties to .css() + * will result in an object of property-value pairs. + * (compability with version < 1.9) + * + * @private + * @param {jQuery} $obj + * @param {Array} propertyNames - An array of one or more CSS properties. + * @return {Object} + */ + var jQueryCSS = function($obj, propertyNames) { + if (agent.jqueryVersion < 1.9) { + var result = {}; + $.each(propertyNames, function(idx, propertyName) { + result[propertyName] = $obj.css(propertyName); + }); + return result; + } + return $obj.css.call($obj, propertyNames); + }; + + /** + * paragraph level style + * + * @param {WrappedRange} rng + * @param {Object} styleInfo + */ + this.stylePara = function(rng, styleInfo) { + $.each(rng.nodes(dom.isPara, { + includeAncestor: true + }), function(idx, para) { + $(para).css(styleInfo); + }); + }; + + /** + * insert and returns styleNodes on range. + * + * @param {WrappedRange} rng + * @param {Object} [options] - options for styleNodes + * @param {String} [options.nodeName] - default: `SPAN` + * @param {Boolean} [options.expandClosestSibling] - default: `false` + * @param {Boolean} [options.onlyPartialContains] - default: `false` + * @return {Node[]} + */ + this.styleNodes = function(rng, options) { + rng = rng.splitText(); + + var nodeName = options && options.nodeName || 'SPAN'; + var expandClosestSibling = !!(options && options.expandClosestSibling); + var onlyPartialContains = !!(options && options.onlyPartialContains); + + if (rng.isCollapsed()) { + return [rng.insertNode(dom.create(nodeName))]; + } + + var pred = dom.makePredByNodeName(nodeName); + var nodes = $.map(rng.nodes(dom.isText, { + fullyContains: true + }), function(text) { + return dom.singleChildAncestor(text, pred) || dom.wrap(text, nodeName); + }); + + if (expandClosestSibling) { + if (onlyPartialContains) { + var nodesInRange = rng.nodes(); + // compose with partial contains predication + pred = func.and(pred, function(node) { + return list.contains(nodesInRange, node); + }); + } + + return $.map(nodes, function(node) { + var siblings = dom.withClosestSiblings(node, pred); + var head = list.head(siblings); + var tails = list.tail(siblings); + $.each(tails, function(idx, elem) { + dom.appendChildNodes(head, elem.childNodes); + dom.remove(elem); + }); + return list.head(siblings); + }); + } else { + return nodes; + } + }; + + /** + * get current style on cursor + * + * @param {WrappedRange} rng + * @param {Node} target - target element on event + * @return {Object} - object contains style properties. + */ + this.current = function(rng, target) { + var $cont = $(dom.isText(rng.sc) ? rng.sc.parentNode : rng.sc); + var properties = ['font-family', 'font-size', 'text-align', 'list-style-type', 'line-height']; + var styleInfo = jQueryCSS($cont, properties) || {}; + + styleInfo['font-size'] = parseInt(styleInfo['font-size'], 10); + + // document.queryCommandState for toggle state + styleInfo['font-bold'] = document.queryCommandState('bold') ? 'bold' : 'normal'; + styleInfo['font-italic'] = document.queryCommandState('italic') ? 'italic' : 'normal'; + styleInfo['font-underline'] = document.queryCommandState('underline') ? 'underline' : 'normal'; + styleInfo['font-strikethrough'] = document.queryCommandState('strikeThrough') ? 'strikethrough' : 'normal'; + styleInfo['font-superscript'] = document.queryCommandState('superscript') ? 'superscript' : 'normal'; + styleInfo['font-subscript'] = document.queryCommandState('subscript') ? 'subscript' : 'normal'; + + // list-style-type to list-style(unordered, ordered) + if (!rng.isOnList()) { + styleInfo['list-style'] = 'none'; + } else { + var aOrderedType = ['circle', 'disc', 'disc-leading-zero', 'square']; + var isUnordered = $.inArray(styleInfo['list-style-type'], aOrderedType) > -1; + styleInfo['list-style'] = isUnordered ? 'unordered' : 'ordered'; + } + + var para = dom.ancestor(rng.sc, dom.isPara); + if (para && para.style['line-height']) { + styleInfo['line-height'] = para.style.lineHeight; + } else { + var lineHeight = parseInt(styleInfo['line-height'], 10) / parseInt(styleInfo['font-size'], 10); + styleInfo['line-height'] = lineHeight.toFixed(1); + } + + styleInfo.image = dom.isImg(target) && target; + styleInfo.anchor = rng.isOnAnchor() && dom.ancestor(rng.sc, dom.isAnchor); + styleInfo.ancestors = dom.listAncestor(rng.sc, dom.isEditable); + styleInfo.range = rng; + + return styleInfo; + }; + }; + + + /** + * @class editing.Bullet + * + * @alternateClassName Bullet + */ + var Bullet = function() { + /** + * @method insertOrderedList + * + * toggle ordered list + * + * @type command + */ + this.insertOrderedList = function() { + this.toggleList('OL'); + }; + + /** + * @method insertUnorderedList + * + * toggle unordered list + * + * @type command + */ + this.insertUnorderedList = function() { + this.toggleList('UL'); + }; + + /** + * @method indent + * + * indent + * + * @type command + */ + this.indent = function() { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function(idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.wrapList(paras, head.parentNode.nodeName); + } else { + $.each(paras, function(idx, para) { + $(para).css('marginLeft', function(idx, val) { + return (parseInt(val, 10) || 0) + 25; + }); + }); + } + }); + + rng.select(); + }; + + /** + * @method outdent + * + * outdent + * + * @type command + */ + this.outdent = function() { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + $.each(clustereds, function(idx, paras) { + var head = list.head(paras); + if (dom.isLi(head)) { + self.releaseList([paras]); + } else { + $.each(paras, function(idx, para) { + $(para).css('marginLeft', function(idx, val) { + val = (parseInt(val, 10) || 0); + return val > 25 ? val - 25 : ''; + }); + }); + } + }); + + rng.select(); + }; + + /** + * @method toggleList + * + * toggle list + * + * @param {String} listName - OL or UL + */ + this.toggleList = function(listName) { + var self = this; + var rng = range.create().wrapBodyInlineWithPara(); + + var paras = rng.nodes(dom.isPara, { includeAncestor: true }); + var bookmark = rng.paraBookmark(paras); + var clustereds = list.clusterBy(paras, func.peq2('parentNode')); + + // paragraph to list + if (list.find(paras, dom.isPurePara)) { + var wrappedParas = []; + $.each(clustereds, function(idx, paras) { + wrappedParas = wrappedParas.concat(self.wrapList(paras, listName)); + }); + paras = wrappedParas; + // list to paragraph or change list style + } else { + var diffLists = rng.nodes(dom.isList, { + includeAncestor: true + }).filter(function(listNode) { + return !$.nodeName(listNode, listName); + }); + + if (diffLists.length) { + $.each(diffLists, function(idx, listNode) { + dom.replace(listNode, listName); + }); + } else { + paras = this.releaseList(clustereds, true); + } + } + + range.createFromParaBookmark(bookmark, paras).select(); + }; + + /** + * @method wrapList + * + * @param {Node[]} paras + * @param {String} listName + * @return {Node[]} + */ + this.wrapList = function(paras, listName) { + var head = list.head(paras); + var last = list.last(paras); + + var prevList = dom.isList(head.previousSibling) && head.previousSibling; + var nextList = dom.isList(last.nextSibling) && last.nextSibling; + + var listNode = prevList || dom.insertAfter(dom.create(listName || 'UL'), last); + + // P to LI + paras = $.map(paras, function(para) { + return dom.isPurePara(para) ? dom.replace(para, 'LI') : para; + }); + + // append to list(<ul>, <ol>) + dom.appendChildNodes(listNode, paras); + + if (nextList) { + dom.appendChildNodes(listNode, list.from(nextList.childNodes)); + dom.remove(nextList); + } + + return paras; + }; + + /** + * @method releaseList + * + * @param {Array[]} clustereds + * @param {Boolean} isEscapseToBody + * @return {Node[]} + */ + this.releaseList = function(clustereds, isEscapseToBody) { + var releasedParas = []; + + $.each(clustereds, function(idx, paras) { + var head = list.head(paras); + var last = list.last(paras); + + var headList = isEscapseToBody ? dom.lastAncestor(head, dom.isList) : + head.parentNode; + var lastList = headList.childNodes.length > 1 ? dom.splitTree(headList, { + node: last.parentNode, + offset: dom.position(last) + 1 + }, { + isSkipPaddingBlankHTML: true + }) : null; + + var middleList = dom.splitTree(headList, { + node: head.parentNode, + offset: dom.position(head) + }, { + isSkipPaddingBlankHTML: true + }); + + paras = isEscapseToBody ? dom.listDescendant(middleList, dom.isLi) : + list.from(middleList.childNodes).filter(dom.isLi); + + // LI to P + if (isEscapseToBody || !dom.isList(headList.parentNode)) { + paras = $.map(paras, function(para) { + return dom.replace(para, 'P'); + }); + } + + $.each(list.from(paras).reverse(), function(idx, para) { + dom.insertAfter(para, headList); + }); + + // remove empty lists + var rootLists = list.compact([headList, middleList, lastList]); + $.each(rootLists, function(idx, rootList) { + var listNodes = [rootList].concat(dom.listDescendant(rootList, dom.isList)); + $.each(listNodes.reverse(), function(idx, listNode) { + if (!dom.nodeLength(listNode)) { + dom.remove(listNode, true); + } + }); + }); + + releasedParas = releasedParas.concat(paras); + }); + + return releasedParas; + }; + }; + + + /** + * @class editing.Typing + * + * Typing + * + */ + var Typing = function() { + + // a Bullet instance to toggle lists off + var bullet = new Bullet(); + + /** + * insert tab + * + * @param {jQuery} $editable + * @param {WrappedRange} rng + * @param {Number} tabsize + */ + this.insertTab = function($editable, rng, tabsize) { + var tab = dom.createText(new Array(tabsize + 1).join(dom.NBSP_CHAR)); + rng = rng.deleteContents(); + rng.insertNode(tab, true); + + rng = range.create(tab, tabsize); + rng.select(); + }; + + /** + * insert paragraph + */ + this.insertParagraph = function() { + var rng = range.create(); + + // deleteContents on range. + rng = rng.deleteContents(); + + // Wrap range if it needs to be wrapped by paragraph + rng = rng.wrapBodyInlineWithPara(); + + // finding paragraph + var splitRoot = dom.ancestor(rng.sc, dom.isPara); + + var nextPara; + // on paragraph: split paragraph + if (splitRoot) { + // if it is an empty line with li + if (dom.isEmpty(splitRoot) && dom.isLi(splitRoot)) { + // disable UL/OL and escape! + bullet.toggleList(splitRoot.parentNode.nodeName); + return; + // if new line has content (not a line break) + } else { + nextPara = dom.splitTree(splitRoot, rng.getStartPoint()); + + var emptyAnchors = dom.listDescendant(splitRoot, dom.isEmptyAnchor); + emptyAnchors = emptyAnchors.concat(dom.listDescendant(nextPara, dom.isEmptyAnchor)); + + $.each(emptyAnchors, function(idx, anchor) { + dom.remove(anchor); + }); + } + // no paragraph: insert empty paragraph + } else { + var next = rng.sc.childNodes[rng.so]; + nextPara = $(dom.emptyPara)[0]; + if (next) { + rng.sc.insertBefore(nextPara, next); + } else { + rng.sc.appendChild(nextPara); + } + } + + range.create(nextPara, 0).normalize().select(); + + }; + + }; + + /** + * @class editing.Table + * + * Table + * + */ + var Table = function() { + /** + * handle tab key + * + * @param {WrappedRange} rng + * @param {Boolean} isShift + */ + this.tab = function(rng, isShift) { + var cell = dom.ancestor(rng.commonAncestor(), dom.isCell); + var table = dom.ancestor(cell, dom.isTable); + var cells = dom.listDescendant(table, dom.isCell); + + var nextCell = list[isShift ? 'prev' : 'next'](cells, cell); + if (nextCell) { + range.create(nextCell, 0).select(); + } + }; + + /** + * create empty table element + * + * @param {Number} rowCount + * @param {Number} colCount + * @return {Node} + */ + this.createTable = function(tOptions) { + var tds = [], tdHTML; + var theaders = []; + var colCount = tOptions[0]; + var rowCount = tOptions[1]; + var classes = tOptions.slice(2, tOptions.length); + + for (var idxCol = 0; idxCol < colCount; idxCol++) { + //tds.push('<td>' + dom.blank + '</td>'); + tds.push('<td>(item)</td>'); + theaders.push('<th>header</th>'); + } + tdHTML = tds.join(''); + theaders = theaders.join(''); + + var trs = [], trHTML; + for (var idxRow = 0; idxRow < rowCount; idxRow++) { + trs.push('<tr>' + tdHTML + '</tr>'); + } + trHTML = trs.join(''); + + return $('<table class="' + classes.join(' ') + '"><thead><tr>' + theaders + '</tr></thead><tbody>' + trHTML + '</tbody></table>')[0]; + }; + }; + + + var KEY_BOGUS = 'bogus'; + + /** + * @class editing.Editor + * + * Editor + * + */ + var Editor = function(handler) { + + var style = new Style(); + var table = new Table(); + var typing = new Typing(); + var bullet = new Bullet(); + + /** + * @method createRange + * + * create range + * + * @param {jQuery} $editable + * @return {WrappedRange} + */ + this.createRange = function($editable) { + this.focus($editable); + return range.create(); + }; + + /** + * @method saveRange + * + * save current range + * + * @param {jQuery} $editable + * @param {Boolean} [thenCollapse=false] + */ + this.saveRange = function($editable, thenCollapse) { + this.focus($editable); + $editable.data('range', range.create()); + if (thenCollapse) { + range.create().collapse().select(); + } + }; + + /** + * @method saveRange + * + * save current node list to $editable.data('childNodes') + * + * @param {jQuery} $editable + */ + this.saveNode = function($editable) { + // copy child node reference + var copy = []; + for (var key = 0, len = $editable[0].childNodes.length; key < len; key++) { + copy.push($editable[0].childNodes[key]); + } + $editable.data('childNodes', copy); + }; + + /** + * @method restoreRange + * + * restore lately range + * + * @param {jQuery} $editable + */ + this.restoreRange = function($editable) { + var rng = $editable.data('range'); + if (rng) { + rng.select(); + this.focus($editable); + } + }; + + /** + * @method restoreNode + * + * restore lately node list + * + * @param {jQuery} $editable + */ + this.restoreNode = function($editable) { + $editable.html(''); + var child = $editable.data('childNodes'); + for (var index = 0, len = child.length; index < len; index++) { + $editable[0].appendChild(child[index]); + } + }; + /** + * @method currentStyle + * + * current style + * + * @param {Node} target + * @return {Boolean} false if range is no + */ + this.currentStyle = function(target) { + var rng = range.create(); + return rng ? rng.isOnEditable() && style.current(rng, target) : false; + }; + + var triggerOnBeforeChange = function($editable) { + var $holder = dom.makeLayoutInfo($editable).holder(); + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'before.command' + )($editable.html(), $editable); + }; + + var triggerOnChange = function($editable) { + var $holder = dom.makeLayoutInfo($editable).holder(); + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'change' + )($editable.html(), $editable); + }; + + /** + * @method undo + * undo + * @param {jQuery} $editable + */ + this.undo = function($editable) { + triggerOnBeforeChange($editable); + $editable.data('NoteHistory').undo(); + triggerOnChange($editable); + }; + + /** + * @method redo + * redo + * @param {jQuery} $editable + */ + this.redo = function($editable) { + triggerOnBeforeChange($editable); + $editable.data('NoteHistory').redo(); + triggerOnChange($editable); + }; + + var self = this; + /** + * @method beforeCommand + * before command + * @param {jQuery} $editable + */ + var beforeCommand = this.beforeCommand = function($editable) { + triggerOnBeforeChange($editable); + // keep focus on editable before command execution + self.focus($editable); + }; + + /** + * @method afterCommand + * after command + * @param {jQuery} $editable + * @param {Boolean} isPreventTrigger + */ + var afterCommand = this.afterCommand = function($editable, isPreventTrigger) { + $editable.data('NoteHistory').recordUndo(); + if (!isPreventTrigger) { + triggerOnChange($editable); + } + }; + + /** + * @method bold + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method italic + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method underline + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method strikethrough + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method formatBlock + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method superscript + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method subscript + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyLeft + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyCenter + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyRight + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method justifyFull + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method formatBlock + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method removeFormat + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method backColor + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method foreColor + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method insertHorizontalRule + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /** + * @method fontName + * + * change font name + * + * @param {jQuery} $editable + * @param {Mixed} value + */ + + /* jshint ignore:start */ + // native commands(with execCommand), generate function for execCommand + // >>>>>>> CK + var commands = ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', + 'justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull', + 'formatBlock', 'removeFormat', + 'backColor', 'foreColor', 'fontName']; + + for (var idx = 0, len = commands.length; idx < len; idx ++) { + this[commands[idx]] = (function(sCmd) { + return function($editable, value) { + beforeCommand($editable); + + document.execCommand(sCmd, false, value); + + afterCommand($editable, true); + }; + })(commands[idx]); + } + /* jshint ignore:end */ + + this.insertHorizontalRule = function() { + var hrNode = $('<div />'); + hrNode.addClass('divider'); + + range.create().insertNode(hrNode[0]); + }; + + /** + * @method tab + * + * handle tab key + * + * @param {jQuery} $editable + * @param {Object} options + */ + this.tab = function($editable, options) { + var rng = this.createRange($editable); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng); + } else { + beforeCommand($editable); + typing.insertTab($editable, rng, options.tabsize); + afterCommand($editable); + } + }; + + /** + * @method untab + * + * handle shift+tab key + * + */ + this.untab = function($editable) { + var rng = this.createRange($editable); + if (rng.isCollapsed() && rng.isOnCell()) { + table.tab(rng, true); + } + }; + + /** + * @method insertParagraph + * + * insert paragraph + * + * @param {Node} $editable + */ + this.insertParagraph = function($editable) { + beforeCommand($editable); + typing.insertParagraph($editable); + afterCommand($editable); + }; + + /** + * @method insertOrderedList + * + * @param {jQuery} $editable + */ + this.insertOrderedList = function($editable) { + beforeCommand($editable); + bullet.insertOrderedList($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.insertUnorderedList = function($editable) { + beforeCommand($editable); + bullet.insertUnorderedList($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.indent = function($editable) { + beforeCommand($editable); + bullet.indent($editable); + afterCommand($editable); + }; + + /** + * @param {jQuery} $editable + */ + this.outdent = function($editable) { + beforeCommand($editable); + bullet.outdent($editable); + afterCommand($editable); + }; + + /** + * insert image + * + * @param {jQuery} $editable + * @param {String} sUrl + */ + this.insertImage = function($editable, sUrl, filename) { + async.createImage(sUrl, filename).then(function($image) { + beforeCommand($editable); + $image.css({ + display: '', + width: Math.min($editable.width(), $image.width()) + }); + range.create().insertNode($image[0]); + range.createFromNodeAfter($image[0]).select(); + afterCommand($editable); + }).fail(function() { + var $holder = dom.makeLayoutInfo($editable).holder(); + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'image.upload.error' + )(); + }); + }; + + /** + * @method insertNode + * insert node + * @param {Node} $editable + * @param {Node} node + */ + this.insertNode = function($editable, node) { + beforeCommand($editable); + range.create().insertNode(node); + range.createFromNodeAfter(node).select(); + afterCommand($editable); + }; + + /** + * insert text + * @param {Node} $editable + * @param {String} text + */ + this.insertText = function($editable, text) { + beforeCommand($editable); + var textNode = range.create().insertNode(dom.createText(text)); + range.create(textNode, dom.nodeLength(textNode)).select(); + afterCommand($editable); + }; + + /** + * paste HTML + * @param {Node} $editable + * @param {String} markup + */ + this.pasteHTML = function($editable, markup) { + beforeCommand($editable); + var contents = range.create().pasteHTML(markup); + range.createFromNodeAfter(list.last(contents)).select(); + afterCommand($editable); + }; + + /** + * formatBlock + * + * @param {jQuery} $editable + * @param {String} tagName + */ + this.formatBlock = function($editable, tagName) { + beforeCommand($editable); + // [workaround] for MSIE, IE need `<` + tagName = agent.isMSIE ? '<' + tagName + '>' : tagName; + document.execCommand('FormatBlock', false, tagName); + afterCommand($editable); + }; + + this.formatPara = function($editable) { + beforeCommand($editable); + this.formatBlock($editable, 'P'); + afterCommand($editable); + }; + + /* jshint ignore:start */ + for (var idx = 1; idx <= 6; idx ++) { + this['formatH' + idx] = function(idx) { + return function($editable) { + this.formatBlock($editable, 'H' + idx); + }; + }(idx); + }; + /* jshint ignore:end */ + + /** + * fontSize + * + * @param {jQuery} $editable + * @param {String} value - px + */ + this.fontSize = function($editable, value) { + var rng = range.create(); + var isCollapsed = rng.isCollapsed(); + + if (isCollapsed) { + var spans = style.styleNodes(rng); + var firstSpan = list.head(spans); + + $(spans).css({ + 'font-size': value + 'px' + }); + + // [workaround] added styled bogus span for style + // - also bogus character needed for cursor position + if (firstSpan && !dom.nodeLength(firstSpan)) { + firstSpan.innerHTML = dom.ZERO_WIDTH_NBSP_CHAR; + range.createFromNodeAfter(firstSpan.firstChild).select(); + $editable.data(KEY_BOGUS, firstSpan); + } + } else { + beforeCommand($editable); + $(style.styleNodes(rng)).css({ + 'font-size': value + 'px' + }); + afterCommand($editable); + } + }; + + /** + * remove bogus node and character + */ + this.removeBogus = function($editable) { + var bogusNode = $editable.data(KEY_BOGUS); + if (!bogusNode) { + return; + } + + var textNode = list.find(list.from(bogusNode.childNodes), dom.isText); + + var bogusCharIdx = textNode.nodeValue.indexOf(dom.ZERO_WIDTH_NBSP_CHAR); + if (bogusCharIdx !== -1) { + textNode.deleteData(bogusCharIdx, 1); + } + + if (dom.isEmpty(bogusNode)) { + dom.remove(bogusNode); + } + + $editable.removeData(KEY_BOGUS); + }; + + /** + * lineHeight + * @param {jQuery} $editable + * @param {String} value + */ + this.lineHeight = function($editable, value) { + beforeCommand($editable); + style.stylePara(range.create(), { + lineHeight: value + }); + afterCommand($editable); + }; + + /** + * unlink + * + * @type command + * + * @param {jQuery} $editable + */ + this.unlink = function($editable) { + var rng = this.createRange($editable); + if (rng.isOnAnchor()) { + var anchor = dom.ancestor(rng.sc, dom.isAnchor); + rng = range.createFromNode(anchor); + rng.select(); + + beforeCommand($editable); + document.execCommand('unlink'); + afterCommand($editable); + } + }; + + /** + * create link (command) + * + * @param {jQuery} $editable + * @param {Object} linkInfo + * @param {Object} options + */ + this.createLink = function($editable, linkInfo, options) { + var linkUrl = linkInfo.url; + var linkText = linkInfo.text; + var isNewWindow = linkInfo.newWindow; + var rng = linkInfo.range; + var isTextChanged = rng.toString() !== linkText; + + beforeCommand($editable); + + if (options.onCreateLink) { + linkUrl = options.onCreateLink(linkUrl); + } + + var anchors = []; + if (isTextChanged) { + // Create a new link when text changed. + var anchor = rng.insertNode($('<A>' + linkText + '</A>')[0]); + anchors.push(anchor); + } else { + anchors = style.styleNodes(rng, { + nodeName: 'A', + expandClosestSibling: true, + onlyPartialContains: true + }); + } + + $.each(anchors, function(idx, anchor) { + $(anchor).attr('href', linkUrl); + if (isNewWindow) { + $(anchor).attr('target', '_blank'); + } else { + $(anchor).removeAttr('target'); + } + }); + + var startRange = range.createFromNodeBefore(list.head(anchors)); + var startPoint = startRange.getStartPoint(); + var endRange = range.createFromNodeAfter(list.last(anchors)); + var endPoint = endRange.getEndPoint(); + + range.create( + startPoint.node, + startPoint.offset, + endPoint.node, + endPoint.offset + ).select(); + + afterCommand($editable); + }; + + /** + * returns link info + * + * @return {Object} + * @return {WrappedRange} return.range + * @return {String} return.text + * @return {Boolean} [return.isNewWindow=true] + * @return {String} [return.url=''] + */ + this.getLinkInfo = function($editable) { + this.focus($editable); + + var rng = range.create().expand(dom.isAnchor); + + // Get the first anchor on range(for edit). + var $anchor = $(list.head(rng.nodes(dom.isAnchor))); + + return { + range: rng, + text: rng.toString(), + isNewWindow: $anchor.length ? $anchor.attr('target') === '_blank' : false, + url: $anchor.length ? $anchor.attr('href') : '' + }; + }; + + /** + * setting color + * + * @param {Node} $editable + * @param {Object} sObjColor color code + * @param {String} sObjColor.foreColor foreground color + * @param {String} sObjColor.backColor background color + */ + this.color = function($editable, sObjColor) { + var oColor = JSON.parse(sObjColor); + var foreColor = oColor.foreColor, backColor = oColor.backColor; + + beforeCommand($editable); + + if (foreColor) { document.execCommand('foreColor', false, foreColor); } + if (backColor) { document.execCommand('backColor', false, backColor); } + + afterCommand($editable); + }; + + /** + * insert Table + * + * @param {Node} $editable + * @param {String} sDim dimension of table (ex : "5x5") + */ + this.insertTable = function($editable, sDim) { + var tOptions = sDim.split('x'); + beforeCommand($editable); + + var rng = range.create().deleteContents(); + rng.insertNode(table.createTable(tOptions)); + afterCommand($editable); + }; + + /** + * float me + * + * @param {jQuery} $editable + * @param {String} value + * @param {jQuery} $target + */ + this.floatMe = function($editable, value, $target) { + beforeCommand($editable); + $target.css('float', value); + afterCommand($editable); + }; + + /** + * change image shape + * + * @param {jQuery} $editable + * @param {String} value css class + * @param {Node} $target + */ + this.imageShape = function($editable, value, $target) { + beforeCommand($editable); + + $target.removeClass('img-rounded img-circle img-thumbnail img-bordered'); + + if (value) { + $target.addClass(value); + } + + afterCommand($editable); + }; + + /** + * >>>>>>> CK + * change image class + * + * @param {jQuery} $editable + * @param {String} value css class + * @param {Node} $target + */ + this.imageClass = function($editable, value, $target) { + beforeCommand($editable); + + if (value) { + if ($target.hasClass(value)) { + $target.removeClass(value); + } else { + $target.addClass(value); + } + } + + afterCommand($editable); + }; + + /** + * resize overlay element + * @param {jQuery} $editable + * @param {String} value + * @param {jQuery} $target - target element + */ + this.resize = function($editable, value, $target) { + beforeCommand($editable); + + $target.css({ + width: value * 100 + '%', + height: '' + }); + + afterCommand($editable); + }; + + /** + * @param {Position} pos + * @param {jQuery} $target - target element + * @param {Boolean} [bKeepRatio] - keep ratio + */ + this.resizeTo = function(pos, $target, bKeepRatio) { + var imageSize; + if (bKeepRatio) { + var newRatio = pos.y / pos.x; + var ratio = $target.data('ratio'); + imageSize = { + width: ratio > newRatio ? pos.x : pos.y / ratio, + height: ratio > newRatio ? pos.x * ratio : pos.y + }; + } else { + imageSize = { + width: pos.x, + height: pos.y + }; + } + + $target.css(imageSize); + }; + + /** + * remove media object + * + * @param {jQuery} $editable + * @param {String} value - dummy argument (for keep interface) + * @param {jQuery} $target - target element + */ + this.removeMedia = function($editable, value, $target) { + beforeCommand($editable); + $target.detach(); + + handler.bindCustomEvent( + $(), $editable.data('callbacks'), 'media.delete' + )($target, $editable); + + afterCommand($editable); + }; + + /** + * set focus + * + * @param $editable + */ + this.focus = function($editable) { + $editable.focus(); + + // [workaround] for firefox bug http://goo.gl/lVfAaI + if (agent.isFF && !range.create().isOnEditable()) { + range.createFromNode($editable[0]) + .normalize() + .collapse() + .select(); + } + }; + + /** + * returns whether contents is empty or not. + * + * @param {jQuery} $editable + * @return {Boolean} + */ + this.isEmpty = function($editable) { + return dom.isEmpty($editable[0]) || dom.emptyPara === $editable.html(); + }; + }; + + /** + * @class module.Button + * + * Button + */ + var Button = function() { + /** + * update button status + * + * @param {jQuery} $container + * @param {Object} styleInfo + */ + this.update = function($container, styleInfo) { + /** + * handle dropdown's check mark (for fontname, fontsize, lineHeight). + * @param {jQuery} $btn + * @param {Number} value + */ + var checkDropdownMenu = function($btn, value) { + $btn.find('.dropdown-menu li').each(function() { + + var div = $(this).children('div'); + var currentValue = div.data('value'); + + // always compare string to avoid creating another func. + if ((currentValue + '') === (value + '')) { + div.children('i').removeClass('transparent'); + } else { + div.children('i').addClass('transparent'); + } + }); + }; + + /** + * update button state(active or not). + * + * @private + * @param {String} selector + * @param {Function} pred + */ + var btnState = function(selector, pred) { + var $btn = $container.find(selector); + + $btn.toggleClass('active', pred()); + }; + + if (styleInfo.image) { + var $img = $(styleInfo.image); + + btnState('.btn[data-event="imageClass"][data-value="img-rounded"]', function() { + return $img.hasClass('img-rounded'); + }); + btnState('.btn[data-event="imageClass"][data-value="img-circle"]', function() { + return $img.hasClass('img-circle'); + }); + btnState('.btn[data-event="imageClass"][data-value="img-thumbnail"]', function() { + return $img.hasClass('img-thumbnail'); + }); + btnState('.btn[data-event="imageClass"][data-value="img-bordered"]', function() { + return $img.hasClass('img-bordered'); + }); + btnState('.btn[data-event="imageShape"]:not([data-value])', function() { + return !$img.is('.img-rounded, .img-circle, .img-thumbnail, .img-bordered'); + }); + + var imgFloat = $img.css('float'); + btnState('.btn[data-event="floatMe"][data-value="left"]', function() { + return imgFloat === 'left'; + }); + btnState('.btn[data-event="floatMe"][data-value="right"]', function() { + return imgFloat === 'right'; + }); + btnState('.btn[data-event="floatMe"][data-value="none"]', function() { + return imgFloat !== 'left' && imgFloat !== 'right'; + }); + + var style = $img.attr('style'); + btnState('.btn[data-event="resize"][data-value="1"]', function() { + return !!/(^|\s)(max-)?width\s*:\s*100%/.test(style); + }); + btnState('.btn[data-event="resize"][data-value="0.5"]', function() { + return !!/(^|\s)(max-)?width\s*:\s*50%/.test(style); + }); + btnState('.btn[data-event="resize"][data-value="0.25"]', function() { + return !!/(^|\s)(max-)?width\s*:\s*25%/.test(style); + }); + return; + } + + // fontname + var $fontname = $container.find('.note-fontname[data-name=fontname]'); + if ($fontname.length) { + var selectedFont = styleInfo['font-family']; + if (!!selectedFont) { + + var list = selectedFont.split(','); + for (var i = 0, len = list.length; i < len; i++) { + selectedFont = list[i].replace(/[\'\"]/g, '').replace(/\s+$/, '').replace(/^\s+/, ''); + if (agent.isFontInstalled(selectedFont)) { + break; + } + } + + $fontname.find('.note-current-fontname').text(selectedFont); + checkDropdownMenu($fontname, selectedFont); + + } + } + + // fontsize + var $fontsize = $container.find('.note-fontsize[data-name=fontsize]'); + $fontsize.find('.note-current-fontsize').text(styleInfo['font-size']); + checkDropdownMenu($fontsize, parseFloat(styleInfo['font-size'])); + + // lineheight + var $lineHeight = $container.find('.note-height[data-name=lineheight]'); + checkDropdownMenu($lineHeight, parseFloat(styleInfo['line-height'])); + + btnState('.btn[data-event="bold"]', function() { + return styleInfo['font-bold'] === 'bold'; + }); + btnState('.btn[data-event="italic"]', function() { + return styleInfo['font-italic'] === 'italic'; + }); + btnState('.btn[data-event="underline"]', function() { + return styleInfo['font-underline'] === 'underline'; + }); + btnState('.btn[data-event="strikethrough"]', function() { + return styleInfo['font-strikethrough'] === 'strikethrough'; + }); + btnState('.btn[data-event="superscript"]', function() { + return styleInfo['font-superscript'] === 'superscript'; + }); + btnState('.btn[data-event="subscript"]', function() { + return styleInfo['font-subscript'] === 'subscript'; + }); + btnState('.btn[data-event="justifyLeft"]', function() { + return styleInfo['text-align'] === 'left' || styleInfo['text-align'] === 'start'; + }); + btnState('.btn[data-event="justifyCenter"]', function() { + return styleInfo['text-align'] === 'center'; + }); + btnState('.btn[data-event="justifyRight"]', function() { + return styleInfo['text-align'] === 'right'; + }); + btnState('.btn[data-event="justifyFull"]', function() { + return styleInfo['text-align'] === 'justify'; + }); + btnState('.btn[data-event="insertUnorderedList"]', function() { + return styleInfo['list-style'] === 'unordered'; + }); + btnState('.btn[data-event="insertOrderedList"]', function() { + return styleInfo['list-style'] === 'ordered'; + }); + }; + + /** + * update recent color + * + * @param {Node} button + * @param {String} eventName + * @param {Mixed} value + */ + this.updateRecentColor = function(button, eventName, value) { + var $color = $(button).closest('.note-color'); + var $recentColor = $color.find('.note-recent-color'); + var colorInfo = JSON.parse($recentColor.attr('data-value')); + var sKey = eventName === 'backColor' ? 'background-color' : 'color'; + + colorInfo[eventName] = value; + $recentColor.attr('data-value', JSON.stringify(colorInfo)); + $recentColor.css(sKey, value); + }; + }; + + /** + * @class module.Toolbar + * + * Toolbar + */ + var Toolbar = function() { + var button = new Button(); + + this.update = function($toolbar, styleInfo) { + button.update($toolbar, styleInfo); + }; + + /** + * @param {Node} button + * @param {String} eventName + * @param {String} value + */ + this.updateRecentColor = function(buttonNode, eventName, value) { + button.updateRecentColor(buttonNode, eventName, value); + }; + + /** + * activate buttons exclude codeview + * @param {jQuery} $toolbar + */ + this.activate = function($toolbar) { + $toolbar.find('button, .btn') + .not('.btn[data-event="codeview"]') + .removeClass('disabled'); + }; + + /** + * deactivate buttons exclude codeview + * @param {jQuery} $toolbar + */ + this.deactivate = function($toolbar) { + $toolbar.find('button, .btn') + .not('.btn[data-event="codeview"]') + .addClass('disabled'); + }; + + /** + * @param {jQuery} $container + * @param {Boolean} [bFullscreen=false] + */ + this.updateFullscreen = function($container, bFullscreen) { + var $btn = $container.find('.btn[data-event="fullscreen"]'); + $btn.toggleClass('active', bFullscreen); + }; + + /** + * @param {jQuery} $container + * @param {Boolean} [isCodeview=false] + */ + this.updateCodeview = function($container, isCodeview) { + var $btn = $container.find('.btn[data-event="codeview"]'); + $btn.toggleClass('active', isCodeview); + + if (isCodeview) { + this.deactivate($container); + } else { + this.activate($container); + } + }; + + /** + * get button in toolbar + * + * @param {jQuery} $editable + * @param {String} name + * @return {jQuery} + */ + this.get = function($editable, name) { + var $toolbar = dom.makeLayoutInfo($editable).toolbar(); + + return $toolbar.find('[data-name=' + name + ']'); + }; + + /** + * set button state + * @param {jQuery} $editable + * @param {String} name + * @param {Boolean} [isActive=true] + */ + this.setButtonState = function($editable, name, isActive) { + isActive = (isActive === false) ? false : true; + + var $button = this.get($editable, name); + $button.toggleClass('active', isActive); + }; + }; + + var EDITABLE_PADDING = 24; + + var Statusbar = function() { + var $document = $(document); + + this.attach = function(layoutInfo, options) { + if (!options.disableResizeEditor) { + layoutInfo.statusbar().on('mousedown', hStatusbarMousedown); + } + }; + + /** + * `mousedown` event handler on statusbar + * + * @param {MouseEvent} event + */ + var hStatusbarMousedown = function(event) { + event.preventDefault(); + event.stopPropagation(); + + var $editable = dom.makeLayoutInfo(event.target).editable(); + var editableTop = $editable.offset().top - $document.scrollTop(); + + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + var options = layoutInfo.editor().data('options'); + + $document.on('mousemove', function(event) { + var nHeight = event.clientY - (editableTop + EDITABLE_PADDING); + + nHeight = (options.minHeight > 0) ? Math.max(nHeight, options.minHeight) : nHeight; + nHeight = (options.maxHeight > 0) ? Math.min(nHeight, options.maxHeight) : nHeight; + + $editable.height(nHeight); + }).one('mouseup', function() { + $document.off('mousemove'); + }); + }; + }; + + /** + * @class module.Popover + * + * Popover (http://getbootstrap.com/javascript/#popovers) + * + */ + var Popover = function() { + var button = new Button(); + + /** + * returns position from placeholder + * + * @private + * @param {Node} placeholder + * @param {Boolean} isAirMode + * @return {Object} + * @return {Number} return.left + * @return {Number} return.top + */ + var posFromPlaceholder = function(placeholder, isAirMode) { + var $placeholder = $(placeholder); + var pos = isAirMode ? $placeholder.offset() : $placeholder.position(); + var height = $placeholder.outerHeight(true); // include margin + + // popover below placeholder. + return { + left: pos.left, + top: pos.top + height + }; + }; + + /** + * show popover + * + * @private + * @param {jQuery} popover + * @param {Position} pos + */ + var showPopover = function($popover, pos) { + $popover.css({ + display: 'block', + left: pos.left, + top: pos.top + }); + }; + + var PX_POPOVER_ARROW_OFFSET_X = 20; + + /** + * update current state + * @param {jQuery} $popover - popover container + * @param {Object} styleInfo - style object + * @param {Boolean} isAirMode + */ + this.update = function($popover, styleInfo, isAirMode) { + button.update($popover, styleInfo); + + var $linkPopover = $popover.find('.note-link-popover'); + if (styleInfo.anchor) { + var $anchor = $linkPopover.find('a'); + var href = $(styleInfo.anchor).attr('href'); + var target = $(styleInfo.anchor).attr('target'); + $anchor.attr('href', href).html(href); + if (!target) { + $anchor.removeAttr('target'); + } else { + $anchor.attr('target', '_blank'); + } + showPopover($linkPopover, posFromPlaceholder(styleInfo.anchor, isAirMode)); + } else { + $linkPopover.hide(); + } + + var $imagePopover = $popover.find('.note-image-popover'); + if (styleInfo.image) { + showPopover($imagePopover, posFromPlaceholder(styleInfo.image, isAirMode)); + } else { + $imagePopover.hide(); + } + + var $airPopover = $popover.find('.note-air-popover'); + if (isAirMode && !styleInfo.range.isCollapsed()) { + var rect = list.last(styleInfo.range.getClientRects()); + if (rect) { + var bnd = func.rect2bnd(rect); + showPopover($airPopover, { + left: Math.max(bnd.left + bnd.width / 2 - PX_POPOVER_ARROW_OFFSET_X, 0), + top: bnd.top + bnd.height + }); + } + } else { + $airPopover.hide(); + } + }; + + /** + * @param {Node} button + * @param {String} eventName + * @param {String} value + */ + this.updateRecentColor = function(button, eventName, value) { + button.updateRecentColor(button, eventName, value); + }; + + /** + * hide all popovers + * @param {jQuery} $popover - popover container + */ + this.hide = function($popover) { + $popover.children().hide(); + }; + }; + + /** + * @class module.Handle + * + * Handle + */ + var Handle = function(handler) { + var $document = $(document); + + /** + * `mousedown` event handler on $handle + * - controlSizing: resize image + * + * @param {MouseEvent} event + */ + var hHandleMousedown = function(event) { + if (dom.isControlSizing(event.target)) { + event.preventDefault(); + event.stopPropagation(); + + var layoutInfo = dom.makeLayoutInfo(event.target), + $handle = layoutInfo.handle(), + $popover = layoutInfo.popover(), + $editable = layoutInfo.editable(), + $editor = layoutInfo.editor(); + + var target = $handle.find('.note-control-selection').data('target'), + $target = $(target), posStart = $target.offset(), + scrollTop = $document.scrollTop(); + + var isAirMode = $editor.data('options').airMode; + + $document.on('mousemove', function(event) { + handler.invoke('editor.resizeTo', { + x: event.clientX - posStart.left, + y: event.clientY - (posStart.top - scrollTop) + }, $target, !event.shiftKey); + + handler.invoke('handle.update', $handle, {image: target}, isAirMode); + handler.invoke('popover.update', $popover, {image: target}, isAirMode); + }).one('mouseup', function() { + $document.off('mousemove'); + handler.invoke('editor.afterCommand', $editable); + }); + + if (!$target.data('ratio')) { // original ratio. + $target.data('ratio', $target.height() / $target.width()); + } + } + }; + + this.attach = function(layoutInfo) { + layoutInfo.handle().on('mousedown', hHandleMousedown); + }; + + /** + * update handle + * @param {jQuery} $handle + * @param {Object} styleInfo + * @param {Boolean} isAirMode + */ + this.update = function($handle, styleInfo, isAirMode) { + var $selection = $handle.find('.note-control-selection'); + if (styleInfo.image) { + var $image = $(styleInfo.image); + var pos = isAirMode ? $image.offset() : $image.position(); + + // include margin + var imageSize = { + w: $image.outerWidth(true), + h: $image.outerHeight(true) + }; + + $selection.css({ + display: 'block', + left: pos.left, + top: pos.top, + width: imageSize.w, + height: imageSize.h + }).data('target', styleInfo.image); // save current image element. + var sizingText = imageSize.w + 'x' + imageSize.h; + $selection.find('.note-control-selection-info').text(sizingText); + } else { + $selection.hide(); + } + }; + + /** + * hide + * + * @param {jQuery} $handle + */ + this.hide = function($handle) { + $handle.children().hide(); + }; + }; + + var Fullscreen = function(handler) { + var $window = $(window); + var $scrollbar = $('html, body'); + + /** + * toggle fullscreen + * + * @param {Object} layoutInfo + */ + this.toggle = function(layoutInfo) { + + var $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(); + + var resize = function(size) { + $editable.css('height', size.h); + $codable.css('height', size.h); + if ($codable.data('cmeditor')) { + $codable.data('cmeditor').setsize(null, size.h); + } + }; + + $editor.toggleClass('fullscreen'); + var isFullscreen = $editor.hasClass('fullscreen'); + if (isFullscreen) { + + $editable.data('orgheight', $editable.css('height')); + + $window.on('resize', function() { + resize({ + h: $window.height() - $toolbar.outerHeight() + }); + }).trigger('resize'); + + $scrollbar.css('overflow', 'hidden'); + $toolbar.css('top', 0); + } else { + $window.off('resize'); + resize({ + h: $editable.data('orgheight') + }); + $scrollbar.css('overflow', 'visible'); + } + + handler.invoke('toolbar.updateFullscreen', $toolbar, isFullscreen); + }; + }; + + + var CodeMirror; + if (agent.hasCodeMirror) { + if (agent.isSupportAmd) { + require(['CodeMirror'], function(cm) { + CodeMirror = cm; + }); + } else { + CodeMirror = window.CodeMirror; + } + } + + /** + * @class Codeview + */ + var Codeview = function(handler) { + + this.sync = function(layoutInfo) { + var isCodeview = handler.invoke('codeview.isActivated', layoutInfo); + if (isCodeview && agent.hasCodeMirror) { + layoutInfo.codable().data('cmEditor').save(); + } + }; + + /** + * @param {Object} layoutInfo + * @return {Boolean} + */ + this.isActivated = function(layoutInfo) { + var $editor = layoutInfo.editor(); + return $editor.hasClass('codeview'); + }; + + /** + * toggle codeview + * + * @param {Object} layoutInfo + */ + this.toggle = function(layoutInfo) { + if (this.isActivated(layoutInfo)) { + this.deactivate(layoutInfo); + } else { + this.activate(layoutInfo); + } + }; + + //var originalValue; + /** + * activate code view + * + * @param {Object} layoutInfo + */ + this.activate = function(layoutInfo) { + var $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(), + $popover = layoutInfo.popover(), + $handle = layoutInfo.handle(); + + var options = $editor.data('options'); + var codeString = dom.html($editable, false); + + // >>>>>>> CK indentation function + function beautifyHTML(code, level, insideLastBlock, dictionary) { + var openTag = code.indexOf('<'); + var closeTag = code.indexOf('>'); + var chunk; + + if (openTag === 0) { + //first thing is a tag + chunk = code.substring(0, closeTag + 1); + code = code.substring(closeTag + 1); + + if (chunk.indexOf("</") === 0) { + level--; + insideLastBlock = false; + } else { + if (insideLastBlock) { + level++; + } + + //check if current tag is a self closing tag (no indent next line in this case) + var found = false; + + for (var i = 0; i < dictionary.length; i++) { + if (chunk.indexOf(dictionary[i]) === 0) { + found = true; + break; + } + } + if (!found) { + insideLastBlock = true; + } else { + insideLastBlock = false; + } + } + } else { + //first thing is content + chunk = code.substring(0, openTag); + code = code.substring(openTag); + + if (insideLastBlock) { + level++; + } + insideLastBlock = false; + } + chunk = new Array(level + 1).join(' ') + chunk.trim(); + + //console.log(level); + //console.log(chunk); + //console.log(code); + + if (code.length === 0) { + return chunk; + } + return chunk + "\n" + beautifyHTML(code.trim(), level, insideLastBlock, dictionary); + } + + //originalValue = codeString; + + var selfCloseTags = ['<img', '<br', '<hr']; + codeString = beautifyHTML(codeString, 0, false, selfCloseTags); + // CK end ----------------------- + + $codable.val(codeString); + + var buttonHeight = $toolbar.find('.btn[data-event=codeview]').height(); + var areaHeight = $(window).height() - buttonHeight; + $codable.height($editable.height()); + + handler.invoke('toolbar.updateCodeview', $toolbar, true); + handler.invoke('popover.hide', $popover); + handler.invoke('handle.hide', $handle); + + $editor.addClass('codeview'); + + $codable.focus(); + + // activate CodeMirror as codable + if (agent.hasCodeMirror) { + var cmEditor = CodeMirror.fromTextArea($codable[0], options.codemirror); + + // CodeMirror TernServer + if (options.codemirror.tern) { + var server = new CodeMirror.TernServer(options.codemirror.tern); + cmEditor.ternServer = server; + cmEditor.on('cursorActivity', function(cm) { + server.updateArgHints(cm); + }); + } + + // CodeMirror hasn't Padding. + if ($editor.hasClass('fullscreen')) { + cmEditor.setSize(null, areaHeight); + } + else { + cmEditor.setSize(null, $editable.outerHeight()); + } + + $codable.data('cmEditor', cmEditor); + } + }; + + /** + * deactivate code view + * + * @param {Object} layoutInfo + */ + this.deactivate = function(layoutInfo) { + var $holder = layoutInfo.holder(), + $editor = layoutInfo.editor(), + $toolbar = layoutInfo.toolbar(), + $editable = layoutInfo.editable(), + $codable = layoutInfo.codable(); + + var options = $editor.data('options'); + + // deactivate CodeMirror as codable + if (agent.hasCodeMirror) { + var cmEditor = $codable.data('cmEditor'); + $codable.val(cmEditor.getValue()); + cmEditor.toTextArea(); + } + + var value = dom.value($codable, options.prettifyHtml) || dom.emptyPara; + //var value = originalValue; + var isChange = $editable.html() !== value; + + $editable.html(value); + $editable.height(options.height ? $codable.height() : 'auto'); + $editor.removeClass('codeview'); + + if (isChange) { + handler.bindCustomEvent( + $holder, $editable.data('callbacks'), 'change' + )($editable.html(), $editable); + } + + $editable.focus(); + + handler.invoke('toolbar.updateCodeview', $toolbar, false); + }; + }; + + var DragAndDrop = function(handler) { + var $document = $(document); + + /** + * attach Drag and Drop Events + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options + */ + this.attach = function(layoutInfo, options) { + if (options.airMode || options.disableDragAndDrop) { + // prevent default drop event + $document.on('drop', function(e) { + e.preventDefault(); + }); + } else { + this.attachDragAndDropEvent(layoutInfo, options); + } + }; + + /** + * attach Drag and Drop Events + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options + */ + this.attachDragAndDropEvent = function(layoutInfo, options) { + var collection = $(), + $editor = layoutInfo.editor(), + $dropzone = layoutInfo.dropzone(), + $dropzoneMessage = $dropzone.find('.note-dropzone-message'); + + // show dropzone on dragenter when dragging a object to document + // -but only if the editor is visible, i.e. has a positive width and height + $document.on('dragenter', function(e) { + var isCodeview = handler.invoke('codeview.isActivated', layoutInfo); + var hasEditorSize = $editor.width() > 0 && $editor.height() > 0; + if (!isCodeview && !collection.length && hasEditorSize) { + $editor.addClass('dragover'); + $dropzone.width($editor.width()); + $dropzone.height($editor.height()); + $dropzoneMessage.text(options.langInfo.image.dragImageHere); + } + collection = collection.add(e.target); + }).on('dragleave', function(e) { + collection = collection.not(e.target); + if (!collection.length) { + $editor.removeClass('dragover'); + } + }).on('drop', function() { + collection = $(); + $editor.removeClass('dragover'); + }); + + // change dropzone's message on hover. + $dropzone.on('dragenter', function() { + $dropzone.addClass('hover'); + $dropzoneMessage.text(options.langInfo.image.dropImage); + }).on('dragleave', function() { + $dropzone.removeClass('hover'); + $dropzoneMessage.text(options.langInfo.image.dragImageHere); + }); + + // attach dropImage + $dropzone.on('drop', function(event) { + + var dataTransfer = event.originalEvent.dataTransfer; + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + + if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { + event.preventDefault(); + layoutInfo.editable().focus(); + handler.insertImages(layoutInfo, dataTransfer.files); + } else { + var insertNodefunc = function() { + layoutInfo.holder().materialnote('insertNode', this); + }; + + for (var i = 0, len = dataTransfer.types.length; i < len; i++) { + var type = dataTransfer.types[i]; + var content = dataTransfer.getData(type); + + if (type.toLowerCase().indexOf('text') > -1) { + layoutInfo.holder().materialnote('pasteHTML', content); + } else { + $(content).each(insertNodefunc); + } + } + } + }).on('dragover', false); // prevent default dragover event + }; + }; + + var Clipboard = function(handler) { + + var $paste; + + this.attach = function(layoutInfo) { + + if (window.clipboardData || agent.isFF) { + $paste = $('<div />').attr('contenteditable', true).css({ + position : 'absolute', + left : -100000, + 'opacity' : 0 + }); + layoutInfo.editable().after($paste); + $paste.one('paste', hPasteClipboardImage); + + layoutInfo.editable().on('keydown', function(e) { + if (e.ctrlKey && e.keyCode === 86) { // CTRL+V + handler.invoke('saveRange', layoutInfo.editable()); + if ($paste) { + $paste.focus(); + } + } + }); + } + + layoutInfo.editable().on('paste', hPasteClipboardImage); + }; + + /** + * paste clipboard image + * + * @param {Event} event + */ + var hPasteClipboardImage = function(event) { + + var clipboardData = event.originalEvent.clipboardData; + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + var $editable = layoutInfo.editable(); + + if (!clipboardData || !clipboardData.items || !clipboardData.items.length) { + + var callbacks = $editable.data('callbacks'); + // only can run if it has onImageUpload method + if (!callbacks.onImageUpload) { + return; + } + + setTimeout(function() { + if (!$paste) { + return; + } + + var imgNode = $paste[0].firstChild; + if (!imgNode) { + return; + } + + handler.invoke('restoreRange', $editable); + if (!dom.isImg(imgNode)) { + handler.invoke('pasteHTML', $editable, $paste.html()); + } else { + var datauri = imgNode.src; + + var data = atob(datauri.split(',')[1]); + var array = new Uint8Array(data.length); + for (var i = 0; i < data.length; i++) { + array[i] = data.charCodeAt(i); + } + + var blob = new Blob([array], { type : 'image/png' }); + blob.name = 'clipboard.png'; + handler.invoke('focus', $editable); + handler.insertImages(layoutInfo, [blob]); + } + + $paste.remove(); + + }, 0); + + return; + } + + var item = list.head(clipboardData.items); + var isClipboardImage = item.kind === 'file' && item.type.indexOf('image/') !== -1; + + if (isClipboardImage) { + handler.insertImages(layoutInfo, [item.getAsFile()]); + } + + handler.invoke('editor.afterCommand', $editable); + }; + }; + + var LinkDialog = function(handler) { + + /** + * toggle button status + * + * @private + * @param {jQuery} $btn + * @param {Boolean} isEnable + */ + var toggleBtn = function($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }; + + /** + * bind enter key + * + * @private + * @param {jQuery} $input + * @param {jQuery} $btn + */ + var bindEnterKey = function($input, $btn) { + $input.on('keypress', function(event) { + if (event.keyCode === key.code.ENTER) { + $btn.trigger('click'); + } + }); + }; + + /** + * Show link dialog and set event handlers on dialog controls. + * + * @param {jQuery} $editable + * @param {jQuery} $dialog + * @param {Object} linkInfo + * @return {Promise} + */ + this.showLinkDialog = function($editable, $dialog, linkInfo) { + return $.Deferred(function(deferred) { + var $linkDialog = $dialog.find('.note-link-dialog'); + var $linkText = $linkDialog.find('.note-link-text'), + $linkTextLabel = $linkText.next('label'), + $linkUrl = $linkDialog.find('.note-link-url'), + $linkBtn = $linkDialog.find('.note-link-btn'), + $closeBtn = $linkDialog.find('.btnClose'); + var $openInNewWindow = $linkDialog.find('input[type=checkbox]'); + + $linkDialog.openModal(); + $linkText.val(linkInfo.text); + if (linkInfo.text.length > 0) $linkTextLabel.addClass('active'); + + $linkText.on('keyup', function() { + toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + // if linktext was modified by keyup, + // stop cloning text from linkUrl + linkInfo.text = $linkText.val(); + }); + + $closeBtn.click(function(event) { + event.preventDefault(); + + $linkDialog.closeModal(); + }); + + // if no url was given, copy text to url + if (!linkInfo.url) { + linkInfo.url = linkInfo.text || 'http://'; + toggleBtn($linkBtn, linkInfo.text); + } + + $linkUrl.on('keyup', function() { + toggleBtn($linkBtn, $linkText.val() && $linkUrl.val()); + // display same link on `Text to display` input + // when create a new link + if (!linkInfo.text) { + $linkTextLabel.addClass('active'); + $linkText.val($linkUrl.val()); + } + }).val(linkInfo.url).trigger('focus').trigger('select'); + + bindEnterKey($linkUrl, $linkBtn); + bindEnterKey($linkText, $linkBtn); + + $openInNewWindow.prop('checked', linkInfo.newWindow); + + $linkBtn.one('click', function(event) { + event.preventDefault(); + + deferred.resolve({ + range: linkInfo.range, + url: $linkUrl.val(), + text: $linkText.val(), + newWindow: $openInNewWindow.is(':checked') + }); + + $('.note-link-text').val(''); + $('.note-link-text').next('label').removeClass('active'); + $('.note-link-url').val(''); + $linkDialog.closeModal(); + }); + }).promise(); + }; + + /** + * @param {Object} layoutInfo + */ + this.show = function(layoutInfo) { + var $editor = layoutInfo.editor(), + $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(), + $popover = layoutInfo.popover(), + linkInfo = handler.invoke('editor.getLinkInfo', $editable); + + var options = $editor.data('options'); + + handler.invoke('editor.saveRange', $editable); + this.showLinkDialog($editable, $dialog, linkInfo).then(function(linkInfo) { + handler.invoke('editor.restoreRange', $editable); + handler.invoke('editor.createLink', $editable, linkInfo, options); + // hide popover after creating link + handler.invoke('popover.hide', $popover); + }).fail(function() { + handler.invoke('editor.restoreRange', $editable); + }); + }; + }; + + var ImageDialog = function(handler) { + /** + * toggle button status + * + * @private + * @param {jQuery} $btn + * @param {Boolean} isEnable + */ + var toggleBtn = function($btn, isEnable) { + $btn.toggleClass('disabled', !isEnable); + $btn.attr('disabled', !isEnable); + }; + + /** + * bind enter key + * + * @private + * @param {jQuery} $input + * @param {jQuery} $btn + */ + var bindEnterKey = function($input, $btn) { + $input.on('keypress', function(event) { + if (event.keyCode === key.code.ENTER) { + $btn.trigger('click'); + } + }); + }; + + this.show = function(layoutInfo) { + var $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(); + + handler.invoke('editor.saveRange', $editable); + this.showImageDialog($editable, $dialog).then(function(data) { + handler.invoke('editor.restoreRange', $editable); + + if (typeof data === 'string') { + // image url + handler.invoke('editor.insertImage', $editable, data); + } else { + // array of files + handler.insertImages(layoutInfo, data); + } + }).fail(function() { + handler.invoke('editor.restoreRange', $editable); + }); + }; + + /** + * show image dialog + * + * @param {jQuery} $editable + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showImageDialog = function($editable, $dialog) { + return $.Deferred(function(deferred) { + var $imageDialog = $dialog.find('.note-image-dialog'); + var $imageInput = $dialog.find('.note-image-input'), + $imageUrl = $dialog.find('.note-image-url'), + $imageBtn = $dialog.find('.note-image-btn'), + $closeBtn = $imageDialog.find('.btnClose'); + + $imageDialog.openModal(); + // Cloning imageInput to clear element. + $imageInput.replaceWith($imageInput.clone() + .on('change', function() { + deferred.resolve(this.files || this.value); + $imageUrl.val(''); + $imageDialog.closeModal(); + deferred.resolve(); + }) + .val('') + ); + + $imageBtn.click(function(event) { + event.preventDefault(); + + deferred.resolve($imageUrl.val()); + $imageUrl.val(''); + $imageDialog.closeModal(); + deferred.resolve(); + }); + + $closeBtn.click(function(event) { + event.preventDefault(); + + $imageDialog.closeModal(); + }); + + $imageUrl.on('keyup paste', function(event) { + var url; + + if (event.type === 'paste') { + url = event.originalEvent.clipboardData.getData('text'); + } else { + url = $imageUrl.val(); + } + toggleBtn($imageBtn, url); + }); + + bindEnterKey($imageUrl, $imageBtn); + }); + }; + }; + + var HelpDialog = function(handler) { + /** + * show help dialog + * + * @param {jQuery} $editable + * @param {jQuery} $dialog + * @return {Promise} + */ + this.showHelpDialog = function($editable, $dialog) { + return $.Deferred(function(deferred) { + var $helpDialog = $dialog.find('.note-help-dialog'); + + $helpDialog.openModal(); + deferred.resolve(); + }).promise(); + }; + + /** + * @param {Object} layoutInfo + */ + this.show = function(layoutInfo) { + var $dialog = layoutInfo.dialog(), + $editable = layoutInfo.editable(); + + handler.invoke('editor.saveRange', $editable, true); + this.showHelpDialog($editable, $dialog).then(function() { + handler.invoke('editor.restoreRange', $editable); + }); + }; + }; + + + /** + * @class EventHandler + * + * EventHandler + * - TODO: new instance per a editor + */ + var EventHandler = function() { + /** + * Modules + */ + var modules = this.modules = { + editor: new Editor(this), + toolbar: new Toolbar(this), + statusbar: new Statusbar(this), + popover: new Popover(this), + handle: new Handle(this), + fullscreen: new Fullscreen(this), + codeview: new Codeview(this), + dragAndDrop: new DragAndDrop(this), + clipboard: new Clipboard(this), + linkDialog: new LinkDialog(this), + imageDialog: new ImageDialog(this), + helpDialog: new HelpDialog(this) + }; + + /** + * invoke module's method + * + * @param {String} moduleAndMethod - ex) 'editor.redo' + * @param {...*} arguments - arguments of method + * @return {*} + */ + this.invoke = function() { + var moduleAndMethod = list.head(list.from(arguments)); + var args = list.tail(list.from(arguments)); + + var splits = moduleAndMethod.split('.'); + var hasSeparator = splits.length > 1; + var moduleName = hasSeparator && list.head(splits); + var methodName = hasSeparator ? list.last(splits) : list.head(splits); + + var module = this.getModule(moduleName); + var method = module[methodName]; + + return method && method.apply(module, args); + }; + + /** + * returns module + * + * @param {String} moduleName - name of module + * @return {Module} - defaults is editor + */ + this.getModule = function(moduleName) { + return this.modules[moduleName] || this.modules.editor; + }; + + /** + * @param {jQuery} $holder + * @param {Object} callbacks + * @param {String} eventNamespace + * @returns {Function} + */ + var bindCustomEvent = this.bindCustomEvent = function($holder, callbacks, eventNamespace) { + return function() { + var callback = callbacks[func.namespaceToCamel(eventNamespace, 'on')]; + if (callback) { + callback.apply($holder[0], arguments); + } + return $holder.trigger('materialnote.' + eventNamespace, arguments); + }; + }; + + /** + * insert Images from file array. + * + * @private + * @param {Object} layoutInfo + * @param {File[]} files + */ + this.insertImages = function(layoutInfo, files) { + var $editor = layoutInfo.editor(), + $editable = layoutInfo.editable(), + $holder = layoutInfo.holder(); + + var callbacks = $editable.data('callbacks'); + var options = $editor.data('options'); + + // If onImageUpload options setted + if (callbacks.onImageUpload) { + bindCustomEvent($holder, callbacks, 'image.upload')(files); + // else insert Image as dataURL + } else { + $.each(files, function(idx, file) { + var filename = file.name; + if (options.maximumImageFileSize && options.maximumImageFileSize < file.size) { + bindCustomEvent($holder, callbacks, 'image.upload.error')(options.langInfo.image.maximumFileSizeError); + } else { + async.readFileAsDataURL(file).then(function(sDataURL) { + modules.editor.insertImage($editable, sDataURL, filename); + }).fail(function() { + bindCustomEvent($holder, callbacks, 'image.upload.error')(options.langInfo.image.maximumFileSizeError); + }); + } + }); + } + }; + + var commands = { + /** + * @param {Object} layoutInfo + */ + showLinkDialog: function(layoutInfo) { + modules.linkDialog.show(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + showImageDialog: function(layoutInfo) { + modules.imageDialog.show(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + showHelpDialog: function(layoutInfo) { + modules.helpDialog.show(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + fullscreen: function(layoutInfo) { + modules.fullscreen.toggle(layoutInfo); + }, + + /** + * @param {Object} layoutInfo + */ + codeview: function(layoutInfo) { + modules.codeview.toggle(layoutInfo); + } + }; + + var hMousedown = function(event) { + //preventDefault Selection for FF, IE8+ + if (dom.isImg(event.target)) { + event.preventDefault(); + } + }; + + var hKeyupAndMouseup = function(event) { + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + modules.editor.removeBogus(layoutInfo.editable()); + hToolbarAndPopoverUpdate(event); + }; + + var hToolbarAndPopoverUpdate = function(event) { + // delay for range after mouseup + setTimeout(function() { + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + var styleInfo = modules.editor.currentStyle(event.target); + if (!styleInfo) { return; } + + var isAirMode = layoutInfo.editor().data('options').airMode; + if (!isAirMode) { + modules.toolbar.update(layoutInfo.toolbar(), styleInfo); + } + + modules.popover.update(layoutInfo.popover(), styleInfo, isAirMode); + modules.handle.update(layoutInfo.handle(), styleInfo, isAirMode); + }, 0); + }; + + var hScroll = function(event) { + var layoutInfo = dom.makeLayoutInfo(event.currentTarget || event.target); + //hide popover and handle when scrolled + modules.popover.hide(layoutInfo.popover()); + modules.handle.hide(layoutInfo.handle()); + }; + + var hToolbarAndPopoverMousedown = function(event) { + // prevent default event when insertTable (FF, Webkit) + var $btn = $(event.target).closest('[data-event]'); + if ($btn.length) { + event.preventDefault(); + } + }; + + var hToolbarAndPopoverClick = function(event) { + var $btn = $(event.target).closest('[data-event]'); + + if ($btn.length) { + var eventName = $btn.attr('data-event'), + value = $btn.attr('data-value'), + hide = $btn.attr('data-hide'); + + var layoutInfo = dom.makeLayoutInfo(event.target); + + // before command: detect control selection element($target) + var $target; + if ($.inArray(eventName, ['resize', 'floatMe', 'removeMedia', 'imageShape', 'imageClass']) !== -1) { + var $selection = layoutInfo.handle().find('.note-control-selection'); + $target = $($selection.data('target')); + } + + // If requested, hide the popover when the button is clicked. + // Useful for things like showHelpDialog. + if (hide) { + $btn.parents('.popover').hide(); + } + + if ($.isFunction($.materialnote.pluginEvents[eventName])) { + $.materialnote.pluginEvents[eventName](event, modules.editor, layoutInfo, value); + } else if (modules.editor[eventName]) { // on command + var $editable = layoutInfo.editable(); + $editable.focus(); + modules.editor[eventName]($editable, value, $target); + event.preventDefault(); + } else if (commands[eventName]) { + commands[eventName].call(this, layoutInfo); + event.preventDefault(); + } + + // after command + if ($.inArray(eventName, ['backColor', 'foreColor']) !== -1) { + var options = layoutInfo.editor().data('options', options); + var module = options.airMode ? modules.popover : modules.toolbar; + module.updateRecentColor(list.head($btn), eventName, value); + } + + hToolbarAndPopoverUpdate(event); + } + }; + + var gridUnit = 26; + var hDimensionPickerMove = function(event, options) { + var $picker = $(event.target.parentNode); // target is mousecatcher + var $dropdown = $picker.parent(); + var $dimensionDisplay = $picker.next(); + var $catcher = $picker.find('.note-dimension-picker-mousecatcher'); + var $highlighted = $picker.find('.note-dimension-picker-highlighted'); + var $unhighlighted = $picker.find('.note-dimension-picker-unhighlighted'); + var $hoverableOption = $dropdown.find("[id$='-hoverable']"); + var $borderedOption = $dropdown.find("[id$='-bordered']"); + var $stripedOption = $dropdown.find("[id$='-striped']"); + var $responsiveOption = $dropdown.find("[id$='-responsive']"); + + var posOffset; + // HTML5 with jQuery - e.offsetX is undefined in Firefox + if (event.offsetX === undefined) { + var posCatcher = $(event.target).offset(); + + posOffset = { + x: event.pageX - posCatcher.left, + y: event.pageY - posCatcher.top + }; + } else { + posOffset = { + x: event.offsetX, + y: event.offsetY + }; + } + + var dim = { + c: Math.ceil(posOffset.x / gridUnit) || 1, + r: Math.ceil(posOffset.y / gridUnit) || 1 + }; + /*console.log(posOffset); + console.log(dim); + console.log('------------------');*/ + + var tableOptions = []; + if ($hoverableOption.is(':checked')) tableOptions.push('hoverable'); + if ($borderedOption.is(':checked')) tableOptions.push('bordered'); + if ($stripedOption.is(':checked')) tableOptions.push('striped'); + if ($responsiveOption.is(':checked')) tableOptions.push('responsive-table'); + + $highlighted.css({ width: (dim.c * gridUnit) + 'px', height: (dim.r * gridUnit) + 'px' }); + $catcher.attr('data-value', dim.c + 'x' + dim.r + 'x' + tableOptions.join('x')); + + //if (3 < dim.c && dim.c < options.insertTableMaxSize.col) { + $unhighlighted.css({ width: (options.insertTableMaxSize * gridUnit) + 'px'}); + //} + + if (3 < dim.r && dim.r < options.insertTableMaxSize.row) { + $unhighlighted.css({ height: ((dim.r + 1) * gridUnit) + 'px'}); + } + + $dimensionDisplay.html(dim.c + ' x ' + dim.r); + }; + + /** + * bind KeyMap on keydown + * + * @param {Object} layoutInfo + * @param {Object} keyMap + */ + this.bindKeyMap = function(layoutInfo, keyMap) { + var $editor = layoutInfo.editor(); + var $editable = layoutInfo.editable(); + + $editable.on('keydown', function(event) { + var keys = []; + + // modifier + if (event.metaKey) { keys.push('CMD'); } + if (event.ctrlKey && !event.altKey) { keys.push('CTRL'); } + if (event.shiftKey) { keys.push('SHIFT'); } + + // keycode + var keyName = key.nameFromCode[event.keyCode]; + if (keyName) { + keys.push(keyName); + } + + var pluginEvent; + var keyString = keys.join('+'); + var eventName = keyMap[keyString]; + if (eventName) { + // FIXME materialnote doesn't support event pipeline yet. + // - Plugin -> Base Code + pluginEvent = $.materialnote.pluginEvents[keyString]; + if ($.isFunction(pluginEvent)) { + if (pluginEvent(event, modules.editor, layoutInfo)) { + return false; + } + } + + pluginEvent = $.materialnote.pluginEvents[eventName]; + + if ($.isFunction(pluginEvent)) { + pluginEvent(event, modules.editor, layoutInfo); + } else if (modules.editor[eventName]) { + modules.editor[eventName]($editable, $editor.data('options')); + event.preventDefault(); + } else if (commands[eventName]) { + commands[eventName].call(this, layoutInfo); + event.preventDefault(); + } + } else if (key.isEdit(event.keyCode)) { + modules.editor.afterCommand($editable); + } + }); + }; + + /** + * attach eventhandler + * + * @param {Object} layoutInfo - layout Informations + * @param {Object} options - user options include custom event handlers + */ + this.attach = function(layoutInfo, options) { + // handlers for editable + if (options.shortcuts) { + this.bindKeyMap(layoutInfo, options.keyMap[agent.isMac ? 'mac' : 'pc']); + } + layoutInfo.editable().on('mousedown', hMousedown); + layoutInfo.editable().on('keyup mouseup', hKeyupAndMouseup); + layoutInfo.editable().on('scroll', hScroll); + + // handler for clipboard + modules.clipboard.attach(layoutInfo, options); + + // handler for handle and popover + modules.handle.attach(layoutInfo, options); + layoutInfo.popover().on('click', hToolbarAndPopoverClick); + layoutInfo.popover().on('mousedown', hToolbarAndPopoverMousedown); + + // handler for drag and drop + modules.dragAndDrop.attach(layoutInfo, options); + + // handlers for frame mode (toolbar, statusbar) + if (!options.airMode) { + // handler for toolbar + layoutInfo.toolbar().on('click', hToolbarAndPopoverClick); + layoutInfo.toolbar().on('mousedown', hToolbarAndPopoverMousedown); + + // handler for statusbar + modules.statusbar.attach(layoutInfo, options); + } + + // handler for table dimension + var $catcherContainer = options.airMode ? layoutInfo.popover() : + layoutInfo.toolbar(); + var $catcher = $catcherContainer.find('.note-dimension-picker-mousecatcher'); + $catcher.css({ + width: options.insertTableMaxSize.col * gridUnit + 'px', + height: options.insertTableMaxSize.row * gridUnit + 'px' + }).on('mousemove', function(event) { + hDimensionPickerMove(event, options); + }); + + // save options on editor + layoutInfo.editor().data('options', options); + + // ret styleWithCSS for backColor / foreColor clearing with 'inherit'. + if (!agent.isMSIE) { + // [workaround] for Firefox + // - protect FF Error: NS_ERROR_FAILURE: Failure + setTimeout(function() { + document.execCommand('styleWithCSS', 0, options.styleWithSpan); + }, 0); + } + + // History + var history = new History(layoutInfo.editable()); + layoutInfo.editable().data('NoteHistory', history); + + // All editor status will be saved on editable with jquery's data + // for support multiple editor with singleton object. + layoutInfo.editable().data('callbacks', { + onInit: options.onInit, + onFocus: options.onFocus, + onBlur: options.onBlur, + onKeydown: options.onKeydown, + onKeyup: options.onKeyup, + onMousedown: options.onMousedown, + onEnter: options.onEnter, + onPaste: options.onPaste, + onBeforeCommand: options.onBeforeCommand, + onChange: options.onChange, + onImageUpload: options.onImageUpload, + onImageUploadError: options.onImageUploadError, + onMediaDelete: options.onMediaDelete, + onToolbarClick: options.onToolbarClick + }); + + // Textarea: auto filling the code before form submit. + if (dom.isTextarea(list.head(layoutInfo.holder()))) { + layoutInfo.holder().closest('form').submit(function() { + layoutInfo.holder().val(layoutInfo.holder().code()); + }); + } + }; + + /** + * attach jquery custom event + * + * @param {Object} layoutInfo - layout Informations + */ + this.attachCustomEvent = function(layoutInfo, options) { + var $holder = layoutInfo.holder(); + var $editable = layoutInfo.editable(); + var callbacks = $editable.data('callbacks'); + + $editable.focus(bindCustomEvent($holder, callbacks, 'focus')); + $editable.blur(bindCustomEvent($holder, callbacks, 'blur')); + + $editable.keydown(function(event) { + if (event.keyCode === key.code.ENTER) { + bindCustomEvent($holder, callbacks, 'enter').call(this, event); + } + bindCustomEvent($holder, callbacks, 'keydown').call(this, event); + }); + $editable.keyup(bindCustomEvent($holder, callbacks, 'keyup')); + + $editable.on('mousedown', bindCustomEvent($holder, callbacks, 'mousedown')); + $editable.on('mouseup', bindCustomEvent($holder, callbacks, 'mouseup')); + $editable.on('scroll', bindCustomEvent($holder, callbacks, 'scroll')); + + $editable.on('paste', bindCustomEvent($holder, callbacks, 'paste')); + + // [workaround] for old IE - IE8 don't have input events + // - TODO check IE version + var changeEventName = agent.isMSIE ? 'DOMCharacterDataModified DOMSubtreeModified DOMNodeInserted' : 'input'; + $editable.on(changeEventName, function() { + bindCustomEvent($holder, callbacks, 'change')($editable.html(), $editable); + }); + + if (!options.airMode) { + layoutInfo.toolbar().click(bindCustomEvent($holder, callbacks, 'toolbar.click')); + layoutInfo.popover().click(bindCustomEvent($holder, callbacks, 'popover.click')); + } + + // Textarea: auto filling the code before form submit. + if (dom.isTextarea(list.head($holder))) { + $holder.closest('form').submit(function(e) { + bindCustomEvent($holder, callbacks, 'submit').call(this, e, $holder.code()); + }); + } + + // fire init event + bindCustomEvent($holder, callbacks, 'init')(layoutInfo); + + // fire plugin init event + for (var i = 0, len = $.materialnote.plugins.length; i < len; i++) { + if ($.isFunction($.materialnote.plugins[i].init)) { + $.materialnote.plugins[i].init(layoutInfo); + } + } + }; + + this.detach = function(layoutInfo, options) { + layoutInfo.holder().off(); + layoutInfo.editable().off(); + + layoutInfo.popover().off(); + layoutInfo.handle().off(); + layoutInfo.dialog().off(); + + if (!options.airMode) { + layoutInfo.dropzone().off(); + layoutInfo.toolbar().off(); + layoutInfo.statusbar().off(); + } + }; + }; + + /** + * @class Renderer + * + * renderer + * + * rendering toolbar and editable + */ + var Renderer = function() { + + /** + * bootstrap button template + * @private + * @param {String} label button name + * @param {Object} [options] button options + * @param {String} [options.event] data-event + * @param {String} [options.className] button's class name + * @param {String} [options.value] data-value + * @param {String} [options.title] button's title for popup + * @param {String} [options.dropdown] dropdown html + * @param {String} [options.hide] data-hide + */ + + // >>>>>>> CK altered + var tplButton = function(label, options) { + var event = options.event; + var value = options.value; + var title = options.title; + var style = options.style; + var btnClassName = options.btnClassName; + var className = options.className; + var dropdown = options.dropdown; + var hide = options.hide; + + if (!dropdown) { + var button = [ + '<div class="waves-effect waves-light btn', + (className ? " " + className : '') + '"', + (title ? ' title="' + title + '"' : ''), + (style ? ' style="' + style + '"' : ''), + (event ? ' data-event="' + event + '"' : ''), + (value ? ' data-value=\'' + value + '\'' : ''), + (hide ? ' data-hide=\'' + hide + '\'' : ''), + ' tabindex="-1">' + label + '</div>' + ].join(''); + + return button; + } else { + var list = [ + '<div class="btn-group', + (className ? " " + className : '') + '">', + '<button class="waves-effect waves-light btn dropdown ' + (btnClassName ? btnClassName : '') + '"', + (title ? ' title="' + title + '"' : ''), + (event ? ' data-event="' + event + '"' : ''), + (value ? ' data-value=\'' + value + '\'' : ''), + (hide ? ' data-hide=\'' + hide + '\'' : ''), + '><i class="material-icons left">arrow_drop_down</i>' + label + '</button>', + dropdown, + '</div>' + ].join(''); + + return list; + } + }; + + /** + * bootstrap icon button template + * @private + * @param {String} iconClassName + * @param {Object} [options] + * @param {String} [options.event] + * @param {String} [options.value] + * @param {String} [options.title] + * @param {String} [options.dropdown] + */ + // >>>>>>> CK + var tplIconButton = function(iconClassName, options) { + var label = '<i class="material-icons">' + iconClassName + '</i>'; + return tplButton(label, options); + }; + + /** + * bootstrap popover template + * @private + * @param {String} className + * @param {String} content + */ + var tplPopover = function(className, content) { + var $popover = $('<div class="' + className + ' popover bottom in" style="display: none;">' + + '<div class="arrow"></div>' + + '<div class="popover-content">' + + '</div>' + + '</div>'); + + $popover.find('.popover-content').append(content); + return $popover; + }; + + /** + * bootstrap dialog template + * + * @param {String} className + * @param {String} [title=''] + * @param {String} body + * @param {String} [footer=''] + */ + // >>>>>>> CK dialog + var tplDialog = function(className, title, body, footer) { + + var modal = [ + '<div class="' + className + ' modal modal-fixed-footer">', + '<div class="modal-content">', + (title ? '<h4>' + title + '</h4>' : ''), + '<p>' + body + '</p>', + '</div>', + (footer ? '<div class="modal-footer">' + footer + '</div>' : ''), + '</div>' + ].join(''); + + return modal; + }; + + var tplButtonInfo = { + picture: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.image.image, { + event: 'showImageDialog', + title: lang.image.image, + hide: true + }); + }, + link: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.link.link, { + event: 'showLinkDialog', + title: lang.link.link, + hide: true + }); + }, + table: function(lang, options) { + var dropdown = '<ul class="note-table dropdown-menu">' + + '<div class="row">' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-bordered" checked="checked" /><label for="' + materialUniqueId + '-bordered">' + lang.table.bordered + '</label></div>' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-striped" checked="checked" /><label for="' + materialUniqueId + '-striped">' + lang.table.striped + '</label></div>' + + '</div>' + + '<div class="row">' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-hoverable" checked="checked" /><label for="' + materialUniqueId + '-hoverable">' + lang.table.hoverable + '</label></div>' + + '<div class="col s6 preventDropClose"><input type="checkbox" id="' + materialUniqueId + '-responsive" checked="checked" /><label for="' + materialUniqueId + '-responsive">' + lang.table.responsive + '</label></div>' + + '</div>' + + '<div class="note-dimension-picker">' + + '<div class="note-dimension-picker-mousecatcher" data-event="insertTable" data-value="1x1"></div>' + + '<div class="note-dimension-picker-highlighted"></div>' + + '<div class="note-dimension-picker-unhighlighted"></div>' + + '</div>' + + '<div class="note-dimension-display"> 1 x 1 </div>' + + '</ul>'; + return tplIconButton(options.iconPrefix + options.icons.table.table, { + title: lang.table.table, + dropdown: dropdown + }); + }, + style: function(lang, options) { + var items = options.styleTags.reduce(function(memo, v) { + var label = lang.style[v === 'p' ? 'normal' : v]; + + return memo + '<li><div data-event="formatBlock" data-value="' + v + '">' + + ((v === 'p' || v === 'pre') ? label : '<' + v + '>' + label + '</' + v + '>') + + '</div></li>'; + }, ''); + + return tplIconButton(options.iconPrefix + options.icons.style.style, { + title: lang.style.style, + dropdown: '<ul class="dropdown-menu largeDropdown">' + items + '</ul>' + }); + }, + fontname: function(lang, options) { + var realFontList = []; + var items = options.fontNames.reduce(function(memo, v) { + if (!agent.isFontInstalled(v) && options.fontNamesIgnoreCheck.indexOf(v) === -1) { + return memo; + } + realFontList.push(v); + return memo + '<li><div data-event="fontName" data-value="' + v + '" style="font-family:\'' + v + '\'">' + + '<i class="material-icons tiny transparent">' + options.iconPrefix + options.icons.misc.check + '</i> ' + v + '</div></li>'; + }, ''); + + var hasDefaultFont = agent.isFontInstalled(options.defaultFontName); + var defaultFontName = (hasDefaultFont) ? options.defaultFontName : realFontList[0]; + var label = '<div class="note-current-fontname">' + defaultFontName + '</div>'; + console.log('editing right file...') + return tplButton(label, { + title: lang.font.name, + className: 'note-fontname', + dropdown: '<ul class="dropdown-menu note-check">' + items + '</ul>' + }); + }, + fontsize: function(lang, options) { + var items = options.fontSizes.reduce(function(memo, v) { + return memo + '<li><div data-event="fontSize" data-value="' + v + '">' + + '<i class="material-icons tiny transparent">' + options.iconPrefix + options.icons.misc.check + '</i> ' + v + + '</div></li>'; + }, ''); + + var label = '<span class="note-current-fontsize">15</span>'; + return tplButton(label, { + title: lang.font.size, + className: 'note-fontsize', + dropdown: '<ul class="dropdown-menu note-check">' + items + '</ul>' + }); + }, + color: function(lang, options) { + // >>>>>>> CK + var colorButtonLabel = '<i class="material-icons">' + options.icons.color.recent + '</i>', + colorButton = tplButton(colorButtonLabel, { + className: 'note-recent-color', + title: lang.color.recent, + style: "color: " + options.defaultTextColor + "; background-color: " + options.defaultBackColor + ";", + event: 'color', + value: '{"backColor": "' + options.defaultBackColor + '"}' + }); + + var dropdown = '<ul id="colors" class="dropdown-menu">' + + '<li>' + + '<div class="col s12">' + + '<ul class="tabs">' + + '<li class="tab"><span class="active">' + lang.color.foreground + '</span></li>' + + '<li class="tab"><span>' + lang.color.background + '</span></li>' + + '</ul>' + + '</div>' + + '<div class="col s12 colorTable">' + + '<div id="' + materialUniqueId + '-foreColor">' + + '<div class="note-color-reset waves-effect waves-light btn" data-event="foreColor" data-value="' + options.defaultTextColor + '" title="' + lang.color.reset + '">' + + lang.color.resetToDefault + + '</div>' + + '<div class="colorName"></div>' + + '<div class="note-color-palette" data-target-event="foreColor"></div>' + + '</div>' + + '<div id="' + materialUniqueId + '-backColor">' + + '<div class="note-color-reset waves-effect waves-light btn" data-event="backColor"' + ' data-value="' + options.defaultBackColor + '" title="' + lang.color.transparent + '">' + + lang.color.setTransparent + + '</div>' + + '<div class="colorName"></div>' + + '<div class="note-color-palette" data-target-event="backColor"></div>' + + '</div>' + + '</div>' + + '</li>' + + '</ul>'; + + var moreButton = tplButton('', { + title: lang.color.more, + className: 'closeLeft', + dropdown: dropdown + }); + + return moreButton + colorButton; + }, + bold: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.bold, { + event: 'bold', + title: lang.font.bold + }); + }, + italic: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.italic, { + event: 'italic', + title: lang.font.italic + }); + }, + underline: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.underline, { + event: 'underline', + title: lang.font.underline + }); + }, + strikethrough: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.strikethrough, { + event: 'strikethrough', + title: lang.font.strikethrough + }); + }, + superscript: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.superscript, { + event: 'superscript', + title: lang.font.superscript + }); + }, + subscript: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.subscript, { + event: 'subscript', + title: lang.font.subscript + }); + }, + clear: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.font.clear, { + event: 'removeFormat', + title: lang.font.clear + }); + }, + ul: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.lists.unordered, { + event: 'insertUnorderedList', + title: lang.lists.unordered + }); + }, + ol: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.lists.ordered, { + event: 'insertOrderedList', + title: lang.lists.ordered + }); + }, + //>>>>>>> CK paragraph single buttons + leftButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.left, { + title: lang.paragraph.left, + event: 'justifyLeft' + }); + }, + centerButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.center, { + title: lang.paragraph.center, + event: 'justifyCenter' + }); + }, + rightButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.right, { + title: lang.paragraph.right, + event: 'justifyRight' + }); + }, + justifyButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.justify, { + title: lang.paragraph.justify, + event: 'justifyFull' + }); + }, + outdentButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.outdent, { + title: lang.paragraph.outdent, + event: 'outdent' + }); + }, + indentButton: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.paragraph.indent, { + title: lang.paragraph.indent, + event: 'indent' + }); + }, + + paragraph: function(lang, options) { + var leftButton = tplIconButton(options.iconPrefix + options.icons.paragraph.left, { + title: lang.paragraph.left, + event: 'justifyLeft' + }); + var centerButton = tplIconButton(options.iconPrefix + options.icons.paragraph.center, { + title: lang.paragraph.center, + event: 'justifyCenter' + }); + var rightButton = tplIconButton(options.iconPrefix + options.icons.paragraph.right, { + title: lang.paragraph.right, + event: 'justifyRight' + }); + var justifyButton = tplIconButton(options.iconPrefix + options.icons.paragraph.justify, { + title: lang.paragraph.justify, + event: 'justifyFull' + }); + + var outdentButton = tplIconButton(options.iconPrefix + options.icons.paragraph.outdent, { + title: lang.paragraph.outdent, + event: 'outdent' + }); + var indentButton = tplIconButton(options.iconPrefix + options.icons.paragraph.indent, { + title: lang.paragraph.indent, + event: 'indent' + }); + + var dropdown = '<ul class="dropdown-menu">' + + '<div class="note-align btn-group">' + + leftButton + centerButton + rightButton + justifyButton + + '</div>' + + '<div class="note-list btn-group">' + + indentButton + outdentButton + + '</div>' + + '</ul>'; + + return tplIconButton(options.iconPrefix + options.icons.paragraph.paragraph, { + title: lang.paragraph.paragraph, + dropdown: dropdown + }); + }, + lineheight: function(lang, options) { + var items = options.lineHeights.reduce(function(memo, v) { + return memo + '<li><div data-event="lineHeight" data-value="' + parseFloat(v) + '">' + + '<i class="material-icons tiny transparent">' + options.iconPrefix + options.icons.misc.check + '</i> ' + v + + '</div></li>'; + }, ''); + + return tplIconButton(options.iconPrefix + options.icons.font.height, { + title: lang.font.height, + className: 'note-height', + dropdown: '<ul class="dropdown-menu note-check">' + items + '</ul>' + }); + + }, + help: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.options.help, { + event: 'showHelpDialog', + title: lang.options.help, + hide: true + }); + }, + fullscreen: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.options.fullscreen, { + event: 'fullscreen', + title: lang.options.fullscreen + }); + }, + codeview: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.options.codeview, { + event: 'codeview', + title: lang.options.codeview + }); + }, + undo: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.history.undo, { + event: 'undo', + title: lang.history.undo + }); + }, + redo: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.history.redo, { + event: 'redo', + title: lang.history.redo + }); + }, + hr: function(lang, options) { + return tplIconButton(options.iconPrefix + options.icons.hr.insert, { + event: 'insertHorizontalRule', + title: lang.hr.insert + }); + } + }; + + var tplPopovers = function(lang, options) { + var tplLinkPopover = function() { + var linkButton = tplIconButton(options.iconPrefix + options.icons.link.edit, { + title: lang.link.edit, + event: 'showLinkDialog', + hide: true + }); + var unlinkButton = tplIconButton(options.iconPrefix + options.icons.link.unlink, { + title: lang.link.unlink, + event: 'unlink' + }); + var content = '<a href="https://www.bosssauce.it" target="_blank">www.bosssauce.it</a> ' + + '<div class="note-insert btn-group">' + + linkButton + unlinkButton + + '</div>'; + return tplPopover('note-link-popover', content); + }; + + var tplImagePopover = function() { + var fullButton = tplButton('<span class="note-fontsize-10">100%</span>', { + title: lang.image.resizeFull, + event: 'resize', + value: '1' + }); + var halfButton = tplButton('<span class="note-fontsize-10">50%</span>', { + title: lang.image.resizeHalf, + event: 'resize', + value: '0.5' + }); + var quarterButton = tplButton('<span class="note-fontsize-10">25%</span>', { + title: lang.image.resizeQuarter, + event: 'resize', + value: '0.25' + }); + + var leftButton = tplIconButton(options.iconPrefix + options.icons.image.floatLeft, { + title: lang.image.floatLeft, + event: 'floatMe', + value: 'left' + }); + var rightButton = tplIconButton(options.iconPrefix + options.icons.image.floatRight, { + title: lang.image.floatRight, + event: 'floatMe', + value: 'right' + }); + var justifyButton = tplIconButton(options.iconPrefix + options.icons.image.floatNone, { + title: lang.image.floatNone, + event: 'floatMe', + value: 'none' + }); + + var roundedButton = tplIconButton(options.iconPrefix + options.icons.image.shapeRounded, { + title: lang.image.shapeRounded, + event: 'imageClass', + value: 'img-rounded' + }); + var circleButton = tplIconButton(options.iconPrefix + options.icons.image.shapeCircle, { + title: lang.image.shapeCircle, + event: 'imageClass', + value: 'img-circle' + }); + var thumbnailButton = tplIconButton(options.iconPrefix + options.icons.image.shapeThumbnail, { + title: lang.image.shapeThumbnail, + event: 'imageClass', + value: 'img-thumbnail' + }); + var borderedButton = tplIconButton(options.iconPrefix + options.icons.image.bordered, { + title: lang.image.bordered, + event: 'imageClass', + value: 'img-bordered' + }); + var noneButton = tplIconButton(options.iconPrefix + options.icons.image.shapeNone, { + title: lang.image.shapeNone, + event: 'imageShape', + value: '' + }); + + var removeButton = tplIconButton(options.iconPrefix + options.icons.image.remove, { + title: lang.image.remove, + event: 'removeMedia', + value: 'none' + }); + + var content = //'<div class="btn-group">' + fullButton + halfButton + quarterButton + '</div>' + + '<div class="btn-group">' + leftButton + rightButton + justifyButton + '</div>' + + '<div class="btn-group">' + roundedButton + circleButton + thumbnailButton + borderedButton + noneButton + '</div>' + + '<div class="btn-group">' + removeButton + '</div>'; + return tplPopover('note-image-popover', content); + }; + + var tplAirPopover = function() { + var $content = $('<div />'); + for (var idx = 0, len = options.airPopover.length; idx < len; idx ++) { + var group = options.airPopover[idx]; + + var $group = $('<div class="note-' + group[0] + ' btn-group">'); + for (var i = 0, lenGroup = group[1].length; i < lenGroup; i++) { + var $button = $(tplButtonInfo[group[1][i]](lang, options)); + + $button.attr('data-name', group[1][i]); + + $group.append($button); + } + $content.append($group); + } + + return tplPopover('note-air-popover', $content.children()); + }; + + var $notePopover = $('<div class="note-popover" />'); + + $notePopover.append(tplLinkPopover()); + $notePopover.append(tplImagePopover()); + + if (options.airMode) { + $notePopover.append(tplAirPopover()); + } + + return $notePopover; + }; + + var tplHandles = function() { + return '<div class="note-handle">' + + '<div class="note-control-selection">' + + '<div class="note-control-selection-bg"></div>' + + '<div class="note-control-sizing note-control-se"></div>' + + '<div class="note-control-selection-info"></div>' + + '</div>' + + '</div>'; + }; + + /** + * shortcut table template + * @param {String} title + * @param {String} body + */ + var tplShortcut = function(title, keys) { + var keyClass = 'note-shortcut-col col-xs-6 note-shortcut-'; + var body = []; + + for (var i in keys) { + if (keys.hasOwnProperty(i)) { + body.push( + '<tr><td>' + keys[i].kbd + '</td><td>' + keys[i].text + '</td></tr>' + ); + } + } + + return '<thead><tr><th>' + title + '</th><th>' + '(keys)' + '</th></tr></thead>' + + '<tbody>' + body.join('') + '</tbody>'; + }; + + var tplShortcutText = function(lang) { + var keys = [ + { kbd: '⌘ + B', text: lang.font.bold }, + { kbd: '⌘ + I', text: lang.font.italic }, + { kbd: '⌘ + U', text: lang.font.underline }, + { kbd: '⌘ + \\', text: lang.font.clear } + ]; + + return tplShortcut(lang.shortcut.textFormatting, keys); + }; + + var tplShortcutAction = function(lang) { + var keys = [ + { kbd: '⌘ + Z', text: lang.history.undo }, + { kbd: '⌘ + ⇧ + Z', text: lang.history.redo }, + { kbd: '⌘ + ]', text: lang.paragraph.indent }, + { kbd: '⌘ + [', text: lang.paragraph.outdent }, + { kbd: '⌘ + ENTER', text: lang.hr.insert } + ]; + + return tplShortcut(lang.shortcut.action, keys); + }; + + var tplShortcutPara = function(lang) { + var keys = [ + { kbd: '⌘ + ⇧ + L', text: lang.paragraph.left }, + { kbd: '⌘ + ⇧ + E', text: lang.paragraph.center }, + { kbd: '⌘ + ⇧ + R', text: lang.paragraph.right }, + { kbd: '⌘ + ⇧ + J', text: lang.paragraph.justify }, + { kbd: '⌘ + ⇧ + NUM7', text: lang.lists.ordered }, + { kbd: '⌘ + ⇧ + NUM8', text: lang.lists.unordered } + ]; + + return tplShortcut(lang.shortcut.paragraphFormatting, keys); + }; + + var tplShortcutStyle = function(lang) { + var keys = [ + { kbd: '⌘ + NUM0', text: lang.style.normal }, + { kbd: '⌘ + NUM1', text: lang.style.h1 }, + { kbd: '⌘ + NUM2', text: lang.style.h2 }, + { kbd: '⌘ + NUM3', text: lang.style.h3 }, + { kbd: '⌘ + NUM4', text: lang.style.h4 }, + { kbd: '⌘ + NUM5', text: lang.style.h5 }, + { kbd: '⌘ + NUM6', text: lang.style.h6 } + ]; + + return tplShortcut(lang.shortcut.documentStyle, keys); + }; + + var tplExtraShortcuts = function(lang, options) { + var extraKeys = options.extraKeys; + var keys = []; + + for (var key in extraKeys) { + if (extraKeys.hasOwnProperty(key)) { + keys.push({ kbd: key, text: extraKeys[key] }); + } + } + + return tplShortcut(lang.shortcut.extraKeys, keys); + }; + + var tplShortcutTable = function(lang, options) { + var template = [ + '<table class="striped hoverable">' + tplShortcutAction(lang, options) + '</table>', + '<table class="striped hoverable">' + tplShortcutStyle(lang, options) + '</table>', + '<table class="striped hoverable">' + tplShortcutText(lang, options) + '</table>', + '<table class="striped hoverable">' + tplShortcutPara(lang, options) + '</table>' + ].join('<br>'); + + if (options.extraKeys) { + //template.push('<table class="striped hoverable">' + tplExtraShortcuts(lang, options) + '</table>'); + } + return template; + }; + + var replaceMacKeys = function(sHtml) { + return sHtml.replace(/⌘/g, 'Ctrl').replace(/⇧/g, 'Shift'); + }; + + var tplDialogInfo = { + image: function(lang, options) { + var imageLimitation = ''; + + if (options.maximumImageFileSize) { + var unit = Math.floor(Math.log(options.maximumImageFileSize) / Math.log(1024)); + var readableSize = (options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 + ' ' + ' KMGTP'[unit] + 'B'; + + imageLimitation = '<small>' + lang.image.maximumFileSize + ' : ' + readableSize + '</small>'; + } + + var body = '<div class="row">' + + '<div class="col s12">' + + '<div class="file-field input-field">' + + '<div class="btn">' + + '<span>' + lang.image.image + '</span>' + + '<input class="note-image-input" name="files" type="file" />' + + '</div>' + + '<div class="file-path-wrapper">' + + '<input class="file-path" type="text" />' + + '</div>' + + '</div>' + + '</div>' + + '</div>' + + '<div class="row">' + + '<div class="input-field col s12">' + + '<input class="note-image-url" type="text" />' + + '<label>' + lang.image.url + '</label>' + + '</div>' + + '</div>'; + + var footer = '<button class="waves-effect waves-light btn note-image-btn disabled" disabled>' + lang.image.insert + '</button>' + + '<button class="waves-effect waves-light btn btnClose">' + lang.shortcut.close + '</button>'; + return tplDialog('note-image-dialog', lang.image.insert, body, footer); + }, + + link: function(lang, options) { + var body = '<div class="row">' + + '<div class="input-field col s12">' + + '<input class="note-link-text" type="text" />' + + '<label>' + lang.link.textToDisplay + '</label>' + + '</div>' + + '</div>' + + '<div class="row">' + + '<div class="input-field col s12">' + + '<input class="note-link-url" type="text" value="http://" />' + + '<label class="active">' + lang.link.url + '</label>' + + '</div>' + + '</div>' + + (!options.disableLinkTarget ? + '<div class="row">' + + '<div class="col s12">' + + '<input type="checkbox" id="' + materialUniqueId + '-noteInsertLinkNewWindow" checked="checked" />' + + '<label for="' + materialUniqueId + '-noteInsertLinkNewWindow">' + lang.link.openInNewWindow + '</label>' + + '</div>' + + '</div>' + : '' + ); + + var footer = '<button class="waves-effect waves-light btn note-link-btn disabled" disabled>' + lang.link.insert + '</button>' + + '<button class="waves-effect waves-light btn btnClose">' + lang.shortcut.close + '</button>'; + return tplDialog('note-link-dialog', lang.link.insert, body, footer); + }, + + help: function(lang, options) { + var body = (agent.isMac ? tplShortcutTable(lang, options) : replaceMacKeys(tplShortcutTable(lang, options))); + var footer = '<button class="waves-effect waves-light btn modal-close">' + lang.shortcut.close + '</button>'; + + return tplDialog('note-help-dialog', lang.shortcut.shortcuts, body, footer); + } + }; + + var tplDialogs = function(lang, options) { + var dialogs = ''; + + $.each(tplDialogInfo, function(idx, tplDialog) { + dialogs += tplDialog(lang, options); + }); + + return '<div class="note-dialog">' + dialogs + '</div>'; + }; + + var tplStatusbar = function() { + return '<div class="note-resizebar">' + + '<div class="note-icon-bar"></div>' + + '<div class="note-icon-bar"></div>' + + '<div class="note-icon-bar"></div>' + + '</div>'; + }; + + var representShortcut = function(str) { + if (agent.isMac) { + str = str.replace('CMD', '⌘').replace('SHIFT', '⇧'); + } + + return str.replace('BACKSLASH', '\\') + .replace('SLASH', '/') + .replace('LEFTBRACKET', '[') + .replace('RIGHTBRACKET', ']'); + }; + + /** + * createTooltip + * @param {jQuery} $container + * @param {Object} keyMap + * @param {String} [sPlacement] + */ + // >>>>>>> CK + var createTooltip = function($container, keyMap, sPlacement) { + $(document).ready(function() { + var invertedKeyMap = func.invertObject(keyMap); + var $buttons = $container.find('.btn'); + + $buttons.each(function(i, elBtn) { + var $btn = $(elBtn); + var sShortcut = invertedKeyMap[$btn.data('event')]; + var text = $btn.attr('title'); + + if (sShortcut) { + $btn.attr('data-tooltip', function(i, v) { + text = text + ' (' + representShortcut(sShortcut) + ')'; + + $(this).removeAttr('title'); + return text; + }); + } + $btn.attr('data-position', 'bottom'); + $btn.attr('data-tooltip', text); + $btn.removeAttr('title'); + }).ckTooltip({ + container: $container, + position: 'top', + delay: 30 + }); + }); + }; + + // >>>>>>> CK + // createPalette + var createPalette = function($container, options) { + var colorInfo = options.colors; + var colorTitles = options.colorTitles; + + $container.find('.note-color-palette').each(function() { + var $palette = $(this), eventName = $palette.attr('data-target-event'); + var paletteContents = []; + + for (var row = 0, lenRow = colorInfo.length; row < lenRow; row++) { + var colors = colorInfo[row]; + var titles = colorTitles[row]; + var buttons = []; + + for (var col = 0, lenCol = colors.length; col < lenCol; col++) { + var color = colors[col]; + var title = titles[col]; + + buttons.push(['<button type="button" class="note-color-btn" style="background-color:', color, + ';" data-event="', eventName, + '" data-value="', color, + '" data-description="', title, + '" data-toggle="button" tabindex="-1"></button>'].join('')); + } + paletteContents.push('<div class="note-color-row">' + buttons.join('') + '</div>'); + } + $palette.html(paletteContents.join('')); + + $palette.find('button').mouseenter(function() { + $palette.siblings('.colorName').html($(this).data('description')); + }); + $palette.mouseleave(function() { + $(this).siblings('.colorName').html(''); + }); + }); + }; + + /** + * create materialnote layout (air mode) + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayoutByAirMode = function($holder, options) { + var langInfo = options.langInfo; + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + var id = func.uniqueId(); + + $holder.addClass('note-air-editor note-editable'); + $holder.attr({ + 'id': 'note-editor-' + id, + 'contentEditable': true + }); + + var body = document.body; + + // create Popover + var $popover = $(tplPopovers(langInfo, options)); + $popover.addClass('note-air-layout'); + $popover.attr('id', 'note-popover-' + id); + $popover.appendTo(body); + createTooltip($popover, keyMap); + createPalette($popover, options); + + // create Handle + var $handle = $(tplHandles()); + $handle.addClass('note-air-layout'); + $handle.attr('id', 'note-handle-' + id); + $handle.appendTo(body); + + // create Dialog + var $dialog = $(tplDialogs(langInfo, options)); + $dialog.addClass('note-air-layout'); + $dialog.attr('id', 'note-dialog-' + id); + $dialog.find('button.close, a.modal-close').click(function() { + $(this).closest('.modal').closeModal(); + }); + $dialog.appendTo(body); + }; + + /** + * create materialnote layout (normal mode) + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayoutByFrame = function($holder, options) { + var langInfo = options.langInfo; + + //01. create Editor + var $editor = $('<div class="note-editor"></div>'); + if (options.width) { + $editor.width(options.width); + } + + //02. statusbar (resizebar) + if (options.height > 0) { + $('<div class="note-statusbar">' + (options.disableResizeEditor ? '' : tplStatusbar()) + '</div>').prependTo($editor); + } + + //03. create Editable + var isContentEditable = !$holder.is(':disabled'); + var $editable = $('<div class="note-editable" contentEditable="' + isContentEditable + '"></div>') + .prependTo($editor); + if (options.height) { + $editable.height(options.height); + } + if (options.direction) { + $editable.attr('dir', options.direction); + } + var placeholder = $holder.attr('placeholder') || options.placeholder; + if (placeholder) { + $editable.attr('data-placeholder', placeholder); + } + + $editable.html(dom.html($holder)); + + //031. create codable + $('<textarea class="note-codable"></textarea>').prependTo($editor); + + //04. create Toolbar + var $toolbar = $('<div class="note-toolbar btn-toolbar" />'); + for (var idx = 0, len = options.toolbar.length; idx < len; idx ++) { + var groupName = options.toolbar[idx][0]; + var groupButtons = options.toolbar[idx][1]; + + var $group = $('<div class="note-' + groupName + ' btn-group" />'); + for (var i = 0, btnLength = groupButtons.length; i < btnLength; i++) { + var buttonInfo = tplButtonInfo[groupButtons[i]]; + // continue creating toolbar even if a button doesn't exist + if (!$.isFunction(buttonInfo)) { continue; } + + var $button = $(buttonInfo(langInfo, options)); + $button.attr('data-name', groupButtons[i]); // set button's alias, becuase to get button element from $toolbar + $group.append($button); + } + $toolbar.append($group); + } + + $toolbar.prependTo($editor); + var keyMap = options.keyMap[agent.isMac ? 'mac' : 'pc']; + createPalette($toolbar, options); + createTooltip($toolbar, keyMap, 'bottom'); + + + // >>>>>>> CK - following toolbar + // following toolbar + function followingBar() { + // $(window).unbind('scroll'); + // console.log($._data( $(window)[0], "events" )); + $(window).scroll(function() { + var isFullscreen = $editor.hasClass('fullscreen'); + + if (isFullscreen) { + console.log("fullscreen"); + return false; + } + + var toolbar = $editor.children('.note-toolbar'); + var toolbarHeight = toolbar.outerHeight(); + var editable = $editor.children('.note-editable'); + var editableHeight = editable.outerHeight(); + var editorWidth = $editor.width; + var toolbarOffset, editorOffsetTop, editorOffsetBottom; + var activateOffset, deactivateOffsetTop, deactivateOffsetBottom; + var currentOffset; + var relativeOffset; + var otherBarHeight; + + // check if the web app is currently using another static bar + otherBarHeight = $("." + options.otherStaticBarClass).outerHeight(); + if (!otherBarHeight) otherBarHeight = 0; + //console.log(otherBarHeight); + + currentOffset = $(document).scrollTop(); + toolbarOffset = toolbar.offset().top; + editorOffsetTop = $editor.offset().top; + editorOffsetBottom = editorOffsetTop + editableHeight; + activateOffset = toolbarOffset - otherBarHeight; + deactivateOffsetBottom = editorOffsetBottom - otherBarHeight; + deactivateOffsetTop = editorOffsetTop - otherBarHeight; + + if ((currentOffset > activateOffset) && (currentOffset < deactivateOffsetBottom)) { + relativeOffset = currentOffset - $editor.offset().top + otherBarHeight; + toolbar.css({'top': relativeOffset + 'px', 'z-index': 2000}); + } else { + if ((currentOffset < toolbarOffset) && (currentOffset < deactivateOffsetBottom)) { + toolbar.css({'top': 0, 'z-index': 1052}); + + if (currentOffset > deactivateOffsetTop) { + relativeOffset = currentOffset - $editor.offset().top + otherBarHeight; + toolbar.css({'top': relativeOffset + 'px', 'z-index': 2000}); + } + } + } + }); + } + if (options.followingToolbar) { + followingBar(); + } + + //05. create Popover + var $popover = $(tplPopovers(langInfo, options)).prependTo($editor); + createPalette($popover, options); + createTooltip($popover, keyMap); + + //06. handle(control selection, ...) + $(tplHandles()).prependTo($editor); + + //07. create Dialog + var $dialog = $(tplDialogs(langInfo, options)).prependTo($editor); + $dialog.find('button.close, a.modal-close').click(function() { + $(this).closest('.modal').closeModal(); + }); + + //08. create Dropzone + $('<div class="note-dropzone"><div class="note-dropzone-message"></div></div>').prependTo($editor); + + //09. Editor/Holder switch + $editor.insertAfter($holder); + $holder.hide(); + }; + + this.hasNoteEditor = function($holder) { + return this.noteEditorFromHolder($holder).length > 0; + }; + + this.noteEditorFromHolder = function($holder) { + if ($holder.hasClass('note-air-editor')) { + return $holder; + } else if ($holder.next().hasClass('note-editor')) { + return $holder.next(); + } else { + return $(); + } + }; + + /** + * create materialnote layout + * + * @param {jQuery} $holder + * @param {Object} options + */ + this.createLayout = function($holder, options) { + if (options.airMode) { + this.createLayoutByAirMode($holder, options); + } else { + this.createLayoutByFrame($holder, options); + } + }; + + /** + * returns layoutInfo from holder + * + * @param {jQuery} $holder - placeholder + * @return {Object} + */ + this.layoutInfoFromHolder = function($holder) { + var $editor = this.noteEditorFromHolder($holder); + if (!$editor.length) { + return; + } + + // connect $holder to $editor + $editor.data('holder', $holder); + + return dom.buildLayoutInfo($editor); + }; + + /** + * removeLayout + * + * @param {jQuery} $holder - placeholder + * @param {Object} layoutInfo + * @param {Object} options + * + */ + this.removeLayout = function($holder, layoutInfo, options) { + if (options.airMode) { + $holder.removeClass('note-air-editor note-editable') + .removeAttr('id contentEditable'); + + layoutInfo.popover().remove(); + layoutInfo.handle().remove(); + layoutInfo.dialog().remove(); + } else { + $holder.html(layoutInfo.editable().html()); + + layoutInfo.editor().remove(); + $holder.show(); + } + }; + + /** + * + * @return {Object} + * @return {function(label, options=):string} return.button {@link #tplButton function to make text button} + * @return {function(iconClass, options=):string} return.iconButton {@link #tplIconButton function to make icon button} + * @return {function(className, title=, body=, footer=):string} return.dialog {@link #tplDialog function to make dialog} + */ + this.getTemplate = function() { + return { + button: tplButton, + iconButton: tplIconButton, + dialog: tplDialog + }; + }; + + /** + * add button information + * + * @param {String} name button name + * @param {Function} buttonInfo function to make button, reference to {@link #tplButton},{@link #tplIconButton} + */ + this.addButtonInfo = function(name, buttonInfo) { + tplButtonInfo[name] = buttonInfo; + }; + + /** + * + * @param {String} name + * @param {Function} dialogInfo function to make dialog, reference to {@link #tplDialog} + */ + this.addDialogInfo = function(name, dialogInfo) { + tplDialogInfo[name] = dialogInfo; + }; + }; + + + // jQuery namespace for materialnote + /** + * @class $.materialnote + * + * materialnote attribute + * + * @mixin defaults + * @singleton + * + */ + $.materialnote = $.materialnote || {}; + + // extends default settings + // - $.materialnote.version + // - $.materialnote.options + // - $.materialnote.lang + $.extend($.materialnote, defaults); + + var renderer = new Renderer(); + var eventHandler = new EventHandler(); + + $.extend($.materialnote, { + /** @property {Renderer} */ + renderer: renderer, + /** @property {EventHandler} */ + eventHandler: eventHandler, + /** + * @property {Object} core + * @property {core.agent} core.agent + * @property {core.dom} core.dom + * @property {core.range} core.range + */ + core: { + agent: agent, + list : list, + dom: dom, + range: range + }, + /** + * @property {Object} + * pluginEvents event list for plugins + * event has name and callback function. + * + * ``` + * $.materialnote.addPlugin({ + * events : { + * 'hello' : function(layoutInfo, value, $target) { + * console.log('event name is hello, value is ' + value ); + * } + * } + * }) + * ``` + * + * * event name is data-event property. + * * layoutInfo is a materialnote layout information. + * * value is data-value property. + */ + pluginEvents: {}, + + plugins : [] + }); + + /** + * @method addPlugin + * + * add Plugin in materialnote + * + * materialnote can make a own plugin. + * + * ### Define plugin + * ``` + * // get template function + * var tmpl = $.materialnote.renderer.getTemplate(); + * + * // add a button + * $.materialnote.addPlugin({ + * buttons : { + * // "hello" is button's namespace. + * "hello" : function(lang, options) { + * // make icon button by template function + * return tmpl.iconButton(options.iconPrefix + 'header', { + * // callback function name when button clicked + * event : 'hello', + * // set data-value property + * value : 'hello', + * hide : true + * }); + * } + * + * }, + * + * events : { + * "hello" : function(layoutInfo, value) { + * // here is event code + * } + * } + * }); + * ``` + * ### Use a plugin in toolbar + * + * ``` + * $("#editor").materialnote({ + * ... + * toolbar : [ + * // display hello plugin in toolbar + * ['group', [ 'hello' ]] + * ] + * ... + * }); + * ``` + * + * + * @param {Object} plugin + * @param {Object} [plugin.buttons] define plugin button. for detail, see to Renderer.addButtonInfo + * @param {Object} [plugin.dialogs] define plugin dialog. for detail, see to Renderer.addDialogInfo + * @param {Object} [plugin.events] add event in $.materialnote.pluginEvents + * @param {Object} [plugin.langs] update $.materialnote.lang + * @param {Object} [plugin.options] update $.materialnote.options + */ + $.materialnote.addPlugin = function(plugin) { + + // save plugin list + $.materialnote.plugins.push(plugin); + + if (plugin.buttons) { + $.each(plugin.buttons, function(name, button) { + renderer.addButtonInfo(name, button); + }); + } + + if (plugin.dialogs) { + $.each(plugin.dialogs, function(name, dialog) { + renderer.addDialogInfo(name, dialog); + }); + } + + if (plugin.events) { + $.each(plugin.events, function(name, event) { + $.materialnote.pluginEvents[name] = event; + }); + } + + if (plugin.langs) { + $.each(plugin.langs, function(locale, lang) { + if ($.materialnote.lang[locale]) { + $.extend($.materialnote.lang[locale], lang); + } + }); + } + + if (plugin.options) { + $.extend($.materialnote.options, plugin.options); + } + }; + + /* + * extend $.fn + */ + $.fn.extend({ + /** + * @method + * Initialize materialnote + * - create editor layout and attach Mouse and keyboard events. + * + * ``` + * $("#materialnote").materialnote( { options ..} ); + * ``` + * + * @member $.fn + * @param {Object|String} options reference to $.materialnote.options + * @return {this} + */ + materialnote: function() { + + // check first argument's type + // - {String}: External API call {{module}}.{{method}} + // - {Object}: init options + var type = $.type(list.head(arguments)); + var isExternalAPICalled = type === 'string'; + var hasInitOptions = type === 'object'; + + // extend default options with custom user options + var options = hasInitOptions ? list.head(arguments) : {}; + + options = $.extend({}, $.materialnote.options, options); + options.icons = $.extend({}, $.materialnote.options.icons, options.icons); + + // Include langInfo in options for later use, e.g. for image drag-n-drop + // Setup language info with en-US as default + options.langInfo = $.extend(true, {}, $.materialnote.lang['en-US'], $.materialnote.lang[options.lang]); + + // override plugin options + if (!isExternalAPICalled && hasInitOptions) { + for (var i = 0, len = $.materialnote.plugins.length; i < len; i++) { + var plugin = $.materialnote.plugins[i]; + + if (options.plugin[plugin.name]) { + $.materialnote.plugins[i] = $.extend(true, plugin, options.plugin[plugin.name]); + } + } + } + + this.each(function(idx, holder) { + // >>>>>>> CK set id for this editor + materialUniqueId = $(holder).attr('id'); + + var $holder = $(holder); + + // if layout isn't created yet, createLayout and attach events + if (!renderer.hasNoteEditor($holder)) { + renderer.createLayout($holder, options); + + var layoutInfo = renderer.layoutInfoFromHolder($holder); + $holder.data('layoutInfo', layoutInfo); + + eventHandler.attach(layoutInfo, options); + eventHandler.attachCustomEvent(layoutInfo, options); + + } + }); + + var $first = this.first(); + if ($first.length) { + var layoutInfo = renderer.layoutInfoFromHolder($first); + + // external API + if (isExternalAPICalled) { + var moduleAndMethod = list.head(list.from(arguments)); + var args = list.tail(list.from(arguments)); + + // TODO now external API only works for editor + var params = [moduleAndMethod, layoutInfo.editable()].concat(args); + return eventHandler.invoke.apply(eventHandler, params); + } else if (options.focus) { + // focus on first editable element for initialize editor + layoutInfo.editable().focus(); + } + } + + + + // >>>>>>> CK dropdowns - tabs activation + $(this).each(function(index, editor) { + var tabs; + var tabContainer; + var toolbar; + var isAir = false; + + if ($(editor).hasClass('note-air-editor')) { + var id = $(this).attr('id'); + if (id) id = id.substring(id.lastIndexOf('-') + 1, id.length); + + editor = $('#note-popover-' + id).find('.note-air-popover'); + tabContainer = editor.find('ul.tabs'); + tabs = editor.find('li.tab a'); + toolbar = $(editor).find('.popover-content button.dropdown'); + isAir = true; + } else { + editor = $(editor).next('.note-editor'); + tabContainer = editor.find('ul.tabs'); + tabs = editor.find('li.tab a'); + toolbar = $(editor).find('.note-toolbar button.dropdown'); + } + var go = true; + + function handleDropdowns(select, bar) { + var list = $(select).next('ul.dropdown-menu'); + var container = $(select).parent('.btn-group'); + + list.slideUp(0); + + $('.preventDropClose').click(function(event) { + event.stopPropagation(); + }); + + $(select).click(function(event) { + // calculate dropdown open position to avoid overflow from editor + var btnOffset = Math.round($(select).parent('.btn-group').offset().left - toolbar.offset().left); + var listBorderWidth = parseInt(list.css("border-left-width")); + var editorWidth = editor.outerWidth(); + var listOffset = listBorderWidth; + + list.css({'max-width': editorWidth + 'px'}); + + var listWidth = list.outerWidth(); + var th = listWidth + btnOffset; + + if (th >= editorWidth) { + listOffset = th - editorWidth; + + if (!isAir) { + listOffset = listOffset + listBorderWidth; + } + } + + list.css({'left': '-' + listOffset + 'px'}); + + var reopen = true; + + if (list.is(':visible')) reopen = false; + + bar.find('ul.dropdown-menu').slideUp(200); + + if (reopen) { + list.slideToggle(200); + } + event.stopPropagation(); + }); + + tabs.unbind().click(function(event) { + go = false; + }); + } + + $(window).click(function(event) { + if (go) editor.find('ul.dropdown-menu').slideUp(200); + go = true; + event.stopPropagation(); + }); + + // dropdowns + toolbar.each(function(index, select) { + handleDropdowns(select, editor); + }); + + // activate tabs + tabContainer.tabs(); + }); + + return this; + }, + + /** + * @method + * + * get the HTML contents of note or set the HTML contents of note. + * + * * get contents + * ``` + * var content = $("#materialnote").code(); + * ``` + * * set contents + * + * ``` + * $("#materialnote").code(html); + * ``` + * + * @member $.fn + * @param {String} [html] - HTML contents(optional, set) + * @return {this|String} - context(set) or HTML contents of note(get). + */ + code: function(html) { + // get the HTML contents of note + if (html === undefined) { + var $holder = this.first(); + if (!$holder.length) { + return; + } + + var layoutInfo = renderer.layoutInfoFromHolder($holder); + var $editable = layoutInfo && layoutInfo.editable(); + + if ($editable && $editable.length) { + var isCodeview = eventHandler.invoke('codeview.isActivated', layoutInfo); + eventHandler.invoke('codeview.sync', layoutInfo); + return isCodeview ? layoutInfo.codable().val() : + layoutInfo.editable().html(); + } + return dom.value($holder); + } + + // set the HTML contents of note + this.each(function(i, holder) { + var layoutInfo = renderer.layoutInfoFromHolder($(holder)); + var $editable = layoutInfo && layoutInfo.editable(); + if ($editable) { + $editable.html(html); + } + }); + + return this; + }, + + /** + * @method + * + * destroy Editor Layout and detach Key and Mouse Event + * + * @member $.fn + * @return {this} + */ + destroy: function() { + this.each(function(idx, holder) { + var $holder = $(holder); + + if (!renderer.hasNoteEditor($holder)) { + return; + } + + var info = renderer.layoutInfoFromHolder($holder); + var options = info.editor().data('options'); + + eventHandler.detach(info, options); + renderer.removeLayout($holder, info, options); + }); + + return this; + } + }); +})); diff --git a/system/admin/static/editor/license.txt b/system/admin/static/editor/license.txt new file mode 100644 index 0000000..d978e1d --- /dev/null +++ b/system/admin/static/editor/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2015 CK + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE.
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_buttons.scss b/system/admin/static/editor/sass/components/_buttons.scss new file mode 100644 index 0000000..7192bec --- /dev/null +++ b/system/admin/static/editor/sass/components/_buttons.scss @@ -0,0 +1,157 @@ +// shared styles +.btn, .btn-flat { + border: none; + border-radius: 2px; + display: inline-block; + height: $button-height; + line-height: $button-line-height; + // margin-bottom: 15px; + outline: 0; + padding: 0 2rem; + text-transform: uppercase; + vertical-align: middle; + // Gets rid of tap active state + -webkit-tap-highlight-color: transparent; +} +// Disabled shared style +.btn.disabled, .btn-floating.disabled, .btn-large.disabled, .btn:disabled, .btn-large:disabled, .btn-floating:disabled { + background-color: $button-bg-color-disabled !important; + box-shadow: none; + color: $button-color-disabled !important; + cursor: default; + * { + pointer-events: none; + } + + &:hover { + background-color: $button-bg-color-disabled; + color: $button-color-disabled; + } +} +// Shared icon styles +.btn, .btn-floating, .btn-large, .btn-flat { + i { + font-size: $button-font-size-shared; + line-height: inherit; + } +} + +// Raised Button +.btn { + text-decoration:none; + color: $button-color-raised; + background-color: $button-color; + text-align: center; + letter-spacing: .5px; + @extend .z-depth-1; + @include transition(.2s ease-out); + cursor: pointer; + + &:hover { + background-color: lighten($button-color, 5%); + @extend .z-depth-1-half; + } +} + +// Floating button +.btn-floating { + display: inline-block; + color: $button-color-raised; + position: relative; + overflow: hidden; + z-index: 1; + width: $button-floating-size; + height: $button-floating-size; + line-height: $button-floating-size; + padding: 0; + background-color: $button-color; + border-radius: 50%; + @extend .z-depth-1; + transition: .3s; + cursor: pointer; + vertical-align: middle; + + i { + width: inherit; + display: inline-block; + text-align: center; + color: $button-color-raised; + font-size: $button-large-icon-font-size; + line-height: $button-floating-size; + } + + &:hover { + @extend .z-depth-1-half; + } + &:before { + border-radius: 0; + } + &.btn-large { + width: $button-floating-size * 1.5; + height: $button-floating-size * 1.5; + i{ + line-height: $button-floating-size * 1.5; + } + } + +} +// button fix +button.btn-floating { + border: none; +} + +// Fixed Action Button +.fixed-action-btn { + position: fixed; + right: 23px; + bottom: 23px; + padding-top: 15px; + margin-bottom: 0; + z-index: 998; + + ul { + left: 0; + right: 0; + text-align: center; + position: absolute; + bottom: 64px; + margin: 0; + + li { + margin-bottom: 15px; + } + + a.btn-floating { + opacity: 0; + } + } +} + +// Flat button +.btn-flat { + box-shadow: none; + background-color: transparent; + color: $button-color-flat; + cursor: pointer; + + &.disabled { + color: lighten(#999, 10%); + cursor: default; + } +} + +// Large button +.btn-large { + @extend .btn; + height: $button-height * 1.5; + line-height: 56px; + + i { + font-size: $button-large-icon-font-size; + } +} + +// Block button +.btn-block { + display: block; +} diff --git a/system/admin/static/editor/sass/components/_cards.scss b/system/admin/static/editor/sass/components/_cards.scss new file mode 100644 index 0000000..524d0cf --- /dev/null +++ b/system/admin/static/editor/sass/components/_cards.scss @@ -0,0 +1,152 @@ + + +.card-panel { + transition: box-shadow .25s; + padding: $card-padding; + margin: $element-top-margin 0 $element-bottom-margin 0; + border-radius: 2px; + @extend .z-depth-1; + background-color: $card-bg-color; +} + +.card { + position: relative; + overflow: hidden; + margin: $element-top-margin 0 $element-bottom-margin 0; + background-color: $card-bg-color; + transition: box-shadow .25s; + border-radius: 2px; + @extend .z-depth-1; + + + .card-title { + color: $card-bg-color; + font-size: 24px; + font-weight: 300; + &.activator { + cursor: pointer; + } + } + + // Card Sizes + &.small, &.medium, &.large { + position: relative; + + .card-image { + overflow: hidden; + } + .card-content { + overflow: hidden; + } + .card-action { + position: absolute; + bottom: 0; + left: 0; + right: 0; + } + } + + &.small { + height: 300px; + + .card-image { + height: 150px; + } + .card-content { + height: 150px; + } + + } + + &.medium { + height: 400px; + + .card-image { + height: 250px; + } + .card-content { + height: 150px; + } + } + + &.large { + height: 500px; + + .card-image { + height: 330px; + } + .card-content { + height: 170px; + } + } + + + .card-image { + position: relative; + + // Image background for content + img { + border-radius: 2px 2px 0 0; + position: relative; + left: 0; + right: 0; + top: 0; + bottom: 0; + width: 100%; + } + + .card-title { + position: absolute; + bottom: 0; + left: 0; + padding: $card-padding; + } + + } + + .card-content { + padding: $card-padding; + border-radius: 0 0 2px 2px; + + + p { + margin: 0; + color: inherit; + } + .card-title { + line-height: 48px; + } + } + + .card-action { + border-top: 1px solid rgba(160,160,160,.2); + padding: $card-padding; + + a { + color: $card-link-color; + margin-right: $card-padding; + @include transition(color .3s ease); + text-transform: uppercase; + + &:hover { color: $card-link-color-light; } + } + } + + .card-reveal { + padding: $card-padding; + position: absolute; + background-color: $card-bg-color; + width: 100%; + overflow-y: auto; + top: 100%; + height: 100%; + z-index: 1; + display: none; + + .card-title { + cursor: pointer; + display: block; + } + + } +} diff --git a/system/admin/static/editor/sass/components/_collapsible.scss b/system/admin/static/editor/sass/components/_collapsible.scss new file mode 100644 index 0000000..6b45d1e --- /dev/null +++ b/system/admin/static/editor/sass/components/_collapsible.scss @@ -0,0 +1,85 @@ +.collapsible { + border-top: 1px solid $collapsible-border-color; + border-right: 1px solid $collapsible-border-color; + border-left: 1px solid $collapsible-border-color; + margin: $element-top-margin 0 $element-bottom-margin 0; + @extend .z-depth-1; +} + +.collapsible-header { + display: block; + cursor: pointer; + height: $collapsible-height; + line-height: $collapsible-height; + padding: 0 1rem; + background-color: $collapsible-header-color; + border-bottom: 1px solid $collapsible-border-color; + + i { + width: 2rem; + font-size: 1.6rem; + line-height: $collapsible-height; + display: block; + float: left; + text-align: center; + margin-right: 1rem; + } +} + +.collapsible-body { + display: none; + border-bottom: 1px solid $collapsible-border-color; + @include box-sizing(border-box); + + p { + margin: 0; + padding: 2rem; + } +} + +// sideNav collapsible styling +.side-nav { + + .collapsible { + border: none; + box-shadow: none; + + li { padding: 0; } + } + + .collapsible-header { + background-color: transparent; + border: none; + line-height: inherit; + height: inherit; + margin: 0 1rem; + + i { line-height: inherit; } + } + + .collapsible-body { + border: 0; + background-color: $collapsible-header-color; + + li a { margin: 0 1rem 0 2rem; } + } + +} + +// Popout Collapsible + +.collapsible.popout { + border: none; + box-shadow: none; + > li { + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); + // transform: scaleX(.92); + margin: 0 24px; + transition: margin .35s cubic-bezier(0.250, 0.460, 0.450, 0.940); + } + > li.active { + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); + margin: 16px 0; + // transform: scaleX(1); + } +} diff --git a/system/admin/static/editor/sass/components/_color.scss b/system/admin/static/editor/sass/components/_color.scss new file mode 100644 index 0000000..95d65d5 --- /dev/null +++ b/system/admin/static/editor/sass/components/_color.scss @@ -0,0 +1,412 @@ +// Utility Color Classes + +//.success { +// +//} + +// Google Color Palette defined: http://www.google.com/design/spec/style/color.html + + +$materialize-red: ( + "lighten-5": #fdeaeb, + "lighten-4": #f8c1c3, + "lighten-3": #f3989b, + "lighten-2": #ee6e73, + "lighten-1": #ea454b, + "base": #e51c23, + "darken-1": #d0181e, + "darken-2": #b9151b, + "darken-3": #a21318, + "darken-4": #8b1014, +); + +$red: ( + "lighten-5": #FFEBEE, + "lighten-4": #FFCDD2, + "lighten-3": #EF9A9A, + "lighten-2": #E57373, + "lighten-1": #EF5350, + "base": #F44336, + "darken-1": #E53935, + "darken-2": #D32F2F, + "darken-3": #C62828, + "darken-4": #B71C1C, + "accent-1": #FF8A80, + "accent-2": #FF5252, + "accent-3": #FF1744, + "accent-4": #D50000 +); + +$pink: ( + "lighten-5": #fce4ec, + "lighten-4": #f8bbd0, + "lighten-3": #f48fb1, + "lighten-2": #f06292, + "lighten-1": #ec407a, + "base": #e91e63, + "darken-1": #d81b60, + "darken-2": #c2185b, + "darken-3": #ad1457, + "darken-4": #880e4f, + "accent-1": #ff80ab, + "accent-2": #ff4081, + "accent-3": #f50057, + "accent-4": #c51162 +); + +$purple: ( + "lighten-5": #f3e5f5, + "lighten-4": #e1bee7, + "lighten-3": #ce93d8, + "lighten-2": #ba68c8, + "lighten-1": #ab47bc, + "base": #9c27b0, + "darken-1": #8e24aa, + "darken-2": #7b1fa2, + "darken-3": #6a1b9a, + "darken-4": #4a148c, + "accent-1": #ea80fc, + "accent-2": #e040fb, + "accent-3": #d500f9, + "accent-4": #aa00ff +); + +$deep-purple: ( + "lighten-5": #ede7f6, + "lighten-4": #d1c4e9, + "lighten-3": #b39ddb, + "lighten-2": #9575cd, + "lighten-1": #7e57c2, + "base": #673ab7, + "darken-1": #5e35b1, + "darken-2": #512da8, + "darken-3": #4527a0, + "darken-4": #311b92, + "accent-1": #b388ff, + "accent-2": #7c4dff, + "accent-3": #651fff, + "accent-4": #6200ea +); + +$indigo: ( + "lighten-5": #e8eaf6, + "lighten-4": #c5cae9, + "lighten-3": #9fa8da, + "lighten-2": #7986cb, + "lighten-1": #5c6bc0, + "base": #3f51b5, + "darken-1": #3949ab, + "darken-2": #303f9f, + "darken-3": #283593, + "darken-4": #1a237e, + "accent-1": #8c9eff, + "accent-2": #536dfe, + "accent-3": #3d5afe, + "accent-4": #304ffe +); + +$blue: ( + "lighten-5": #E3F2FD, + "lighten-4": #BBDEFB, + "lighten-3": #90CAF9, + "lighten-2": #64B5F6, + "lighten-1": #42A5F5, + "base": #2196F3, + "darken-1": #1E88E5, + "darken-2": #1976D2, + "darken-3": #1565C0, + "darken-4": #0D47A1, + "accent-1": #82B1FF, + "accent-2": #448AFF, + "accent-3": #2979FF, + "accent-4": #2962FF +); + +$light-blue: ( + "lighten-5": #e1f5fe, + "lighten-4": #b3e5fc, + "lighten-3": #81d4fa, + "lighten-2": #4fc3f7, + "lighten-1": #29b6f6, + "base": #03a9f4, + "darken-1": #039be5, + "darken-2": #0288d1, + "darken-3": #0277bd, + "darken-4": #01579b, + "accent-1": #80d8ff, + "accent-2": #40c4ff, + "accent-3": #00b0ff, + "accent-4": #0091ea +); + +$cyan: ( + "lighten-5": #e0f7fa, + "lighten-4": #b2ebf2, + "lighten-3": #80deea, + "lighten-2": #4dd0e1, + "lighten-1": #26c6da, + "base": #00bcd4, + "darken-1": #00acc1, + "darken-2": #0097a7, + "darken-3": #00838f, + "darken-4": #006064, + "accent-1": #84ffff, + "accent-2": #18ffff, + "accent-3": #00e5ff, + "accent-4": #00b8d4 +); + +$teal: ( + "lighten-5": #e0f2f1, + "lighten-4": #b2dfdb, + "lighten-3": #80cbc4, + "lighten-2": #4db6ac, + "lighten-1": #26a69a, + "base": #009688, + "darken-1": #00897b, + "darken-2": #00796b, + "darken-3": #00695c, + "darken-4": #004d40, + "accent-1": #a7ffeb, + "accent-2": #64ffda, + "accent-3": #1de9b6, + "accent-4": #00bfa5 +); + +$green: ( + "lighten-5": #E8F5E9, + "lighten-4": #C8E6C9, + "lighten-3": #A5D6A7, + "lighten-2": #81C784, + "lighten-1": #66BB6A, + "base": #4CAF50, + "darken-1": #43A047, + "darken-2": #388E3C, + "darken-3": #2E7D32, + "darken-4": #1B5E20, + "accent-1": #B9F6CA, + "accent-2": #69F0AE, + "accent-3": #00E676, + "accent-4": #00C853 +); + +$light-green: ( + "lighten-5": #f1f8e9, + "lighten-4": #dcedc8, + "lighten-3": #c5e1a5, + "lighten-2": #aed581, + "lighten-1": #9ccc65, + "base": #8bc34a, + "darken-1": #7cb342, + "darken-2": #689f38, + "darken-3": #558b2f, + "darken-4": #33691e, + "accent-1": #ccff90, + "accent-2": #b2ff59, + "accent-3": #76ff03, + "accent-4": #64dd17 +); + +$lime: ( + "lighten-5": #f9fbe7, + "lighten-4": #f0f4c3, + "lighten-3": #e6ee9c, + "lighten-2": #dce775, + "lighten-1": #d4e157, + "base": #cddc39, + "darken-1": #c0ca33, + "darken-2": #afb42b, + "darken-3": #9e9d24, + "darken-4": #827717, + "accent-1": #f4ff81, + "accent-2": #eeff41, + "accent-3": #c6ff00, + "accent-4": #aeea00 +); + +$yellow: ( + "lighten-5": #fffde7, + "lighten-4": #fff9c4, + "lighten-3": #fff59d, + "lighten-2": #fff176, + "lighten-1": #ffee58, + "base": #ffeb3b, + "darken-1": #fdd835, + "darken-2": #fbc02d, + "darken-3": #f9a825, + "darken-4": #f57f17, + "accent-1": #ffff8d, + "accent-2": #ffff00, + "accent-3": #ffea00, + "accent-4": #ffd600 +); + +$amber: ( + "lighten-5": #fff8e1, + "lighten-4": #ffecb3, + "lighten-3": #ffe082, + "lighten-2": #ffd54f, + "lighten-1": #ffca28, + "base": #ffc107, + "darken-1": #ffb300, + "darken-2": #ffa000, + "darken-3": #ff8f00, + "darken-4": #ff6f00, + "accent-1": #ffe57f, + "accent-2": #ffd740, + "accent-3": #ffc400, + "accent-4": #ffab00 +); + +$orange: ( + "lighten-5": #fff3e0, + "lighten-4": #ffe0b2, + "lighten-3": #ffcc80, + "lighten-2": #ffb74d, + "lighten-1": #ffa726, + "base": #ff9800, + "darken-1": #fb8c00, + "darken-2": #f57c00, + "darken-3": #ef6c00, + "darken-4": #e65100, + "accent-1": #ffd180, + "accent-2": #ffab40, + "accent-3": #ff9100, + "accent-4": #ff6d00 +); + +$deep-orange: ( + "lighten-5": #fbe9e7, + "lighten-4": #ffccbc, + "lighten-3": #ffab91, + "lighten-2": #ff8a65, + "lighten-1": #ff7043, + "base": #ff5722, + "darken-1": #f4511e, + "darken-2": #e64a19, + "darken-3": #d84315, + "darken-4": #bf360c, + "accent-1": #ff9e80, + "accent-2": #ff6e40, + "accent-3": #ff3d00, + "accent-4": #dd2c00 +); + +$brown: ( + "lighten-5": #efebe9, + "lighten-4": #d7ccc8, + "lighten-3": #bcaaa4, + "lighten-2": #a1887f, + "lighten-1": #8d6e63, + "base": #795548, + "darken-1": #6d4c41, + "darken-2": #5d4037, + "darken-3": #4e342e, + "darken-4": #3e2723 +); + +$blue-grey: ( + "lighten-5": #eceff1, + "lighten-4": #cfd8dc, + "lighten-3": #b0bec5, + "lighten-2": #90a4ae, + "lighten-1": #78909c, + "base": #607d8b, + "darken-1": #546e7a, + "darken-2": #455a64, + "darken-3": #37474f, + "darken-4": #263238 +); + +$grey: ( + "lighten-5": #fafafa, + "lighten-4": #f5f5f5, + "lighten-3": #eeeeee, + "lighten-2": #e0e0e0, + "lighten-1": #bdbdbd, + "base": #9e9e9e, + "darken-1": #757575, + "darken-2": #616161, + "darken-3": #424242, + "darken-4": #212121 +); + +$shades: ( + "black": #000000, + "white": #FFFFFF, + "transparent": transparent +); + +$colors: ( + "materialize-red": $materialize-red, + "red": $red, + "pink": $pink, + "purple": $purple, + "deep-purple": $deep-purple, + "indigo": $indigo, + "blue": $blue, + "light-blue": $light-blue, + "cyan": $cyan, + "teal": $teal, + "green": $green, + "light-green": $light-green, + "lime": $lime, + "yellow": $yellow, + "amber": $amber, + "orange": $orange, + "deep-orange": $deep-orange, + "brown": $brown, + "blue-grey": $blue-grey, + "grey": $grey, + "shades": $shades +); + + +// Color Classes + +@each $color_name, $color in $colors { + @each $color_type, $color_value in $color { + @if $color_type == "base" { + .#{$color_name} { + background-color: $color_value !important; + } + .#{$color_name}-text { + color: $color_value !important; + } + } + @else { + .#{$color_name}.#{$color_type} { + background-color: $color_value !important; + } + .#{$color_name}-text.text-#{$color_type} { + color: $color_value !important; + } + } + } +} + +// Shade classes +@each $color, $color_value in $shades { + .#{$color} { + background-color: $color_value !important; + } + .#{$color}-text { + color: $color_value !important; + } +} + + +// usage: color("name_of_color", "type_of_color") +// to avoid to repeating map-get($colors, ...) + +@function color($color, $type) { + @if map-has-key($colors, $color) { + $curr_color: map-get($colors, $color); + @if map-has-key($curr_color, $type) { + @return map-get($curr_color, $type); + } + } + @warn "Unknown `#{name}` in $colors."; + @return null; +} + diff --git a/system/admin/static/editor/sass/components/_dropdown.scss b/system/admin/static/editor/sass/components/_dropdown.scss new file mode 100644 index 0000000..585fbd6 --- /dev/null +++ b/system/admin/static/editor/sass/components/_dropdown.scss @@ -0,0 +1,40 @@ +.dropdown-content { + @extend .z-depth-1; + background-color: $dropdown-bg-color; + margin: 0; + display: none; + min-width: 100px; + max-height: 650px; + overflow-y: auto; + opacity: 0; + position: absolute; + z-index: 999; + will-change: width, height; + + li { + clear: both; + color: $off-black; + cursor: pointer; + line-height: 1.5rem; + width: 100%; + text-align: left; + text-transform: none; + + &:hover, &.active { + background-color: $dropdown-hover-bg-color; + } + + & > a, & > span { + font-size: 1.2rem; + color: $dropdown-color; + display: block; + padding: 1rem 1rem; + } + + // Icon alignment override + & > a > i { + height: inherit; + line-height: inherit; + } + } +} diff --git a/system/admin/static/editor/sass/components/_form.scss b/system/admin/static/editor/sass/components/_form.scss new file mode 100644 index 0000000..ed35233 --- /dev/null +++ b/system/admin/static/editor/sass/components/_form.scss @@ -0,0 +1,886 @@ +/* Remove Focus Boxes */ +select:focus { + outline: 1px solid lighten($secondary-color, 47%); +} +button:focus { + outline: none; + background-color: lighten($button-color, 4%); +} + +label { + font-size: $label-font-size; + color: $input-border-color; +} + +/*************************** + Text Inputs + Textarea +****************************/ + +// Style Placeholders +::-webkit-input-placeholder { + color: lighten($input-border-color, 20%); +} + +:-moz-placeholder { /* Firefox 18- */ + color: lighten($input-border-color, 20%); +} + +::-moz-placeholder { /* Firefox 19+ */ + color: lighten($input-border-color, 20%); +} + +:-ms-input-placeholder { + color: lighten($input-border-color, 20%); +} + +// Text inputs +input[type=text], +input[type=password], +input[type=email], +input[type=url], +input[type=time], +input[type=date], +input[type=datetime-local], +input[type=tel], +input[type=number], +input[type=search], +textarea.materialize-textarea { + + // General Styles + background-color: transparent; + border: none; + border-bottom: 1px solid $input-border-color; + border-radius: 0; + outline: none; + height: 3rem; + width: 100%; + + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + box-shadow: none; + @include box-sizing(content-box); + transition: all .3s; + + + // Disabled input style + &:disabled, &[readonly="readonly"] { + color: $input-disabled-color; + border-bottom: 1px dotted $input-disabled-color; + } + // Disabled label style + &:disabled+label, &[readonly="readonly"]+label { + color: $input-disabled-color; + } + // Focused input style + &:focus:not([readonly]) { + border-bottom: 1px solid $input-focus-color; + box-shadow: 0 1px 0 0 $input-focus-color; + } + // Focused label style + &:focus:not([readonly])+label { + color: $input-focus-color; + } + // Valid Input Style + &.valid, + &:focus.valid { + border-bottom: 1px solid $input-success-color; + box-shadow: 0 1px 0 0 $input-success-color; + } + // Custom Success Message + &.valid + label:after, + &:focus.valid + label:after { + content: attr(data-success); + color: $input-success-color; + opacity: 1; + } + // Invalid Input Style + &.invalid, + &:focus.invalid { + border-bottom: 1px solid $input-error-color; + box-shadow: 0 1px 0 0 $input-error-color; + } + // Custom Error message + &.invalid + label:after, + &:focus.invalid + label:after { + content: attr(data-error); + color: $input-error-color; + opacity: 1; + } + + // Form Message Shared Styles + & + label:after { + display: block; + content: ""; + position: absolute; + top: 65px; + opacity: 0; + transition: .2s opacity ease-out, .2s color ease-out; + } +} + +// Styling for input field wrapper +.input-field { + position: relative; + margin-top: 1rem; + + label { + color: $input-border-color; + position: absolute; + top: 0.8rem; + left: $gutter-width / 2; + font-size: 1rem; + cursor: text; + @include transition(.2s ease-out); + } + label.active { + font-size: $label-font-size; + @include transform(translateY(-140%)); + } + + // Prefix Icons + .prefix { + position: absolute; + width: 3rem; + font-size: 2rem; + @include transition(color .2s); + + &.active { color: $input-focus-color; } + } + .prefix ~ input, + .prefix ~ textarea { + margin-left: 3rem; + width: 92%; + width: calc(100% - 3rem); + } + .prefix ~ textarea { padding-top: .8rem; } + .prefix ~ label { margin-left: 3rem; } + + @media #{$medium-and-down} { + .prefix ~ input { + width: 86%; + width: calc(100% - 3rem); + } + } + @media #{$small-and-down} { + .prefix ~ input { + width: 80%; + width: calc(100% - 3rem); + } + } +} + + +// Search Field + + +.input-field input[type=search] { + display: block; + line-height: inherit; + padding-left: 4rem; + width: calc(100% - 4rem); + + &:focus { + background-color: $input-bg-color; + border: 0; + box-shadow: none; + color: #444; + + & + label i, + & ~ .mdi-navigation-close { + color: #444; + } + } + + & + label { + left: 1rem; + } + + & ~ .mdi-navigation-close { + position: absolute; + top: 0; + right: 1rem; + color: transparent; + cursor: pointer; + font-size: 2rem; + transition: .3s color; + } +} + + +// Default textarea +textarea { + width: 100%; + height: 3rem; + background-color: transparent; + + &.materialize-textarea { + overflow-y: hidden; /* prevents scroll bar flash */ + padding: 1.6rem 0; /* prevents text jump on Enter keypress */ + resize: none; + min-height: 3rem; + } +} + + +// For textarea autoresize +.hiddendiv { + display: none; + white-space: pre-wrap; + word-wrap: break-word; + overflow-wrap: break-word; /* future version of deprecated 'word-wrap' */ + padding-top: 1.2rem; /* prevents text jump on Enter keypress */ +} + + +/*************** + Radio Buttons +***************/ + +/* Remove default Radio Buttons */ +[type="radio"]:not(:checked), +[type="radio"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; +} + +[type="radio"]:not(:checked) + label, +[type="radio"]:checked + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + @include transition(.28s ease); + + -webkit-user-select: none; /* webkit (safari, chrome) browsers */ + -moz-user-select: none; /* mozilla browsers */ + -khtml-user-select: none; /* webkit (konqueror) browsers */ + -ms-user-select: none; /* IE10+ */ +} + +[type="radio"] + label:before, +[type="radio"] + label:after { + content: ''; + position: absolute; + left: 0; + top: 0; + margin: 4px; + width: 16px; + height: 16px; + z-index: 0; + @include transition(.28s ease); +} + + +/* Unchecked styles */ +[type="radio"]:not(:checked) + label:before { + border-radius: 50%; + border: 2px solid $radio-empty-color; +} +[type="radio"]:not(:checked) + label:after { + border-radius: 50%; + border: 2px solid $radio-empty-color; + z-index: -1; + + @include transform(scale(0)); +} + +/* Checked styles */ +[type="radio"]:checked + label:before { + border-radius: 50%; + border: 2px solid transparent; +} +[type="radio"]:checked + label:after { + border-radius: 50%; + border: 2px solid $radio-fill-color; + background-color: $radio-fill-color; + z-index: 0; + @include transform(scale(1.02)); +} + +/* Radio With gap */ +[type="radio"].with-gap:checked + label:before { + border-radius: 50%; + border: 2px solid $radio-fill-color; +} +[type="radio"].with-gap:checked + label:after { + border-radius: 50%; + border: 2px solid $radio-fill-color; + background-color: $radio-fill-color; + z-index: 0; + @include transform(scale(.5)); +} + +/* Disabled Radio With gap */ +[type="radio"].with-gap:disabled:checked + label:before { + border: 2px solid $input-disabled-color; +} +[type="radio"].with-gap:disabled:checked + label:after { + border: none; + background-color: $input-disabled-color; +} + +/* Disabled style */ +[type="radio"]:disabled:not(:checked) + label:before, +[type="radio"]:disabled:checked + label:before { + background-color: transparent; + border-color: $input-disabled-color; +} +[type="radio"]:disabled + label { + color: $input-disabled-color; +} +[type="radio"]:disabled:not(:checked) + label:before { + border-color: $input-disabled-color; +} +[type="radio"]:disabled:checked + label:after { + background-color: $input-disabled-color; + border-color: $input-disabled-solid-color; +} + + +/*************** + Checkboxes +***************/ + +/* CUSTOM CSS CHECKBOXES */ +form p { + margin-bottom: 10px; + text-align: left; +} +form p:last-child { + margin-bottom: 0; +} + +/* Remove default checkbox */ +[type="checkbox"]:not(:checked), +[type="checkbox"]:checked { + position: absolute; + left: -9999px; + visibility: hidden; +} + + +// Checkbox Styles +[type="checkbox"] { + + // Text Label Style + + label { + position: relative; + padding-left: 35px; + cursor: pointer; + display: inline-block; + height: 25px; + line-height: 25px; + font-size: 1rem; + + -webkit-user-select: none; /* webkit (safari, chrome) browsers */ + -moz-user-select: none; /* mozilla browsers */ + -khtml-user-select: none; /* webkit (konqueror) browsers */ + -ms-user-select: none; /* IE10+ */ + } + + /* checkbox aspect */ + + label:before { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 18px; + height: 18px; + z-index: 0; + border: 2px solid $radio-empty-color; + border-radius: 1px; + margin-top: 2px; + @include transition(.2s); + } + + &:not(:checked):disabled + label:before { + border: none; + background-color: $input-disabled-color; + } + +} + +[type="checkbox"]:checked { + + label:before { + top: -4px; + left: -3px; + width: 12px; height: 22px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid $radio-fill-color; + border-bottom: 2px solid $radio-fill-color; + @include transform(rotate(40deg)); + -webkit-backface-visibility: hidden; + @include transform-origin(100% 100%); + } + + &:disabled + label:before { + border-right: 2px solid $input-disabled-color; + border-bottom: 2px solid $input-disabled-color; + } + +} + +/* Indeterminate checkbox */ +[type="checkbox"]:indeterminate { + +label:before { + left: -10px; + top: -11px; + width: 10px; height: 22px; + border-top: none; + border-left: none; + border-right: 2px solid $radio-fill-color; + border-bottom: none; + @include transform(rotate(90deg)); + -webkit-backface-visibility: hidden; + @include transform-origin(100% 100%); + } + + // Disabled indeterminate + &:disabled + label:before { + border-right: 2px solid $input-disabled-color; + background-color: transparent; + } +} + + +// Filled in Style +[type="checkbox"].filled-in { + // General + + label:after { + border-radius: 2px; + } + + label:before, + + label:after { + content: ''; + left: 0; + position: absolute; + /* .1s delay is for check animation */ + transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .1s; + z-index: 1; + } + // Unchecked style + &:not(:checked) + label:before { + width: 0; + height: 0; + border: 3px solid transparent; + left: 6px; + top: 10px; + + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + -webkit-transform-origin: 20% 40%; + transform-origin: 100% 100%; + } + &:not(:checked) + label:after { + height: 20px; + width: 20px; + background-color: transparent; + border: 2px solid $radio-empty-color; + top: 0px; + z-index: 0; + } + // Checked style + &:checked { + + label:before { + top: 0; + left: 1px; + width: 8px; + height: 13px; + border-top: 2px solid transparent; + border-left: 2px solid transparent; + border-right: 2px solid $input-bg-color; + border-bottom: 2px solid $input-bg-color; + -webkit-transform: rotateZ(37deg); + transform: rotateZ(37deg); + + -webkit-transform-origin: 100% 100%; + transform-origin: 100% 100%; + } + + label:after { + top: 0px; + width: 20px; + height: 20px; + border: 2px solid $secondary-color; + background-color: $secondary-color; + z-index: 0; + } + } + // Disabled style + &:disabled:not(:checked) + label:before { + + background-color: transparent; + border: 2px solid transparent; + } + &:disabled:not(:checked) + label:after { + border-color: transparent; + background-color: $input-disabled-solid-color; + } + &:disabled:checked + label:before { + background-color: transparent; + + } + &:disabled:checked + label:after { + background-color: $input-disabled-solid-color; + border-color: $input-disabled-solid-color; + } + +} + +/*************** + Switch +***************/ +.switch, +.switch * { + -webkit-user-select: none; + -moz-user-select: none; + -khtml-user-select: none; + -ms-user-select: none; +} +.switch label { + cursor: pointer; +} +.switch label input[type=checkbox]{ + opacity: 0; + width: 0; + height: 0; +} +.switch label input[type=checkbox]:checked + .lever { + background-color: $switch-checked-lever-bg; +} +.switch label input[type=checkbox]:checked + .lever:after { + background-color: $switch-bg-color; +} +.switch label .lever { + content: ""; + display: inline-block; + position: relative; + width: 40px; + height: 15px; + background-color: $switch-unchecked-lever-bg; + border-radius: 15px; + margin-right: 10px; + transition: background 0.3s ease; + vertical-align: middle; + margin: 0 16px; +} +.switch label .lever:after { + content: ""; + position: absolute; + display: inline-block; + width: 21px; + height: 21px; + background-color: $switch-unchecked-bg; + border-radius: 21px; + box-shadow: 0 1px 3px 1px rgba(0,0,0,.4); + left: -5px; + top: -3px; + transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; +} +// Switch active style +input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px transparentize($switch-bg-color, .9); +} +input[type=checkbox]:not(:disabled) ~ .lever:active:after { + box-shadow: 0 1px 3px 1px rgba(0,0,0,.4), 0 0 0 15px rgba(0, 0, 0, .08); +} +.switch label input[type=checkbox]:checked + .lever:after { + left: 24px; +} + +// Disabled Styles + +.switch input[type=checkbox][disabled] + .lever{ + cursor: default; +} +.switch label input[type=checkbox][disabled] + .lever:after, +.switch label input[type=checkbox][disabled]:checked + .lever:after { + background-color: $input-disabled-solid-color; +} + + + + +/*************** + Select Field +***************/ + +.select-label { + position: absolute; +} + +.select-wrapper { + position: relative; + + input.select-dropdown { + position: relative; + cursor: pointer; + // color: #444; + background-color: transparent; + border: none; + border-bottom: 1px solid $input-border-color; + outline: none; + height: 3rem; + line-height: 3rem; + width: 100%; + font-size: 1rem; + margin: 0 0 15px 0; + padding: 0; + display: block; + } + span.caret { + color: initial; + position: absolute; + right: 0; + top: 16px; + font-size: 10px; + &.disabled { + color: $input-disabled-color; + } + } + & + label { + position: absolute; + top: -14px; + font-size: $label-font-size; + } +} + +select { display: none; } +select.browser-default { display: block; } + + +// Disabled styles +select:disabled { + color: rgba(0,0,0,.3); +} +.select-wrapper input.select-dropdown:disabled { + color: rgba(0,0,0,.3); + cursor: default; + -webkit-user-select: none; /* webkit (safari, chrome) browsers */ + -moz-user-select: none; /* mozilla browsers */ + -ms-user-select: none; /* IE10+ */ + border-bottom: 1px solid rgba(0,0,0,.3); +} +.select-wrapper i { + color: rgba(0,0,0,.3); +} +.select-dropdown li.disabled { + color: rgba(0,0,0,.3); + background-color: transparent; +} + + +/********************* + File Input +**********************/ +.file-field { + position: relative; + + .file-path-wrapper { + overflow: hidden; + padding-left: 10px; + } + input.file-path { width: 100%; } + + .btn { + float: left; + height: 3rem; + line-height: 3rem; + } + + span { + cursor: pointer; + } + + input[type=file] { + position: absolute; + top: 0; + right: 0; + left: 0; + bottom: 0; + width: 100%; + margin: 0; + padding: 0; + font-size: 20px; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); + } +} + + + +/*************** + Range +***************/ + +.range-field { + position: relative; +} + +input[type=range], input[type=range] + .thumb { + @extend .no-select; + cursor: pointer; +} + +input[type=range] { + position: relative; + background-color: transparent; + border: none; + outline: none; + width: 100%; + margin: 15px 0px; + padding: 0; +} +input[type=range] + .thumb { + position: absolute; + border: none; + height: 0; + width: 0; + border-radius: 50%; + background-color: $radio-fill-color; + top: 10px; + margin-left: -6px; + + @include transform-origin(50% 50%); + @include transform(rotate(-45deg)); + + .value { + display: block; + width: 30px; + text-align: center; + color: $radio-fill-color; + font-size: 0; + @include transform(rotate(45deg)); + } + + &.active { + border-radius: 50% 50% 50% 0; + + .value { + color: $input-bg-color; + margin-left: -1px; + margin-top: 8px; + font-size: 10px; + } + } +} + + +input[type=range]:focus { + outline: none; +} + + + +// WebKit +input[type=range]{ + -webkit-appearance: none; +} + +input[type=range]::-webkit-slider-runnable-track { + height: 3px; + background: #c2c0c2; + border: none; +} + +input[type=range]::-webkit-slider-thumb { + -webkit-appearance: none; + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background-color: $radio-fill-color; + transform-origin: 50% 50%; + margin: -5px 0 0 0; + @include transition(.3s); +} + +input[type=range]:focus::-webkit-slider-runnable-track { + background: #ccc; +} + +// FireFox +input[type=range]{ + /* fix for FF unable to apply focus style bug */ + border: 1px solid white; + + /*required for proper track sizing in FF*/ +} + +input[type=range]::-moz-range-track { + height: 3px; + background: #ddd; + border: none; +} + +input[type=range]::-moz-range-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: $radio-fill-color; + margin-top: -5px; +} + +/*hide the outline behind the border*/ +input[type=range]:-moz-focusring{ + outline: 1px solid white; + outline-offset: -1px; +} + +input[type=range]:focus::-moz-range-track { + background: #ccc; +} + +// IE 10+ +input[type=range]::-ms-track { + height: 3px; + + /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ + background: transparent; + + /*leave room for the larger thumb to overflow with a transparent border */ + border-color: transparent; + border-width: 6px 0; + + /*remove default tick marks*/ + color: transparent; +} +input[type=range]::-ms-fill-lower { + background: #777; +} +input[type=range]::-ms-fill-upper { + background: #ddd; +} +input[type=range]::-ms-thumb { + border: none; + height: 14px; + width: 14px; + border-radius: 50%; + background: $radio-fill-color; +} +input[type=range]:focus::-ms-fill-lower { + background: #888; +} +input[type=range]:focus::-ms-fill-upper { + background: #ccc; +} + +/*************************** + Text Inputs + Textarea +****************************/ + +select { + background-color: rgba(255, 255, 255, 0.90); + width: 100%; + padding: 5px; + border: 1px solid #f2f2f2; + border-radius: 2px; + height: 3rem; + } diff --git a/system/admin/static/editor/sass/components/_global.scss b/system/admin/static/editor/sass/components/_global.scss new file mode 100644 index 0000000..c246270 --- /dev/null +++ b/system/admin/static/editor/sass/components/_global.scss @@ -0,0 +1,718 @@ +@charset "UTF-8"; + + +//Default styles + +html { + box-sizing: border-box; +} +*, *:before, *:after { + box-sizing: inherit; +} + +body { + // display: flex; + // min-height: 100vh; + // flex-direction: column; +} + +main { + // flex: 1 0 auto; +} + +ul { + list-style-type: none; +} + +a { + color: $link-color; + text-decoration: none; + + // Gets rid of tap active state + -webkit-tap-highlight-color: transparent; +} + + +// Positioning +.valign-wrapper { + @include flexbox(); + @include align(center); + + .valign { + display: block; + } +} + + +ul { + padding: 0; + li { + list-style-type: none; + } +} + +// classic clearfix +.clearfix { + clear: both; +} + + +// Z-levels +.z-depth-0 { + box-shadow: none !important; +} +.z-depth-1{ + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); +} +.z-depth-1-half{ + box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); +} +.z-depth-2{ + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} +.z-depth-3{ + box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); +} +.z-depth-4{ + box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); +} +.z-depth-5{ + box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); +} + +.hoverable:hover { + transition: box-shadow .25s; + box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); +} + +// Dividers + +.divider { + height: 1px; + overflow: hidden; + background-color: color("grey", "lighten-2"); +} + + +// Blockquote + +blockquote { + margin: 20px 0; + padding-left: 1.5rem; + border-left: 5px solid $primary-color; +} + +// Icon Styles + +i { + line-height: inherit; + + &.left { + float: left; + margin-right: 15px; + } + &.right { + float: right; + margin-left: 15px; + } + &.tiny { + font-size: 1rem; + } + &.small { + font-size: 2rem; + } + &.medium { + font-size: 4rem; + } + &.large { + font-size: 6rem; + } +} + +// Images +img.responsive-img, +video.responsive-video { + max-width: 100%; + height: auto; +} + + +// Pagination + +.pagination { + + li { + float: left; + font-size: 1.2rem; + padding: 0 10px; + line-height: 30px; + border-radius: 2px; + text-align: center; + + a { color: #444; } + + &.active a { color: #fff; } + + &.active { background-color: $primary-color; } + + &.disabled a { + cursor: default; + color: #999; + } + + i { + font-size: 2rem; + } + } + + + li.pages ul li { + display: inline-block; + float: none; + } +} +@media #{$medium-and-down} { + .pagination { + width: 100%; + + li.prev, + li.next { + width: 10%; + } + + li.pages { + width: 80%; + overflow: hidden; + white-space: nowrap; + } + } +} + + +// Parallax +.parallax-container { + position: relative; + overflow: hidden; + height: 500px; +} + +.parallax { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: -1; + + img { + display: none; + position: absolute; + left: 50%; + bottom: 0; + min-width: 100%; + min-height: 100%; + -webkit-transform: translate3d(0,0,0); + transform: translate3d(0,0,0); + transform: translateX(-50%); + } +} + +// Pushpin +.pin-top, .pin-bottom { + position: relative; +} +.pinned { + position: fixed !important; +} + +/********************* + Transition Classes +**********************/ + +ul.staggered-list li { + opacity: 0; +} + +.fade-in { + opacity: 0; + transform-origin: 0 50%; +} + + +/********************* + Media Query Classes +**********************/ +.hide-on-small-only, .hide-on-small-and-down { + @media #{$small-and-down} { + display: none !important; + } +} +.hide-on-med-and-down { + @media #{$medium-and-down} { + display: none !important; + } +} +.hide-on-med-and-up { + @media #{$medium-and-up} { + display: none !important; + } +} +.hide-on-med-only { + @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { + display: none !important; + } +} +.hide-on-large-only { + @media #{$large-and-up} { + display: none !important; + } +} +.show-on-large { + @media #{$large-and-up} { + display: initial !important; + } +} +.show-on-medium { + @media only screen and (min-width: $small-screen) and (max-width: $medium-screen) { + display: initial !important; + } +} +.show-on-small { + @media #{$small-and-down} { + display: initial !important; + } +} +.show-on-medium-and-up { + @media #{$medium-and-up} { + display: initial !important; + } +} +.show-on-medium-and-down { + @media #{$medium-and-down} { + display: initial !important; + } +} + + +// Center text on mobile +.center-on-small-only { + @media #{$small-and-down} { + text-align: center; + } +} + +// Footer +footer.page-footer { + margin-top: 20px; + padding-top: 20px; + background-color: $footer-bg-color; + + .footer-copyright { + overflow: hidden; + height: 50px; + line-height: 50px; + color: rgba(255,255,255,.8); + background-color: rgba(51,51,51,.08);; + @extend .light; + } +} + +// Tables +table, th, td { + border: none; +} + +table { + width:100%; + display: table; + + &.bordered > thead > tr, + &.bordered > tbody > tr { + border-bottom: 1px solid $table-border-color; + } + + &.striped > tbody { + > tr:nth-child(odd) { + background-color: $table-striped-color; + } + + > tr > td { + border-radius: 0px; + } + } + + &.hoverable > tbody > tr { + @include transition(background-color .25s ease); + &:hover { + background-color: $table-striped-color; + } + } + + &.centered { + thead tr th, tbody tr td { + text-align: center; + + } + } + +} + +thead { + border-bottom: 1px solid $table-border-color; +} + +td, th{ + padding: 15px 5px; + display: table-cell; + text-align: left; + vertical-align: middle; + border-radius: 2px; +} + +// Responsive Table +@media #{$medium-and-down} { + + table.responsive-table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; + display: block; + position: relative; + + th, + td { + margin: 0; + vertical-align: top; + } + + th { text-align: left; } + thead { + display: block; + float: left; + + tr { + display: block; + padding: 0 10px 0 0; + + th::before { + content: "\00a0"; + } + } + } + tbody { + display: block; + width: auto; + position: relative; + overflow-x: auto; + white-space: nowrap; + + tr { + display: inline-block; + vertical-align: top; + } + } + th { + display: block; + text-align: right; + } + td { + display: block; + min-height: 1.25em; + text-align: left; + } + tr { padding: 0 10px; } + + /* sort out borders */ + thead { + border: 0; + border-right: 1px solid $table-border-color; + } + + &.bordered { + th { border-bottom: 0; border-left: 0; } + td { border-left: 0; border-right: 0; border-bottom: 0; } + tr { border: 0; } + tbody tr { border-right: 1px solid $table-border-color; } + } + + } + +} + + +// Collections +.collection { + margin: $element-top-margin 0 $element-bottom-margin 0; + border: 1px solid $collection-border-color; + border-radius: 2px; + overflow: hidden; + position: relative; + + .collection-item { + background-color: $collection-bg-color; + line-height: 1.5rem; + padding: 10px 20px; + margin: 0; + border-bottom: 1px solid $collection-border-color; + + // Avatar Collection + &.avatar { + min-height: 84px; + padding-left: 72px; + position: relative; + + .circle { + position: absolute; + width: 42px; + height: 42px; + overflow: hidden; + left: 15px; + display: inline-block; + vertical-align: middle; + } + i.circle { + font-size: 18px; + line-height: 42px; + color: #fff; + background-color: #999; + text-align: center; + } + + + .title { + font-size: 16px; + } + + p { + margin: 0; + } + + .secondary-content { + position: absolute; + top: 16px; + right: 16px; + } + + } + + + &:last-child { + border-bottom: none; + } + + &.active { + background-color: $collection-active-bg-color; + color: $collection-active-color; + } + } + a.collection-item{ + display: block; + @include transition(.25s); + color: $secondary-color; + &:not(.active) { + &:hover { + background-color: $collection-hover-bg-color; + } + } + } + + &.with-header { + .collection-header { + background-color: $collection-bg-color; + border-bottom: 1px solid $collection-border-color; + padding: 10px 20px; + } + .collection-item { + padding-left: 30px; + } + .collection-item.avatar { + padding-left: 72px; + } + } + +} +// Made less specific to allow easier overriding +.secondary-content { + float: right; + color: $secondary-color; +} + + +// Badges +span.badge { + min-width: 3rem; + padding: 0 6px; + text-align: center; + font-size: 1rem; + line-height: inherit; + color: color('grey', 'darken-1'); + position: absolute; + right: 15px; + @include box-sizing(border-box); + + &.new { + font-weight: 300; + font-size: 0.8rem; + color: #fff; + background-color: $badge-bg-color; + border-radius: 2px; + } + &.new:after { + content: " new"; + } +} + +// Responsive Videos +.video-container { + position: relative; + padding-bottom: 56.25%; + padding-top: 30px; + height: 0; + overflow: hidden; + &.no-controls { + padding-top: 0; + } + + iframe, object, embed { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + } +} + +// Progress Bar +.progress { + position: relative; + height: 4px; + display: block; + width: 100%; + background-color: lighten($progress-bar-color, 40%); + border-radius: 2px; + margin: $element-top-margin 0 $element-bottom-margin 0; + overflow: hidden; + .determinate { + position: absolute; + background-color: inherit; + top: 0; + left: 0; + bottom: 0; + background-color: $progress-bar-color; + @include transition(width .3s linear); + } + .indeterminate { + background-color: $progress-bar-color; + &:before { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left:0; + bottom: 0; + will-change: left, right; + // Custom bezier + @include animation(indeterminate 2.1s cubic-bezier(0.650, 0.815, 0.735, 0.395) infinite); + + } + &:after { + content: ''; + position: absolute; + background-color: inherit; + top: 0; + left:0; + bottom: 0; + will-change: left, right; + // Custom bezier + @include animation(indeterminate-short 2.1s cubic-bezier(0.165, 0.840, 0.440, 1.000) infinite); + @include animation-delay(1.15s); + } + } +} +@include keyframes(indeterminate) { + 0% { + left: -35%; + right:100%; + } + 60% { + left: 100%; + right: -90%; + } + 100% { + left: 100%; + right: -90%; + } +} + +@include keyframes(indeterminate-short) { + 0% { + left: -200%; + right: 100%; + } + 60% { + left: 107%; + right: -8%; + } + 100% { + left: 107%; + right: -8%; + } +} + + +/******************* + Utility Classes +*******************/ + +.hide { + display: none !important; +} + +// Text Align +.left-align { + text-align: left; +} +.right-align { + text-align: right +} +.center, .center-align { + text-align: center; +} + +.left { + float: left !important; +} +.right { + float: right !important; +} + +// No Text Select +.no-select { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.circle { + border-radius: 50%; +} + +.center-block { + display: block; + margin-left: auto; + margin-right: auto; +} + +.truncate { + display: block; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.no-padding { + padding: 0 !important; +} diff --git a/system/admin/static/editor/sass/components/_grid.scss b/system/admin/static/editor/sass/components/_grid.scss new file mode 100644 index 0000000..68d727d --- /dev/null +++ b/system/admin/static/editor/sass/components/_grid.scss @@ -0,0 +1,117 @@ +.container { + margin: 0 auto; + max-width: 1280px; + width: 90%; +} +@media #{$medium-and-up} { + .container { + width: 85%; + } +} +@media #{$large-and-up} { + .container { + width: 70%; + } +} +.container .row { + margin-left: (-1 * $gutter-width / 2); + margin-right: (-1 * $gutter-width / 2); +} + +.section { + padding-top: 1rem; + padding-bottom: 1rem; + + &.no-pad { + padding: 0; + } + &.no-pad-bot { + padding-bottom: 0; + } + &.no-pad-top { + padding-top: 0; + } +} + + +.row { + margin-left: auto; + margin-right: auto; + margin-bottom: 20px; + + // Clear floating children + &:after { + content: ""; + display: table; + clear: both; + } + + .col { + float: left; + @include box-sizing(border-box); + padding: 0 $gutter-width / 2; + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.s#{$i} { + width: $perc; + margin-left: 0; + } + $i: $i + 1; + } + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.offset-s#{$i} { + margin-left: $perc; + } + $i: $i + 1; + } + + @media #{$medium-and-up} { + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.m#{$i} { + width: $perc; + margin-left: 0; + } + $i: $i + 1; + } + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.offset-m#{$i} { + margin-left: $perc; + } + $i: $i + 1; + } + + } + + @media #{$large-and-up} { + + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.l#{$i} { + width: $perc; + margin-left: 0; + } + $i: $i + 1; + } + $i: 1; + @while $i <= $num-cols { + $perc: unquote((100 / ($num-cols / $i)) + "%"); + &.offset-l#{$i} { + margin-left: $perc; + } + $i: $i + 1; + } + + } + + } +} diff --git a/system/admin/static/editor/sass/components/_icons-material-design.scss b/system/admin/static/editor/sass/components/_icons-material-design.scss new file mode 100644 index 0000000..3c78470 --- /dev/null +++ b/system/admin/static/editor/sass/components/_icons-material-design.scss @@ -0,0 +1,3257 @@ +$font-mdi : 'Material-Design-Icons'; +$mdi-prefix : 'mdi-'; + +@font-face { + font-family: "#{$font-mdi}"; + src:url("#{$icons-font-path}#{$font-mdi}.eot?#iefix") format("embedded-opentype"), + url("#{$icons-font-path}#{$font-mdi}.woff2") format("woff2"), + url("#{$icons-font-path}#{$font-mdi}.woff") format("woff"), + url("#{$icons-font-path}#{$font-mdi}.ttf") format("truetype"), + url("#{$icons-font-path}#{$font-mdi}.svg##{$font-mdi}") format("svg"); + font-weight: normal; + font-style: normal; +} + +[class^="mdi-"], [class*="mdi-"] { + speak: none; + display: inline-block; + font-family: "Material-Design-Icons"; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-rendering: auto; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transform: translate(0, 0); + &:before { + display: inline-block; + speak: none; + text-decoration: inherit; + } + &.pull-left { + margin-right: .3em; + } + &.pull-right{ + margin-left: .3em; + } + &.mdi-lg:before, &.mdi-lg:after { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; + } + &.mdi-2x:before, &.mdi-2x:after { + font-size: 2em; + } + &.mdi-3x:before, &.mdi-3x:after { + font-size: 3em; + } + &.mdi-4x:before, &.mdi-4x:after { + font-size: 4em; + } + &.mdi-5x:before, &.mdi-5x:after { + font-size: 5em; + } +} + +[class^="mdi-device-signal-cellular-"], +[class^="mdi-device-battery-"], +[class^="mdi-device-battery-charging-"], +[class^="mdi-device-signal-cellular-connected-no-internet-"], +[class^="mdi-device-signal-wifi-"], +[class^="mdi-device-signal-wifi-statusbar-not-connected"], +.mdi-device-network-wifi{ + &:after { + opacity: .3; + position: absolute; + left: 0; + top: 0; + z-index: 1; + display: inline-block; + speak: none; + text-decoration: inherit; + } +} + +[class^="mdi-device-signal-cellular-"]:after {content:"\e758";} +[class^="mdi-device-battery-"]:after {content:"\e735";} +[class^="mdi-device-battery-charging-"]:after {content:"\e733";} +[class^="mdi-device-signal-cellular-connected-no-internet-"]:after {content:"\e75d";} +[class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after {content:"\e765";} +[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after {content:"\e8f7";} + +.mdi-device-signal-cellular-off, .mdi-device-signal-cellular-null, .mdi-device-signal-cellular-no-sim, .mdi-device-signal-wifi-off, .mdi-device-signal-wifi-4-bar, .mdi-device-signal-cellular-4-bar, .mdi-device-battery-alert, .mdi-device-signal-cellular-connected-no-internet-4-bar, .mdi-device-battery-std, .mdi-device-battery-full .mdi-device-battery-unknown { + &:after { + content: ""; + } +} + +.mdi-fw { + width: 1.28571429em; + text-align: center; +} +.mdi-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.mdi-ul > li { + position: relative; +} +.mdi-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.mdi-li.mdi-lg { + left: -1.85714286em; +} +.mdi-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} + +.mdi-spin { + -webkit-animation: mdi-spin 2s infinite linear; + animation: mdi-spin 2s infinite linear; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +.mdi-pulse { + -webkit-animation: mdi-spin 1s steps(8) infinite; + animation: mdi-spin 1s steps(8) infinite ; + -webkit-transform-origin: 50% 50%; + -moz-transform-origin: 50% 50%; + -o-transform-origin: 50% 50%; + transform-origin: 50% 50%; +} +@-webkit-keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes mdi-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.mdi-rotate-90 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.mdi-rotate-180 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.mdi-rotate-270 { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.mdi-flip-horizontal { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.mdi-flip-vertical { + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .mdi-rotate-90, +:root .mdi-rotate-180, +:root .mdi-rotate-270, +:root .mdi-flip-horizontal, +:root .mdi-flip-vertical { + filter: none; +} +.mdi-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.mdi-stack-1x, +.mdi-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.mdi-stack-1x { + line-height: inherit; +} +.mdi-stack-2x { + font-size: 2em; +} +.mdi-inverse { + color: #ffffff; +} + + +/* Start Icons */ + + +.mdi-action-3d-rotation:before { + content: "\e600"; +} + +.mdi-action-accessibility:before { + content: "\e601"; +} + +.mdi-action-account-balance-wallet:before { + content: "\e602"; +} + +.mdi-action-account-balance:before { + content: "\e603"; +} + +.mdi-action-account-box:before { + content: "\e604"; +} + +.mdi-action-account-child:before { + content: "\e605"; +} + +.mdi-action-account-circle:before { + content: "\e606"; +} + +.mdi-action-add-shopping-cart:before { + content: "\e607"; +} + +.mdi-action-alarm-add:before { + content: "\e608"; +} + +.mdi-action-alarm-off:before { + content: "\e609"; +} + +.mdi-action-alarm-on:before { + content: "\e60a"; +} + +.mdi-action-alarm:before { + content: "\e60b"; +} + +.mdi-action-android:before { + content: "\e60c"; +} + +.mdi-action-announcement:before { + content: "\e60d"; +} + +.mdi-action-aspect-ratio:before { + content: "\e60e"; +} + +.mdi-action-assessment:before { + content: "\e60f"; +} + +.mdi-action-assignment-ind:before { + content: "\e610"; +} + +.mdi-action-assignment-late:before { + content: "\e611"; +} + +.mdi-action-assignment-return:before { + content: "\e612"; +} + +.mdi-action-assignment-returned:before { + content: "\e613"; +} + +.mdi-action-assignment-turned-in:before { + content: "\e614"; +} + +.mdi-action-assignment:before { + content: "\e615"; +} + +.mdi-action-autorenew:before { + content: "\e616"; +} + +.mdi-action-backup:before { + content: "\e617"; +} + +.mdi-action-book:before { + content: "\e618"; +} + +.mdi-action-bookmark-outline:before { + content: "\e619"; +} + +.mdi-action-bookmark:before { + content: "\e61a"; +} + +.mdi-action-bug-report:before { + content: "\e61b"; +} + +.mdi-action-cached:before { + content: "\e61c"; +} + +.mdi-action-check-circle:before { + content: "\e61d"; +} + +.mdi-action-class:before { + content: "\e61e"; +} + +.mdi-action-credit-card:before { + content: "\e61f"; +} + +.mdi-action-dashboard:before { + content: "\e620"; +} + +.mdi-action-delete:before { + content: "\e621"; +} + +.mdi-action-description:before { + content: "\e622"; +} + +.mdi-action-dns:before { + content: "\e623"; +} + +.mdi-action-done-all:before { + content: "\e624"; +} + +.mdi-action-done:before { + content: "\e625"; +} + +.mdi-action-event:before { + content: "\e626"; +} + +.mdi-action-exit-to-app:before { + content: "\e627"; +} + +.mdi-action-explore:before { + content: "\e628"; +} + +.mdi-action-extension:before { + content: "\e629"; +} + +.mdi-action-face-unlock:before { + content: "\e62a"; +} + +.mdi-action-favorite-outline:before { + content: "\e62b"; +} + +.mdi-action-favorite:before { + content: "\e62c"; +} + +.mdi-action-find-in-page:before { + content: "\e62d"; +} + +.mdi-action-find-replace:before { + content: "\e62e"; +} + +.mdi-action-flip-to-back:before { + content: "\e62f"; +} + +.mdi-action-flip-to-front:before { + content: "\e630"; +} + +.mdi-action-get-app:before { + content: "\e631"; +} + +.mdi-action-grade:before { + content: "\e632"; +} + +.mdi-action-group-work:before { + content: "\e633"; +} + +.mdi-action-help:before { + content: "\e634"; +} + +.mdi-action-highlight-remove:before { + content: "\e635"; +} + +.mdi-action-history:before { + content: "\e636"; +} + +.mdi-action-home:before { + content: "\e637"; +} + +.mdi-action-https:before { + content: "\e638"; +} + +.mdi-action-info-outline:before { + content: "\e639"; +} + +.mdi-action-info:before { + content: "\e63a"; +} + +.mdi-action-input:before { + content: "\e63b"; +} + +.mdi-action-invert-colors:before { + content: "\e63c"; +} + +.mdi-action-label-outline:before { + content: "\e63d"; +} + +.mdi-action-label:before { + content: "\e63e"; +} + +.mdi-action-language:before { + content: "\e63f"; +} + +.mdi-action-launch:before { + content: "\e640"; +} + +.mdi-action-list:before { + content: "\e641"; +} + +.mdi-action-lock-open:before { + content: "\e642"; +} + +.mdi-action-lock-outline:before { + content: "\e643"; +} + +.mdi-action-lock:before { + content: "\e644"; +} + +.mdi-action-loyalty:before { + content: "\e645"; +} + +.mdi-action-markunread-mailbox:before { + content: "\e646"; +} + +.mdi-action-note-add:before { + content: "\e647"; +} + +.mdi-action-open-in-browser:before { + content: "\e648"; +} + +.mdi-action-open-in-new:before { + content: "\e649"; +} + +.mdi-action-open-with:before { + content: "\e64a"; +} + +.mdi-action-pageview:before { + content: "\e64b"; +} + +.mdi-action-payment:before { + content: "\e64c"; +} + +.mdi-action-perm-camera-mic:before { + content: "\e64d"; +} + +.mdi-action-perm-contact-cal:before { + content: "\e64e"; +} + +.mdi-action-perm-data-setting:before { + content: "\e64f"; +} + +.mdi-action-perm-device-info:before { + content: "\e650"; +} + +.mdi-action-perm-identity:before { + content: "\e651"; +} + +.mdi-action-perm-media:before { + content: "\e652"; +} + +.mdi-action-perm-phone-msg:before { + content: "\e653"; +} + +.mdi-action-perm-scan-wifi:before { + content: "\e654"; +} + +.mdi-action-picture-in-picture:before { + content: "\e655"; +} + +.mdi-action-polymer:before { + content: "\e656"; +} + +.mdi-action-print:before { + content: "\e657"; +} + +.mdi-action-query-builder:before { + content: "\e658"; +} + +.mdi-action-question-answer:before { + content: "\e659"; +} + +.mdi-action-receipt:before { + content: "\e65a"; +} + +.mdi-action-redeem:before { + content: "\e65b"; +} + +.mdi-action-reorder:before { + content: "\e65c"; +} + +.mdi-action-report-problem:before { + content: "\e65d"; +} + +.mdi-action-restore:before { + content: "\e65e"; +} + +.mdi-action-room:before { + content: "\e65f"; +} + +.mdi-action-schedule:before { + content: "\e660"; +} + +.mdi-action-search:before { + content: "\e661"; +} + +.mdi-action-settings-applications:before { + content: "\e662"; +} + +.mdi-action-settings-backup-restore:before { + content: "\e663"; +} + +.mdi-action-settings-bluetooth:before { + content: "\e664"; +} + +.mdi-action-settings-cell:before { + content: "\e665"; +} + +.mdi-action-settings-display:before { + content: "\e666"; +} + +.mdi-action-settings-ethernet:before { + content: "\e667"; +} + +.mdi-action-settings-input-antenna:before { + content: "\e668"; +} + +.mdi-action-settings-input-component:before { + content: "\e669"; +} + +.mdi-action-settings-input-composite:before { + content: "\e66a"; +} + +.mdi-action-settings-input-hdmi:before { + content: "\e66b"; +} + +.mdi-action-settings-input-svideo:before { + content: "\e66c"; +} + +.mdi-action-settings-overscan:before { + content: "\e66d"; +} + +.mdi-action-settings-phone:before { + content: "\e66e"; +} + +.mdi-action-settings-power:before { + content: "\e66f"; +} + +.mdi-action-settings-remote:before { + content: "\e670"; +} + +.mdi-action-settings-voice:before { + content: "\e671"; +} + +.mdi-action-settings:before { + content: "\e672"; +} + +.mdi-action-shop-two:before { + content: "\e673"; +} + +.mdi-action-shop:before { + content: "\e674"; +} + +.mdi-action-shopping-basket:before { + content: "\e675"; +} + +.mdi-action-shopping-cart:before { + content: "\e676"; +} + +.mdi-action-speaker-notes:before { + content: "\e677"; +} + +.mdi-action-spellcheck:before { + content: "\e678"; +} + +.mdi-action-star-rate:before { + content: "\e679"; +} + +.mdi-action-stars:before { + content: "\e67a"; +} + +.mdi-action-store:before { + content: "\e67b"; +} + +.mdi-action-subject:before { + content: "\e67c"; +} + +.mdi-action-supervisor-account:before { + content: "\e67d"; +} + +.mdi-action-swap-horiz:before { + content: "\e67e"; +} + +.mdi-action-swap-vert-circle:before { + content: "\e67f"; +} + +.mdi-action-swap-vert:before { + content: "\e680"; +} + +.mdi-action-system-update-tv:before { + content: "\e681"; +} + +.mdi-action-tab-unselected:before { + content: "\e682"; +} + +.mdi-action-tab:before { + content: "\e683"; +} + +.mdi-action-theaters:before { + content: "\e684"; +} + +.mdi-action-thumb-down:before { + content: "\e685"; +} + +.mdi-action-thumb-up:before { + content: "\e686"; +} + +.mdi-action-thumbs-up-down:before { + content: "\e687"; +} + +.mdi-action-toc:before { + content: "\e688"; +} + +.mdi-action-today:before { + content: "\e689"; +} + +.mdi-action-track-changes:before { + content: "\e68a"; +} + +.mdi-action-translate:before { + content: "\e68b"; +} + +.mdi-action-trending-down:before { + content: "\e68c"; +} + +.mdi-action-trending-neutral:before { + content: "\e68d"; +} + +.mdi-action-trending-up:before { + content: "\e68e"; +} + +.mdi-action-turned-in-not:before { + content: "\e68f"; +} + +.mdi-action-turned-in:before { + content: "\e690"; +} + +.mdi-action-verified-user:before { + content: "\e691"; +} + +.mdi-action-view-agenda:before { + content: "\e692"; +} + +.mdi-action-view-array:before { + content: "\e693"; +} + +.mdi-action-view-carousel:before { + content: "\e694"; +} + +.mdi-action-view-column:before { + content: "\e695"; +} + +.mdi-action-view-day:before { + content: "\e696"; +} + +.mdi-action-view-headline:before { + content: "\e697"; +} + +.mdi-action-view-list:before { + content: "\e698"; +} + +.mdi-action-view-module:before { + content: "\e699"; +} + +.mdi-action-view-quilt:before { + content: "\e69a"; +} + +.mdi-action-view-stream:before { + content: "\e69b"; +} + +.mdi-action-view-week:before { + content: "\e69c"; +} + +.mdi-action-visibility-off:before { + content: "\e69d"; +} + +.mdi-action-visibility:before { + content: "\e69e"; +} + +.mdi-action-wallet-giftcard:before { + content: "\e69f"; +} + +.mdi-action-wallet-membership:before { + content: "\e6a0"; +} + +.mdi-action-wallet-travel:before { + content: "\e6a1"; +} + +.mdi-action-work:before { + content: "\e6a2"; +} + +.mdi-alert-error:before { + content: "\e6a3"; +} + +.mdi-alert-warning:before { + content: "\e6a4"; +} + +.mdi-av-album:before { + content: "\e6a5"; +} + +.mdi-av-closed-caption:before { + content: "\e6a6"; +} + +.mdi-av-equalizer:before { + content: "\e6a7"; +} + +.mdi-av-explicit:before { + content: "\e6a8"; +} + +.mdi-av-fast-forward:before { + content: "\e6a9"; +} + +.mdi-av-fast-rewind:before { + content: "\e6aa"; +} + +.mdi-av-games:before { + content: "\e6ab"; +} + +.mdi-av-hearing:before { + content: "\e6ac"; +} + +.mdi-av-high-quality:before { + content: "\e6ad"; +} + +.mdi-av-loop:before { + content: "\e6ae"; +} + +.mdi-av-mic-none:before { + content: "\e6af"; +} + +.mdi-av-mic-off:before { + content: "\e6b0"; +} + +.mdi-av-mic:before { + content: "\e6b1"; +} + +.mdi-av-movie:before { + content: "\e6b2"; +} + +.mdi-av-my-library-add:before { + content: "\e6b3"; +} + +.mdi-av-my-library-books:before { + content: "\e6b4"; +} + +.mdi-av-my-library-music:before { + content: "\e6b5"; +} + +.mdi-av-new-releases:before { + content: "\e6b6"; +} + +.mdi-av-not-interested:before { + content: "\e6b7"; +} + +.mdi-av-pause-circle-fill:before { + content: "\e6b8"; +} + +.mdi-av-pause-circle-outline:before { + content: "\e6b9"; +} + +.mdi-av-pause:before { + content: "\e6ba"; +} + +.mdi-av-play-arrow:before { + content: "\e6bb"; +} + +.mdi-av-play-circle-fill:before { + content: "\e6bc"; +} + +.mdi-av-play-circle-outline:before { + content: "\e6bd"; +} + +.mdi-av-play-shopping-bag:before { + content: "\e6be"; +} + +.mdi-av-playlist-add:before { + content: "\e6bf"; +} + +.mdi-av-queue-music:before { + content: "\e6c0"; +} + +.mdi-av-queue:before { + content: "\e6c1"; +} + +.mdi-av-radio:before { + content: "\e6c2"; +} + +.mdi-av-recent-actors:before { + content: "\e6c3"; +} + +.mdi-av-repeat-one:before { + content: "\e6c4"; +} + +.mdi-av-repeat:before { + content: "\e6c5"; +} + +.mdi-av-replay:before { + content: "\e6c6"; +} + +.mdi-av-shuffle:before { + content: "\e6c7"; +} + +.mdi-av-skip-next:before { + content: "\e6c8"; +} + +.mdi-av-skip-previous:before { + content: "\e6c9"; +} + +.mdi-av-snooze:before { + content: "\e6ca"; +} + +.mdi-av-stop:before { + content: "\e6cb"; +} + +.mdi-av-subtitles:before { + content: "\e6cc"; +} + +.mdi-av-surround-sound:before { + content: "\e6cd"; +} + +.mdi-av-timer:before { + content: "\e6ce"; +} + +.mdi-av-video-collection:before { + content: "\e6cf"; +} + +.mdi-av-videocam-off:before { + content: "\e6d0"; +} + +.mdi-av-videocam:before { + content: "\e6d1"; +} + +.mdi-av-volume-down:before { + content: "\e6d2"; +} + +.mdi-av-volume-mute:before { + content: "\e6d3"; +} + +.mdi-av-volume-off:before { + content: "\e6d4"; +} + +.mdi-av-volume-up:before { + content: "\e6d5"; +} + +.mdi-av-web:before { + content: "\e6d6"; +} + +.mdi-communication-business:before { + content: "\e6d7"; +} + +.mdi-communication-call-end:before { + content: "\e6d8"; +} + +.mdi-communication-call-made:before { + content: "\e6d9"; +} + +.mdi-communication-call-merge:before { + content: "\e6da"; +} + +.mdi-communication-call-missed:before { + content: "\e6db"; +} + +.mdi-communication-call-received:before { + content: "\e6dc"; +} + +.mdi-communication-call-split:before { + content: "\e6dd"; +} + +.mdi-communication-call:before { + content: "\e6de"; +} + +.mdi-communication-chat:before { + content: "\e6df"; +} + +.mdi-communication-clear-all:before { + content: "\e6e0"; +} + +.mdi-communication-comment:before { + content: "\e6e1"; +} + +.mdi-communication-contacts:before { + content: "\e6e2"; +} + +.mdi-communication-dialer-sip:before { + content: "\e6e3"; +} + +.mdi-communication-dialpad:before { + content: "\e6e4"; +} + +.mdi-communication-dnd-on:before { + content: "\e6e5"; +} + +.mdi-communication-email:before { + content: "\e6e6"; +} + +.mdi-communication-forum:before { + content: "\e6e7"; +} + +.mdi-communication-import-export:before { + content: "\e6e8"; +} + +.mdi-communication-invert-colors-off:before { + content: "\e6e9"; +} + +.mdi-communication-invert-colors-on:before { + content: "\e6ea"; +} + +.mdi-communication-live-help:before { + content: "\e6eb"; +} + +.mdi-communication-location-off:before { + content: "\e6ec"; +} + +.mdi-communication-location-on:before { + content: "\e6ed"; +} + +.mdi-communication-message:before { + content: "\e6ee"; +} + +.mdi-communication-messenger:before { + content: "\e6ef"; +} + +.mdi-communication-no-sim:before { + content: "\e6f0"; +} + +.mdi-communication-phone:before { + content: "\e6f1"; +} + +.mdi-communication-portable-wifi-off:before { + content: "\e6f2"; +} + +.mdi-communication-quick-contacts-dialer:before { + content: "\e6f3"; +} + +.mdi-communication-quick-contacts-mail:before { + content: "\e6f4"; +} + +.mdi-communication-ring-volume:before { + content: "\e6f5"; +} + +.mdi-communication-stay-current-landscape:before { + content: "\e6f6"; +} + +.mdi-communication-stay-current-portrait:before { + content: "\e6f7"; +} + +.mdi-communication-stay-primary-landscape:before { + content: "\e6f8"; +} + +.mdi-communication-stay-primary-portrait:before { + content: "\e6f9"; +} + +.mdi-communication-swap-calls:before { + content: "\e6fa"; +} + +.mdi-communication-textsms:before { + content: "\e6fb"; +} + +.mdi-communication-voicemail:before { + content: "\e6fc"; +} + +.mdi-communication-vpn-key:before { + content: "\e6fd"; +} + +.mdi-content-add-box:before { + content: "\e6fe"; +} + +.mdi-content-add-circle-outline:before { + content: "\e6ff"; +} + +.mdi-content-add-circle:before { + content: "\e700"; +} + +.mdi-content-add:before { + content: "\e701"; +} + +.mdi-content-archive:before { + content: "\e702"; +} + +.mdi-content-backspace:before { + content: "\e703"; +} + +.mdi-content-block:before { + content: "\e704"; +} + +.mdi-content-clear:before { + content: "\e705"; +} + +.mdi-content-content-copy:before { + content: "\e706"; +} + +.mdi-content-content-cut:before { + content: "\e707"; +} + +.mdi-content-content-paste:before { + content: "\e708"; +} + +.mdi-content-create:before { + content: "\e709"; +} + +.mdi-content-drafts:before { + content: "\e70a"; +} + +.mdi-content-filter-list:before { + content: "\e70b"; +} + +.mdi-content-flag:before { + content: "\e70c"; +} + +.mdi-content-forward:before { + content: "\e70d"; +} + +.mdi-content-gesture:before { + content: "\e70e"; +} + +.mdi-content-inbox:before { + content: "\e70f"; +} + +.mdi-content-link:before { + content: "\e710"; +} + +.mdi-content-mail:before { + content: "\e711"; +} + +.mdi-content-markunread:before { + content: "\e712"; +} + +.mdi-content-redo:before { + content: "\e713"; +} + +.mdi-content-remove-circle-outline:before { + content: "\e714"; +} + +.mdi-content-remove-circle:before { + content: "\e715"; +} + +.mdi-content-remove:before { + content: "\e716"; +} + +.mdi-content-reply-all:before { + content: "\e717"; +} + +.mdi-content-reply:before { + content: "\e718"; +} + +.mdi-content-report:before { + content: "\e719"; +} + +.mdi-content-save:before { + content: "\e71a"; +} + +.mdi-content-select-all:before { + content: "\e71b"; +} + +.mdi-content-send:before { + content: "\e71c"; +} + +.mdi-content-sort:before { + content: "\e71d"; +} + +.mdi-content-text-format:before { + content: "\e71e"; +} + +.mdi-content-undo:before { + content: "\e71f"; +} + +.mdi-editor-attach-file:before { + content: "\e776"; +} + +.mdi-editor-attach-money:before { + content: "\e777"; +} + +.mdi-editor-border-all:before { + content: "\e778"; +} + +.mdi-editor-border-bottom:before { + content: "\e779"; +} + +.mdi-editor-border-clear:before { + content: "\e77a"; +} + +.mdi-editor-border-color:before { + content: "\e77b"; +} + +.mdi-editor-border-horizontal:before { + content: "\e77c"; +} + +.mdi-editor-border-inner:before { + content: "\e77d"; +} + +.mdi-editor-border-left:before { + content: "\e77e"; +} + +.mdi-editor-border-outer:before { + content: "\e77f"; +} + +.mdi-editor-border-right:before { + content: "\e780"; +} + +.mdi-editor-border-style:before { + content: "\e781"; +} + +.mdi-editor-border-top:before { + content: "\e782"; +} + +.mdi-editor-border-vertical:before { + content: "\e783"; +} + +.mdi-editor-format-align-center:before { + content: "\e784"; +} + +.mdi-editor-format-align-justify:before { + content: "\e785"; +} + +.mdi-editor-format-align-left:before { + content: "\e786"; +} + +.mdi-editor-format-align-right:before { + content: "\e787"; +} + +.mdi-editor-format-bold:before { + content: "\e788"; +} + +.mdi-editor-format-clear:before { + content: "\e789"; +} + +.mdi-editor-format-color-fill:before { + content: "\e78a"; +} + +.mdi-editor-format-color-reset:before { + content: "\e78b"; +} + +.mdi-editor-format-color-text:before { + content: "\e78c"; +} + +.mdi-editor-format-indent-decrease:before { + content: "\e78d"; +} + +.mdi-editor-format-indent-increase:before { + content: "\e78e"; +} + +.mdi-editor-format-italic:before { + content: "\e78f"; +} + +.mdi-editor-format-line-spacing:before { + content: "\e790"; +} + +.mdi-editor-format-list-bulleted:before { + content: "\e791"; +} + +.mdi-editor-format-list-numbered:before { + content: "\e792"; +} + +.mdi-editor-format-paint:before { + content: "\e793"; +} + +.mdi-editor-format-quote:before { + content: "\e794"; +} + +.mdi-editor-format-size:before { + content: "\e795"; +} + +.mdi-editor-format-strikethrough:before { + content: "\e796"; +} + +.mdi-editor-format-textdirection-l-to-r:before { + content: "\e797"; +} + +.mdi-editor-format-textdirection-r-to-l:before { + content: "\e798"; +} + +.mdi-editor-format-underline:before { + content: "\e799"; +} + +.mdi-editor-functions:before { + content: "\e79a"; +} + +.mdi-editor-insert-chart:before { + content: "\e79b"; +} + +.mdi-editor-insert-comment:before { + content: "\e79c"; +} + +.mdi-editor-insert-drive-file:before { + content: "\e79d"; +} + +.mdi-editor-insert-emoticon:before { + content: "\e79e"; +} + +.mdi-editor-insert-invitation:before { + content: "\e79f"; +} + +.mdi-editor-insert-link:before { + content: "\e7a0"; +} + +.mdi-editor-insert-photo:before { + content: "\e7a1"; +} + +.mdi-editor-merge-type:before { + content: "\e7a2"; +} + +.mdi-editor-mode-comment:before { + content: "\e7a3"; +} + +.mdi-editor-mode-edit:before { + content: "\e7a4"; +} + +.mdi-editor-publish:before { + content: "\e7a5"; +} + +.mdi-editor-vertical-align-bottom:before { + content: "\e7a6"; +} + +.mdi-editor-vertical-align-center:before { + content: "\e7a7"; +} + +.mdi-editor-vertical-align-top:before { + content: "\e7a8"; +} + +.mdi-editor-wrap-text:before { + content: "\e7a9"; +} + +.mdi-file-attachment:before { + content: "\e7aa"; +} + +.mdi-file-cloud-circle:before { + content: "\e7ab"; +} + +.mdi-file-cloud-done:before { + content: "\e7ac"; +} + +.mdi-file-cloud-download:before { + content: "\e7ad"; +} + +.mdi-file-cloud-off:before { + content: "\e7ae"; +} + +.mdi-file-cloud-queue:before { + content: "\e7af"; +} + +.mdi-file-cloud-upload:before { + content: "\e7b0"; +} + +.mdi-file-cloud:before { + content: "\e7b1"; +} + +.mdi-file-file-download:before { + content: "\e7b2"; +} + +.mdi-file-file-upload:before { + content: "\e7b3"; +} + +.mdi-file-folder-open:before { + content: "\e7b4"; +} + +.mdi-file-folder-shared:before { + content: "\e7b5"; +} + +.mdi-file-folder:before { + content: "\e7b6"; +} + +.mdi-device-access-alarm:before { + content: "\e720"; +} + +.mdi-device-access-alarms:before { + content: "\e721"; +} + +.mdi-device-access-time:before { + content: "\e722"; +} + +.mdi-device-add-alarm:before { + content: "\e723"; +} + +.mdi-device-airplanemode-off:before { + content: "\e724"; +} + +.mdi-device-airplanemode-on:before { + content: "\e725"; +} + +.mdi-device-battery-20:before { + content: "\e726"; +} + +.mdi-device-battery-30:before { + content: "\e727"; +} + +.mdi-device-battery-50:before { + content: "\e728"; +} + +.mdi-device-battery-60:before { + content: "\e729"; +} + +.mdi-device-battery-80:before { + content: "\e72a"; +} + +.mdi-device-battery-90:before { + content: "\e72b"; +} + +.mdi-device-battery-alert:before { + content: "\e72c"; +} + +.mdi-device-battery-charging-20:before { + content: "\e72d"; +} + +.mdi-device-battery-charging-30:before { + content: "\e72e"; +} + +.mdi-device-battery-charging-50:before { + content: "\e72f"; +} + +.mdi-device-battery-charging-60:before { + content: "\e730"; +} + +.mdi-device-battery-charging-80:before { + content: "\e731"; +} + +.mdi-device-battery-charging-90:before { + content: "\e732"; +} + +.mdi-device-battery-charging-full:before { + content: "\e733"; +} + +.mdi-device-battery-full:before { + content: "\e734"; +} + +.mdi-device-battery-std:before { + content: "\e735"; +} + +.mdi-device-battery-unknown:before { + content: "\e736"; +} + +.mdi-device-bluetooth-connected:before { + content: "\e737"; +} + +.mdi-device-bluetooth-disabled:before { + content: "\e738"; +} + +.mdi-device-bluetooth-searching:before { + content: "\e739"; +} + +.mdi-device-bluetooth:before { + content: "\e73a"; +} + +.mdi-device-brightness-auto:before { + content: "\e73b"; +} + +.mdi-device-brightness-high:before { + content: "\e73c"; +} + +.mdi-device-brightness-low:before { + content: "\e73d"; +} + +.mdi-device-brightness-medium:before { + content: "\e73e"; +} + +.mdi-device-data-usage:before { + content: "\e73f"; +} + +.mdi-device-developer-mode:before { + content: "\e740"; +} + +.mdi-device-devices:before { + content: "\e741"; +} + +.mdi-device-dvr:before { + content: "\e742"; +} + +.mdi-device-gps-fixed:before { + content: "\e743"; +} + +.mdi-device-gps-not-fixed:before { + content: "\e744"; +} + +.mdi-device-gps-off:before { + content: "\e745"; +} + +.mdi-device-location-disabled:before { + content: "\e746"; +} + +.mdi-device-location-searching:before { + content: "\e747"; +} + +.mdi-device-multitrack-audio:before { + content: "\e748"; +} + +.mdi-device-network-cell:before { + content: "\e749"; +} + +.mdi-device-network-wifi:before { + content: "\e74a"; +} + +.mdi-device-nfc:before { + content: "\e74b"; +} + +.mdi-device-now-wallpaper:before { + content: "\e74c"; +} + +.mdi-device-now-widgets:before { + content: "\e74d"; +} + +.mdi-device-screen-lock-landscape:before { + content: "\e74e"; +} + +.mdi-device-screen-lock-portrait:before { + content: "\e74f"; +} + +.mdi-device-screen-lock-rotation:before { + content: "\e750"; +} + +.mdi-device-screen-rotation:before { + content: "\e751"; +} + +.mdi-device-sd-storage:before { + content: "\e752"; +} + +.mdi-device-settings-system-daydream:before { + content: "\e753"; +} + +.mdi-device-signal-cellular-0-bar:before { + content: "\e754"; +} + +.mdi-device-signal-cellular-1-bar:before { + content: "\e755"; +} + +.mdi-device-signal-cellular-2-bar:before { + content: "\e756"; +} + +.mdi-device-signal-cellular-3-bar:before { + content: "\e757"; +} + +.mdi-device-signal-cellular-4-bar:before { + content: "\e758"; +} + +.mdi-signal-wifi-statusbar-connected-no-internet-after:before { + content: "\e8f6"; +} + +.mdi-device-signal-cellular-connected-no-internet-0-bar:before { + content: "\e759"; +} + +.mdi-device-signal-cellular-connected-no-internet-1-bar:before { + content: "\e75a"; +} + +.mdi-device-signal-cellular-connected-no-internet-2-bar:before { + content: "\e75b"; +} + +.mdi-device-signal-cellular-connected-no-internet-3-bar:before { + content: "\e75c"; +} + +.mdi-device-signal-cellular-connected-no-internet-4-bar:before { + content: "\e75d"; +} + +.mdi-device-signal-cellular-no-sim:before { + content: "\e75e"; +} + +.mdi-device-signal-cellular-null:before { + content: "\e75f"; +} + +.mdi-device-signal-cellular-off:before { + content: "\e760"; +} + +.mdi-device-signal-wifi-0-bar:before { + content: "\e761"; +} + +.mdi-device-signal-wifi-1-bar:before { + content: "\e762"; +} + +.mdi-device-signal-wifi-2-bar:before { + content: "\e763"; +} + +.mdi-device-signal-wifi-3-bar:before { + content: "\e764"; +} + +.mdi-device-signal-wifi-4-bar:before { + content: "\e765"; +} + +.mdi-device-signal-wifi-off:before { + content: "\e766"; +} + +.mdi-device-signal-wifi-statusbar-1-bar:before { + content: "\e767"; +} + +.mdi-device-signal-wifi-statusbar-2-bar:before { + content: "\e768"; +} + +.mdi-device-signal-wifi-statusbar-3-bar:before { + content: "\e769"; +} + +.mdi-device-signal-wifi-statusbar-4-bar:before { + content: "\e76a"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-:before { + content: "\e76b"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet:before { + content: "\e76f"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { + content: "\e76c"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { + content: "\e76d"; +} + +.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { + content: "\e76e"; +} + +.mdi-signal-wifi-statusbar-not-connected-after:before { + content: "\e8f7"; +} + +.mdi-device-signal-wifi-statusbar-not-connected:before { + content: "\e770"; +} + +.mdi-device-signal-wifi-statusbar-null:before { + content: "\e771"; +} + +.mdi-device-storage:before { + content: "\e772"; +} + +.mdi-device-usb:before { + content: "\e773"; +} + +.mdi-device-wifi-lock:before { + content: "\e774"; +} + +.mdi-device-wifi-tethering:before { + content: "\e775"; +} + +.mdi-hardware-cast-connected:before { + content: "\e7b7"; +} + +.mdi-hardware-cast:before { + content: "\e7b8"; +} + +.mdi-hardware-computer:before { + content: "\e7b9"; +} + +.mdi-hardware-desktop-mac:before { + content: "\e7ba"; +} + +.mdi-hardware-desktop-windows:before { + content: "\e7bb"; +} + +.mdi-hardware-dock:before { + content: "\e7bc"; +} + +.mdi-hardware-gamepad:before { + content: "\e7bd"; +} + +.mdi-hardware-headset-mic:before { + content: "\e7be"; +} + +.mdi-hardware-headset:before { + content: "\e7bf"; +} + +.mdi-hardware-keyboard-alt:before { + content: "\e7c0"; +} + +.mdi-hardware-keyboard-arrow-down:before { + content: "\e7c1"; +} + +.mdi-hardware-keyboard-arrow-left:before { + content: "\e7c2"; +} + +.mdi-hardware-keyboard-arrow-right:before { + content: "\e7c3"; +} + +.mdi-hardware-keyboard-arrow-up:before { + content: "\e7c4"; +} + +.mdi-hardware-keyboard-backspace:before { + content: "\e7c5"; +} + +.mdi-hardware-keyboard-capslock:before { + content: "\e7c6"; +} + +.mdi-hardware-keyboard-control:before { + content: "\e7c7"; +} + +.mdi-hardware-keyboard-hide:before { + content: "\e7c8"; +} + +.mdi-hardware-keyboard-return:before { + content: "\e7c9"; +} + +.mdi-hardware-keyboard-tab:before { + content: "\e7ca"; +} + +.mdi-hardware-keyboard-voice:before { + content: "\e7cb"; +} + +.mdi-hardware-keyboard:before { + content: "\e7cc"; +} + +.mdi-hardware-laptop-chromebook:before { + content: "\e7cd"; +} + +.mdi-hardware-laptop-mac:before { + content: "\e7ce"; +} + +.mdi-hardware-laptop-windows:before { + content: "\e7cf"; +} + +.mdi-hardware-laptop:before { + content: "\e7d0"; +} + +.mdi-hardware-memory:before { + content: "\e7d1"; +} + +.mdi-hardware-mouse:before { + content: "\e7d2"; +} + +.mdi-hardware-phone-android:before { + content: "\e7d3"; +} + +.mdi-hardware-phone-iphone:before { + content: "\e7d4"; +} + +.mdi-hardware-phonelink-off:before { + content: "\e7d5"; +} + +.mdi-hardware-phonelink:before { + content: "\e7d6"; +} + +.mdi-hardware-security:before { + content: "\e7d7"; +} + +.mdi-hardware-sim-card:before { + content: "\e7d8"; +} + +.mdi-hardware-smartphone:before { + content: "\e7d9"; +} + +.mdi-hardware-speaker:before { + content: "\e7da"; +} + +.mdi-hardware-tablet-android:before { + content: "\e7db"; +} + +.mdi-hardware-tablet-mac:before { + content: "\e7dc"; +} + +.mdi-hardware-tablet:before { + content: "\e7dd"; +} + +.mdi-hardware-tv:before { + content: "\e7de"; +} + +.mdi-hardware-watch:before { + content: "\e7df"; +} + +.mdi-image-add-to-photos:before { + content: "\e7e0"; +} + +.mdi-image-adjust:before { + content: "\e7e1"; +} + +.mdi-image-assistant-photo:before { + content: "\e7e2"; +} + +.mdi-image-audiotrack:before { + content: "\e7e3"; +} + +.mdi-image-blur-circular:before { + content: "\e7e4"; +} + +.mdi-image-blur-linear:before { + content: "\e7e5"; +} + +.mdi-image-blur-off:before { + content: "\e7e6"; +} + +.mdi-image-blur-on:before { + content: "\e7e7"; +} + +.mdi-image-brightness-1:before { + content: "\e7e8"; +} + +.mdi-image-brightness-2:before { + content: "\e7e9"; +} + +.mdi-image-brightness-3:before { + content: "\e7ea"; +} + +.mdi-image-brightness-4:before { + content: "\e7eb"; +} + +.mdi-image-brightness-5:before { + content: "\e7ec"; +} + +.mdi-image-brightness-6:before { + content: "\e7ed"; +} + +.mdi-image-brightness-7:before { + content: "\e7ee"; +} + +.mdi-image-brush:before { + content: "\e7ef"; +} + +.mdi-image-camera-alt:before { + content: "\e7f0"; +} + +.mdi-image-camera-front:before { + content: "\e7f1"; +} + +.mdi-image-camera-rear:before { + content: "\e7f2"; +} + +.mdi-image-camera-roll:before { + content: "\e7f3"; +} + +.mdi-image-camera:before { + content: "\e7f4"; +} + +.mdi-image-center-focus-strong:before { + content: "\e7f5"; +} + +.mdi-image-center-focus-weak:before { + content: "\e7f6"; +} + +.mdi-image-collections:before { + content: "\e7f7"; +} + +.mdi-image-color-lens:before { + content: "\e7f8"; +} + +.mdi-image-colorize:before { + content: "\e7f9"; +} + +.mdi-image-compare:before { + content: "\e7fa"; +} + +.mdi-image-control-point-duplicate:before { + content: "\e7fb"; +} + +.mdi-image-control-point:before { + content: "\e7fc"; +} + +.mdi-image-crop-3-2:before { + content: "\e7fd"; +} + +.mdi-image-crop-5-4:before { + content: "\e7fe"; +} + +.mdi-image-crop-7-5:before { + content: "\e7ff"; +} + +.mdi-image-crop-16-9:before { + content: "\e800"; +} + +.mdi-image-crop-din:before { + content: "\e801"; +} + +.mdi-image-crop-free:before { + content: "\e802"; +} + +.mdi-image-crop-landscape:before { + content: "\e803"; +} + +.mdi-image-crop-original:before { + content: "\e804"; +} + +.mdi-image-crop-portrait:before { + content: "\e805"; +} + +.mdi-image-crop-square:before { + content: "\e806"; +} + +.mdi-image-crop:before { + content: "\e807"; +} + +.mdi-image-dehaze:before { + content: "\e808"; +} + +.mdi-image-details:before { + content: "\e809"; +} + +.mdi-image-edit:before { + content: "\e80a"; +} + +.mdi-image-exposure-minus-1:before { + content: "\e80b"; +} + +.mdi-image-exposure-minus-2:before { + content: "\e80c"; +} + +.mdi-image-exposure-plus-1:before { + content: "\e80d"; +} + +.mdi-image-exposure-plus-2:before { + content: "\e80e"; +} + +.mdi-image-exposure-zero:before { + content: "\e80f"; +} + +.mdi-image-exposure:before { + content: "\e810"; +} + +.mdi-image-filter-1:before { + content: "\e811"; +} + +.mdi-image-filter-2:before { + content: "\e812"; +} + +.mdi-image-filter-3:before { + content: "\e813"; +} + +.mdi-image-filter-4:before { + content: "\e814"; +} + +.mdi-image-filter-5:before { + content: "\e815"; +} + +.mdi-image-filter-6:before { + content: "\e816"; +} + +.mdi-image-filter-7:before { + content: "\e817"; +} + +.mdi-image-filter-8:before { + content: "\e818"; +} + +.mdi-image-filter-9-plus:before { + content: "\e819"; +} + +.mdi-image-filter-9:before { + content: "\e81a"; +} + +.mdi-image-filter-b-and-w:before { + content: "\e81b"; +} + +.mdi-image-filter-center-focus:before { + content: "\e81c"; +} + +.mdi-image-filter-drama:before { + content: "\e81d"; +} + +.mdi-image-filter-frames:before { + content: "\e81e"; +} + +.mdi-image-filter-hdr:before { + content: "\e81f"; +} + +.mdi-image-filter-none:before { + content: "\e820"; +} + +.mdi-image-filter-tilt-shift:before { + content: "\e821"; +} + +.mdi-image-filter-vintage:before { + content: "\e822"; +} + +.mdi-image-filter:before { + content: "\e823"; +} + +.mdi-image-flare:before { + content: "\e824"; +} + +.mdi-image-flash-auto:before { + content: "\e825"; +} + +.mdi-image-flash-off:before { + content: "\e826"; +} + +.mdi-image-flash-on:before { + content: "\e827"; +} + +.mdi-image-flip:before { + content: "\e828"; +} + +.mdi-image-gradient:before { + content: "\e829"; +} + +.mdi-image-grain:before { + content: "\e82a"; +} + +.mdi-image-grid-off:before { + content: "\e82b"; +} + +.mdi-image-grid-on:before { + content: "\e82c"; +} + +.mdi-image-hdr-off:before { + content: "\e82d"; +} + +.mdi-image-hdr-on:before { + content: "\e82e"; +} + +.mdi-image-hdr-strong:before { + content: "\e82f"; +} + +.mdi-image-hdr-weak:before { + content: "\e830"; +} + +.mdi-image-healing:before { + content: "\e831"; +} + +.mdi-image-image-aspect-ratio:before { + content: "\e832"; +} + +.mdi-image-image:before { + content: "\e833"; +} + +.mdi-image-iso:before { + content: "\e834"; +} + +.mdi-image-landscape:before { + content: "\e835"; +} + +.mdi-image-leak-add:before { + content: "\e836"; +} + +.mdi-image-leak-remove:before { + content: "\e837"; +} + +.mdi-image-lens:before { + content: "\e838"; +} + +.mdi-image-looks-3:before { + content: "\e839"; +} + +.mdi-image-looks-4:before { + content: "\e83a"; +} + +.mdi-image-looks-5:before { + content: "\e83b"; +} + +.mdi-image-looks-6:before { + content: "\e83c"; +} + +.mdi-image-looks-one:before { + content: "\e83d"; +} + +.mdi-image-looks-two:before { + content: "\e83e"; +} + +.mdi-image-looks:before { + content: "\e83f"; +} + +.mdi-image-loupe:before { + content: "\e840"; +} + +.mdi-image-movie-creation:before { + content: "\e841"; +} + +.mdi-image-nature-people:before { + content: "\e842"; +} + +.mdi-image-nature:before { + content: "\e843"; +} + +.mdi-image-navigate-before:before { + content: "\e844"; +} + +.mdi-image-navigate-next:before { + content: "\e845"; +} + +.mdi-image-palette:before { + content: "\e846"; +} + +.mdi-image-panorama-fisheye:before { + content: "\e847"; +} + +.mdi-image-panorama-horizontal:before { + content: "\e848"; +} + +.mdi-image-panorama-vertical:before { + content: "\e849"; +} + +.mdi-image-panorama-wide-angle:before { + content: "\e84a"; +} + +.mdi-image-panorama:before { + content: "\e84b"; +} + +.mdi-image-photo-album:before { + content: "\e84c"; +} + +.mdi-image-photo-camera:before { + content: "\e84d"; +} + +.mdi-image-photo-library:before { + content: "\e84e"; +} + +.mdi-image-photo:before { + content: "\e84f"; +} + +.mdi-image-portrait:before { + content: "\e850"; +} + +.mdi-image-remove-red-eye:before { + content: "\e851"; +} + +.mdi-image-rotate-left:before { + content: "\e852"; +} + +.mdi-image-rotate-right:before { + content: "\e853"; +} + +.mdi-image-slideshow:before { + content: "\e854"; +} + +.mdi-image-straighten:before { + content: "\e855"; +} + +.mdi-image-style:before { + content: "\e856"; +} + +.mdi-image-switch-camera:before { + content: "\e857"; +} + +.mdi-image-switch-video:before { + content: "\e858"; +} + +.mdi-image-tag-faces:before { + content: "\e859"; +} + +.mdi-image-texture:before { + content: "\e85a"; +} + +.mdi-image-timelapse:before { + content: "\e85b"; +} + +.mdi-image-timer-3:before { + content: "\e85c"; +} + +.mdi-image-timer-10:before { + content: "\e85d"; +} + +.mdi-image-timer-auto:before { + content: "\e85e"; +} + +.mdi-image-timer-off:before { + content: "\e85f"; +} + +.mdi-image-timer:before { + content: "\e860"; +} + +.mdi-image-tonality:before { + content: "\e861"; +} + +.mdi-image-transform:before { + content: "\e862"; +} + +.mdi-image-tune:before { + content: "\e863"; +} + +.mdi-image-wb-auto:before { + content: "\e864"; +} + +.mdi-image-wb-cloudy:before { + content: "\e865"; +} + +.mdi-image-wb-incandescent:before { + content: "\e866"; +} + +.mdi-image-wb-irradescent:before { + content: "\e867"; +} + +.mdi-image-wb-sunny:before { + content: "\e868"; +} + +.mdi-maps-beenhere:before { + content: "\e869"; +} + +.mdi-maps-directions-bike:before { + content: "\e86a"; +} + +.mdi-maps-directions-bus:before { + content: "\e86b"; +} + +.mdi-maps-directions-car:before { + content: "\e86c"; +} + +.mdi-maps-directions-ferry:before { + content: "\e86d"; +} + +.mdi-maps-directions-subway:before { + content: "\e86e"; +} + +.mdi-maps-directions-train:before { + content: "\e86f"; +} + +.mdi-maps-directions-transit:before { + content: "\e870"; +} + +.mdi-maps-directions-walk:before { + content: "\e871"; +} + +.mdi-maps-directions:before { + content: "\e872"; +} + +.mdi-maps-flight:before { + content: "\e873"; +} + +.mdi-maps-hotel:before { + content: "\e874"; +} + +.mdi-maps-layers-clear:before { + content: "\e875"; +} + +.mdi-maps-layers:before { + content: "\e876"; +} + +.mdi-maps-local-airport:before { + content: "\e877"; +} + +.mdi-maps-local-atm:before { + content: "\e878"; +} + +.mdi-maps-local-attraction:before { + content: "\e879"; +} + +.mdi-maps-local-bar:before { + content: "\e87a"; +} + +.mdi-maps-local-cafe:before { + content: "\e87b"; +} + +.mdi-maps-local-car-wash:before { + content: "\e87c"; +} + +.mdi-maps-local-convenience-store:before { + content: "\e87d"; +} + +.mdi-maps-local-drink:before { + content: "\e87e"; +} + +.mdi-maps-local-florist:before { + content: "\e87f"; +} + +.mdi-maps-local-gas-station:before { + content: "\e880"; +} + +.mdi-maps-local-grocery-store:before { + content: "\e881"; +} + +.mdi-maps-local-hospital:before { + content: "\e882"; +} + +.mdi-maps-local-hotel:before { + content: "\e883"; +} + +.mdi-maps-local-laundry-service:before { + content: "\e884"; +} + +.mdi-maps-local-library:before { + content: "\e885"; +} + +.mdi-maps-local-mall:before { + content: "\e886"; +} + +.mdi-maps-local-movies:before { + content: "\e887"; +} + +.mdi-maps-local-offer:before { + content: "\e888"; +} + +.mdi-maps-local-parking:before { + content: "\e889"; +} + +.mdi-maps-local-pharmacy:before { + content: "\e88a"; +} + +.mdi-maps-local-phone:before { + content: "\e88b"; +} + +.mdi-maps-local-pizza:before { + content: "\e88c"; +} + +.mdi-maps-local-play:before { + content: "\e88d"; +} + +.mdi-maps-local-post-office:before { + content: "\e88e"; +} + +.mdi-maps-local-print-shop:before { + content: "\e88f"; +} + +.mdi-maps-local-restaurant:before { + content: "\e890"; +} + +.mdi-maps-local-see:before { + content: "\e891"; +} + +.mdi-maps-local-shipping:before { + content: "\e892"; +} + +.mdi-maps-local-taxi:before { + content: "\e893"; +} + +.mdi-maps-location-history:before { + content: "\e894"; +} + +.mdi-maps-map:before { + content: "\e895"; +} + +.mdi-maps-my-location:before { + content: "\e896"; +} + +.mdi-maps-navigation:before { + content: "\e897"; +} + +.mdi-maps-pin-drop:before { + content: "\e898"; +} + +.mdi-maps-place:before { + content: "\e899"; +} + +.mdi-maps-rate-review:before { + content: "\e89a"; +} + +.mdi-maps-restaurant-menu:before { + content: "\e89b"; +} + +.mdi-maps-satellite:before { + content: "\e89c"; +} + +.mdi-maps-store-mall-directory:before { + content: "\e89d"; +} + +.mdi-maps-terrain:before { + content: "\e89e"; +} + +.mdi-maps-traffic:before { + content: "\e89f"; +} + +.mdi-navigation-apps:before { + content: "\e8a0"; +} + +.mdi-navigation-arrow-back:before { + content: "\e8a1"; +} + +.mdi-navigation-arrow-drop-down-circle:before { + content: "\e8a2"; +} + +.mdi-navigation-arrow-drop-down:before { + content: "\e8a3"; +} + +.mdi-navigation-arrow-drop-up:before { + content: "\e8a4"; +} + +.mdi-navigation-arrow-forward:before { + content: "\e8a5"; +} + +.mdi-navigation-cancel:before { + content: "\e8a6"; +} + +.mdi-navigation-check:before { + content: "\e8a7"; +} + +.mdi-navigation-chevron-left:before { + content: "\e8a8"; +} + +.mdi-navigation-chevron-right:before { + content: "\e8a9"; +} + +.mdi-navigation-close:before { + content: "\e8aa"; +} + +.mdi-navigation-expand-less:before { + content: "\e8ab"; +} + +.mdi-navigation-expand-more:before { + content: "\e8ac"; +} + +.mdi-navigation-fullscreen-exit:before { + content: "\e8ad"; +} + +.mdi-navigation-fullscreen:before { + content: "\e8ae"; +} + +.mdi-navigation-menu:before { + content: "\e8af"; +} + +.mdi-navigation-more-horiz:before { + content: "\e8b0"; +} + +.mdi-navigation-more-vert:before { + content: "\e8b1"; +} + +.mdi-navigation-refresh:before { + content: "\e8b2"; +} + +.mdi-navigation-unfold-less:before { + content: "\e8b3"; +} + +.mdi-navigation-unfold-more:before { + content: "\e8b4"; +} + +.mdi-notification-adb:before { + content: "\e8b5"; +} + +.mdi-notification-bluetooth-audio:before { + content: "\e8b6"; +} + +.mdi-notification-disc-full:before { + content: "\e8b7"; +} + +.mdi-notification-dnd-forwardslash:before { + content: "\e8b8"; +} + +.mdi-notification-do-not-disturb:before { + content: "\e8b9"; +} + +.mdi-notification-drive-eta:before { + content: "\e8ba"; +} + +.mdi-notification-event-available:before { + content: "\e8bb"; +} + +.mdi-notification-event-busy:before { + content: "\e8bc"; +} + +.mdi-notification-event-note:before { + content: "\e8bd"; +} + +.mdi-notification-folder-special:before { + content: "\e8be"; +} + +.mdi-notification-mms:before { + content: "\e8bf"; +} + +.mdi-notification-more:before { + content: "\e8c0"; +} + +.mdi-notification-network-locked:before { + content: "\e8c1"; +} + +.mdi-notification-phone-bluetooth-speaker:before { + content: "\e8c2"; +} + +.mdi-notification-phone-forwarded:before { + content: "\e8c3"; +} + +.mdi-notification-phone-in-talk:before { + content: "\e8c4"; +} + +.mdi-notification-phone-locked:before { + content: "\e8c5"; +} + +.mdi-notification-phone-missed:before { + content: "\e8c6"; +} + +.mdi-notification-phone-paused:before { + content: "\e8c7"; +} + +.mdi-notification-play-download:before { + content: "\e8c8"; +} + +.mdi-notification-play-install:before { + content: "\e8c9"; +} + +.mdi-notification-sd-card:before { + content: "\e8ca"; +} + +.mdi-notification-sim-card-alert:before { + content: "\e8cb"; +} + +.mdi-notification-sms-failed:before { + content: "\e8cc"; +} + +.mdi-notification-sms:before { + content: "\e8cd"; +} + +.mdi-notification-sync-disabled:before { + content: "\e8ce"; +} + +.mdi-notification-sync-problem:before { + content: "\e8cf"; +} + +.mdi-notification-sync:before { + content: "\e8d0"; +} + +.mdi-notification-system-update:before { + content: "\e8d1"; +} + +.mdi-notification-tap-and-play:before { + content: "\e8d2"; +} + +.mdi-notification-time-to-leave:before { + content: "\e8d3"; +} + +.mdi-notification-vibration:before { + content: "\e8d4"; +} + +.mdi-notification-voice-chat:before { + content: "\e8d5"; +} + +.mdi-notification-vpn-lock:before { + content: "\e8d6"; +} + +.mdi-social-cake:before { + content: "\e8d7"; +} + +.mdi-social-domain:before { + content: "\e8d8"; +} + +.mdi-social-group-add:before { + content: "\e8d9"; +} + +.mdi-social-group:before { + content: "\e8da"; +} + +.mdi-social-location-city:before { + content: "\e8db"; +} + +.mdi-social-mood:before { + content: "\e8dc"; +} + +.mdi-social-notifications-none:before { + content: "\e8dd"; +} + +.mdi-social-notifications-off:before { + content: "\e8de"; +} + +.mdi-social-notifications-on:before { + content: "\e8df"; +} + +.mdi-social-notifications-paused:before { + content: "\e8e0"; +} + +.mdi-social-notifications:before { + content: "\e8e1"; +} + +.mdi-social-pages:before { + content: "\e8e2"; +} + +.mdi-social-party-mode:before { + content: "\e8e3"; +} + +.mdi-social-people-outline:before { + content: "\e8e4"; +} + +.mdi-social-people:before { + content: "\e8e5"; +} + +.mdi-social-person-add:before { + content: "\e8e6"; +} + +.mdi-social-person-outline:before { + content: "\e8e7"; +} + +.mdi-social-person:before { + content: "\e8e8"; +} + +.mdi-social-plus-one:before { + content: "\e8e9"; +} + +.mdi-social-poll:before { + content: "\e8ea"; +} + +.mdi-social-public:before { + content: "\e8eb"; +} + +.mdi-social-school:before { + content: "\e8ec"; +} + +.mdi-social-share:before { + content: "\e8ed"; +} + +.mdi-social-whatshot:before { + content: "\e8ee"; +} + +.mdi-toggle-check-box-outline-blank:before { + content: "\e8ef"; +} + +.mdi-toggle-check-box:before { + content: "\e8f0"; +} + +.mdi-toggle-radio-button-off:before { + content: "\e8f1"; +} + +.mdi-toggle-radio-button-on:before { + content: "\e8f2"; +} + +.mdi-toggle-star-half:before { + content: "\e8f3"; +} + +.mdi-toggle-star-outline:before { + content: "\e8f4"; +} + +.mdi-toggle-star:before { + content: "\e8f5"; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_materialbox.scss b/system/admin/static/editor/sass/components/_materialbox.scss new file mode 100644 index 0000000..9c20176 --- /dev/null +++ b/system/admin/static/editor/sass/components/_materialbox.scss @@ -0,0 +1,41 @@ +.materialboxed { + cursor: zoom-in; + position: relative; + @include transition(opacity .4s); + + &:hover { + &:not(.active) { + opacity: .8; + } + will-change: left, top, width, height; + } +} + +.materialboxed.active { + cursor: zoom-out; +} + +#materialbox-overlay { + position:fixed; + top:0; + left:0; + right: 0; + bottom: 0; + background-color: #292929; + z-index: 999; + + will-change: opacity; +} +.materialbox-caption { + position: fixed; + display: none; + color: #fff; + line-height: 50px; + bottom: 0; + width: 100%; + text-align: center; + padding: 0% 15%; + height: 50px; + z-index: 1000; + -webkit-font-smoothing: antialiased; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_mixins.scss b/system/admin/static/editor/sass/components/_mixins.scss new file mode 100644 index 0000000..4c3d373 --- /dev/null +++ b/system/admin/static/editor/sass/components/_mixins.scss @@ -0,0 +1,5 @@ +@mixin box-shadow-2($args1, $args2) { + -webkit-box-shadow: $args1, $args2; + -moz-box-shadow: $args1, $args2; + box-shadow: $args1, $args2; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_modal.scss b/system/admin/static/editor/sass/components/_modal.scss new file mode 100644 index 0000000..0a6dcfb --- /dev/null +++ b/system/admin/static/editor/sass/components/_modal.scss @@ -0,0 +1,90 @@ +.modal { + @extend .z-depth-4; + + display: none; + position: fixed; + left: 0; + right: 0; + background-color: #fafafa; + padding: 0; + max-height: 70%; + width: 55%; + margin: auto; + overflow-y: auto; + + border-radius: 2px; + will-change: top, opacity; + + @media #{$medium-and-down} { + width: 80%; + } + + h1,h2,h3,h4 { + margin-top: 0; + } + + .modal-content { + padding: 24px; + } + .modal-close { + cursor: pointer; + } + + .modal-footer { + border-radius: 0 0 2px 2px; + background-color: #fafafa; + padding: 4px 6px; + height: 56px; + width: 100%; + + .btn, .btn-flat { + float: right; + margin: 6px 0; + } + } +} +.lean-overlay { + position: fixed; + z-index:999; + top: -100px; + left: 0; + bottom: 0; + right: 0; + height: 125%; + width: 100%; + background: #000; + display: none; + + will-change: opacity; +} + +// Modal with fixed action footer +.modal.modal-fixed-footer { + padding: 0; + height: 70%; + + .modal-content { + position: absolute; + height: calc(100% - 56px); + max-height: 100%; + width: 100%; + overflow-y: auto; + } + + .modal-footer { + border-top: 1px solid rgba(0,0,0,.1); + position: absolute; + bottom: 0; + } +} + +// Modal Bottom Sheet Style +.modal.bottom-sheet { + top: auto; + bottom: -100%; + margin: 0; + width: 100%; + max-height: 45%; + border-radius: 0; + will-change: bottom, opacity; +} diff --git a/system/admin/static/editor/sass/components/_navbar.scss b/system/admin/static/editor/sass/components/_navbar.scss new file mode 100644 index 0000000..65cd277 --- /dev/null +++ b/system/admin/static/editor/sass/components/_navbar.scss @@ -0,0 +1,144 @@ +nav { + color: $navbar-font-color; + @extend .z-depth-1; + background-color: $primary-color; + width: 100%; + height: $navbar-height-mobile; + line-height: $navbar-height-mobile; + + a { color: $navbar-font-color; } + + .nav-wrapper { + position: relative; + height: 100%; + + i { + display: block; + font-size: 2rem; + } + } + + @media #{$large-and-up} { + a.button-collapse { display: none; } + } + + + // Collapse button + .button-collapse { + float: left; + position: relative; + z-index: 1; + height: $navbar-height-mobile; + + i { + font-size: 2.7rem; + height: $navbar-height-mobile; + line-height: $navbar-height-mobile; + } + } + + + // Logo + .brand-logo { + position: absolute; + color: $navbar-font-color; + display: inline-block; + font-size: $navbar-brand-font-size; + padding: 0; + white-space: nowrap; + + &.center { + left: 50%; + @include transform(translateX(-50%)); + } + + @media #{$medium-and-down} { + left: 50%; + @include transform(translateX(-50%)); + } + + &.right { + right: 0.5rem; + padding: 0; + } + } + + + // Navbar Links + ul { + margin: 0; + + li { + @include transition(background-color .3s); + float: left; + padding: 0; + + &:hover, &.active { + background-color: rgba(0,0,0,.1); + } + } + a { + font-size: 1rem; + color: $navbar-font-color; + display: block; + padding: 0 15px; + } + + &.left { + float: left; + } + } + + // Navbar Search Form + .input-field { + margin: 0; + + input { + height: 100%; + font-size: 1.2rem; + border: none; + padding-left: 2rem; + + &:focus, &[type=text]:valid, &[type=password]:valid, + &[type=email]:valid, &[type=url]:valid, &[type=date]:valid { + border: none; + box-shadow: none; + } + } + label { + top: 0; + left: 0; + + i { + color: rgba(255,255,255,.7); + @include transition(color .3s); + } + &.active i { color: $navbar-font-color; } + &.active { + @include transform(translateY(0)); + } + } + + } + +} + +// Fixed Navbar +.navbar-fixed { + position: relative; + height: $navbar-height-mobile; + z-index: 998; + + nav { + position: fixed; + } +} +@media #{$medium-and-up} { + nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { + height: $navbar-height; + line-height: $navbar-height; + } + .navbar-fixed { + height: $navbar-height; + } +} diff --git a/system/admin/static/editor/sass/components/_normalize.scss b/system/admin/static/editor/sass/components/_normalize.scss new file mode 100644 index 0000000..ab626c4 --- /dev/null +++ b/system/admin/static/editor/sass/components/_normalize.scss @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +/* 1 */ html input[type="button"], +button, +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/system/admin/static/editor/sass/components/_prefixer.scss b/system/admin/static/editor/sass/components/_prefixer.scss new file mode 100644 index 0000000..f483eaf --- /dev/null +++ b/system/admin/static/editor/sass/components/_prefixer.scss @@ -0,0 +1,376 @@ +//--------------------------------------------------- +// Sass Prefixer +// ------------------------------------------------- +// TABLE OF CONTENTS +// (*) denotes a syntax-sugar helper +// ------------------------------------------------- +// +// animation($args) +// animation-delay($delay) +// animation-direction($direction) +// animation-duration($duration) +// animation-fill-mode($mode) +// animation-iteration-count($count) +// animation-name($name) +// animation-play-state($state) +// animation-timing-function($function) +// background-size($args) +// inner-shadow($args) * +// box-sizing($args) +// border-box() * +// content-box() * +// columns($args) +// column-count($count) +// column-gap($gap) +// column-rule($args) +// column-width($width) +// flexbox() +// flex($args) +// order($args) +// align($args) +// justify-content($args) +// gradient($default,$start,$stop) * +// linear-gradient-top($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])* +// linear-gradient-left($default,$color1,$stop1,$color2,$stop2,[$color3,$stop3,$color4,$stop4])* +// transform($args) +// transform-origin($args) +// transform-style($style) +// rotate($deg) +// scale($factor) +// translate($x,$y) +// translate3d($x,$y,$z) +// translateHardware($x,$y) * +// text-shadow($args) +// transition($args) +// transition-delay($delay) +// transition-duration($duration) +// transition-property($property) +// transition-timing-function($function) + + +// Animation + +@mixin animation($args) { + -webkit-animation: $args; + -moz-animation: $args; + -ms-animation: $args; + -o-animation: $args; + animation: $args; +} +@mixin animation-delay($delay) { + -webkit-animation-delay: $delay; + -moz-animation-delay: $delay; + -ms-animation-delay: $delay; + -o-animation-delay: $delay; + animation-delay: $delay; +} +@mixin animation-direction($direction) { + -webkit-animation-direction: $direction; + -moz-animation-direction: $direction; + -ms-animation-direction: $direction; + -o-animation-direction: $direction; +} +@mixin animation-duration($duration) { + -webkit-animation-duration: $duration; + -moz-animation-duration: $duration; + -ms-animation-duration: $duration; + -o-animation-duration: $duration; +} +@mixin animation-fill-mode($mode) { + -webkit-animation-fill-mode: $mode; + -moz-animation-fill-mode: $mode; + -ms-animation-fill-mode: $mode; + -o-animation-fill-mode: $mode; + animation-fill-mode: $mode; +} +@mixin animation-iteration-count($count) { + -webkit-animation-iteration-count: $count; + -moz-animation-iteration-count: $count; + -ms-animation-iteration-count: $count; + -o-animation-iteration-count: $count; + animation-iteration-count: $count; +} +@mixin animation-name($name) { + -webkit-animation-name: $name; + -moz-animation-name: $name; + -ms-animation-name: $name; + -o-animation-name: $name; + animation-name: $name; +} +@mixin animation-play-state($state) { + -webkit-animation-play-state: $state; + -moz-animation-play-state: $state; + -ms-animation-play-state: $state; + -o-animation-play-state: $state; + animation-play-state: $state; +} +@mixin animation-timing-function($function) { + -webkit-animation-timing-function: $function; + -moz-animation-timing-function: $function; + -ms-animation-timing-function: $function; + -o-animation-timing-function: $function; + animation-timing-function: $function; +} + +// Keyframes +@mixin keyframes($animation-name) { + @-webkit-keyframes #{$animation-name} { + @content; + } + @-moz-keyframes #{$animation-name} { + @content; + } + @keyframes #{$animation-name} { + @content; + } +} + +// Backface-visibility + +@mixin backface-visibility($args) { + -webkit-backface-visibility: $args; + -moz-backface-visibility: $args; + -ms-backface-visibility: $args; + backface-visibility: $args; +} + + +// Background Size + +@mixin background-size($args) { + -webkit-background-size: $args; + background-size: $args; +} + +// Box Sizing + +@mixin box-sizing($args) { + -webkit-box-sizing: $args; + -moz-box-sizing: $args; + box-sizing: $args; +} +@mixin border-box(){ + @include box-sizing(border-box); +} +@mixin content-box(){ + @include box-sizing(content-box); +} + + +// Columns + +@mixin columns($args) { + -webkit-columns: $args; + -moz-columns: $args; + columns: $args; +} +@mixin column-count($count) { + -webkit-column-count: $count; + -moz-column-count: $count; + column-count: $count; +} +@mixin column-gap($gap) { + -webkit-column-gap: $gap; + -moz-column-gap: $gap; + column-gap: $gap; +} +@mixin column-width($width) { + -webkit-column-width: $width; + -moz-column-width: $width; + column-width: $width; +} +@mixin column-rule($args) { + -webkit-column-rule: $args; + -moz-column-rule: $args; + column-rule: $args; +} + +// Filter +@mixin filter($args) { + -webkit-filter: $args; + -moz-filter: $args; + -o-filter: $args; + -ms-filter: $args; +} + +// Flexbox +@mixin flexbox() { + display: -webkit-box; + display: -moz-box; + display: -ms-flexbox; + display: -webkit-flex; + display: flex; +} + @mixin flex($values) { + -webkit-box-flex: $values; + -moz-box-flex: $values; + -webkit-flex: $values; + -ms-flex: $values; + flex: $values; + } + @mixin order($val) { + -webkit-box-ordinal-group: $val; + -moz-box-ordinal-group: $val; + -ms-flex-order: $val; + -webkit-order: $val; + order: $val; + } + @mixin align($align) { + -webkit-flex-align: $align; + -ms-flex-align: $align; + -webkit-align-items: $align; + align-items: $align; + } + @mixin justify-content($val) { + -webkit-justify-content: $val; + justify-content: $val; + } +// Gradients + +@mixin gradient($default: #F5F5F5, $start: #EEE, $stop: #FFF) { + @include linear-gradient-top($default,$start,0%,$stop,100%); +} +@mixin linear-gradient-top($default,$color1,$stop1,$color2,$stop2) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2)); + background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2); + background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2); +} +@mixin linear-gradient-top2($default,$color1,$stop1,$color2,$stop2,$color3,$stop3) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3)); + background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3); +} +@mixin linear-gradient-top3($default,$color1,$stop1,$color2,$stop2,$color3,$stop3,$color4,$stop4) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left bottom, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3), color-stop($stop4 $color4)); + background-image: -webkit-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -moz-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -ms-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -o-linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: linear-gradient(top, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); +} +@mixin linear-gradient-left($default,$color1,$stop1,$color2,$stop2) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2)); + background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2); + background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2); +} +@mixin linear-gradient-left2($default,$color1,$stop1,$color2,$stop2,$color3,$stop3) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3)); + background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); + background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3); +} +@mixin linear-gradient-left3($default,$color1,$stop1,$color2,$stop2,$color3,$stop3,$color4,$stop4) { + background-color: $default; + background-image: -webkit-gradient(linear, left top, left top, color-stop($stop1, $color1), color-stop($stop2 $color2), color-stop($stop3 $color3), color-stop($stop4 $color4)); + background-image: -webkit-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -moz-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -ms-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: -o-linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); + background-image: linear-gradient(left, $color1 $stop1, $color2 $stop2, $color3 $stop3, $color4 $stop4); +} + +// Text Shadow + +@mixin text-shadow($args) { + text-shadow: $args; +} + + +// Transforms + +@mixin transform($args) { + -webkit-transform: $args; + -moz-transform: $args; + -ms-transform: $args; + -o-transform: $args; + transform: $args; +} +@mixin transform-origin($args) { + -webkit-transform-origin: $args; + -moz-transform-origin: $args; + -ms-transform-origin: $args; + -o-transform-origin: $args; + transform-origin: $args; +} +@mixin transform-style($style) { + -webkit-transform-style: $style; + -moz-transform-style: $style; + -ms-transform-style: $style; + -o-transform-style: $style; + transform-style: $style; +} +@mixin rotate($deg:45deg){ + @include transform(rotate($deg)); +} +@mixin scale($factor:.5){ + @include transform(scale($factor)); +} +@mixin translate($x,$y){ + @include transform(translate($x,$y)); +} +@mixin translate3d($x,$y,$z) { + @include transform(translate3d($x,$y,$z)); +} +@mixin translateHardware($x,$y) { + @include translate($x,$y); + -webkit-transform: translate3d($x,$y,0); + -moz-transform: translate3d($x,$y,0); + -o-transform: translate3d($x,$y,0); + -ms-transform: translate3d($x,$y,0); + transform: translate3d($x,$y,0); +} + + +// Transitions + +@mixin transition($args:200ms) { + -webkit-transition: $args; + -moz-transition: $args; + -o-transition: $args; + -ms-transition: $args; + transition: $args; +} +@mixin transition-delay($delay:0) { + -webkit-transition-delay: $delay; + -moz-transition-delay: $delay; + -o-transition-delay: $delay; + -ms-transition-delay: $delay; + transition-delay: $delay; +} +@mixin transition-duration($duration:200ms) { + -webkit-transition-duration: $duration; + -moz-transition-duration: $duration; + -o-transition-duration: $duration; + -ms-transition-duration: $duration; + transition-duration: $duration; +} +@mixin transition-property($property:all) { + -webkit-transition-property: $property; + -moz-transition-property: $property; + -o-transition-property: $property; + -ms-transition-property: $property; + transition-property: $property; +} +@mixin transition-timing-function($function:ease) { + -webkit-transition-timing-function: $function; + -moz-transition-timing-function: $function; + -o-transition-timing-function: $function; + -ms-transition-timing-function: $function; + transition-timing-function: $function; +} diff --git a/system/admin/static/editor/sass/components/_preloader.scss b/system/admin/static/editor/sass/components/_preloader.scss new file mode 100644 index 0000000..ab5c783 --- /dev/null +++ b/system/admin/static/editor/sass/components/_preloader.scss @@ -0,0 +1,332 @@ +/* + @license + Copyright (c) 2014 The Polymer Project Authors. All rights reserved. + This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt + The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt + The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt + Code distributed by Google as part of the polymer project is also + subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt + */ + +/**************************/ +/* STYLES FOR THE SPINNER */ +/**************************/ + +/* + * Constants: + * STROKEWIDTH = 3px + * ARCSIZE = 270 degrees (amount of circle the arc takes up) + * ARCTIME = 1333ms (time it takes to expand and contract arc) + * ARCSTARTROT = 216 degrees (how much the start location of the arc + * should rotate each time, 216 gives us a + * 5 pointed star shape (it's 360/5 * 3). + * For a 7 pointed star, we might do + * 360/7 * 3 = 154.286) + * CONTAINERWIDTH = 28px + * SHRINK_TIME = 400ms + */ + + +.preloader-wrapper { + display: inline-block; + position: relative; + width: 48px; + height: 48px; + + &.small { + width: 36px; + height: 36px; + } + + &.big { + width: 64px; + height: 64px; + } + + &.active { + /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ + -webkit-animation: container-rotate 1568ms linear infinite; + animation: container-rotate 1568ms linear infinite; + } +} + +@-webkit-keyframes container-rotate { + to { -webkit-transform: rotate(360deg) } +} + +@keyframes container-rotate { + to { transform: rotate(360deg) } +} + +.spinner-layer { + position: absolute; + width: 100%; + height: 100%; + opacity: 0; +} + +.spinner-blue, +.spinner-blue-only { + border-color: #4285f4; +} + +.spinner-red, +.spinner-red-only { + border-color: #db4437; +} + +.spinner-yellow, +.spinner-yellow-only { + border-color: #f4b400; +} + +.spinner-green, +.spinner-green-only { + border-color: #0f9d58; +} + +/** + * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): + * + * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't + * guarantee that the animation will start _exactly_ after that value. So we avoid using + * animation-delay and instead set custom keyframes for each color (as redundant as it + * seems). + * + * We write out each animation in full (instead of separating animation-name, + * animation-duration, etc.) because under the polyfill, Safari does not recognize those + * specific properties properly, treats them as -webkit-animation, and overrides the + * other animation rules. See https://github.com/Polymer/platform/issues/53. + */ +.active .spinner-layer.spinner-blue { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-red { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-yellow { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-green { + /* durations: 4 * ARCTIME */ + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .spinner-layer.spinner-blue-only, +.active .spinner-layer.spinner-red-only, +.active .spinner-layer.spinner-yellow-only, +.active .spinner-layer.spinner-green-only { + /* durations: 4 * ARCTIME */ + opacity: 1; + -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +@-webkit-keyframes fill-unfill-rotate { + 12.5% { -webkit-transform: rotate(135deg); } /* 0.5 * ARCSIZE */ + 25% { -webkit-transform: rotate(270deg); } /* 1 * ARCSIZE */ + 37.5% { -webkit-transform: rotate(405deg); } /* 1.5 * ARCSIZE */ + 50% { -webkit-transform: rotate(540deg); } /* 2 * ARCSIZE */ + 62.5% { -webkit-transform: rotate(675deg); } /* 2.5 * ARCSIZE */ + 75% { -webkit-transform: rotate(810deg); } /* 3 * ARCSIZE */ + 87.5% { -webkit-transform: rotate(945deg); } /* 3.5 * ARCSIZE */ + to { -webkit-transform: rotate(1080deg); } /* 4 * ARCSIZE */ +} + +@keyframes fill-unfill-rotate { + 12.5% { transform: rotate(135deg); } /* 0.5 * ARCSIZE */ + 25% { transform: rotate(270deg); } /* 1 * ARCSIZE */ + 37.5% { transform: rotate(405deg); } /* 1.5 * ARCSIZE */ + 50% { transform: rotate(540deg); } /* 2 * ARCSIZE */ + 62.5% { transform: rotate(675deg); } /* 2.5 * ARCSIZE */ + 75% { transform: rotate(810deg); } /* 3 * ARCSIZE */ + 87.5% { transform: rotate(945deg); } /* 3.5 * ARCSIZE */ + to { transform: rotate(1080deg); } /* 4 * ARCSIZE */ +} + +@-webkit-keyframes blue-fade-in-out { + from { opacity: 1; } + 25% { opacity: 1; } + 26% { opacity: 0; } + 89% { opacity: 0; } + 90% { opacity: 1; } + 100% { opacity: 1; } +} + +@keyframes blue-fade-in-out { + from { opacity: 1; } + 25% { opacity: 1; } + 26% { opacity: 0; } + 89% { opacity: 0; } + 90% { opacity: 1; } + 100% { opacity: 1; } +} + +@-webkit-keyframes red-fade-in-out { + from { opacity: 0; } + 15% { opacity: 0; } + 25% { opacity: 1; } + 50% { opacity: 1; } + 51% { opacity: 0; } +} + +@keyframes red-fade-in-out { + from { opacity: 0; } + 15% { opacity: 0; } + 25% { opacity: 1; } + 50% { opacity: 1; } + 51% { opacity: 0; } +} + +@-webkit-keyframes yellow-fade-in-out { + from { opacity: 0; } + 40% { opacity: 0; } + 50% { opacity: 1; } + 75% { opacity: 1; } + 76% { opacity: 0; } +} + +@keyframes yellow-fade-in-out { + from { opacity: 0; } + 40% { opacity: 0; } + 50% { opacity: 1; } + 75% { opacity: 1; } + 76% { opacity: 0; } +} + +@-webkit-keyframes green-fade-in-out { + from { opacity: 0; } + 65% { opacity: 0; } + 75% { opacity: 1; } + 90% { opacity: 1; } + 100% { opacity: 0; } +} + +@keyframes green-fade-in-out { + from { opacity: 0; } + 65% { opacity: 0; } + 75% { opacity: 1; } + 90% { opacity: 1; } + 100% { opacity: 0; } +} + +/** + * Patch the gap that appear between the two adjacent div.circle-clipper while the + * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). + */ +.gap-patch { + position: absolute; + top: 0; + left: 45%; + width: 10%; + height: 100%; + overflow: hidden; + border-color: inherit; +} + +.gap-patch .circle { + width: 1000%; + left: -450%; +} + +.circle-clipper { + display: inline-block; + position: relative; + width: 50%; + height: 100%; + overflow: hidden; + border-color: inherit; + + .circle { + width: 200%; + height: 100%; + border-width: 3px; /* STROKEWIDTH */ + border-style: solid; + border-color: inherit; + border-bottom-color: transparent !important; + border-radius: 50%; + -webkit-animation: none; + animation: none; + position: absolute; + top: 0; + right: 0; + bottom: 0; + } + + &.left .circle { + left: 0; + border-right-color: transparent !important; + -webkit-transform: rotate(129deg); + transform: rotate(129deg); + } + &.right .circle { + left: -100%; + border-left-color: transparent !important; + -webkit-transform: rotate(-129deg); + transform: rotate(-129deg); + } +} + + + +.active .circle-clipper.left .circle { + /* duration: ARCTIME */ + -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: left-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +.active .circle-clipper.right .circle { + /* duration: ARCTIME */ + -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; + animation: right-spin 1333ms cubic-bezier(0.4, 0.0, 0.2, 1) infinite both; +} + +@-webkit-keyframes left-spin { + from { -webkit-transform: rotate(130deg); } + 50% { -webkit-transform: rotate(-5deg); } + to { -webkit-transform: rotate(130deg); } +} + +@keyframes left-spin { + from { transform: rotate(130deg); } + 50% { transform: rotate(-5deg); } + to { transform: rotate(130deg); } +} + +@-webkit-keyframes right-spin { + from { -webkit-transform: rotate(-130deg); } + 50% { -webkit-transform: rotate(5deg); } + to { -webkit-transform: rotate(-130deg); } +} + +@keyframes right-spin { + from { transform: rotate(-130deg); } + 50% { transform: rotate(5deg); } + to { transform: rotate(-130deg); } +} + +#spinnerContainer.cooldown { + /* duration: SHRINK_TIME */ + -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); + animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0.0, 0.2, 1); +} + +@-webkit-keyframes fade-out { + from { opacity: 1; } + to { opacity: 0; } +} + +@keyframes fade-out { + from { opacity: 1; } + to { opacity: 0; } +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_roboto.scss b/system/admin/static/editor/sass/components/_roboto.scss new file mode 100644 index 0000000..8bfdbd3 --- /dev/null +++ b/system/admin/static/editor/sass/components/_roboto.scss @@ -0,0 +1,38 @@ +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Thin.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Thin.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Thin.ttf") format("truetype"); + font-weight: 200; +} +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Light.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Light.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Light.ttf") format("truetype"); + font-weight: 300; +} + +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Regular.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Regular.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Regular.ttf") format("truetype"); + font-weight: 400; +} + +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Medium.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Medium.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Medium.ttf") format("truetype"); + font-weight: 500; +} + +@font-face { + font-family: "Roboto"; + src: url("#{$roboto-font-path}Roboto-Bold.woff2") format("woff2"), + url("#{$roboto-font-path}Roboto-Bold.woff") format("woff"), + url("#{$roboto-font-path}Roboto-Bold.ttf") format("truetype"); + font-weight: 700; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_sideNav.scss b/system/admin/static/editor/sass/components/_sideNav.scss new file mode 100644 index 0000000..98794a1 --- /dev/null +++ b/system/admin/static/editor/sass/components/_sideNav.scss @@ -0,0 +1,111 @@ +.side-nav { + position: fixed; + width: 240px; + left: -105%; + top: 0; + margin: 0; + height: 100%; + height: calc(100% + 60px); + height: -moz-calc(100%); //Temporary Firefox Fix + padding-bottom: 60px; + background-color: $sidenav-bg-color; + z-index: 999; + overflow-y: auto; + + @extend .z-depth-1; + will-change: left; + + // Right Align + &.right-aligned { + will-change: right; + right: -105%; + left: auto; + } + + .collapsible{ + margin: 0; + } + + + li { + float: none; + padding: 0 $sidenav-padding-right; + &:hover, &.active { background-color: #ddd; } + } + a { + color: #444; + display: block; + font-size: 1rem; + height: 64px; + line-height: 64px; + padding: 0 $sidenav-padding-right; + } +} + + +// Touch interaction +.drag-target { + height: 100%; + width: 10px; + position: fixed; + top: 0; + z-index: 998; +} + + +// Hidden side-nav for all sizes +.side-nav.fixed { + a { + display: block; + padding: 0 $sidenav-padding-right; + color: #444; + } +} + + +// Fixed side-nav shown +.side-nav.fixed { + left: 0; + position: fixed; + + // Right Align + &.right-aligned { + right: 0; + left: auto; + } +} + +// Fixed sideNav hide on smaller +@media #{$medium-and-down} { + .side-nav.fixed { + left: -105%; + + &.right-aligned { + right: -105%; + left: auto; + } + } +} + + +.side-nav .collapsible-body li.active, +.side-nav.fixed .collapsible-body li.active { + background-color: $primary-color; + a { + color: $sidenav-bg-color; + } +} + + +#sidenav-overlay { + position: fixed; + top: 0; + left: 0; + right: 0; + + height: 120vh; + background-color: rgba(0,0,0,.5); + z-index: 997; + + will-change: opacity; +} diff --git a/system/admin/static/editor/sass/components/_slider.scss b/system/admin/static/editor/sass/components/_slider.scss new file mode 100644 index 0000000..3d2071a --- /dev/null +++ b/system/admin/static/editor/sass/components/_slider.scss @@ -0,0 +1,92 @@ +.slider { + position: relative; + height: 400px; + width: 100%; + + // Fullscreen slider + &.fullscreen { + height: 100%; + width: 100%; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + + ul.slides { + height: 100%; + } + + ul.indicators { + z-index: 2; + bottom: 30px; + } + } + + .slides { + background-color: $slider-bg-color; + margin: 0; + height: 400px; + + li { + opacity: 0; + position: absolute; + top: 0; + left: 0; + z-index: 1; + width: 100%; + height: inherit; + overflow: hidden; + + img { + height: 100%; + width: 100%; + background-size: cover; + background-position: center; + } + + .caption { + color: #fff; + position: absolute; + top: 15%; + left: 15%; + width: 70%; + opacity: 0; + + p { color: $slider-bg-color-light; } + } + + &.active { + z-index: 2; + } + } + } + + + .indicators { + position: absolute; + text-align: center; + left: 0; + right: 0; + bottom: 0; + margin: 0; + + .indicator-item { + display: inline-block; + position: relative; + cursor: pointer; + height: 16px; + width: 16px; + margin: 0 12px; + background-color: $slider-bg-color-light; + + @include transition(background-color .3s); + border-radius: 50%; + + &.active { + background-color: $slider-indicator-color; + } + } + } + +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/_table_of_contents.scss b/system/admin/static/editor/sass/components/_table_of_contents.scss new file mode 100644 index 0000000..2872bdb --- /dev/null +++ b/system/admin/static/editor/sass/components/_table_of_contents.scss @@ -0,0 +1,33 @@ +/*************** + Nav List +***************/ +.table-of-contents { + &.fixed { + position: fixed; + } + + li { + padding: 2px 0; + } + a { + display: inline-block; + font-weight: 300; + color: #757575; + padding-left: 20px; + height: 1.5rem; + line-height: 1.5rem; + letter-spacing: .4; + display: inline-block; + + &:hover { + color: lighten(#757575, 20%); + padding-left: 19px; + border-left: 1px solid lighten(color("materialize-red", "base"),10%); + } + &.active { + font-weight: 500; + padding-left: 18px; + border-left: 2px solid lighten(color("materialize-red", "base"),10%); + } + } +} diff --git a/system/admin/static/editor/sass/components/_tabs.scss b/system/admin/static/editor/sass/components/_tabs.scss new file mode 100644 index 0000000..dcf29e1 --- /dev/null +++ b/system/admin/static/editor/sass/components/_tabs.scss @@ -0,0 +1,47 @@ +.tabs { + position: relative; + height: 48px; + background-color: $tabs-bg-color; + margin: 0 auto; + width: 100%; + white-space: nowrap; + + .tab { + display: block; + float: left; + text-align: center; + line-height: 48px; + height: 48px; + padding: 0 20px; + margin: 0; + text-transform: uppercase; + letter-spacing: .8px; + width: 15%; + + a { + color: $tabs-text-color; + display: block; + width: 100%; + height: 100%; + @include transition( color .28s ease); + &:hover { + color: lighten($tabs-text-color, 20%); + } + } + + &.disabled a { + color: lighten($tabs-text-color, 20%); + cursor: default; + } + } + .indicator { + position: absolute; + bottom: 0; + height: 2px; + background-color: $tabs-underline-color; + will-change: left, right; + } +} + +.tabs .tab { padding: 0; } + diff --git a/system/admin/static/editor/sass/components/_toast.scss b/system/admin/static/editor/sass/components/_toast.scss new file mode 100644 index 0000000..87bd7dd --- /dev/null +++ b/system/admin/static/editor/sass/components/_toast.scss @@ -0,0 +1,63 @@ +#toast-container { + display:block; + position: fixed; + z-index: 1001; + + @media #{$small-and-down} { + min-width: 100%; + bottom: 0%; + } + @media #{$medium-only} { + min-width: 30%; + left: 5%; + bottom: 7%; + } + @media #{$large-and-up} { + min-width: 8%; + top: 10%; + right: 7%; + } +} + +.toast { + @extend .z-depth-1; + border-radius: 2px; + top: 0; + width: auto; + clear: both; + margin-top: 10px; + position: relative; + max-width:100%; + height: $toast-height; + line-height: $toast-height; + background-color: $toast-color; + padding: 0 25px; + font-size: 1.1rem; + font-weight: 300; + color: $toast-text-color; + + @include flexbox(); + @include align(center); + @include justify-content(space-between); + + .btn, .btn-flat { + margin: 0; + margin-left: 3rem; + } + + &.rounded{ + border-radius: 24px; + } + + @media #{$small-and-down} { + width:100%; + border-radius: 0; + } + @media #{$medium-only} { + float: left; + } + @media #{$large-and-up} { + float: right; + } + +} diff --git a/system/admin/static/editor/sass/components/_tooltip.scss b/system/admin/static/editor/sass/components/_tooltip.scss new file mode 100644 index 0000000..374ace9 --- /dev/null +++ b/system/admin/static/editor/sass/components/_tooltip.scss @@ -0,0 +1,34 @@ +.material-tooltip { + padding: 10px 8px; + font-size: 1rem; + z-index: 2000; + background-color: transparent; + border-radius: 2px; + color: #fff; + min-height: 36px; + line-height: 1rem; + // max-width: 350px; + opacity: 0; + display: none; + position: absolute; + text-align: center; + overflow: hidden; + left:0; + top:0; + + will-change: top, left; +} + +.backdrop { + position: absolute; + opacity: 0; + display: none; + height: 7px; + width: 14px; + border-radius: 0 0 14px 14px; + background-color: #323232; + z-index: -1; + @include transform-origin( 50% 10%); + + will-change: transform, opacity; +} diff --git a/system/admin/static/editor/sass/components/_typography.scss b/system/admin/static/editor/sass/components/_typography.scss new file mode 100644 index 0000000..3aec273 --- /dev/null +++ b/system/admin/static/editor/sass/components/_typography.scss @@ -0,0 +1,58 @@ +a { + text-decoration: none; +} + +html{ + line-height: 1.5; + + @media only screen and (min-width: 0) { + font-size: 14px; + } + + @media only screen and (min-width: $medium-screen) { + font-size: 14.5px; + } + + @media only screen and (min-width: $large-screen) { + font-size: 15px; + } + + font-family: "Roboto", sans-serif; + font-weight: normal; + color: $off-black; +} +h1, h2, h3, h4, h5, h6 { + font-weight: 400; + line-height: 1.1; +} + +// Header Styles +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { font-weight: inherit; } +h1 { font-size: $h1-fontsize; line-height: 110%; margin: ($h1-fontsize / 2) 0 ($h1-fontsize / 2.5) 0;} +h2 { font-size: $h2-fontsize; line-height: 110%; margin: ($h2-fontsize / 2) 0 ($h2-fontsize / 2.5) 0;} +h3 { font-size: $h3-fontsize; line-height: 110%; margin: ($h3-fontsize / 2) 0 ($h3-fontsize / 2.5) 0;} +h4 { font-size: $h4-fontsize; line-height: 110%; margin: ($h4-fontsize / 2) 0 ($h4-fontsize / 2.5) 0;} +h5 { font-size: $h5-fontsize; line-height: 110%; margin: ($h5-fontsize / 2) 0 ($h5-fontsize / 2.5) 0;} +h6 { font-size: $h6-fontsize; line-height: 110%; margin: ($h6-fontsize / 2) 0 ($h6-fontsize / 2.5) 0;} + +// Text Styles +em { font-style: italic; } +strong { font-weight: 500; } +small { font-size: 75%; } +.light { font-weight: 300; } +.thin { font-weight: 200; } + +.flow-text{ + font-weight: 300; + $i: 0; + @while $i <= $intervals { + @media only screen and (min-width : 360 + ($i * $interval-size)) { + font-size: 1.2rem * (1 + (.02 * $i)); + } + $i: $i + 1; + } + // Handle below 360px screen + @media only screen and (max-width: 360px) { + font-size: 1.2rem; + } +} diff --git a/system/admin/static/editor/sass/components/_variables.scss b/system/admin/static/editor/sass/components/_variables.scss new file mode 100644 index 0000000..833d49f --- /dev/null +++ b/system/admin/static/editor/sass/components/_variables.scss @@ -0,0 +1,152 @@ +/*** Colors ***/ +$primary-color: color("materialize-red", "lighten-2") !default; +$primary-color-light: lighten($primary-color, 15%) !default; +$primary-color-dark: darken($primary-color, 15%) !default; + +$secondary-color: color("teal", "lighten-1") !default; +$success-color: color("green", "base") !default; +$error-color: color("red", "base") !default; +$link-color: color("light-blue", "darken-1") !default; + +/*** Badges ***/ +$badge-bg-color: $secondary-color !default; + +/*** Buttons ***/ +$button-bg-color-disabled: #DFDFDF !default; +$button-color: $secondary-color !default; +$button-color-disabled: #9F9F9F !default; +$button-color-flat: #343434 !default; +$button-color-raised: #fff !default; +$button-floating-size: 37px !default; +$button-height: 36px !default; +$button-font-size-shared: 1.3rem !default; +$button-large-icon-font-size: 1.6rem !default; +$button-line-height: 36px !default; + +/*** Cards ***/ +$card-padding: 20px !default; +$card-bg-color: #fff !default; +$card-link-color: color("orange", "accent-2") !default; +$card-link-color-light: lighten($card-link-color, 20%) !default; + +/*** Collapsible ***/ +$collapsible-height: 3rem !default; +$collapsible-header-color: #fff !default; +$collapsible-border-color: #ddd !default; + +/*** Dropdown ***/ +$dropdown-bg-color: #fff !default; +$dropdown-hover-bg-color: #eee !default; +$dropdown-color: $secondary-color !default; + +/*** Fonts ***/ +$roboto-font-path: "../font/roboto/" !default; +$icons-font-path: "../font/material-design-icons/" !default; + +/*** Forms ***/ +// Text Inputs + Textarea +$input-border-color: color("grey", "base") !default; +$input-bg-color: #fff !default; +$input-error-color: $error-color !default; +$input-success-color: $success-color !default; +$input-focus-color: $secondary-color !default; +$label-font-size: .8rem !default; +$input-disabled-color: rgba(0,0,0, .26) !default; +$input-disabled-solid-color: #BDBDBD !default; + +// Radio Buttons +$radio-fill-color: $secondary-color !default; +$radio-empty-color: #5a5a5a !default; + +// Switches +$switch-bg-color: $secondary-color !default; +$switch-checked-lever-bg: desaturate(lighten($secondary-color, 25%), 25%) !default; +$switch-unchecked-bg: #F1F1F1 !default; +$switch-unchecked-lever-bg: #818181 !default; + +// Date Picker +$datepicker-weekday-bg: darken($secondary_color, 7%) !default; +$datepicker-date-bg: $secondary_color !default; +$datepicker-year: rgba(255, 255, 255, .4) !default; +$datepicker-focus: rgba(0,0,0, .05) !default; +$datepicker-selected: $secondary-color !default; +$datepicker-selected-outfocus: desaturate(lighten($secondary-color, 35%), 15%) !default; + + +/*** Global ***/ +// Media Query Ranges +$small-screen-up: 601px !default; +$medium-screen-up: 993px !default; +$large-screen-up: 1201px !default; +$small-screen: 600px !default; +$medium-screen: 992px !default; +$large-screen: 1200px !default; + +$medium-and-up: "only screen and (min-width : #{$small-screen-up})" !default; +$large-and-up: "only screen and (min-width : #{$medium-screen-up})" !default; +$small-and-down: "only screen and (max-width : #{$small-screen})" !default; +$medium-and-down: "only screen and (max-width : #{$medium-screen})" !default; +$medium-only: "only screen and (min-width : #{$small-screen-up}) and (max-width : #{$medium-screen})" !default; + +// Grid Variables +$num-cols: 12 !default; +$gutter-width: 1.5rem !default; +$element-top-margin: $gutter-width/3 !default; +$element-bottom-margin: ($gutter-width*2)/3 !default; + +/*** Navbar ***/ +$navbar-height: 64px !default; +$navbar-height-mobile: 56px !default; +$navbar-font-color: #fff !default; +$navbar-brand-font-size: 2.1rem !default; + +/*** SideNav ***/ +$sidenav-bg-color: #fff !default; +$sidenav-padding-right: 15px !default; + +/*** Photo Slider ***/ +$slider-bg-color: color('grey', 'base') !default; +$slider-bg-color-light: color('grey', 'lighten-2') !default; +$slider-indicator-color: color('green', 'base') !default; + +/*** Tabs ***/ +$tabs-underline-color: $primary-color-light !default; +$tabs-text-color: $primary-color !default; +$tabs-bg-color: #fff !default; + +/*** Tables ***/ +$table-border-color: #d0d0d0 !default; +$table-striped-color: #f2f2f2 !default; + +/*** Toasts ***/ +$toast-height: 48px !default; +$toast-color: #323232 !default; +$toast-text-color: #fff !default; + +/*** Typography ***/ +$off-black: rgba(0, 0, 0, 0.87) !default; +// Header Styles +$h1-fontsize: 4.2rem !default; +$h2-fontsize: 3.56rem !default; +$h3-fontsize: 2.92rem !default; +$h4-fontsize: 2.28rem !default; +$h5-fontsize: 1.64rem !default; +$h6-fontsize: 1rem !default; + +// Footer +$footer-bg-color: $primary-color !default; + +// Flowtext +$range : $large-screen - $small-screen !default; +$intervals: 20 !default; +$interval-size: $range / $intervals !default; + +/*** Collections ***/ +$collection-border-color: #e0e0e0 !default; +$collection-bg-color: #fff !default; +$collection-active-bg-color: $secondary-color !default; +$collection-active-color: lighten($secondary-color, 55%) !default; +$collection-hover-bg-color: #ddd !default; + +/* Progress Bar */ +$progress-bar-color: $secondary-color !default; diff --git a/system/admin/static/editor/sass/components/_waves.scss b/system/admin/static/editor/sass/components/_waves.scss new file mode 100644 index 0000000..7a8e8c0 --- /dev/null +++ b/system/admin/static/editor/sass/components/_waves.scss @@ -0,0 +1,167 @@ + +/*! + * Waves v0.6.0 + * http://fian.my.id/Waves + * + * Copyright 2014 Alfiana E. Sibuea and other contributors + * Released under the MIT license + * https://github.com/fians/Waves/blob/master/LICENSE + */ + + +.waves-effect { + position: relative; + cursor: pointer; + display: inline-block; + overflow: hidden; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-tap-highlight-color: transparent; + // white-space: nowrap; + // outline: 0; + + vertical-align: middle; + // cursor: pointer; + // border: none; + // outline: none; + // color: inherit; + // background-color: rgba(0, 0, 0, 0); + // font-size: 1em; + // line-height:1em; + // text-align: center; + // text-decoration: none; + z-index: 1; + will-change: opacity, transform; + @include transition(all .3s ease-out); + + .waves-ripple { + position: absolute; + border-radius: 50%; + width: 20px; + height: 20px; + margin-top:-10px; + margin-left:-10px; + opacity: 0; + + background: rgba(0,0,0,0.2); + // $gradient: rgba(0,0,0,0.2) 0,rgba(0,0,0,.3) 40%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.5) 60%,rgba(255,255,255,0) 70%; + // background: -webkit-radial-gradient($gradient); + // background: -o-radial-gradient($gradient); + // background: -moz-radial-gradient($gradient); + // background: radial-gradient($gradient); + @include transition(all 0.7s ease-out); + -webkit-transition-property: -webkit-transform, opacity; + -moz-transition-property: -moz-transform, opacity; + -o-transition-property: -o-transform, opacity; + transition-property: transform, opacity; + @include transform(scale(0)); + pointer-events: none; + } + + // Waves Colors + &.waves-light .waves-ripple { + background-color: rgba(255, 255, 255, 0.45); + } + + &.waves-red .waves-ripple { + background-color: rgba(244, 67, 54, .70); + } + &.waves-yellow .waves-ripple { + background-color: rgba(255, 235, 59, .70); + } + &.waves-orange .waves-ripple { + background-color: rgba(255, 152, 0, .70); + } + &.waves-purple .waves-ripple { + background-color: rgba(156, 39, 176, 0.70); + } + &.waves-green .waves-ripple { + background-color: rgba(76, 175, 80, 0.70); + } + &.waves-teal .waves-ripple { + background-color: rgba(0, 150, 136, 0.70); + } + +} + +.waves-notransition { + @include transition(none #{"!important"}); +} + +.waves-circle { + @include transform(translateZ(0)); + -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); +} + +// .waves-button, +// .waves-button:hover, +// .waves-button:visited, +// .waves-button-input { +// white-space: nowrap; +// vertical-align: middle; +// cursor: pointer; +// border: none; +// outline: none; +// color: inherit; +// background-color: rgba(0, 0, 0, 0); +// font-size: 1em; +// line-height:1em; +// text-align: center; +// text-decoration: none; +// z-index: 1; +// } + +// .waves-button { +// padding: 0.85em 1.1em; +// border-radius: 0.2em; +// } + +// .waves-button-input { +// margin: 0; +// padding: 0.85em 1.1em; +// } + +.waves-input-wrapper { + border-radius: 0.2em; + vertical-align: bottom; + + // &.waves-button { + // padding: 0; + // } + + .waves-button-input { + position: relative; + top: 0; + left: 0; + z-index: 1; + } +} + +.waves-circle { + text-align: center; + width: 2.5em; + height: 2.5em; + line-height: 2.5em; + border-radius: 50%; + -webkit-mask-image: none; +} + +// .waves-float { + // -webkit-mask-image: none; + // @include box-shadow(0px 1px 1.5px 1px rgba(0, 0, 0, 0.12)); + + // &:active { + // @include box-shadow(0px 8px 20px 1px rgba(0, 0, 0, 0.30)); +// } +// } + +.waves-block { + display: block; +} + +/* Firefox Bug: link not triggered */ +a.waves-effect .waves-ripple { + z-index: -1; +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/date_picker/_default.date.scss b/system/admin/static/editor/sass/components/date_picker/_default.date.scss new file mode 100644 index 0000000..1cd0f93 --- /dev/null +++ b/system/admin/static/editor/sass/components/date_picker/_default.date.scss @@ -0,0 +1,435 @@ +/* ========================================================================== + $BASE-DATE-PICKER + ========================================================================== */ +/** + * The picker box. + */ +.picker__box { + padding: 0 1em; +} +/** + * The header containing the month and year stuff. + */ +.picker__header { + text-align: center; + position: relative; + margin-top: .75em; +} +/** + * The month and year labels. + */ +.picker__month, +.picker__year { +// font-weight: 500; + display: inline-block; + margin-left: .25em; + margin-right: .25em; +} +/** + * The month and year selectors. + */ +.picker__select--month, +.picker__select--year { + + height: 2em; + padding: 0; + margin-left: .25em; + margin-right: .25em; +} + +// Modified +.picker__select--month.browser-default { + display: inline; + background-color: #FFFFFF; + width: 40%; +} +.picker__select--year.browser-default { + display: inline; + background-color: #FFFFFF; + width: 25%; +} +.picker__select--month:focus, +.picker__select--year:focus { + border-color: $datepicker-focus; +} +/** + * The month navigation buttons. + */ +.picker__nav--prev, +.picker__nav--next { + position: absolute; + padding: .5em 1.25em; + width: 1em; + height: 1em; + box-sizing: content-box; + top: -0.25em; +} +//@media (min-width: 24.5em) { +// .picker__nav--prev, +// .picker__nav--next { +// top: -0.33em; +// } +//} +.picker__nav--prev { + left: -1em; + padding-right: 1.25em; +} +//@media (min-width: 24.5em) { +// .picker__nav--prev { +// padding-right: 1.5em; +// } +//} +.picker__nav--next { + right: -1em; + padding-left: 1.25em; +} +//@media (min-width: 24.5em) { +// .picker__nav--next { +// padding-left: 1.5em; +// } +//} + +.picker__nav--disabled, +.picker__nav--disabled:hover, +.picker__nav--disabled:before, +.picker__nav--disabled:before:hover { + cursor: default; + background: none; + border-right-color: #f5f5f5; + border-left-color: #f5f5f5; +} +/** + * The calendar table of dates + */ +.picker__table { + text-align: center; + border-collapse: collapse; + border-spacing: 0; + table-layout: fixed; + font-size: 1rem; + width: 100%; + margin-top: .75em; + margin-bottom: .5em; +} + + + +.picker__table th, .picker__table td { + text-align: center; +} + + + + + + +.picker__table td { + margin: 0; + padding: 0; +} +/** + * The weekday labels + */ +.picker__weekday { + width: 14.285714286%; + font-size: .75em; + padding-bottom: .25em; + color: #999999; + font-weight: 500; + /* Increase the spacing a tad */ +} +@media (min-height: 33.875em) { + .picker__weekday { + padding-bottom: .5em; + } +} +/** + * The days on the calendar + */ + +.picker__day--today { + position: relative; + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; + +} + +//.picker__day--today:before { +// content: " "; +// position: absolute; +// top: 2px; +// right: 2px; +// width: 0; +// height: 0; +// border-top: 0.5em solid #0059bc; +// border-left: .5em solid transparent; +//} +.picker__day--disabled:before { + border-top-color: #aaaaaa; +} + + +.picker__day--infocus:hover{ + cursor: pointer; + color: #000; + font-weight: 500; +} + +.picker__day--outfocus { + display: none; + padding: .75rem 0; + color: #fff; + +} +.picker__day--outfocus:hover { + cursor: pointer; + color: #dddddd; +// background: #b1dcfb; + font-weight: 500; +} + + +.picker__day--highlighted { +// border-color: #0089ec; +} +.picker__day--highlighted:hover, +.picker--focused .picker__day--highlighted { + cursor: pointer; +// color: #000000; +// background: #b1dcfb; +// font-weight: 500; +} +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + + +// Circle background + border-radius: 50%; + @include transform(scale(.75)); + background: #0089ec; + color: #ffffff; +} +.picker__day--disabled, +.picker__day--disabled:hover, +.picker--focused .picker__day--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} +.picker__day--highlighted.picker__day--disabled, +.picker__day--highlighted.picker__day--disabled:hover { + background: #bbbbbb; +} +/** + * The footer containing the "today", "clear", and "close" buttons. + */ +.picker__footer { + text-align: center; + display: flex; + align-items: center; + justify-content: space-between; +} +.picker__button--today, +.picker__button--clear, +.picker__button--close { + border: 1px solid #ffffff; + background: #ffffff; + font-size: .8em; + padding: .66em 0; + font-weight: bold; + width: 33%; + display: inline-block; + vertical-align: bottom; +} +.picker__button--today:hover, +.picker__button--clear:hover, +.picker__button--close:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-bottom-color: #b1dcfb; +} +.picker__button--today:focus, +.picker__button--clear:focus, +.picker__button--close:focus { + background: #b1dcfb; + border-color: $datepicker-focus; + outline: none; +} +.picker__button--today:before, +.picker__button--clear:before, +.picker__button--close:before { + position: relative; + display: inline-block; + height: 0; +} +.picker__button--today:before, +.picker__button--clear:before { + content: " "; + margin-right: .45em; +} +.picker__button--today:before { + top: -0.05em; + width: 0; + border-top: 0.66em solid #0059bc; + border-left: .66em solid transparent; +} +.picker__button--clear:before { + top: -0.25em; + width: .66em; + border-top: 3px solid #ee2200; +} +.picker__button--close:before { + content: "\D7"; + top: -0.1em; + vertical-align: top; + font-size: 1.1em; + margin-right: .35em; + color: #777777; +} +.picker__button--today[disabled], +.picker__button--today[disabled]:hover { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; +} +.picker__button--today[disabled]:before { + border-top-color: #aaaaaa; +} + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ +.picker__box { + border-radius: 2px; + overflow: hidden; +} + +.picker__date-display { + text-align: center; + background-color: $datepicker-date-bg; + color: #fff; + padding-bottom: 15px; + font-weight: 300; +} + +.picker__nav--prev:hover, +.picker__nav--next:hover { + cursor: pointer; + color: #000000; + background: $datepicker-selected-outfocus; +} + +.picker__weekday-display { + background-color: $datepicker-weekday-bg; + padding: 10px; + font-weight: 200; + letter-spacing: .5; + font-size: 1rem; + margin-bottom: 15px; +} + +.picker__month-display { + text-transform: uppercase; + font-size: 2rem; +} +.picker__day-display { + + font-size: 4.5rem; + font-weight: 400; +} +.picker__year-display { + font-size: 1.8rem; + color: $datepicker-year; +} + +.picker__box { + padding: 0; +} +.picker__calendar-container { + padding: 0 1rem; + + thead { + border: none; + } +} + +// Calendar +.picker__table { + margin-top: 0; + margin-bottom: .5em; +} + +.picker__day--infocus { + color: #595959; + letter-spacing: -.3; + padding: .75rem 0; + font-weight: 400; + border: 1px solid transparent; +} + +//Today style +.picker__day.picker__day--today { + color: $datepicker-selected; +} + +.picker__day.picker__day--today.picker__day--selected { + color: #fff; +} + +// Table Header +.picker__weekday { + font-size: .9rem; +} + + +.picker__day--selected, +.picker__day--selected:hover, +.picker--focused .picker__day--selected { + // Circle background + border-radius: 50%; + @include transform(scale(.9)); + background-color: $datepicker-selected; + &.picker__day--outfocus { + background-color: $datepicker-selected-outfocus; + } + color: #ffffff; +} + +.picker__footer { + text-align: right; + padding: 5px 10px; +} + +// Materialize modified +.picker__close, .picker__today { + font-size: 1.1rem; + padding: 0 1rem; + color: $datepicker-selected; +} + +//month nav buttons +.picker__nav--prev:before, +.picker__nav--next:before { + content: " "; + border-top: .5em solid transparent; + border-bottom: .5em solid transparent; + border-right: 0.75em solid #676767; + width: 0; + height: 0; + display: block; + margin: 0 auto; +} +.picker__nav--next:before { + border-right: 0; + border-left: 0.75em solid #676767; +} +button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { + background-color: $datepicker-selected-outfocus; +} diff --git a/system/admin/static/editor/sass/components/date_picker/_default.scss b/system/admin/static/editor/sass/components/date_picker/_default.scss new file mode 100644 index 0000000..d96395f --- /dev/null +++ b/system/admin/static/editor/sass/components/date_picker/_default.scss @@ -0,0 +1,201 @@ +/* ========================================================================== + $BASE-PICKER + ========================================================================== */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +.picker { + font-size: 16px; + text-align: left; + line-height: 1.2; + color: #000000; + position: absolute; + z-index: 10000; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +/** + * The picker input element. + */ +.picker__input { + cursor: default; +} +/** + * When the picker is opened, the input element is "activated". + */ +.picker__input.picker__input--active { + border-color: #0089ec; +} +/** + * The holder is the only "scrollable" top-level container element. + */ +.picker__holder { + width: 100%; + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +/*! + * Default mobile-first, responsive styling for pickadate.js + * Demo: http://amsul.github.io/pickadate.js + */ +/** + * Note: the root picker element should *NOT* be styled more than what's here. + */ +/** + * Make the holder and frame fullscreen. + */ +.picker__holder, +.picker__frame { + bottom: 0; + left: 0; + right: 0; + top: 100%; +} +/** + * The holder should overlay the entire screen. + */ +.picker__holder { + position: fixed; + -webkit-transition: background 0.15s ease-out, top 0s 0.15s; + -moz-transition: background 0.15s ease-out, top 0s 0.15s; + transition: background 0.15s ease-out, top 0s 0.15s; + -webkit-backface-visibility: hidden; +} +/** + * The frame that bounds the box contents of the picker. + */ +.picker__frame { + position: absolute; + margin: 0 auto; + min-width: 256px; + +// picker width + width: 300px; + max-height: 350px; + + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; + filter: alpha(opacity=0); + -moz-opacity: 0; + opacity: 0; + -webkit-transition: all 0.15s ease-out; + -moz-transition: all 0.15s ease-out; + transition: all 0.15s ease-out; +} +@media (min-height: 28.875em) { + .picker__frame { + overflow: visible; + top: auto; + bottom: -100%; + max-height: 80%; + } +} +@media (min-height: 40.125em) { + .picker__frame { + margin-bottom: 7.5%; + } +} +/** + * The wrapper sets the stage to vertically align the box contents. + */ +.picker__wrap { + display: table; + width: 100%; + height: 100%; +} +@media (min-height: 28.875em) { + .picker__wrap { + display: block; + } +} +/** + * The box contains all the picker contents. + */ +.picker__box { + background: #ffffff; + display: table-cell; + vertical-align: middle; +} +//@media (min-height: 26.5em) { +// .picker__box { +//// font-size: 1.25em; +// } +//} +@media (min-height: 28.875em) { + .picker__box { + display: block; + +// picker header font-size +// font-size: 1rem; + + border: 1px solid #777777; + border-top-color: #898989; + border-bottom-width: 0; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); + } +} +//@media (min-height: 40.125em) { +// .picker__box { +// font-size: 1.1rem; +// border-bottom-width: 1px; +// -webkit-border-radius: 5px; +// -moz-border-radius: 5px; +// border-radius: 5px; +// } +//} +/** + * When the picker opens... + */ +.picker--opened .picker__holder { + top: 0; + background: transparent; + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; + zoom: 1; + background: rgba(0, 0, 0, 0.32); + -webkit-transition: background 0.15s ease-out; + -moz-transition: background 0.15s ease-out; + transition: background 0.15s ease-out; +} +.picker--opened .picker__frame { + top: 0; + -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; +} +@media (min-height: 35.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: 20%auto; + } +} +/** + * For `large` screens, transform into an inline picker. + */ + +/* ========================================================================== + CUSTOM MATERIALIZE STYLES + ========================================================================== */ + +.picker__input.picker__input--active { + border-color: color("blue", "lighten-5"); +} + +.picker__frame { + margin: 0 auto; + max-width: 325px; +} + +@media (min-height: 38.875em) { + .picker--opened .picker__frame { + top: 10%; + bottom: auto; + } +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/components/date_picker/_default.time.scss b/system/admin/static/editor/sass/components/date_picker/_default.time.scss new file mode 100644 index 0000000..0b159c8 --- /dev/null +++ b/system/admin/static/editor/sass/components/date_picker/_default.time.scss @@ -0,0 +1,125 @@ +/* ========================================================================== + $BASE-TIME-PICKER + ========================================================================== */ +/** + * The list of times. + */ +.picker__list { + list-style: none; + padding: 0.75em 0 4.2em; + margin: 0; +} +/** + * The times on the clock. + */ +.picker__list-item { + border-bottom: 1px solid #dddddd; + border-top: 1px solid #dddddd; + margin-bottom: -1px; + position: relative; + background: #ffffff; + padding: .75em 1.25em; +} +@media (min-height: 46.75em) { + .picker__list-item { + padding: .5em 1em; + } +} +/* Hovered time */ +.picker__list-item:hover { + cursor: pointer; + color: #000000; + background: #b1dcfb; + border-color: #0089ec; + z-index: 10; +} +/* Highlighted and hovered/focused time */ +.picker__list-item--highlighted { + border-color: #0089ec; + z-index: 10; +} +.picker__list-item--highlighted:hover, +.picker--focused .picker__list-item--highlighted { + cursor: pointer; + color: #000000; + background: #b1dcfb; +} +/* Selected and hovered/focused time */ +.picker__list-item--selected, +.picker__list-item--selected:hover, +.picker--focused .picker__list-item--selected { + background: #0089ec; + color: #ffffff; + z-index: 10; +} +/* Disabled time */ +.picker__list-item--disabled, +.picker__list-item--disabled:hover, +.picker--focused .picker__list-item--disabled { + background: #f5f5f5; + border-color: #f5f5f5; + color: #dddddd; + cursor: default; + border-color: #dddddd; + z-index: auto; +} +/** + * The clear button + */ +.picker--time .picker__button--clear { + display: block; + width: 80%; + margin: 1em auto 0; + padding: 1em 1.25em; + background: none; + border: 0; + font-weight: 500; + font-size: .67em; + text-align: center; + text-transform: uppercase; + color: #666; +} +.picker--time .picker__button--clear:hover, +.picker--time .picker__button--clear:focus { + color: #000000; + background: #b1dcfb; + background: #ee2200; + border-color: #ee2200; + cursor: pointer; + color: #ffffff; + outline: none; +} +.picker--time .picker__button--clear:before { + top: -0.25em; + color: #666; + font-size: 1.25em; + font-weight: bold; +} +.picker--time .picker__button--clear:hover:before, +.picker--time .picker__button--clear:focus:before { + color: #ffffff; +} + +/* ========================================================================== + $DEFAULT-TIME-PICKER + ========================================================================== */ +/** + * The frame the bounds the time picker. + */ +.picker--time .picker__frame { + min-width: 256px; + max-width: 320px; +} +/** + * The picker box. + */ +.picker--time .picker__box { + font-size: 1em; + background: #f2f2f2; + padding: 0; +} +@media (min-height: 40.125em) { + .picker--time .picker__box { + margin-bottom: 5em; + } +} diff --git a/system/admin/static/editor/sass/materialNote.scss b/system/admin/static/editor/sass/materialNote.scss new file mode 100644 index 0000000..5faca9e --- /dev/null +++ b/system/admin/static/editor/sass/materialNote.scss @@ -0,0 +1,734 @@ +@import "components/color"; +@import "components/variables"; + +/* variables +=================================================================================*/ +$toolbarColor: color("grey", "lighten-2") !default; +$toolbarTextColor: color("grey", "darken-3") !default; + +$borderColor: color("grey", "base") !default; + +$firstButtonColor: color("grey", "lighten-2") !default; +$firstButtonHoverColor: color("grey", "base") !default; +$secondButtonColor: color("blue", "darken-4") !default; +$secondButtonHoverColor: color("blue", "base") !default; +$thirdButtonColor: color("red", "darken-4") !default; +$thirdButtonHoverColor: color("blue", "base") !default; + +$firstFocusColor: color("blue", "base") !default; +$secondFocusColor: color("grey", "base") !default; + +$selectionColor: color("grey", "darken-1") !default; + +$helpBackgroundColor: color("grey", "lighten-2") !default; + +// base unit for table dimension picker +$gridUnit: 26px; + + +.editorDialogs .modal, .note-editor .modal { + background-color: lighten($toolbarColor, 100%); + color: $toolbarTextColor; + z-index: 1057 !important; + backface-visibility: hidden; + + .input-field input:not([readonly]), .input-field input.datepicker { + border-color: $toolbarTextColor !important; + } + .input-field input:focus:not([readonly]), .input-field input.datepicker:focus, textarea.materialize-textarea:focus:not([readonly]) { + box-shadow: 0 1px 0 0 $firstFocusColor !important; + border-color: $firstFocusColor !important; + } + label, .input-field input:not([readonly]) + label, .input-field input.datepicker + label, .input-field .prefix, .note-editor + label { + color: $toolbarTextColor !important; + } + .input-field input:focus:not([readonly]) + label, .input-field input.datepicker:focus + label, .input-field .prefix.active, textarea.materialize-textarea:focus:not([readonly]) + label { + color: $firstFocusColor !important; + } + + .btn { + background-color: $secondButtonColor; + color: lighten($toolbarTextColor, 100%) !important; + } + .btn:hover { + background-color: lighten($secondButtonColor, 10%) !important; + } + + .btn.disabled { + background-color: darken($secondButtonColor, 15%) !important; + } + + .modal-footer { + background-color: darken($toolbarColor, 10%); + + .btnClose { + margin-right: 15px; + background-color: $thirdButtonColor; + } + + .btnClose:hover { + background-color: lighten($thirdButtonColor, 10%) !important; + } + } + + .canvasContainerEmpty { + border: solid 5px $firstFocusColor; + } +} + +//scrollbars +.note-editor .note-editable, .editorDialogs .modal-content, .note-editor .note-color-palette, .note-editor .note-codable, .modal.modal-fixed-footer .modal-content { + &::-webkit-scrollbar { + width: 17px !important; + } + &::-webkit-scrollbar-track { + background-color: $toolbarColor !important; + } + &::-webkit-scrollbar-thumb { + background-color: lighten($toolbarColor, 20%) !important; + } + &::-webkit-scrollbar-thumb:hover { + background-color: lighten($toolbarColor, 30%) !important; + } +} + +.note-editor { + position: relative; + border: { + left: 1px solid $toolbarColor; + bottom: 1px solid $toolbarColor; + right: 1px solid $toolbarColor; + } + + .img-circle { + border-radius: 50%; + } + + .img-rounded { + border-radius: 5%; + } + + .img-thumbnail { + border: solid 2px $toolbarColor; + height: 200px; + } + + .img-bordered { + border: solid 5px $toolbarColor; + } + + .btn:hover { + background-color: lighten($firstButtonColor, 10%) !important; + } + + .btn.active { + background-color: $firstFocusColor; + } + + .note-editable { + ul li { + list-style-type: square !important; + display: list-item; + list-style-position: inside; + } + } + + .note-dialog { + & > div { + display: none + } + .form-group { + margin-right: 0; + margin-left: 0 + } + .note-modal-form { + margin: 0 + } + .note-image-dialog .note-dropzone { + min-height: 100px; + margin-bottom: 10px; + font-size: 30px; + line-height: 4; + color: lightgray; + text-align: center; + border: 4px dashed lightgray + } + } + + .transparent { + opacity: 0; + } + + .note-resizebar { + background-color: $toolbarColor; + width: 100%; + height: 13px; + cursor: ns-resize; + padding-top: 1px; + + .note-icon-bar { + width: 20px; + margin: 2px auto; + border-top: 2px solid lighten($toolbarColor, 20%); + } + } + + .note-toolbar { + position: relative; + color: $toolbarTextColor; + background-color: $toolbarColor; + margin: 0; + z-index: 1052; + + ul { + padding: 0; + } + + .btn.disabled, button.disabled { + display: none; + } + + .dropdown { + cursor: pointer; + } + + .note-current-fontname { + min-width: 134px; + display: inline-block; + text-align: left; + } + } + + .note-handle { + .note-control-selection { + position: absolute; + display: none; + border: 2px solid $firstButtonColor; + + .note-control-selection-bg { + width: 100%; + height: 100%; + z-index: 3; + background-color: transparentize($selectionColor, 0.7); + } + + & > div { + position: absolute + } + .note-control-handle { + width: 7px; + height: 7px; + border: 1px solid black; + } + .note-control-holder { + width: 7px; + height: 7px; + border: 1px solid black; + } + .note-control-sizing { + width: 15px; + height: 15px; + background-color: $firstButtonColor; + z-index: 5; + cursor: se-resize; + } + .note-control-nw { + top: -5px; + left: -5px; + border-right: 0; + border-bottom: 0; + } + .note-control-ne { + top: -5px; + right: -5px; + border-bottom: 0; + border-left: none; + } + .note-control-sw { + bottom: -5px; + left: -5px; + border-top: 0; + border-right: 0; + } + .note-control-se { + right: -5px; + bottom: -5px; + } + .note-control-selection-info { + right: 0; + bottom: 0; + padding: 5px; + margin: 17px; + font-size: 15px; + color: $toolbarTextColor; + background-color: $firstButtonColor; + z-index: 5; + } + } + } +} + +.note-dialog .note-help-dialog { + color: $toolbarColor; + + h4 { + color: $toolbarTextColor; + } + + thead { + background-color: $firstFocusColor; + } + + tbody { + background-color: $helpBackgroundColor; + } +} + +.note-editor, .popover { + .btn-group { + display: inline-block; + margin-right: 10px; + position: relative; + + ul { + padding: 0; + } + + .closeLeft { + padding-right: 0 !important; + margin-right: 0 !important; + + i { + margin-right: 0 !important; + } + } + + i.left { + margin-right: 5px; + } + } + + .note-toolbar .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: $firstButtonColor; + } + + .btnSecond { + background-color: $secondButtonColor !important; + } + + .btnThird { + background-color: $thirdButtonColor !important; + } + + note-toolbar button, button, .note-toolbar .btn { + background-color: $firstButtonColor; + border: none; + height: 36px; + text-transform: uppercase; + color: $toolbarTextColor !important; + } + + [type="checkbox"]:checked + label:before, [type="checkbox"]:checked + label:before { + border-right-color: $secondButtonColor !important; + border-bottom-color: $secondButtonColor !important; + } + + .note-palette-title { + padding: 0 !important; + } + + .colorName { + display: inline-block; + color: $toolbarTextColor; + + @media #{$small-and-down} { + display: none; + } + } + + .note-color-palette { + line-height: 10px; + border: solid 3px $toolbarColor; + padding: 0 !important; + overflow-x: scroll; + overflow-y: hidden; + + .note-color-row { + padding: 0 !important; + min-width: 300px; + } + + button.note-color-btn { + width: 20px; + height: 20px; + padding: 0; + margin: 0; + } + + .note-color-btn:hover { + &:after { + position: absolute; + width: 30px; + height: 30px; + content: ""; + background-color: inherit; + margin-top: -15px; + margin-left: -15px; + } + } + } + + .note-dimension-picker { + overflow: hidden; + } + + .largeDropdown { + width: 290px; + } + + .dropdown-menu { + z-index: 1033; + + &.note-check { + min-width: 80px; + } + + label { + color: $toolbarTextColor !important; + } + } + + ul.dropdown-menu { + position: absolute; + top: 20px; + background-color: lighten($toolbarColor, 10%); + border: { + left: 3px solid $toolbarColor; + bottom: 3px solid $toolbarColor; + right: 3px solid $toolbarColor; + } + + &#colors { + width: 342px; + + .indicator { + width: 50%; + left: 0; + } + } + + .colorTable { + padding: 3px 0; + } + + .tabs { + background-color: $toolbarColor; + + &:hover { + background-color: $toolbarColor; + } + + .tab a, .tab a:hover { + color: $secondFocusColor; + } + + .indicator { + background-color: $secondFocusColor; + } + } + + li { + list-style-type: none; + padding: 0 !important; + + div { + padding: 3px 15px; + cursor: pointer; + } + } + } +} + +.note-popover .popover { + position: absolute; + max-width: none; + color: $toolbarTextColor; + + .arrow { + width: 0; + height: 0; + border-style: solid; + border-width: 0 10px 10px 10px; + border-color: transparent transparent $firstButtonColor transparent; + } + + .popover-content { + background-color: $firstButtonColor; + + & > a { + margin-left: 12px; + } + + a { + display: inline-block; + max-width: 200px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + vertical-align: middle + } + + .arrow { + left: 20px + } + + .btn-group { + display: inline-block; + + .btn { + border-radius: 0 !important; + box-shadow: none !important; + padding: 0 9px !important; + background-color: $firstButtonColor; + color: $toolbarTextColor !important; + } + } + } +} + +.note-popover .popover .popover-content .note-para .dropdown-menu, .note-toolbar .note-para .dropdown-menu { + min-width: 172px; + padding: 5px +} +.note-popover .popover .popover-content .note-para .dropdown-menu > div:first-child, .note-toolbar .note-para .dropdown-menu > div:first-child { + margin-right: 5px +} + + + + + + + +// the following is unchanged from original summernote css +.note-editor .note-dropzone { + position: absolute; + z-index: 100; + display: none; + color: #87cefa; + background-color: white; + border: 2px dashed #87cefa; + opacity: .95; + pointer-event: none +} +.note-editor .note-dropzone .note-dropzone-message { + display: table-cell; + font-size: 28px; + font-weight: bold; + text-align: center; + vertical-align: middle +} +.note-editor .note-dropzone.hover { + color: #098ddf; + border: 2px dashed #098ddf +} +.note-editor.dragover .note-dropzone { + display: table +} + +.note-editor.fullscreen { + position: fixed; + top: 0; + left: 0; + z-index: 2021; + width: 100% +} +.note-editor.fullscreen .note-editable { + background-color: white +} +.note-editor.fullscreen .note-resizebar { + display: none +} +.note-editor.codeview .note-editable { + display: none +} +.note-editor.codeview .note-codable { + display: block +} +.note-editor .note-statusbar { + background-color: #f5f5f5 +} +.note-editor .note-editable[contenteditable=true]:empty:not(:focus):before { + color: #a9a9a9; + content: attr(data-placeholder) +} +.note-editor .note-editable { + padding: 10px; + overflow: auto; + outline: 0 +} +.note-editor .note-editable[contenteditable="false"] { + background-color: #e5e5e5 +} +.note-editor .note-codable { + display: none; + width: 100%; + padding: 10px; + margin-bottom: 0; + font-family: Menlo, Monaco, monospace, sans-serif; + font-size: 14px; + color: #ccc; + background-color: #222; + border: 0; + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + box-shadow: none; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + resize: none +} +.note-air-editor { + outline: 0 +} + +.note-popover .popover .popover-content, +.note-toolbar { + padding: 0; + margin: 0 +} +.note-popover .popover .popover-content > .btn-group, +.note-toolbar > .btn-group { + margin-top: 0; + margin-right: 5px; + margin-left: 0 +} +.note-popover .popover .popover-content .btn-group .note-table, +.note-toolbar .btn-group .note-table { + min-width: 0; + padding: 5px +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker, +.note-toolbar .btn-group .note-table .note-dimension-picker { + font-size: 18px +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-mousecatcher { + position: absolute!important; + z-index: 3; + width: $gridUnit * 10; + height:$gridUnit * 10; + cursor: pointer +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-unhighlighted { + position: relative !important; + z-index: 1; + width: $gridUnit * 12; + height: $gridUnit * 5; + background-size: 26px 26px; + background-image:repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), + repeating-linear-gradient(-90deg, transparent, transparent 4px, #fff 4px, #fff 26px); +} +.note-popover .popover .popover-content .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted, +.note-toolbar .btn-group .note-table .note-dimension-picker .note-dimension-picker-highlighted { + position: absolute !important; + z-index: 2; + width: $gridUnit; + height: $gridUnit; + background-size: 26px 26px; + background-image:repeating-linear-gradient(0deg, #3b3b3b, #3b3b3b 4px, transparent 4px, transparent 26px), + repeating-linear-gradient(-90deg, transparent, transparent 4px, $firstFocusColor 4px, $firstFocusColor 26px); +} + +.note-popover .popover .popover-content .note-style h1, +.note-toolbar .note-style h1, +.note-popover .popover .popover-content .note-style h2, +.note-toolbar .note-style h2, +.note-popover .popover .popover-content .note-style h3, +.note-toolbar .note-style h3, +.note-popover .popover .popover-content .note-style h4, +.note-toolbar .note-style h4, +.note-popover .popover .popover-content .note-style h5, +.note-toolbar .note-style h5, +.note-popover .popover .popover-content .note-style h6, +.note-toolbar .note-style h6, +.note-popover .popover .popover-content .note-style blockquote, +.note-toolbar .note-style blockquote { + margin: 0 +} +.note-popover .popover .popover-content .note-color .dropdown-toggle, +.note-toolbar .note-color .dropdown-toggle { + width: 20px; + padding-left: 5px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group, +.note-toolbar .note-color .dropdown-menu .btn-group { + margin: 0 +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group:first-child, +.note-toolbar .note-color .dropdown-menu .btn-group:first-child { + margin: 0 5px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-palette-title, +.note-toolbar .note-color .dropdown-menu .btn-group .note-palette-title { + margin: 2px 7px; + font-size: 12px; + text-align: center; + border-bottom: 1px solid #eee +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset { + padding: 0 3px; + margin: 3px; + font-size: 11px; + cursor: pointer; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-row, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-row { + height: 20px +} +.note-popover .popover .popover-content .note-color .dropdown-menu .btn-group .note-color-reset:hover, +.note-toolbar .note-color .dropdown-menu .btn-group .note-color-reset:hover { + background: #eee +} +/*.note-popover .popover .popover-content .dropdown-menu, +.note-toolbar .dropdown-menu { + min-width: 90px +}*/ +.note-popover .popover .popover-content .dropdown-menu.right, +.note-toolbar .dropdown-menu.right { + right: 0; + left: auto +} +.note-popover .popover .popover-content .dropdown-menu.right::before, +.note-toolbar .dropdown-menu.right::before { + right: 9px; + left: auto!important +} +.note-popover .popover .popover-content .dropdown-menu.right::after, +.note-toolbar .dropdown-menu.right::after { + right: 10px; + left: auto!important +} +.note-popover .popover .popover-content .dropdown-menu.note-check li a i, +.note-toolbar .dropdown-menu.note-check li a i { + color: deepskyblue; + visibility: hidden +} +.note-popover .popover .popover-content .dropdown-menu.note-check li a.checked i, +.note-toolbar .dropdown-menu.note-check li a.checked i { + visibility: visible +} +.note-popover .popover .popover-content .note-fontsize-10, +.note-toolbar .note-fontsize-10 { + font-size: 10px +}
\ No newline at end of file diff --git a/system/admin/static/editor/sass/materialize.scss b/system/admin/static/editor/sass/materialize.scss new file mode 100644 index 0000000..4421631 --- /dev/null +++ b/system/admin/static/editor/sass/materialize.scss @@ -0,0 +1,38 @@ +@charset "UTF-8"; + +// Mixins +@import "components/prefixer"; +@import "components/mixins"; +@import "components/color"; + +// Variables; +@import "components/variables"; + +// Reset +@import "components/normalize"; + +// components +@import "components/global"; +@import "components/icons-material-design"; +@import "components/grid"; +@import "components/navbar"; +@import "components/roboto"; +@import "components/typography"; +@import "components/cards"; +@import "components/toast"; +@import "components/tabs"; +@import "components/tooltip"; +@import "components/buttons"; +@import "components/dropdown"; +@import "components/waves"; +@import "components/modal"; +@import "components/collapsible"; +@import "components/materialbox"; +@import "components/form"; +@import "components/table_of_contents"; +@import "components/sideNav"; +@import "components/preloader"; +@import "components/slider"; +@import "components/date_picker/default.scss"; +@import "components/date_picker/default.date.scss"; +@import "components/date_picker/default.time.scss";
\ No newline at end of file |