From b4e2acbb340fcf81cd51f2eebd413021ef4dea97 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 4 Jun 2019 12:39:56 -0500 Subject: [PATCH 01/26] build single-file examples for website; upgrade jQuery --- .gitignore | 1 + build-website.js | 26 +++++++++++------ package.json | 1 + templates/docs.mustache | 12 ++++---- templates/examples.mustache | 2 +- templates/single-example.mustache | 27 ++++++++++++++++++ website/css/website.css | 28 +++++++++++++++++++ website/img/link.svg | 3 ++ website/js/examples.js | 28 ++++++++++--------- website/js/jquery-3.2.1.min.js | 4 --- website/js/jquery-3.4.1.min.js | 2 ++ yarn.lock | 46 +++++++++++++++++++++++++++++++ 12 files changed, 148 insertions(+), 32 deletions(-) create mode 100644 website/img/link.svg delete mode 100644 website/js/jquery-3.2.1.min.js create mode 100644 website/js/jquery-3.4.1.min.js diff --git a/.gitignore b/.gitignore index 25213893..df580b13 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ node_modules/ website/*.html website/css/chessboard.css website/js/chessboard.js +website/examples/ diff --git a/build-website.js b/build-website.js index 28c573da..5e055a0d 100644 --- a/build-website.js +++ b/build-website.js @@ -3,7 +3,7 @@ // ----------------------------------------------------------------------------- // libraries -const fs = require('fs') +const fs = require('fs-plus') const kidif = require('kidif') const mustache = require('mustache') const docs = require('./data/docs.json') @@ -110,6 +110,15 @@ const errorRowsHTML = docs.errors.reduce(function (html, itm) { return html + buildErrorRowHTML(itm) }, '') +function writeSingleExamplePage (example) { + const html = mustache.render(singleExampleTemplate, example); + fs.writeFileSync('website/examples/' + example.id + '.html', html, encoding) +} + +function writeSingleExamplesPages () { + examplesArr.forEach(writeSingleExamplePage) +} + function writeDocsPage () { const headHTML = mustache.render(headTemplate, {pageTitle: 'Documentation'}) const headerHTML = mustache.render(headerTemplate, {docsActive: true}) @@ -141,6 +150,7 @@ function writeWebsite () { writeSrcFiles() writeHomepage() writeExamplesPage() + writeSingleExamplesPages() writeDocsPage() writeDownloadPage() } @@ -153,13 +163,13 @@ writeWebsite() function htmlEscape (str) { return (str + '') - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/\//g, '/') - .replace(/`/g, '`') + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(/\//g, '/') + .replace(/`/g, '`') } function buildExampleGroupHTML (idx, groupName, examplesInGroup) { diff --git a/package.json b/package.json index 20540de2..eb6e495a 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "jquery": ">=1.8.3" }, "devDependencies": { + "fs-plus": "3.1.1", "kidif": "1.1.0", "mustache": "2.3.0", "standard": "10.0.2" diff --git a/templates/docs.mustache b/templates/docs.mustache index 7339f914..3b8c2385 100644 --- a/templates/docs.mustache +++ b/templates/docs.mustache @@ -21,7 +21,7 @@
-

Config Properties

+

Config Properties

@@ -37,7 +37,7 @@
-

Methods

+

Methods

@@ -53,7 +53,7 @@
-

Position Object

+

Position Object

You can use a JavaScript object to represent a board position.

The object property names must be algebraic squares (ie: e4, b2, c6, etc) and the values must be a valid piece codes (ie: wP, bK, wQ, etc).

See an example of using an object to represent a position here.

@@ -62,7 +62,7 @@
-

FEN String

+

FEN String

You can use Forsyth-Edwards Notation (FEN) to represent a board position.

Note that FEN notation captures more information than chessboard.js requires, like who's move it is and whether or not castling is allowed. This information will be ignored; only the position information is used.

See an example of using a FEN String to represent a position here and here.

@@ -71,7 +71,7 @@
-

Errors

+

Errors

Chessboard.js has an error system designed to inform you when you use the API incorrectly.

Every alert has a unique code associated with it and you can control how the errors are presented with the showErrors config option.

@@ -92,7 +92,7 @@ {{{footer}}} - + - + diff --git a/templates/single-example.mustache b/templates/single-example.mustache index e69de29b..981fd6ba 100644 --- a/templates/single-example.mustache +++ b/templates/single-example.mustache @@ -0,0 +1,27 @@ + + + + + + chessboardjs Example #{{{id}}} - {{{name}}} + + + + +

← Back to all examples.

+ +

{{{description}}}

+ + +{{{html}}} + + + + + + + diff --git a/website/css/website.css b/website/css/website.css index b85aeb1c..a96fd827 100644 --- a/website/css/website.css +++ b/website/css/website.css @@ -97,6 +97,30 @@ pre.prettyprint { margin: 8px 0 30px 0; } +.hover-linkable .hover-link { + display: none; +} + +.hover-linkable:hover .hover-link { + background-image: url('../img/link.svg'); + background-repeat: no-repeat; + background-size: 16px; + display: block; + float: left; + height: 16px; + line-height: 1; + margin-left: -16px; + margin-top: 14px; + padding-right: 16px; + width: 16px; +} + +.hover-linkable:hover .hover-link.docs { + margin-top: 8px; + margin-left: -18px; + padding-right: 18px; +} + /*------------------------------------------------------------------------------ * Header *----------------------------------------------------------------------------*/ @@ -421,6 +445,10 @@ main { margin-bottom: 40px; } +.small-link-335ea { + font-size: 14px; +} + .small-board { display: inline-block; margin-right: 5px; diff --git a/website/img/link.svg b/website/img/link.svg new file mode 100644 index 00000000..c89b3d30 --- /dev/null +++ b/website/img/link.svg @@ -0,0 +1,3 @@ + + + diff --git a/website/js/examples.js b/website/js/examples.js index 220c1c74..b2a13939 100644 --- a/website/js/examples.js +++ b/website/js/examples.js @@ -5,13 +5,13 @@ function htmlEscape (str) { return (str + '') - .replace(/&/g, '&') - .replace(//g, '>') - .replace(/"/g, '"') - .replace(/'/g, ''') - .replace(/\//g, '/') - .replace(/`/g, '`') + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, ''') + .replace(/\//g, '/') + .replace(/`/g, '`') } function highlightGroupHeader (groupIdx) { @@ -24,16 +24,18 @@ $('#exampleLink-' + exampleId).addClass('active') } - function buildExampleBodyHTML (example) { - var html = '

' + htmlEscape(example.name) + '

' + - // TODO: need to add single example link here - // '

' + + function buildExampleBodyHTML (example, id) { + var html = '

' + + '' + + htmlEscape(example.name) + + '

' + '

' + example.description + '

' + '
' + example.html + '
' + '

JavaScript

' + '
' + htmlEscape(example.jsStr) + '
' + '

HTML

' + - '
' + htmlEscape(example.html) + '
' + '
' + htmlEscape(example.html) + '
' + + '

View this example in new window.

' return html } @@ -45,7 +47,7 @@ highlightGroupHeader(groupIdx) highlightExampleLink(exampleId) - $('#exampleBodyContainer').html(buildExampleBodyHTML(EXAMPLES[exampleId])) + $('#exampleBodyContainer').html(buildExampleBodyHTML(EXAMPLES[exampleId], exampleId)) EXAMPLES[exampleId].jsFn() prettyPrint() diff --git a/website/js/jquery-3.2.1.min.js b/website/js/jquery-3.2.1.min.js deleted file mode 100644 index 644d35e2..00000000 --- a/website/js/jquery-3.2.1.min.js +++ /dev/null @@ -1,4 +0,0 @@ -/*! jQuery v3.2.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(a,b){"use strict";"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){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.2.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=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={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.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=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$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("fieldset");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=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;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 function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(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 qa(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},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=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),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){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.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===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(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,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):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(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!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&&C.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.escape=function(a){return(a+"").replace(ba,ca)},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:V,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(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===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 V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.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(_,aa).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("(^|"+K+")"+a+"("+K+"|$)"))&&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(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},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,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/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=I(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(P,"$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(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).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:oa(!1),disabled:oa(!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 X.test(a.nodeName)},input:function(a){return W.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:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(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}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};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=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext;function B(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()}var C=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,D=/^.[^:#\[\.,]*$/;function E(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):D.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(E(this,a||[],!1))},not:function(a){return this.pushStack(E(this,a||[],!0))},is:function(a){return!!E(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var F,G=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,H=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||F,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:G.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),C.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};H.prototype=r.fn,F=r(d);var I=/^(?:parents|prev(?:Until|All))/,J={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function K(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return K(a,"nextSibling")},prev:function(a){return K(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return B(a,"iframe")?a.contentDocument:(B(a,"template")&&(a=a.content||a),r.merge([],a.childNodes))}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(J[a]||r.uniqueSort(e),I.test(a)&&e.reverse()),this.pushStack(e)}});var L=/[^\x20\t\r\n\f]+/g;function M(a){var b={};return r.each(a.match(L)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?M(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=e||a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function N(a){return a}function O(a){throw a}function P(a,b,c,d){var e;try{a&&r.isFunction(e=a.promise)?e.call(a).done(b).fail(c):a&&r.isFunction(e=a.then)?e.call(a,b,c):b.apply(void 0,[a].slice(d))}catch(a){c.apply(void 0,[a])}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==O&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:N,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:N)),c[2][3].add(g(0,a,r.isFunction(d)?d:O))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(P(a,g.done(h(c)).resolve,g.reject,!b),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)P(e[c],h(c),g.reject);return g.promise()}});var Q=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&Q.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var R=r.Deferred();r.fn.ready=function(a){return R.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||R.resolveWith(d,[r]))}}),r.ready.then=R.then;function S(){d.removeEventListener("DOMContentLoaded",S), -a.removeEventListener("load",S),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",S),a.addEventListener("load",S));var T=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)T(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){X.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=W.get(a,b),c&&(!d||Array.isArray(c)?d=W.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.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 W.get(a,c)||W.access(a,c,{empty:r.Callbacks("once memory").add(function(){W.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,la=/^$|\/(?:java|ecma)script/i,ma={option:[1,""],thead:[1,"
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ma.optgroup=ma.option,ma.tbody=ma.tfoot=ma.colgroup=ma.caption=ma.thead,ma.th=ma.td;function na(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&B(a,b)?r.merge([a],c):c}function oa(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=na(l.appendChild(f),"script"),j&&oa(g),c){k=0;while(f=g[k++])la.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var ra=d.documentElement,sa=/^key/,ta=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ua=/^([^.]*)(?:\.(.+)|)/;function va(){return!0}function wa(){return!1}function xa(){try{return d.activeElement}catch(a){}}function ya(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)ya(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=wa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(ra,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(L)||[""],j=b.length;while(j--)h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),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),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=W.hasData(a)&&W.get(a);if(q&&(i=q.events)){b=(b||"").match(L)||[""],j=b.length;while(j--)if(h=ua.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==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,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&W.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(W.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,Aa=/\s*$/g;function Ea(a,b){return B(a,"table")&&B(11!==b.nodeType?b:b.firstChild,"tr")?r(">tbody",a)[0]||a:a}function Fa(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ga(a){var b=Ca.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ha(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(W.hasData(a)&&(f=W.access(a),g=W.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Ba.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ja(f,b,c,d)});if(m&&(e=qa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(na(e,"script"),Fa),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=na(h),f=na(a),d=0,e=f.length;d0&&oa(g,!i&&na(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(U(c)){if(b=c[W.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[W.expando]=void 0}c[X.expando]&&(c[X.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ka(this,a,!0)},remove:function(a){return Ka(this,a)},text:function(a){return T(this,function(a){return void 0===a?r.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 Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.appendChild(a)}})},prepend:function(){return Ja(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ea(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ja(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(na(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return T(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&&!Aa.test(a)&&!ma[(ka.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function _a(a,b,c,d,e){return new _a.prototype.init(a,b,c,d,e)}r.Tween=_a,_a.prototype={constructor:_a,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=_a.propHooks[this.prop];return a&&a.get?a.get(this):_a.propHooks._default.get(this)},run:function(a){var b,c=_a.propHooks[this.prop];return this.options.duration?this.pos=b=r.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):_a.propHooks._default.set(this),this}},_a.prototype.init.prototype=_a.prototype,_a.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},_a.propHooks.scrollTop=_a.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=_a.prototype.init,r.fx.step={};var ab,bb,cb=/^(?:toggle|show|hide)$/,db=/queueHooks$/;function eb(){bb&&(d.hidden===!1&&a.requestAnimationFrame?a.requestAnimationFrame(eb):a.setTimeout(eb,r.fx.interval),r.fx.tick())}function fb(){return a.setTimeout(function(){ab=void 0}),ab=r.now()}function gb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ca[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function hb(a,b,c){for(var d,e=(kb.tweeners[b]||[]).concat(kb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?lb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b), -null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&B(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(L);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),lb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=mb[b]||r.find.attr;mb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=mb[g],mb[g]=e,e=null!=c(a,b,d)?g:null,mb[g]=f),e}});var nb=/^(?:input|select|textarea|button)$/i,ob=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return T(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.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=r.find.attr(a,"tabindex");return b?parseInt(b,10):nb.test(a.nodeName)||ob.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function pb(a){var b=a.match(L)||[];return b.join(" ")}function qb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,qb(this)))});if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,qb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(L)||[];while(c=this[i++])if(e=qb(c),d=1===c.nodeType&&" "+pb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=pb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,qb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(L)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=qb(this),b&&W.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":W.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+pb(qb(c))+" ").indexOf(b)>-1)return!0;return!1}});var rb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":Array.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:pb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(Array.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!sb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,sb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(W.get(h,"events")||{})[b.type]&&W.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&U(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!U(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=W.access(d,b);e||d.addEventListener(a,c,!0),W.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=W.access(d,b)-1;e?W.access(d,b,e):(d.removeEventListener(a,c,!0),W.remove(d,b))}}});var tb=a.location,ub=r.now(),vb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var 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(Array.isArray(b))r.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(Array.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!ja.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:Array.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}});var Bb=/%20/g,Cb=/#.*$/,Db=/([?&])_=[^&]*/,Eb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Fb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Gb=/^(?:GET|HEAD)$/,Hb=/^\/\//,Ib={},Jb={},Kb="*/".concat("*"),Lb=d.createElement("a");Lb.href=tb.href;function Mb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(L)||[];if(r.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 Nb(a,b,c,d){var e={},f=a===Jb;function g(h){var i;return e[h]=!0,r.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 Ob(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Pb(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}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Qb(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}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:tb.href,type:"GET",isLocal:Fb.test(tb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Kb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ob(Ob(a,r.ajaxSettings),b):Ob(r.ajaxSettings,a)},ajaxPrefilter:Mb(Ib),ajaxTransport:Mb(Jb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Eb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||tb.href)+"").replace(Hb,tb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(L)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Lb.protocol+"//"+Lb.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Nb(Ib,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Gb.test(o.type),f=o.url.replace(Cb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(Bb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(vb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Db,"$1"),n=(vb.test(f)?"&":"?")+"_="+ub++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Kb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Nb(Jb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Pb(o,y,d)),v=Qb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(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 r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Rb={0:200,1223:204},Sb=r.ajaxSettings.xhr();o.cors=!!Sb&&"withCredentials"in Sb,o.ajax=Sb=!!Sb,r.ajaxTransport(function(b){var c,d;if(o.cors||Sb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Rb[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" +{{#includeChessJS}} + +{{/includeChessJS}} - - - -'."\n"; - - // property and type - $html .= ' '."\n"; - $html .= buildPropertyAndType($propType, $prop['name'], $prop['type']); - $html .= ' '."\n"; - - // required - $html .= ' '.buildReq($prop['req']).''."\n"; - - // default - if (array_key_exists('leftAlignDefault', $prop) === true) { - $html .= ' '.buildDefault($prop['default']).''."\n"; - } - else { - $html .= ' '.buildDefault($prop['default']).''."\n"; - } - - // description - $html .= ' '."\n"; - $html .= buildDesc($prop['desc']); - $html .= ' '."\n"; - - // examples - $html .= ' '."\n"; - $html .= buildExamplesCell($prop['examples'], $examples); - $html .= ' '."\n"; - - $html .= ''."\n"; - - return $html; -} - -function buildMethodRow($method, $examples) { - $nameNoParens = preg_replace('/\(.+$/', '', $method['name']); - - $html = ''; - - // table row - if (array_key_exists('noId', $method) === true) { - $html .= "\n"; - } - else { - $html .= ''."\n"; - } - - // name - $html .= ' '.$method['name'].''."\n"; - - // args - if (array_key_exists('args', $method) === true) { - $html .= ' '."\n"; - foreach ($method['args'] as $arg) { - $html .= '

'.$arg[0].' - '.$arg[1].'

'."\n"; - } - $html .= ' '."\n"; - } - else { - $html .= ' none'."\n"; - } - - // description - $html .= ' '."\n"; - $html .= buildDesc($method['desc']); - $html .= ' '."\n"; - - // examples - $html .= ' '."\n"; - $html .= buildExamplesCell($method['examples'], $examples); - $html .= ' '."\n"; - - $html .= "\n"; - - return $html; -} - -function getExampleByNumber($number, $examples) { - $number = (int) $number; - foreach ($examples as $ex) { - if (intval($ex['number'], 10) === $number && - $ex['js'] !== '') { - return $ex; - } - } - return false; -} - -function buildPropertyAndType($section, $name, $type) { - $html = '

'.$name.'

'."\n"; - $html .= '

'.buildType($type).'

'."\n"; - return $html; -} - -function buildType($type) { - if (is_array($type) !== true) { - $type = array($type); - } - - $html = ''; - for ($i = 0; $i < count($type); $i++) { - if ($i !== 0) { - $html .= ' or
'; - } - $html .= $type[$i]; - } - - return $html; -} - -function buildReq($req) { - if ($req === false) { - return 'no'; - } - if ($req === true) { - return 'yes'; - } - return $req; -} - -function buildDesc($desc) { - if (is_array($desc) !== true) { - $desc = array($desc); - } - $html = ''; - foreach ($desc as $d) { - $html .= '

'.$d.'

'."\n"; - } - return $html; -} - -function buildDefault($default) { - if ($default === false) { - return 'n/a'; - } - return $default; -} - -function buildExamplesCell($ex, $allExamples) { - if (is_array($ex) !== true) { - $ex = array($ex); - } - - $html = ''; - foreach ($ex as $exNum) { - if (array_key_exists($exNum, $allExamples) !== true) continue; - - $example = $allExamples[$exNum]; - - $html .= '

'.$example['Name'].'

'."\n"; - } - return $html; -} - -function buildErrorRow($error) { - $html = ''; - - // table row - $html .= ''."\n"; - - // id - $html .= ' '.$error['id'].''."\n"; - - // desc - $html .= ' '.htmlspecialchars($error['desc']).''."\n"; - - // more information - if (array_key_exists('fix', $error) === true) { - if (is_array($error['fix']) !== true) { - $error['fix'] = array($error['fix']); - } - - $html .= ' '."\n"; - foreach ($error['fix'] as $p) { - $html .= '

'.$p.'

'."\n"; - } - $html .= ' '."\n"; - } - else { - $html .= ' n/a'."\n"; - } - - $html .= "\n"; - - return $html; -} - -?> \ No newline at end of file diff --git a/pages/download.php b/pages/download.php deleted file mode 100644 index d93b74de..00000000 --- a/pages/download.php +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - -
-

Development

-

GitHub

-
- -'."\n"; - $html .= '

v'.$v.' released on '.$release['date'].'

'."\n"; - $html .= '
    '."\n"; - foreach ($release['files'] as $file) { - $html .= '
  • '.$file['name'].' '.$file['size'].'
  • '."\n"; - } - $html .= '
'."\n"; - $html .= '
Changes:
'."\n"; - $html .= '
    '."\n"; - foreach ($release['changes'] as $change) { - $html .= '
  • '.htmlspecialchars($change).'
  • '."\n"; - } - $html .= '
'."\n"; - $html .= ''."\n\n"; - - return $html; -} - -?> \ No newline at end of file diff --git a/pages/examples.php b/pages/examples.php deleted file mode 100644 index 7827c869..00000000 --- a/pages/examples.php +++ /dev/null @@ -1,156 +0,0 @@ - - -
- -
-
- -
-
- -
-

-

View example in new window.

-

-
-

JavaScript

-
-

HTML

-
-
- -
- - - - - - - -'.$group['group'].''."\n"; - $html .= ''."\n"; - - $groupIndex++; - } - - return $html; -} -?> \ No newline at end of file diff --git a/pages/footer.php b/pages/footer.php deleted file mode 100644 index bc5194c2..00000000 --- a/pages/footer.php +++ /dev/null @@ -1,18 +0,0 @@ - - - - - diff --git a/pages/header.php b/pages/header.php deleted file mode 100644 index d4cf35e9..00000000 --- a/pages/header.php +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - <?php echo PROJECT_NAME; ?><?php if (isset($page_title)) echo ' » '.$page_title; ?> - - - - - - - - - - - - - -
-
diff --git a/pages/home.php b/pages/home.php deleted file mode 100644 index 7ec72a01..00000000 --- a/pages/home.php +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - chessboard.js » Home - - - - - - - - - -
-
- Black King -

chessboard.js

-

The easiest way to embed a chess board on your site.

- Download v0.3.0 -
-
- - - -
- -
- -
-

As easy as two lines.

-

HTML

-
<div id="board1" style="width: 400px"></div>
-

JavaScript

-
var board1 = ChessBoard('board1', 'start');
-
-
-
-
-
- -
-

Customize with a powerful API.

-

HTML

-
<div id="board2" style="width: 400px"></div>
-<input type="button" id="startBtn" value="Start" />
-<input type="button" id="clearBtn" value="Clear" />
-

JavaScript

-
var board2 = ChessBoard('board2', {
-  draggable: true,
-  dropOffBoard: 'trash',
-  sparePieces: true
-});
-$('#startBtn').on('click', board2.start);
-$('#clearBtn').on('click', board2.clear);
-
-
-
- - -
-
- -
- -
-
-
-

chessboard.js is released under the MIT License

-

the code can be found on GitHub

-
- -
-
-
- - - - - - - - diff --git a/pages/single_example.php b/pages/single_example.php deleted file mode 100644 index 774e2efc..00000000 --- a/pages/single_example.php +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - <?php echo $example['Name']; ?> Example - - - - - -

← Back to all examples.

- -

- - - - - - - - - - - \ No newline at end of file From a7833be56c5fcf225cba5b8920732c29c62fc279 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 4 Jun 2019 17:40:10 -0500 Subject: [PATCH 04/26] saving state - create build script --- .gitignore | 1 + .npmignore | 7 ++ {src => lib}/chessboard.css | 0 {src => lib}/chessboard.js | 110 ++++++++++++------------- package.json | 19 +++-- scripts/build.js | 44 ++++++++++ rename.js => scripts/rename.js | 2 + build-website.js => scripts/website.js | 11 ++- src/tests.html | 20 ----- templates/download.mustache | 10 ++- templates/homepage.mustache | 2 +- yarn.lock | 50 ++++++++++- 12 files changed, 184 insertions(+), 92 deletions(-) create mode 100644 .npmignore rename {src => lib}/chessboard.css (100%) rename {src => lib}/chessboard.js (95%) create mode 100644 scripts/build.js rename rename.js => scripts/rename.js (90%) rename build-website.js => scripts/website.js (96%) delete mode 100644 src/tests.html diff --git a/.gitignore b/.gitignore index df580b13..f31703fb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # git diff files *.diff +dist/ node_modules/ website/*.html diff --git a/.npmignore b/.npmignore new file mode 100644 index 00000000..f6564314 --- /dev/null +++ b/.npmignore @@ -0,0 +1,7 @@ +data/ +examples/ +scripts/ +templates/ +website/ +.editorconfig +*.diff diff --git a/src/chessboard.css b/lib/chessboard.css similarity index 100% rename from src/chessboard.css rename to lib/chessboard.css diff --git a/src/chessboard.js b/lib/chessboard.js similarity index 95% rename from src/chessboard.js rename to lib/chessboard.js index c5b565e6..a3d0080b 100644 --- a/src/chessboard.js +++ b/lib/chessboard.js @@ -405,22 +405,22 @@ function squeezeFenEmptySquares (fen) { return fen.replace(/11111111/g, '8') - .replace(/1111111/g, '7') - .replace(/111111/g, '6') - .replace(/11111/g, '5') - .replace(/1111/g, '4') - .replace(/111/g, '3') - .replace(/11/g, '2') + .replace(/1111111/g, '7') + .replace(/111111/g, '6') + .replace(/11111/g, '5') + .replace(/1111/g, '4') + .replace(/111/g, '3') + .replace(/11/g, '2') } function expandFenEmptySquares (fen) { return fen.replace(/8/g, '11111111') - .replace(/7/g, '1111111') - .replace(/6/g, '111111') - .replace(/5/g, '11111') - .replace(/4/g, '1111') - .replace(/3/g, '111') - .replace(/2/g, '11') + .replace(/7/g, '1111111') + .replace(/6/g, '111111') + .replace(/5/g, '11111') + .replace(/4/g, '1111') + .replace(/3/g, '111') + .replace(/2/g, '11') } // returns the distance between two squares @@ -686,22 +686,22 @@ // ------------------------------------------------------------------------- function error (code, msg, obj) { - // do nothing if showErrors is not set + // do nothing if showErrors is not set if ( - config.hasOwnProperty('showErrors') !== true || + config.hasOwnProperty('showErrors') !== true || config.showErrors === false - ) { + ) { return } var errorText = 'Chessboard Error ' + code + ': ' + msg - // print to console + // print to console if ( - config.showErrors === 'console' && + config.showErrors === 'console' && typeof console === 'object' && typeof console.log === 'function' - ) { + ) { console.log(errorText) if (arguments.length >= 2) { console.log(obj) @@ -709,7 +709,7 @@ return } - // alert errors + // alert errors if (config.showErrors === 'alert') { if (obj) { errorText += '\n\n' + JSON.stringify(obj) @@ -737,10 +737,10 @@ currentPosition = deepCopy(config.position) } else { error( - 7263, - 'Invalid value passed to config.position.', - config.position - ) + 7263, + 'Invalid value passed to config.position.', + config.position + ) } } } @@ -1202,11 +1202,11 @@ // run their onSnapbackEnd function if (isFunction(config.onSnapbackEnd)) { config.onSnapbackEnd( - draggedPiece, - draggedPieceSource, - deepCopy(currentPosition), - currentOrientation - ) + draggedPiece, + draggedPieceSource, + deepCopy(currentPosition), + currentOrientation + ) } } @@ -1342,13 +1342,13 @@ // run onDragMove if (isFunction(config.onDragMove)) { config.onDragMove( - location, - draggedPieceLocation, - draggedPieceSource, - draggedPiece, - deepCopy(currentPosition), - currentOrientation - ) + location, + draggedPieceLocation, + draggedPieceSource, + draggedPiece, + deepCopy(currentPosition), + currentOrientation + ) } // update state @@ -1395,13 +1395,13 @@ var oldPosition = deepCopy(currentPosition) var result = config.onDrop( - draggedPieceSource, - location, - draggedPiece, - newPosition, - oldPosition, - currentOrientation - ) + draggedPieceSource, + location, + draggedPiece, + newPosition, + oldPosition, + currentOrientation + ) if (result === 'snapback' || result === 'trash') { action = result } @@ -1589,7 +1589,7 @@ } function mousedownSquare (evt) { - // do nothing if we're not draggable + // do nothing if we're not draggable if (!config.draggable) return // do nothing if there is no piece on this square @@ -1611,11 +1611,11 @@ e = e.originalEvent beginDraggingPiece( - square, - currentPosition[square], - e.changedTouches[0].pageX, - e.changedTouches[0].pageY - ) + square, + currentPosition[square], + e.changedTouches[0].pageX, + e.changedTouches[0].pageY + ) } function mousedownSparePiece (evt) { @@ -1635,11 +1635,11 @@ e = e.originalEvent beginDraggingPiece( - 'spare', - piece, - e.changedTouches[0].pageX, - e.changedTouches[0].pageY - ) + 'spare', + piece, + e.changedTouches[0].pageX, + e.changedTouches[0].pageY + ) } function mousemoveWindow (evt) { @@ -1658,7 +1658,7 @@ evt.preventDefault() updateDraggedPiece(evt.originalEvent.changedTouches[0].pageX, - evt.originalEvent.changedTouches[0].pageY) + evt.originalEvent.changedTouches[0].pageY) } var throttledTouchmoveWindow = throttle(touchmoveWindow, config.dragThrottleRate) @@ -1679,7 +1679,7 @@ // get the location var location = isXYOnSquare(evt.originalEvent.changedTouches[0].pageX, - evt.originalEvent.changedTouches[0].pageY) + evt.originalEvent.changedTouches[0].pageY) stopDraggedPiece(location) } diff --git a/package.json b/package.json index eb6e495a..baa8498a 100644 --- a/package.json +++ b/package.json @@ -1,24 +1,29 @@ { "author": "Chris Oakman (http://chrisoakman.com/)", - "name": "oakmac-chessboard", + "name": "@chrisoakman/chessboardjs", "description": "JavaScript chessboard widget", + "homepage": "https://chessboardjs.com", + "license": "MIT", "version": "1.0.0", "repository": { "type": "git", "url": "git://github.com/oakmac/chessboardjs.git" }, - "main": "src/chessboard.js", + "browser": "lib/chessboard.js", "dependencies": { - "jquery": ">=1.8.3" + "jquery": ">=3.4.1" }, "devDependencies": { + "csso": "3.5.1", "fs-plus": "3.1.1", "kidif": "1.1.0", "mustache": "2.3.0", - "standard": "10.0.2" + "standard": "10.0.2", + "uglify-js": "3.6.0" }, "scripts": { - "test": "mocha" - }, - "license": "MIT" + "build": "standard lib/chessboard.js && node scripts/build.js", + "standard": "standard --fix lib/*.js website/js/*.js", + "website": "node scripts/website.js" + } } diff --git a/scripts/build.js b/scripts/build.js new file mode 100644 index 00000000..adcd3655 --- /dev/null +++ b/scripts/build.js @@ -0,0 +1,44 @@ +// ----------------------------------------------------------------------------- +// This file creates a build in the dist/ folder +// ----------------------------------------------------------------------------- + +// libraries +const fs = require('fs-plus') +const csso = require('csso') +const uglify = require('uglify-js') + +const encoding = {encoding: 'utf8'} + +const cssSrc = fs.readFileSync('lib/chessboard.css', encoding) +const jsSrc = fs.readFileSync('lib/chessboard.js', encoding) +const minifiedCss = csso.minify(cssSrc).css +const uglifyResult = uglify.minify(jsSrc) +const minifiedJS = uglifyResult.code + +console.assert(!uglifyResult.error, 'error minifying JS!') + +// TODO: add license to the top of minified JS + +// TODO: assert that the CSS is valid + +// create a fresh dist/ folder +fs.removeSync('dist') +fs.makeTreeSync('dist') + +// TODO: replace @version variable +// TODO: minify JS +// TODO: minify CSS + +// copy lib files to dist/ +fs.writeFileSync('dist/chessboard.css', cssSrc, encoding) +fs.writeFileSync('dist/chessboard.min.css', minifiedCss, encoding) +fs.writeFileSync('dist/chessboard.js', jsSrc, encoding) +fs.writeFileSync('dist/chessboard.min.js', minifiedJS, encoding) + + +// TODO: +// - copy the JS file to dist/ +// - copy the CSS file to dist/ +// - modify the JS file for version, copyright year, RUN_ASSERTS +// - minify the JS file +// - minify the CSS file diff --git a/rename.js b/scripts/rename.js similarity index 90% rename from rename.js rename to scripts/rename.js index e889b6d5..c6a99385 100644 --- a/rename.js +++ b/scripts/rename.js @@ -1,3 +1,5 @@ +// TODO: this is unfinished / not working + var fs = require('fs') var glob = require('glob') diff --git a/build-website.js b/scripts/website.js similarity index 96% rename from build-website.js rename to scripts/website.js index ec40b72c..72fd0577 100644 --- a/build-website.js +++ b/scripts/website.js @@ -1,12 +1,12 @@ // ----------------------------------------------------------------------------- -// This files builds the .html files in the website/ folder +// This file builds the contents of the website/ folder. // ----------------------------------------------------------------------------- // libraries const fs = require('fs-plus') const kidif = require('kidif') const mustache = require('mustache') -const docs = require('./data/docs.json') +const docs = require('../data/docs.json') const encoding = {encoding: 'utf8'} @@ -20,11 +20,14 @@ const headTemplate = fs.readFileSync('templates/_head.mustache', encoding) const headerTemplate = fs.readFileSync('templates/_header.mustache', encoding) const footerTemplate = fs.readFileSync('templates/_footer.mustache', encoding) -const latestChessboardJS = fs.readFileSync('src/chessboard.js', encoding) -const latestChessboardCSS = fs.readFileSync('src/chessboard.css', encoding) +const latestChessboardJS = fs.readFileSync('lib/chessboard.js', encoding) +const latestChessboardCSS = fs.readFileSync('lib/chessboard.css', encoding) // grab the examples const examplesArr = kidif('examples/*.example') +console.assert(examplesArr, 'Could not load the Example files') +console.assert(examplesArr.length > 1, 'Zero examples loaded') + const examplesObj = examplesArr.reduce(function (examplesObj, example, idx) { examplesObj[example.id] = example return examplesObj diff --git a/src/tests.html b/src/tests.html deleted file mode 100644 index d6afc18c..00000000 --- a/src/tests.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - Chessboard Tests - - - -
-
- - - - - diff --git a/templates/download.mustache b/templates/download.mustache index d6476ff2..0039545d 100644 --- a/templates/download.mustache +++ b/templates/download.mustache @@ -25,13 +25,15 @@ -
+ + +

v0.3.0 released on 10 Aug 2013

@@ -60,6 +62,8 @@
+ +

v0.1.0 released on 21 Jul 2013

    @@ -72,6 +76,8 @@
+ +

Development

GitHub

diff --git a/templates/homepage.mustache b/templates/homepage.mustache index dd8a4ec3..22f62531 100644 --- a/templates/homepage.mustache +++ b/templates/homepage.mustache @@ -59,7 +59,7 @@ {{{footer}}} - + ' +const cssCDNLink = 'https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.css' + +let chessboardJsScript = jsCDNLink +if (useDevFile) { + chessboardJsScript = '' +} // grab some mustache templates const docsTemplate = fs.readFileSync('templates/docs.mustache', encoding) @@ -80,9 +87,10 @@ function writeHomepage () { const headHTML = mustache.render(headTemplate, {pageTitle: 'Homepage'}) const html = mustache.render(homepageTemplate, { + chessboardJsScript: chessboardJsScript, + example2: homepageExample2, footer: footerTemplate, - head: headHTML, - example2: homepageExample2 + head: headHTML }) fs.writeFileSync('website/index.html', html, encoding) } @@ -92,6 +100,7 @@ function writeExamplesPage () { const headerHTML = mustache.render(headerTemplate, {examplesActive: true}) const html = mustache.render(examplesTemplate, { + chessboardJsScript: chessboardJsScript, examplesJavaScript: buildExamplesJS(), footer: footerTemplate, head: headHTML, @@ -124,6 +133,7 @@ function writeSingleExamplePage (example) { if (isIntegrationExample(example)) { example.includeChessJS = true } + example.chessboardJsScript = chessboardJsScript const html = mustache.render(singleExampleTemplate, example) fs.writeFileSync('website/examples/' + example.id + '.html', html, encoding) } diff --git a/templates/_head.mustache b/templates/_head.mustache index 5a389b67..87420497 100644 --- a/templates/_head.mustache +++ b/templates/_head.mustache @@ -6,5 +6,5 @@ - + diff --git a/templates/examples.mustache b/templates/examples.mustache index e62cd71b..f11d4f45 100644 --- a/templates/examples.mustache +++ b/templates/examples.mustache @@ -18,7 +18,7 @@ - +{{{chessboardJsScript}}} diff --git a/templates/homepage.mustache b/templates/homepage.mustache index 04cce70c..db7eb593 100644 --- a/templates/homepage.mustache +++ b/templates/homepage.mustache @@ -61,7 +61,7 @@ - +{{{chessboardJsScript}}} - +{{{chessboardJsScript}}} {{#includeChessJS}} {{/includeChessJS}} From 5a550728cb84fb252416a94fc74f60c047debc3f Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 11 Jun 2019 13:30:07 -0500 Subject: [PATCH 12/26] add license page to website --- scripts/website.js | 7 +++++++ templates/license.mustache | 9 +++++++++ 2 files changed, 16 insertions(+) create mode 100644 templates/license.mustache diff --git a/scripts/website.js b/scripts/website.js index ca63e855..01d583de 100644 --- a/scripts/website.js +++ b/scripts/website.js @@ -26,6 +26,7 @@ const downloadTemplate = fs.readFileSync('templates/download.mustache', encoding const examplesTemplate = fs.readFileSync('templates/examples.mustache', encoding) const homepageTemplate = fs.readFileSync('templates/homepage.mustache', encoding) const singleExampleTemplate = fs.readFileSync('templates/single-example.mustache', encoding) +const licensePageTemplate = fs.readFileSync('templates/license.mustache', encoding) const headTemplate = fs.readFileSync('templates/_head.mustache', encoding) const headerTemplate = fs.readFileSync('templates/_header.mustache', encoding) const footerTemplate = fs.readFileSync('templates/_footer.mustache', encoding) @@ -169,6 +170,11 @@ function writeDownloadPage () { fs.writeFileSync('website/download.html', html, encoding) } +function writeLicensePage () { + const html = mustache.render(licensePageTemplate) + fs.writeFileSync('website/license.html', html, encoding) +} + function writeWebsite () { writeSrcFiles() writeHomepage() @@ -176,6 +182,7 @@ function writeWebsite () { writeSingleExamplesPages() writeDocsPage() writeDownloadPage() + writeLicensePage() } writeWebsite() diff --git a/templates/license.mustache b/templates/license.mustache new file mode 100644 index 00000000..185334fb --- /dev/null +++ b/templates/license.mustache @@ -0,0 +1,9 @@ + + + + + + + chessboard.js MIT license + + From f0d59e7dbb572c716e5bca702d2d812881085cb9 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 11 Jun 2019 13:39:35 -0500 Subject: [PATCH 13/26] link to v1.0.0 on the website --- templates/download.mustache | 2 +- templates/homepage.mustache | 2 +- website/releases/chessboardjs-1.0.0.zip | Bin 0 -> 21323 bytes 3 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 website/releases/chessboardjs-1.0.0.zip diff --git a/templates/download.mustache b/templates/download.mustache index 889f83a0..a2e91ef3 100644 --- a/templates/download.mustache +++ b/templates/download.mustache @@ -12,7 +12,7 @@

Latest

- Download Latest Version
v0.3.0
+ Download Latest Version
v1.0.0
diff --git a/templates/homepage.mustache b/templates/homepage.mustache index db7eb593..6b85d191 100644 --- a/templates/homepage.mustache +++ b/templates/homepage.mustache @@ -8,7 +8,7 @@ Black King

chessboard.js

The easiest way to embed a chess board on your site.

- Download v0.3.0 + Download v1.0.0
diff --git a/website/releases/chessboardjs-1.0.0.zip b/website/releases/chessboardjs-1.0.0.zip new file mode 100644 index 0000000000000000000000000000000000000000..9fa5f8e7753335e1b34fd779ebbcdc22e38c49c4 GIT binary patch literal 21323 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 z

Date: Tue, 11 Jun 2019 13:47:25 -0500 Subject: [PATCH 14/26] add img/ folder to release zip file --- website/releases/chessboardjs-1.0.0.zip | Bin 21323 -> 48475 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/website/releases/chessboardjs-1.0.0.zip b/website/releases/chessboardjs-1.0.0.zip index 9fa5f8e7753335e1b34fd779ebbcdc22e38c49c4..1b3fdb0e08dd485a01ebf0d8bc7ef6e1537adb5e 100644 GIT binary patch delta 28279 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 delta 855 zcmccpi|O<-M!o=VW)=}<1_lm>2a-|T8~I|GSU`-;c}!JM)*F@{7Hh4X(|!y{fECD2 z$t*6>N7Zj<(_H?ak%8e7&_qe7lFb`A<(MQuhOV0`)5WU8z~FOo<_d~H9Gtyz0V9|-nSZmn z`Ya2HUAgNS86=jgv?yFjJx2h3q8fugyoA%BUYTD{Os`W(r z^uF=aiV9!?V*@5m9tLF7#DQtMATc>RF+Ei;t2jRoC2DY*&dLUgKTZZ7PKFwwkvsiC FTmUV(*MI;3 From 676a7af4d69dcf2dbe3236f58e7955a7f054630b Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 11 Jun 2019 14:58:40 -0500 Subject: [PATCH 15/26] add npm and CDN download links --- templates/download.mustache | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/templates/download.mustache b/templates/download.mustache index a2e91ef3..6444f293 100644 --- a/templates/download.mustache +++ b/templates/download.mustache @@ -16,13 +16,33 @@

+
+

NPM / Yarn Package

+

chessboardjs is on npm under the name @chrisoakman/chessboardjs

+
# using npm
+npm install @chrisoakman/chessboardjs
+ +
# using yarn
+yarn add @chrisoakman/chessboardjs
+
+ +
+

Content Delivery Network

+

You can use chessboardjs via the unpkg CDN with the following links: +

<link rel="stylesheet"
+      href="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.css"
+      integrity="sha384-q94+BZtLrkL1/ohfjR8c6L+A6qzNH9R2hBLwyoAfu3i/WCvQjzL2RQJ3uNHDISdU"
+      crossorigin="anonymous">
+
<script src="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.js"
+        integrity="sha384-8Vi8VHwn3vjQ9eUHUxex3JSN/NFqUg3QbPyX8kWyb93+8AC/pPWTzj+nHtbC5bxD"
+        crossorigin="anonymous"></script>
+
+

Development

GitHub

- - @@ -30,5 +50,9 @@ {{{footer}}} + + From be88c23dc8c142381d8b53b60ddff224e561a307 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20S=C3=B6derqvist?= Date: Tue, 2 Jul 2019 13:49:04 +0200 Subject: [PATCH 16/26] Update README.md * Grammar * Add hyperlinks to all examples --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 60c8997e..9f4aaf8b 100644 --- a/README.md +++ b/README.md @@ -32,11 +32,11 @@ makes chessboard.js flexible for handling a multitude of chess-related problems. This is a common source of confusion for new users. [remove?] Specifically, chessboard.js does not understand anything about how the game of -chess is played: how a knight moves, who's turn is it, is White in check?, etc. +chess is played: how a knight moves, whose turn is it, is White in check?, etc. Fortunately, the powerful [chess.js] library deals with exactly this sort of problem domain and plays nicely with chessboard.js's flexible API. Some examples -of chessboard.js combined with chess.js: 5000, 5001, 5002 +of chessboard.js combined with chess.js: [Example 5000], [Example 5001], [Example 5002] Please see the powerful [chess.js] library for an API to deal with these sorts of questions. @@ -80,3 +80,5 @@ npm run website [chessboardjs.com]:http://chessboardjs.com [chess.js]:https://github.com/jhlywa/chess.js [Example 5000]:http://chessboardjs.com/examples#5000 +[Example 5001]:http://chessboardjs.com/examples#5001 +[Example 5002]:http://chessboardjs.com/examples#5002 From 9c3138ff290b3c25db0b94b4f3df53c396d7c76b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 12 Jul 2019 23:53:08 +0000 Subject: [PATCH 17/26] Bump lodash from 4.17.4 to 4.17.14 Bumps [lodash](https://github.com/lodash/lodash) from 4.17.4 to 4.17.14. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.4...4.17.14) Signed-off-by: dependabot[bot] --- yarn.lock | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/yarn.lock b/yarn.lock index ce4210a7..4a2df213 100644 --- a/yarn.lock +++ b/yarn.lock @@ -813,8 +813,9 @@ lodash.cond@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" lodash@^4.0.0, lodash@^4.3.0: - version "4.17.4" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" + version "4.17.14" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" + integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== mdn-data@~1.1.0: version "1.1.4" From c2d951fecff65ea6dac13e20703472172fc9b7ec Mon Sep 17 00:00:00 2001 From: ofraski Date: Fri, 1 Nov 2019 11:36:01 +0000 Subject: [PATCH 18/26] add common js compatible export --- lib/chessboard.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/chessboard.js b/lib/chessboard.js index 9165797e..ed27db18 100644 --- a/lib/chessboard.js +++ b/lib/chessboard.js @@ -1815,3 +1815,9 @@ window['Chessboard']['fenToObj'] = fenToObj window['Chessboard']['objToFen'] = objToFen })() // end anonymous wrapper + +/* export Chessboard object if using node or any other CommonJS compatible + * environment */ +if (typeof exports !== 'undefined') { + exports.Chessboard = window.Chessboard +} From 0af0d78dfe0c4feea1cb9338db99d534761758b7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Aug 2020 16:12:17 -0500 Subject: [PATCH 19/26] Bump lodash from 4.17.14 to 4.17.19 (#192) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.14 to 4.17.19. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.14...4.17.19) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 4a2df213..89edde0c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -813,9 +813,9 @@ lodash.cond@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.cond/-/lodash.cond-4.5.2.tgz#f471a1da486be60f6ab955d17115523dd1d255d5" lodash@^4.0.0, lodash@^4.3.0: - version "4.17.14" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.14.tgz#9ce487ae66c96254fe20b599f21b6816028078ba" - integrity sha512-mmKYbW3GLuJeX+iGP+Y7Gp1AiGHGbXHCOh/jZmrawMmsE7MS4znI3RL2FsjbqOyMayHInjOeykW7PEajUk1/xw== + version "4.17.19" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" + integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== mdn-data@~1.1.0: version "1.1.4" From 86e9716aef2cda71b9390082f75b13314f97bcd7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 1 Aug 2020 16:12:41 -0500 Subject: [PATCH 20/26] Bump jquery from 3.4.1 to 3.5.0 (#186) Bumps [jquery](https://github.com/jquery/jquery) from 3.4.1 to 3.5.0. - [Release notes](https://github.com/jquery/jquery/releases) - [Commits](https://github.com/jquery/jquery/compare/3.4.1...3.5.0) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 89edde0c..0705201e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -746,9 +746,9 @@ isarray@^1.0.0, isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" jquery@>=3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" - integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== + version "3.5.0" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.0.tgz#9980b97d9e4194611c36530e7dc46a58d7340fc9" + integrity sha512-Xb7SVYMvygPxbFMpTFQiHh1J7HClEaThguL15N/Gg37Lri/qKyhRGZYzHRyLH8Stq3Aow0LsHO2O2ci86fCrNQ== js-tokens@^3.0.0: version "3.0.1" From f093aaf4e99e5fcfc3a8f156ea5338205869cc28 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 26 Jan 2021 17:50:47 -0600 Subject: [PATCH 21/26] GitHub Issue #169 - specify jQuery version in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9f4aaf8b..8ce812dd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # chessboard.js -chessboard.js is a JavaScript chessboard component. It depends on [jQuery]. +chessboard.js is a JavaScript chessboard component. It depends on [jQuery] v3.4.1 (or higher). Please see [chessboardjs.com] for documentation and examples. From e054420f6244e088c20b768c7b5263d76abd1641 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 26 Jan 2021 18:21:04 -0600 Subject: [PATCH 22/26] cleanup README --- README.md | 47 ++++++++++++----------------------------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index 8ce812dd..70df69f5 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,6 @@ Please see [chessboardjs.com] for documentation and examples. ## What is chessboard.js? -chessboard.js is a JavaScript chessboard component with a flexible "just a -board" API that - chessboard.js is a standalone JavaScript Chess Board. It is designed to be "just a board" and expose a powerful API so that it can be used in different ways. Here's a non-exhaustive list of things you can do with chessboard.js: @@ -27,40 +24,20 @@ ease. ## What can chessboard.js **not** do? The scope of chessboard.js is limited to "just a board." This is intentional and -makes chessboard.js flexible for handling a multitude of chess-related problems. - -This is a common source of confusion for new users. [remove?] +makes chessboard.js flexible for building a variety of chess-related +applications. -Specifically, chessboard.js does not understand anything about how the game of +To be specific, chessboard.js does not understand anything about how the game of chess is played: how a knight moves, whose turn is it, is White in check?, etc. -Fortunately, the powerful [chess.js] library deals with exactly this sort of -problem domain and plays nicely with chessboard.js's flexible API. Some examples -of chessboard.js combined with chess.js: [Example 5000], [Example 5001], [Example 5002] - -Please see the powerful [chess.js] library for an API to deal with these sorts -of questions. - - -This logic is distinct from the logic of the board. Please see the powerful -[chess.js] library for this aspect of your application. - - - -Here is a list of things that chessboard.js is **not**: - -- A chess engine -- A legal move validator -- A PGN parser - -chessboard.js is designed to work well with any of those things, but the idea -behind chessboard.js is that the logic that controls the board should be -independent of those other problems. +Fortunately, the [chess.js] library deals with exactly this sort of problem and +plays nicely with chessboard.js's flexible API. Some examples of chessboard.js +combined with chess.js: [Example 5000], [Example 5001], [Example 5002] ## Docs and Examples -- Docs - -- Examples - +- Docs - +- Examples - ## Developer Tools @@ -77,8 +54,8 @@ npm run website [MIT License](LICENSE.md) [jQuery]:https://jquery.com/ -[chessboardjs.com]:http://chessboardjs.com +[chessboardjs.com]:https://chessboardjs.com [chess.js]:https://github.com/jhlywa/chess.js -[Example 5000]:http://chessboardjs.com/examples#5000 -[Example 5001]:http://chessboardjs.com/examples#5001 -[Example 5002]:http://chessboardjs.com/examples#5002 +[Example 5000]:https://chessboardjs.com/examples#5000 +[Example 5001]:https://chessboardjs.com/examples#5001 +[Example 5002]:https://chessboardjs.com/examples#5002 From 53dcdece9e4c81474c53be7cbb756444ff2e3d97 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 26 Jan 2021 18:42:59 -0600 Subject: [PATCH 23/26] update website --- scripts/website.js | 2 ++ templates/_footer.mustache | 3 +++ templates/_head.mustache | 2 +- templates/download.mustache | 7 ++++++- website/css/{website.css => website2.css} | 5 ----- 5 files changed, 12 insertions(+), 7 deletions(-) mode change 100644 => 100755 scripts/website.js rename website/css/{website.css => website2.css} (99%) diff --git a/scripts/website.js b/scripts/website.js old mode 100644 new mode 100755 index 01d583de..1b107fa1 --- a/scripts/website.js +++ b/scripts/website.js @@ -1,3 +1,5 @@ +#! /usr/bin/env node + // ----------------------------------------------------------------------------- // This file builds the contents of the website/ folder. // ----------------------------------------------------------------------------- diff --git a/templates/_footer.mustache b/templates/_footer.mustache index ec1fcfe9..8f21118e 100644 --- a/templates/_footer.mustache +++ b/templates/_footer.mustache @@ -4,5 +4,8 @@

chessboard.js is released under the MIT License

the code can be found on GitHub

+
+

by Chris Oakman

+
diff --git a/templates/_head.mustache b/templates/_head.mustache index 87420497..4984eff8 100644 --- a/templates/_head.mustache +++ b/templates/_head.mustache @@ -5,6 +5,6 @@ - + diff --git a/templates/download.mustache b/templates/download.mustache index 6444f293..2a984e11 100644 --- a/templates/download.mustache +++ b/templates/download.mustache @@ -33,9 +33,14 @@ yarn add @chrisoakman/chessboardjs href="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.css" integrity="sha384-q94+BZtLrkL1/ohfjR8c6L+A6qzNH9R2hBLwyoAfu3i/WCvQjzL2RQJ3uNHDISdU" crossorigin="anonymous"> -
<script src="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.js"
+        
<script src="https://code.jquery.com/jquery-3.5.1.min.js"
+        integrity="sha384-ZvpUoO/+PpLXR1lu4jmpXWu80pZlYUAfxl5NsBMWOEPSjUn/6Z/hRTt8+pR6L4N2"
+        crossorigin="anonymous"></script>
+
+<script src="https://unpkg.com/@chrisoakman/chessboardjs@1.0.0/dist/chessboard-1.0.0.min.js"
         integrity="sha384-8Vi8VHwn3vjQ9eUHUxex3JSN/NFqUg3QbPyX8kWyb93+8AC/pPWTzj+nHtbC5bxD"
         crossorigin="anonymous"></script>
+

Please note that jQuery is a required dependency of chessboard.js and must be loaded on your webpage before the chessboard-1.0.0.min.js file.

diff --git a/website/css/website.css b/website/css/website2.css similarity index 99% rename from website/css/website.css rename to website/css/website2.css index e8c59e0e..53dd28ab 100644 --- a/website/css/website.css +++ b/website/css/website2.css @@ -255,11 +255,6 @@ footer .left-3edd4 { padding-left: 20px; } -footer .right-05ad3 a { - display: inline-block; - padding: 0 8px; -} - /*------------------------------------------------------------------------------ * Homepage *----------------------------------------------------------------------------*/ From 62b590f8c15fcc18f0e6354a9141e9e4455497d2 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Mon, 29 Mar 2021 11:39:06 -0500 Subject: [PATCH 24/26] update favicon for the website --- templates/_head.mustache | 7 ++++++- website/192.png | Bin 0 -> 4704 bytes website/512.png | Bin 0 -> 13664 bytes website/apple-touch-icon.png | Bin 0 -> 2978 bytes website/favicon.ico | Bin 0 -> 15086 bytes website/icon.svg | 13 +++++++++++++ website/manifest.webmanifest | 6 ++++++ 7 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 website/192.png create mode 100644 website/512.png create mode 100644 website/apple-touch-icon.png create mode 100644 website/favicon.ico create mode 100644 website/icon.svg create mode 100644 website/manifest.webmanifest diff --git a/templates/_head.mustache b/templates/_head.mustache index 4984eff8..07511c7e 100644 --- a/templates/_head.mustache +++ b/templates/_head.mustache @@ -3,7 +3,12 @@ chessboardjs.com » {{pageTitle}} - + + + + + + diff --git a/website/192.png b/website/192.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8c818b82bbf4ff9013f2d553256b20f501cb32 GIT binary patch literal 4704 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 Y0O}VJbn-$ql>h($07*qoM6N<$g4uV15dZ)H literal 0 HcmV?d00001 diff --git a/website/favicon.ico b/website/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4032123ff8aae8f0b5e1a5f7569d28122167ab91 GIT binary patch literal 15086 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 O`!BMKT-O6%|NlRtPtLah literal 0 HcmV?d00001 diff --git a/website/icon.svg b/website/icon.svg new file mode 100644 index 00000000..ba9d3979 --- /dev/null +++ b/website/icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/website/manifest.webmanifest b/website/manifest.webmanifest new file mode 100644 index 00000000..55dae3ec --- /dev/null +++ b/website/manifest.webmanifest @@ -0,0 +1,6 @@ +{ + "icons": [ + { "src": "/192.png", "type": "image/png", "sizes": "192x192" }, + { "src": "/512.png", "type": "image/png", "sizes": "512x512" } + ] +} From 13dcae1b383a27056be1da7509468aa22cedbd38 Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Tue, 30 Mar 2021 10:14:51 -0500 Subject: [PATCH 25/26] use SVG image for King on homepage --- templates/homepage.mustache | 2 +- website/img/chesspieces/wikipedia/bK.svg | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 website/img/chesspieces/wikipedia/bK.svg diff --git a/templates/homepage.mustache b/templates/homepage.mustache index 6b85d191..0ff8ee63 100644 --- a/templates/homepage.mustache +++ b/templates/homepage.mustache @@ -5,7 +5,7 @@
- Black King + Black King

chessboard.js

The easiest way to embed a chess board on your site.

Download v1.0.0 diff --git a/website/img/chesspieces/wikipedia/bK.svg b/website/img/chesspieces/wikipedia/bK.svg new file mode 100644 index 00000000..ba2ac9fb --- /dev/null +++ b/website/img/chesspieces/wikipedia/bK.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + From bfb9315cd44d22c4a3ccc883ab4c0b42e902557e Mon Sep 17 00:00:00 2001 From: Chris Oakman Date: Fri, 9 Dec 2022 09:23:28 -0600 Subject: [PATCH 26/26] README updates: project status, add npm + license badges --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 70df69f5..0c99b412 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,17 @@ -# chessboard.js +# chessboard.js [![npm](https://img.shields.io/npm/v/@chrisoakman/chessboardjs.svg)](https://www.npmjs.com/package/@chrisoakman/chessboardjs) [![MIT License](https://img.shields.io/npm/l/@chrisoakman/chessboardjs)](https://github.com/oakmac/chessboardjs/blob/master/LICENSE.md) + +> **NOTE:** chessboard.js can be found on npm as `@chrisoakman/chessboardjs` chessboard.js is a JavaScript chessboard component. It depends on [jQuery] v3.4.1 (or higher). Please see [chessboardjs.com] for documentation and examples. +## Project Status (Dec 2022) + +I am currently focusing my efforts on [chessboard2]. + +[chessboard2]:https://github.com/oakmac/chessboard2 + ## What is chessboard.js? chessboard.js is a standalone JavaScript Chess Board. It is designed to be "just