checkboxland
Advanced tools
Comparing version 1.4.0 to 1.5.0
export class Checkboxland { | ||
constructor(props = {}) { | ||
if (typeof props.fillValue !== 'undefined') _checkForValidValue(props.fillValue); | ||
this.displayEl = document.querySelector(props.selector || '#checkboxland'); | ||
this.dimensions = _textDimensionsToArray(props.dimensions || '8x8'); // The data object. Don't access this directly. Use methods like getData() and setData() instead. | ||
this.dimensions = _textDimensionsToArray(props.dimensions || '8x8'); | ||
this.displayEl = _getValidHTMLContainer(props.selector); // The data object. Don't access this directly. Use methods like getData() and setData() instead. | ||
// Maybe we can restrict access to this variable in the future, using Proxies. See examples here: | ||
@@ -143,2 +143,14 @@ // https://github.com/bryanbraun/music-box-fun/commit/f399255261e9b8ab9fb8c10edbbedd55a639e9d1 | ||
function _getValidHTMLContainer(selector = '#checkboxland') { | ||
if (selector instanceof Element) { | ||
return selector; | ||
} | ||
if (typeof selector === 'string') { | ||
return document.querySelector(selector); | ||
} | ||
throw new Error(`Checkboxland selector is invalid.`); | ||
} | ||
function _textDimensionsToArray(textDimensions) { | ||
@@ -145,0 +157,0 @@ const errorMessage = 'The dimensions you provided are invalid.'; |
export class Checkboxland { | ||
static extend(pluginObj?: {}): void; | ||
constructor(props?: {}); | ||
displayEl: any; | ||
dimensions: number[]; | ||
displayEl: Element; | ||
_data: any[][]; | ||
@@ -7,0 +7,0 @@ getCheckboxValue(x: any, y: any): any; |
class Checkboxland { | ||
constructor(props = {}) { | ||
if (typeof props.fillValue !== 'undefined') _checkForValidValue(props.fillValue); | ||
this.displayEl = document.querySelector(props.selector || '#checkboxland'); | ||
this.dimensions = _textDimensionsToArray(props.dimensions || '8x8'); // The data object. Don't access this directly. Use methods like getData() and setData() instead. | ||
this.dimensions = _textDimensionsToArray(props.dimensions || '8x8'); | ||
this.displayEl = _getValidHTMLContainer(props.selector); // The data object. Don't access this directly. Use methods like getData() and setData() instead. | ||
// Maybe we can restrict access to this variable in the future, using Proxies. See examples here: | ||
@@ -143,2 +143,14 @@ // https://github.com/bryanbraun/music-box-fun/commit/f399255261e9b8ab9fb8c10edbbedd55a639e9d1 | ||
function _getValidHTMLContainer(selector = '#checkboxland') { | ||
if (selector instanceof Element) { | ||
return selector; | ||
} | ||
if (typeof selector === 'string') { | ||
return document.querySelector(selector); | ||
} | ||
throw new Error(`Checkboxland selector is invalid.`); | ||
} | ||
function _textDimensionsToArray(textDimensions) { | ||
@@ -145,0 +157,0 @@ const errorMessage = 'The dimensions you provided are invalid.'; |
@@ -1,2 +0,2 @@ | ||
class Checkboxland{constructor(e={}){void 0!==e.fillValue&&_checkForValidValue(e.fillValue),this.displayEl=document.querySelector(e.selector||"#checkboxland"),this.dimensions=_textDimensionsToArray(e.dimensions||"8x8"),this._data=this.getEmptyMatrix({fillValue:e.fillValue||0}),_createInitialCheckboxDisplay(this.displayEl,this._data)}getCheckboxValue(e,t){if(!(e>=0&&t>=0&&e<this.dimensions[0]&&t<this.dimensions[1]))throw new Error(`The location (x: ${e}, y: ${t}) is outside of this checkbox display`);return this._data[t][e]}setCheckboxValue(e,t,n){const a=e>=0&&t>=0&&e<this.dimensions[0]&&t<this.dimensions[1];if(_checkForValidValue(n),!a)return;this._data[t][e]=n;const r=this.displayEl.children[t].children[e];if(2===n){if(r.indeterminate)return;r.indeterminate=!0,r.checked=!1}else{if(r.indeterminate&&(r.indeterminate=!1),r.checked===Boolean(n))return;r.checked=Boolean(n)}}getData(){return this._data.map(e=>e.slice())}setData(e,t={}){const{x:n=0,y:a=0,fillValue:r}=t,i=void 0!==r,o=this.dimensions[0],l=this.dimensions[1];_checkForValidMatrix(e);for(let t=0;t<l;t++)for(let l=0;l<o;l++){let o=l<n,s=t<a,c=l>=n+e[0].length,d=t>=a+e.length,h=o||s||c||d;if(h&&!i)continue;let u=h?r:e[t-a][l-n];this.setCheckboxValue(l,t,u)}}clearData(){const e=this.getEmptyMatrix();this.setData(e)}getEmptyMatrix(e={}){const{fillValue:t=0,width:n=this.dimensions[0],height:a=this.dimensions[1]}=e,r=[];for(let e=0;e<a;e++){r[e]=[];for(let a=0;a<n;a++)r[e][a]=t}return r}static extend(e={}){const{name:t,exec:n,cleanUp:a}=e;if(!t||!n)throw new Error('Your plugin must have a "name" and an "exec" function.');a&&(n.cleanUp=a),this.prototype[t]=n}}function _checkForValidValue(e){if(0!==e&&1!==e&&2!==e)throw new Error(`${e} is not a valid checkbox value.`)}function _checkForValidMatrix(e){if(!Array.isArray(e)||!Array.isArray(e[0]))throw new Error(`${e} is not a valid matrix.`)}function _textDimensionsToArray(e){const t="The dimensions you provided are invalid.";if("string"!=typeof e)throw new Error(t);const n=e.split("x").map(e=>Number(e));if(!(2===n.length&&!isNaN(n[0])&&!isNaN(n[0])))throw new Error(t);return e.split("x").map(e=>Number(e))}function _createInitialCheckboxDisplay(e,t){e.innerHTML="",e.style.overflowX="auto",e.setAttribute("aria-hidden",!0),t.forEach(t=>{const n=document.createElement("div");n.style.lineHeight=.75,n.style.whiteSpace="nowrap",t.forEach(e=>{const t=document.createElement("input"),a=2===e,r=!a&&Boolean(e);t.style.margin=0,t.style.verticalAlign="top",t.type="checkbox",t.tabIndex="-1",t.checked=r,t.indeterminate=a,n.appendChild(t)}),e.appendChild(n)})}const fiveBySeven={0:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,1,1],[1,0,1,0,1],[1,1,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],1:[[0,1,0],[1,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],2:[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],3:[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],4:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,0,0,0,1],[0,0,0,0,1]],5:[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],6:[[0,0,1,1,0],[0,1,0,0,0],[1,0,0,0,0],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],7:[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[0,1,0,0,0],[0,1,0,0,0]],8:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],9:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,1,1,0,0]],":":[[0],[1],[0],[0],[0],[1],[0]]," ":[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],A:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1]],B:[[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0]],C:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,1],[0,1,1,1,0]],D:[[1,1,1,0,0],[1,0,0,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,1,0],[1,1,1,0,0]],E:[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],F:[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],G:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,0,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1]],H:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],I:[[1,1,1],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],J:[[0,0,1,1,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0],[1,0,0,1,0],[0,1,1,0,0]],K:[[1,0,0,0,1],[1,0,0,1,0],[1,0,1,0,0],[1,1,0,0,0],[1,0,1,0,0],[1,0,0,1,0],[1,0,0,0,1]],L:[[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],M:[[1,0,0,0,1],[1,1,0,1,1],[1,0,1,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],N:[[1,0,0,0,1],[1,0,0,0,1],[1,1,0,0,1],[1,0,1,0,1],[1,0,0,1,1],[1,0,0,0,1],[1,0,0,0,1]],O:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],P:[[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],Q:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,1,0],[0,1,1,0,1]],R:[[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],S:[[0,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[0,0,0,0,1],[1,1,1,1,0]],T:[[1,1,1,1,1],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0]],U:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],V:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0]],W:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,1,0,1],[0,1,0,1,0]],X:[[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1],[1,0,0,0,1]],Y:[[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0]],Z:[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],a:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[0,1,1,1,1],[1,0,0,0,1],[1,1,1,1,1]],b:[[1,0,0,0,0],[1,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0]],c:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,1],[0,1,1,1,0]],d:[[0,0,0,0,1],[0,0,0,0,1],[0,1,1,0,1],[1,0,0,1,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1]],e:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,0],[0,1,1,1,0]],f:[[0,0,1,1,0],[0,1,0,0,1],[0,1,0,0,0],[1,1,1,0,0],[0,1,0,0,0],[0,1,0,0,0],[0,1,0,0,0]],g:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,1,1,1,0]],h:[[1,0,0,0,0],[1,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],i:[[0,1,0],[0,0,0],[1,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],j:[[0,0,0,1],[0,0,0,0],[0,0,1,1],[0,0,0,1],[0,0,0,1],[1,0,0,1],[0,1,1,0]],k:[[1,0,0,0],[1,0,0,0],[1,0,0,1],[1,0,1,0],[1,1,0,0],[1,0,1,0],[1,0,0,1]],l:[[1,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],m:[[0,0,0,0,0],[0,0,0,0,0],[1,1,0,1,0],[1,0,1,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,0,0,0,1]],n:[[0,0,0,0,0],[0,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],o:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],p:[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,0],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0]],q:[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,0,1],[1,0,0,1,1],[1,1,1,1,1],[0,0,0,0,1],[0,0,0,0,1]],r:[[0,0,0,0,0],[0,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],s:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[1,1,1,1,0]],t:[[0,1,0,0,0],[0,1,0,0,0],[1,1,1,0,0],[0,1,0,0,0],[0,1,0,0,0],[0,1,0,0,1],[0,0,1,1,0]],u:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,1,1],[0,1,1,0,1]],v:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0]],w:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,1,0,1],[0,1,0,1,0]],x:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1]],y:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,1,1,1,0]],z:[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,1,1,1,1]],"`":[[1,0,0],[0,1,0],[0,0,1],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],"~":[[0,0,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[1,0,1,0,1],[0,0,0,1,0],[0,0,0,0,0],[0,0,0,0,0]],"!":[[1],[1],[1],[1],[1],[0],[1]],"@":[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,1,1,0,1],[1,0,1,0,1],[1,0,1,0,1],[0,1,1,1,0]],"#":[[0,1,0,1,0],[0,1,0,1,0],[1,1,1,1,1],[0,1,0,1,0],[1,1,1,1,1],[0,1,0,1,0],[0,1,0,1,0]],$:[[0,0,1,0,0],[0,1,1,1,1],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[1,1,1,1,0],[0,0,1,0,0]],"%":[[1,1,0,0,1],[1,1,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,0,0,1,1],[1,0,0,1,1]],"^":[[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]],"&":[[0,1,1,0,0],[1,0,0,1,0],[1,0,1,0,0],[0,1,0,0,0],[1,0,1,0,1],[1,0,0,1,0],[1,1,1,0,1]],"*":[[0,0,0,0,0],[0,0,1,0,0],[1,0,1,0,1],[0,1,1,1,0],[1,0,1,0,1],[0,0,1,0,0],[0,0,0,0,0]],"(":[[0,0,1],[0,1,0],[1,0,0],[1,0,0],[1,0,0],[0,1,0],[0,0,1]],")":[[1,0,0],[0,1,0],[0,0,1],[0,0,1],[0,0,1],[0,1,0],[1,0,0]],"-":[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]],_:[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1]],"+":[[0,0,0,0,0],[0,0,1,0,0],[0,0,1,0,0],[1,1,1,1,1],[0,0,1,0,0],[0,0,1,0,0],[0,0,0,0,0]],"=":[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0]],"[":[[1,1,1],[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,1,1]],"]":[[1,1,1],[0,0,1],[0,0,1],[0,0,1],[0,0,1],[0,0,1],[1,1,1]],"{":[[0,0,1],[0,1,0],[0,1,0],[1,0,0],[0,1,0],[0,1,0],[0,0,1]],"}":[[1,0,0],[0,1,0],[0,1,0],[0,0,1],[0,1,0],[0,1,0],[1,0,0]],"|":[[1],[1],[1],[1],[1],[1],[1]],"\\":[[1,0,0],[1,0,0],[0,1,0],[0,1,0],[0,1,0],[0,0,1],[0,0,1]],"/":[[0,0,1],[0,0,1],[0,1,0],[0,1,0],[0,1,0],[1,0,0],[1,0,0]],";":[[0,0],[0,1],[0,1],[0,0],[0,0],[0,1],[1,0]],'"':[[1,0,1],[1,0,1],[1,0,1],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],"'":[[1,1],[0,1],[1,0],[0,0],[0,0],[0,0],[0,0]],",":[[0,0],[0,0],[0,0],[0,0],[1,1],[0,1],[1,0]],".":[[0],[0],[0],[0],[0],[0],[1]],"<":[[0,0,0],[0,0,1],[0,1,0],[1,0,0],[0,1,0],[0,0,1],[0,0,0]],">":[[0,0,0],[1,0,0],[0,1,0],[0,0,1],[0,1,0],[1,0,0],[0,0,0]],"?":[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,1,0,0]]};function print(e,t={}){const{dataOnly:n=!1,font:a=fiveBySeven,x:r=0,y:i=0,fillValue:o}=t,l=void 0!==o,s=e.split("").reduce((e,t)=>{return _matrixConcat(e,a[t])},[]);if(0===s.length&&s.push([]),n){if(!l)return s;let e=this.getEmptyMatrix({fillValue:o});return s.forEach((t,n)=>{t.forEach((t,a)=>{e[n+i][a+r]=t})}),e}this.setData(s,{x:r,y:i,fillValue:o})}function _matrixConcat(e,t){if(0===e.length)return t;const n=[];return e.forEach((e,a)=>{n.push(e.concat([0]).concat(t[a]))}),n}var print$1={name:"print",exec:print};let intervalId;function marquee(e,t={}){const{interval:n=200,repeat:a=!1,fillValue:r=0,callback:i=(()=>{})}=t,o=this.dimensions[1],l=this.dimensions[0],s=l+e[0].length;let c=1;intervalId=setInterval(()=>{const t=this.getData();for(let n=0;n<o;n++)for(let a=0;a<l;a++){if(a+1===l){const t=c-(l-a),i=e[n]?void 0===e[n][t]?r:e[n][t]:r;this.setCheckboxValue(a,n,i)}else this.setCheckboxValue(a,n,t[n][a+1])}c===s?a?c=1:(clearInterval(intervalId),i()):c++},n)}function cleanUp(){clearInterval(intervalId)}var marquee$1={name:"marquee",exec:marquee,cleanUp:cleanUp};let intervalId$1;function transitionWipe(e,t={}){const{interval:n=200,fillValue:a=0,direction:r="ltr",callback:i=(()=>{})}=t,o=this.dimensions[1],l=this.dimensions[0],s=l+1;let c=1;intervalId$1=setInterval(()=>{let t,n;switch(r){case"ltr":n=(t=c-1)-1;break;case"rtl":n=(t=l-c)+1}for(let r=0;r<o;r++)for(let i=0;i<l;i++)if(i===t)this.setCheckboxValue(i,r,1);else if(i===n){let t=e[r]?void 0===e[r][i]?a:e[r][i]:a;this.setCheckboxValue(i,r,t)}c===s?(clearInterval(intervalId$1),i()):c++},n)}function cleanUp$1(){clearInterval(intervalId$1)}var transitionWipe$1={name:"transitionWipe",exec:transitionWipe,cleanUp:cleanUp$1};function dataUtils(e,t,n){return{invert:invert,pad:pad}[e](t,n)}function invert(e){return e.map(e=>e.map(e=>e?0:1))}function pad(e,t={}){const n=Number.isInteger(t.all),a=n?t.all:t.top,r=n?t.all:t.right,i=n?t.all:t.bottom,o=n?t.all:t.left;let l=e.map(e=>{let t=e;return o&&(t=[...Array(o).fill(0),...t]),r&&(t=[...t,...Array(r).fill(0)]),t});const s=l[0].length,c=(e,t)=>{const n=[];for(let a=0;a<e;a++)n.push(Array(t).fill(0));return n};return a&&(l=[...c(a,s),...l]),i&&(l=[...l,...c(i,s)]),l}var dataUtils$1={name:"dataUtils",exec:dataUtils};let handleFun=null,displayEl=null;function onClick(e){displayEl=this.displayEl,handleFun=handleEvent.bind(this,e),displayEl.addEventListener("click",handleFun)}function handleEvent(e,t){const n=findCoodrs(displayEl,t.target);if(!n)return;const a={x:n.x,y:n.y,checkbox:t.target};if("function"==typeof e)e(a);else{if(!("handleEvent"in e&&"function"==typeof e.handleEvent))throw new TypeError("Callback should be a function or an EventListener object");e.handleEvent(a)}}function findCoodrs(e,t){for(let n=0;n<e.children.length;n+=1){const a=e.children[n];for(let e=0;e<a.children.length;e+=1){if(a.children[e]===t)return{x:e,y:n}}}return null}function cleanUp$2(){displayEl.removeEventListener("click",handleFun)}var onClick$1={name:"onClick",exec:onClick,cleanUp:cleanUp$2};const PALLET=[[60,136,253],[255,255,255]];function orderedDither({uint8data:e,palette:t=PALLET,step:n=1,h:a,w:r}){for(var i,o,l,s,c,d,h,u,f,p,m,x=new Uint8ClampedArray(e),v=new Array([1,9,3,11],[13,5,15,7],[4,12,2,10],[16,8,14,6]),y=0;y<a;y+=n)for(var g=0;g<r;g+=n)for(o=(s=4*g+4*y*r)+1,l=s+2,x[i=s]+=3*v[g%4][y%4],x[o]+=3*v[g%4][y%4],x[l]+=3*v[g%4][y%4],d=(c=approximateColor(new Array(x[i],x[o],x[l]),t))[0],h=c[1],u=c[2],f=0;f<n;f++)for(p=0;p<n;p++)x[m=s+4*f+4*r*p]=d,x[m+1]=h,x[m+2]=u;return x}function atkinsonDither({uint8data:e,palette:t=PALLET,step:n=1,h:a,w:r}){for(var i,o,l,s,c,d,h,u,f,p,m,x,v=new Uint8ClampedArray(e),y=new Uint8ClampedArray(e),g=function(e,t){return 4*e+4*t*r},k=0;k<a;k+=n)for(var E=0;E<r;E+=n)for(i=c=4*E+4*k*r,o=c+1,l=c+2,d=approximateColor(new Array(v[i],v[o],v[l]),t),(s=[])[i]=v[i]-d[0],s[o]=v[o]-d[1],s[l]=v[l]-d[2],v[g(E+n,k)+0]+=1/8*s[i],v[g(E-n,k+n)+0]+=1/8*s[i],v[g(E,k+n)+0]+=1/8*s[i],v[g(E+n,k+n)+0]+=1/8*s[i],v[g(E+2*n,k)+0]+=1/8*s[i],v[g(E,k+2*n)+0]+=1/8*s[i],v[g(E+n,k)+1]+=1/8*s[o],v[g(E-n,k+n)+1]+=1/8*s[o],v[g(E,k+n)+1]+=1/8*s[o],v[g(E+n,k+n)+1]+=1/8*s[o],v[g(E+2*n,k)+1]+=1/8*s[o],v[g(E,k+2*n)+1]+=1/8*s[o],v[g(E+n,k)+2]+=1/8*s[l],v[g(E-n,k+n)+2]+=1/8*s[l],v[g(E,k+n)+2]+=1/8*s[l],v[g(E+n,k+n)+2]+=1/8*s[l],v[g(E+2*n,k)+2]+=1/8*s[l],v[g(E,k+2*n)+2]+=1/8*s[l],h=d[0],u=d[1],f=d[2],p=0;p<n;p++)for(m=0;m<n;m++)y[x=c+4*p+4*r*m]=h,y[x+1]=u,y[x+2]=f;return y}function errorDiffusionDither({uint8data:e,palette:t=PALLET,step:n=1,h:a,w:r}){for(var i,o,l,s,c,d,h,u,f,p,m,x,v=new Uint8ClampedArray(e),y=new Uint8ClampedArray(e),g=function(e,t){return 4*e+4*t*r},k=0;k<a;k+=n)for(var E=0;E<r;E+=n)for(i=c=4*E+4*k*r,o=c+1,l=c+2,d=approximateColor(new Array(v[i],v[o],v[l]),t),(s=[])[i]=v[i]-d[0],s[o]=v[o]-d[1],s[l]=v[l]-d[2],v[g(E+n,k)]=v[g(E+n,k)]+.4375*s[i],v[g(E-n,k+1)]=v[g(E-1,k+n)]+.1875*s[i],v[g(E,k+n)]=v[g(E,k+n)]+.3125*s[i],v[g(E+n,k+n)]=v[g(E+1,k+n)]+.0625*s[i],v[g(E+n,k)+1]=v[g(E+n,k)+1]+.4375*s[o],v[g(E-n,k+n)+1]=v[g(E-n,k+n)+1]+.1875*s[o],v[g(E,k+n)+1]=v[g(E,k+n)+1]+.3125*s[o],v[g(E+n,k+n)+1]=v[g(E+n,k+n)+1]+.0625*s[o],v[g(E+n,k)+2]=v[g(E+n,k)+2]+.4375*s[l],v[g(E-n,k+n)+2]=v[g(E-n,k+n)+2]+.1875*s[l],v[g(E,k+n)+2]=v[g(E,k+n)+2]+.3125*s[l],v[g(E+n,k+n)+2]=v[g(E+n,k+n)+2]+.0625*s[l],h=d[0],u=d[1],f=d[2],p=0;p<n;p++)for(m=0;m<n;m++)y[x=c+4*p+4*r*m]=h,y[x+1]=u,y[x+2]=f;return y}function approximateColor(e,t){return function e(t,n,a,r){if(2==a.length)return t(n,r)<=t(n,a[1])?r:a[1];var i=a.slice(1);return r=t(n,r)<=t(n,a[1])?r:a[1],e(t,n,i,r)}(function(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2))},e,t,t[0])}function blackAndWhiteThreshold(e,t){const n=(e,t,n)=>.21*e+.72*t+.07*n,a=t/100*255;for(let t=0;t<e.length;t+=4){const r=n(e[t],e[t+1],e[t+2])>a?255:0;e[t]=r,e[t+1]=r,e[t+2]=r}return e}function sharpen(e,t,n){const a=t.width,r=t.height,i=t.data,o=[0,-1,0,-1,5,-1,0,-1,0],l=Math.round(Math.sqrt(o.length)),s=.5*l|0,c=e.createImageData(a,r).data;for(let e=r;e>=0;e--)for(let t=a;t>=0;t--){const d=e,h=t,u=4*(e*a+t);let f=0,p=0,m=0,x=0;for(let e=0;e<l;e++)for(let t=0;t<l;t++){const n=d+e-s,c=h+t-s;if(n>=0&&n<r&&c>=0&&c<a){const r=4*(n*a+c),s=o[e*l+t];f+=i[r]*s,p+=i[r+1]*s,m+=i[r+2]*s,x+=i[r+3]*s}}c[u]=f*n+i[u]*(1-n),c[u+1]=p*n+i[u+1]*(1-n),c[u+2]=m*n+i[u+2]*(1-n),c[u+3]=i[u+3]}for(let e=r;e>=0;e--){const t=4*(e*a+0);c[t]=i[t],c[t+1]=i[t+1],c[t+2]=i[t+2],c[t+3]=i[t+3]}return c}let canvasEl,context;function renderMediaAsCheckboxes(e,t={},n){canvasEl||(canvasEl=document.createElement("canvas"),context=canvasEl.getContext("2d")),canvasEl.width=n.dimensions[0],canvasEl.height=n.dimensions[1],context.fillStyle="white",context.fillRect(0,0,canvasEl.width,canvasEl.height);const[a,r]=getMediaDimensions(e),[i,o]=clampDimensions(a,r,canvasEl.width,canvasEl.height);context.drawImage(e,0,0,i,o);const l=convertImageDataToCheckboxMatrix(applyImageAlgorithm(context,i,o,t));n.setData(l,t)}function getMediaDimensions(e){let t=0,n=0;switch(e.tagName){case"IMG":t=e.width,n=e.height;break;case"VIDEO":t=e.videoWidth,n=e.videoHeight}return[t,n]}function clampDimensions(e,t,n,a){const r=t/a,i=e/n;if(r<1&&i<1)return[e,t];return r>i?[Math.floor(e*a/t),a]:(()=>{const a=Math.floor(t*n/e);return[n,a]})()}function applyImageAlgorithm(e,t,n,a){const{threshold:r=50,dithering:i="none"}=a;let o,l=e.getImageData(0,0,t,n);const s={ordered:orderedDither,atkinson:atkinsonDither,errorDiffusion:errorDiffusionDither};return"none"===i?o=blackAndWhiteThreshold(l.data,r):(o=sharpen(e,l,r/100),o=s[i]({uint8data:o,w:t,h:n})),l.data.set(o),l}function convertImageDataToCheckboxMatrix(e){const t=[],n=e.width;for(let a=0;a<e.data.length;a+=4){const r=a/4,i=Math.floor(r/n),o=r%n;0===o&&(t[i]=[]),t[i][o]=255===e.data[a]?0:1}return t}function renderImage(e,t){const n=this;let a;"string"==typeof e?((a=new Image).crossOrigin="anonymous",a.addEventListener("load",()=>renderMediaAsCheckboxes(a,t,n),{once:!0}),a.src=e):"object"==typeof e&&(e.complete?renderMediaAsCheckboxes(e,t,n):e.addEventListener("load",()=>renderMediaAsCheckboxes(e,t,n),{once:!0}))}var renderImage$1={name:"renderImage",exec:renderImage};let refreshId;function renderVideo(e,t){const n=this;let a;"string"==typeof e?((a=document.createElement("video")).loop=!0,a.controls=!0,a.autoplay=!0,a.muted=!0,a.crossOrigin="anonymous",a.addEventListener("loadeddata",()=>{a.play(),setVideoRenderLoop(a,t,n)},{once:!0}),a.src=e):"object"==typeof e&&(4===e.readyState?setVideoRenderLoop(e,t,n):e.addEventListener("loadeddata",()=>setVideoRenderLoop(e,t,n),{once:!0}))}function setVideoRenderLoop(e,t,n){renderMediaAsCheckboxes(e,t,n),refreshId=requestAnimationFrame(()=>setVideoRenderLoop(e,t,n))}function cleanUp$3(){cancelAnimationFrame(refreshId)}var renderVideo$1={name:"renderVideo",exec:renderVideo,cleanUp:cleanUp$3};Checkboxland.extend(print$1),Checkboxland.extend(marquee$1),Checkboxland.extend(transitionWipe$1),Checkboxland.extend(dataUtils$1),Checkboxland.extend(onClick$1),Checkboxland.extend(renderImage$1),Checkboxland.extend(renderVideo$1);export{Checkboxland}; | ||
class Checkboxland{constructor(e={}){void 0!==e.fillValue&&_checkForValidValue(e.fillValue),this.dimensions=_textDimensionsToArray(e.dimensions||"8x8"),this.displayEl=_getValidHTMLContainer(e.selector),this._data=this.getEmptyMatrix({fillValue:e.fillValue||0}),_createInitialCheckboxDisplay(this.displayEl,this._data)}getCheckboxValue(e,t){if(!(e>=0&&t>=0&&e<this.dimensions[0]&&t<this.dimensions[1]))throw new Error(`The location (x: ${e}, y: ${t}) is outside of this checkbox display`);return this._data[t][e]}setCheckboxValue(e,t,n){const r=e>=0&&t>=0&&e<this.dimensions[0]&&t<this.dimensions[1];if(_checkForValidValue(n),!r)return;this._data[t][e]=n;const a=this.displayEl.children[t].children[e];if(2===n){if(a.indeterminate)return;a.indeterminate=!0,a.checked=!1}else{if(a.indeterminate&&(a.indeterminate=!1),a.checked===Boolean(n))return;a.checked=Boolean(n)}}getData(){return this._data.map(e=>e.slice())}setData(e,t={}){const{x:n=0,y:r=0,fillValue:a}=t,i=void 0!==a,o=this.dimensions[0],l=this.dimensions[1];_checkForValidMatrix(e);for(let t=0;t<l;t++)for(let l=0;l<o;l++){let o=l<n,s=t<r,c=l>=n+e[0].length,d=t>=r+e.length,h=o||s||c||d;if(h&&!i)continue;let u=h?a:e[t-r][l-n];this.setCheckboxValue(l,t,u)}}clearData(){const e=this.getEmptyMatrix();this.setData(e)}getEmptyMatrix(e={}){const{fillValue:t=0,width:n=this.dimensions[0],height:r=this.dimensions[1]}=e,a=[];for(let e=0;e<r;e++){a[e]=[];for(let r=0;r<n;r++)a[e][r]=t}return a}static extend(e={}){const{name:t,exec:n,cleanUp:r}=e;if(!t||!n)throw new Error('Your plugin must have a "name" and an "exec" function.');r&&(n.cleanUp=r),this.prototype[t]=n}}function _checkForValidValue(e){if(0!==e&&1!==e&&2!==e)throw new Error(`${e} is not a valid checkbox value.`)}function _checkForValidMatrix(e){if(!Array.isArray(e)||!Array.isArray(e[0]))throw new Error(`${e} is not a valid matrix.`)}function _getValidHTMLContainer(e="#checkboxland"){if(e instanceof Element)return e;if("string"==typeof e)return document.querySelector(e);throw new Error("Checkboxland selector is invalid.")}function _textDimensionsToArray(e){const t="The dimensions you provided are invalid.";if("string"!=typeof e)throw new Error(t);const n=e.split("x").map(e=>Number(e));if(!(2===n.length&&!isNaN(n[0])&&!isNaN(n[0])))throw new Error(t);return e.split("x").map(e=>Number(e))}function _createInitialCheckboxDisplay(e,t){e.innerHTML="",e.style.overflowX="auto",e.setAttribute("aria-hidden",!0),t.forEach(t=>{const n=document.createElement("div");n.style.lineHeight=.75,n.style.whiteSpace="nowrap",t.forEach(e=>{const t=document.createElement("input"),r=2===e,a=!r&&Boolean(e);t.style.margin=0,t.style.verticalAlign="top",t.type="checkbox",t.tabIndex="-1",t.checked=a,t.indeterminate=r,n.appendChild(t)}),e.appendChild(n)})}const fiveBySeven={0:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,1,1],[1,0,1,0,1],[1,1,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],1:[[0,1,0],[1,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],2:[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],3:[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],4:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,0,0,0,1],[0,0,0,0,1]],5:[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,0],[0,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],6:[[0,0,1,1,0],[0,1,0,0,0],[1,0,0,0,0],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],7:[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[0,1,0,0,0],[0,1,0,0,0]],8:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],9:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,1,1,0,0]],":":[[0],[1],[0],[0],[0],[1],[0]]," ":[[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]],A:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1]],B:[[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0]],C:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,1],[0,1,1,1,0]],D:[[1,1,1,0,0],[1,0,0,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,1,0],[1,1,1,0,0]],E:[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],F:[[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],G:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,0],[1,0,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1]],H:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],I:[[1,1,1],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],J:[[0,0,1,1,1],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0],[0,0,0,1,0],[1,0,0,1,0],[0,1,1,0,0]],K:[[1,0,0,0,1],[1,0,0,1,0],[1,0,1,0,0],[1,1,0,0,0],[1,0,1,0,0],[1,0,0,1,0],[1,0,0,0,1]],L:[[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],M:[[1,0,0,0,1],[1,1,0,1,1],[1,0,1,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],N:[[1,0,0,0,1],[1,0,0,0,1],[1,1,0,0,1],[1,0,1,0,1],[1,0,0,1,1],[1,0,0,0,1],[1,0,0,0,1]],O:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],P:[[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],Q:[[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,0,1,0],[0,1,1,0,1]],R:[[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],S:[[0,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[0,0,0,0,1],[1,1,1,1,0]],T:[[1,1,1,1,1],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0]],U:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],V:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0]],W:[[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,1,0,1],[0,1,0,1,0]],X:[[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1],[1,0,0,0,1]],Y:[[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0],[0,0,1,0,0]],Z:[[1,1,1,1,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,0,0,0,0],[1,1,1,1,1]],a:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[0,1,1,1,1],[1,0,0,0,1],[1,1,1,1,1]],b:[[1,0,0,0,0],[1,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,1,1,1,0]],c:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,1],[0,1,1,1,0]],d:[[0,0,0,0,1],[0,0,0,0,1],[0,1,1,0,1],[1,0,0,1,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1]],e:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,0],[0,1,1,1,0]],f:[[0,0,1,1,0],[0,1,0,0,1],[0,1,0,0,0],[1,1,1,0,0],[0,1,0,0,0],[0,1,0,0,0],[0,1,0,0,0]],g:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,1,1,1,0]],h:[[1,0,0,0,0],[1,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],i:[[0,1,0],[0,0,0],[1,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],j:[[0,0,0,1],[0,0,0,0],[0,0,1,1],[0,0,0,1],[0,0,0,1],[1,0,0,1],[0,1,1,0]],k:[[1,0,0,0],[1,0,0,0],[1,0,0,1],[1,0,1,0],[1,1,0,0],[1,0,1,0],[1,0,0,1]],l:[[1,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[0,1,0],[1,1,1]],m:[[0,0,0,0,0],[0,0,0,0,0],[1,1,0,1,0],[1,0,1,0,1],[1,0,1,0,1],[1,0,0,0,1],[1,0,0,0,1]],n:[[0,0,0,0,0],[0,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1]],o:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,0]],p:[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,0],[1,0,0,0,1],[1,1,1,1,1],[1,0,0,0,0],[1,0,0,0,0]],q:[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,0,1],[1,0,0,1,1],[1,1,1,1,1],[0,0,0,0,1],[0,0,0,0,1]],r:[[0,0,0,0,0],[0,0,0,0,0],[1,0,1,1,0],[1,1,0,0,1],[1,0,0,0,0],[1,0,0,0,0],[1,0,0,0,0]],s:[[0,0,0,0,0],[0,0,0,0,0],[0,1,1,1,0],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[1,1,1,1,0]],t:[[0,1,0,0,0],[0,1,0,0,0],[1,1,1,0,0],[0,1,0,0,0],[0,1,0,0,0],[0,1,0,0,1],[0,0,1,1,0]],u:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,1,1],[0,1,1,0,1]],v:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0]],w:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[1,0,1,0,1],[1,0,1,0,1],[0,1,0,1,0]],x:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[0,1,0,1,0],[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1]],y:[[0,0,0,0,0],[0,0,0,0,0],[1,0,0,0,1],[1,0,0,0,1],[0,1,1,1,1],[0,0,0,0,1],[0,1,1,1,0]],z:[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,1,1,1,1]],"`":[[1,0,0],[0,1,0],[0,0,1],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],"~":[[0,0,0,0,0],[0,0,0,0,0],[0,1,0,0,0],[1,0,1,0,1],[0,0,0,1,0],[0,0,0,0,0],[0,0,0,0,0]],"!":[[1],[1],[1],[1],[1],[0],[1]],"@":[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,1,1,0,1],[1,0,1,0,1],[1,0,1,0,1],[0,1,1,1,0]],"#":[[0,1,0,1,0],[0,1,0,1,0],[1,1,1,1,1],[0,1,0,1,0],[1,1,1,1,1],[0,1,0,1,0],[0,1,0,1,0]],$:[[0,0,1,0,0],[0,1,1,1,1],[1,0,0,0,0],[0,1,1,1,0],[0,0,0,0,1],[1,1,1,1,0],[0,0,1,0,0]],"%":[[1,1,0,0,1],[1,1,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,1,0,0,0],[1,0,0,1,1],[1,0,0,1,1]],"^":[[0,0,1,0,0],[0,1,0,1,0],[1,0,0,0,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]],"&":[[0,1,1,0,0],[1,0,0,1,0],[1,0,1,0,0],[0,1,0,0,0],[1,0,1,0,1],[1,0,0,1,0],[1,1,1,0,1]],"*":[[0,0,0,0,0],[0,0,1,0,0],[1,0,1,0,1],[0,1,1,1,0],[1,0,1,0,1],[0,0,1,0,0],[0,0,0,0,0]],"(":[[0,0,1],[0,1,0],[1,0,0],[1,0,0],[1,0,0],[0,1,0],[0,0,1]],")":[[1,0,0],[0,1,0],[0,0,1],[0,0,1],[0,0,1],[0,1,0],[1,0,0]],"-":[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]],_:[[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1]],"+":[[0,0,0,0,0],[0,0,1,0,0],[0,0,1,0,0],[1,1,1,1,1],[0,0,1,0,0],[0,0,1,0,0],[0,0,0,0,0]],"=":[[0,0,0,0,0],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[1,1,1,1,1],[0,0,0,0,0],[0,0,0,0,0]],"[":[[1,1,1],[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,0,0],[1,1,1]],"]":[[1,1,1],[0,0,1],[0,0,1],[0,0,1],[0,0,1],[0,0,1],[1,1,1]],"{":[[0,0,1],[0,1,0],[0,1,0],[1,0,0],[0,1,0],[0,1,0],[0,0,1]],"}":[[1,0,0],[0,1,0],[0,1,0],[0,0,1],[0,1,0],[0,1,0],[1,0,0]],"|":[[1],[1],[1],[1],[1],[1],[1]],"\\":[[1,0,0],[1,0,0],[0,1,0],[0,1,0],[0,1,0],[0,0,1],[0,0,1]],"/":[[0,0,1],[0,0,1],[0,1,0],[0,1,0],[0,1,0],[1,0,0],[1,0,0]],";":[[0,0],[0,1],[0,1],[0,0],[0,0],[0,1],[1,0]],'"':[[1,0,1],[1,0,1],[1,0,1],[0,0,0],[0,0,0],[0,0,0],[0,0,0]],"'":[[1,1],[0,1],[1,0],[0,0],[0,0],[0,0],[0,0]],",":[[0,0],[0,0],[0,0],[0,0],[1,1],[0,1],[1,0]],".":[[0],[0],[0],[0],[0],[0],[1]],"<":[[0,0,0],[0,0,1],[0,1,0],[1,0,0],[0,1,0],[0,0,1],[0,0,0]],">":[[0,0,0],[1,0,0],[0,1,0],[0,0,1],[0,1,0],[1,0,0],[0,0,0]],"?":[[0,1,1,1,0],[1,0,0,0,1],[0,0,0,0,1],[0,0,0,1,0],[0,0,1,0,0],[0,0,0,0,0],[0,0,1,0,0]]};function print(e,t={}){const{dataOnly:n=!1,font:r=fiveBySeven,x:a=0,y:i=0,fillValue:o}=t,l=void 0!==o,s=e.split("").reduce((e,t)=>{return _matrixConcat(e,r[t])},[]);if(0===s.length&&s.push([]),n){if(!l)return s;let e=this.getEmptyMatrix({fillValue:o});return s.forEach((t,n)=>{t.forEach((t,r)=>{e[n+i][r+a]=t})}),e}this.setData(s,{x:a,y:i,fillValue:o})}function _matrixConcat(e,t){if(0===e.length)return t;const n=[];return e.forEach((e,r)=>{n.push(e.concat([0]).concat(t[r]))}),n}var print$1={name:"print",exec:print};let intervalId;function marquee(e,t={}){const{interval:n=200,repeat:r=!1,fillValue:a=0,callback:i=(()=>{})}=t,o=this.dimensions[1],l=this.dimensions[0],s=l+e[0].length;let c=1;intervalId=setInterval(()=>{const t=this.getData();for(let n=0;n<o;n++)for(let r=0;r<l;r++){if(r+1===l){const t=c-(l-r),i=e[n]?void 0===e[n][t]?a:e[n][t]:a;this.setCheckboxValue(r,n,i)}else this.setCheckboxValue(r,n,t[n][r+1])}c===s?r?c=1:(clearInterval(intervalId),i()):c++},n)}function cleanUp(){clearInterval(intervalId)}var marquee$1={name:"marquee",exec:marquee,cleanUp:cleanUp};let intervalId$1;function transitionWipe(e,t={}){const{interval:n=200,fillValue:r=0,direction:a="ltr",callback:i=(()=>{})}=t,o=this.dimensions[1],l=this.dimensions[0],s=l+1;let c=1;intervalId$1=setInterval(()=>{let t,n;switch(a){case"ltr":n=(t=c-1)-1;break;case"rtl":n=(t=l-c)+1}for(let a=0;a<o;a++)for(let i=0;i<l;i++)if(i===t)this.setCheckboxValue(i,a,1);else if(i===n){let t=e[a]?void 0===e[a][i]?r:e[a][i]:r;this.setCheckboxValue(i,a,t)}c===s?(clearInterval(intervalId$1),i()):c++},n)}function cleanUp$1(){clearInterval(intervalId$1)}var transitionWipe$1={name:"transitionWipe",exec:transitionWipe,cleanUp:cleanUp$1};function dataUtils(e,t,n){return{invert:invert,pad:pad}[e](t,n)}function invert(e){return e.map(e=>e.map(e=>e?0:1))}function pad(e,t={}){const n=Number.isInteger(t.all),r=n?t.all:t.top,a=n?t.all:t.right,i=n?t.all:t.bottom,o=n?t.all:t.left;let l=e.map(e=>{let t=e;return o&&(t=[...Array(o).fill(0),...t]),a&&(t=[...t,...Array(a).fill(0)]),t});const s=l[0].length,c=(e,t)=>{const n=[];for(let r=0;r<e;r++)n.push(Array(t).fill(0));return n};return r&&(l=[...c(r,s),...l]),i&&(l=[...l,...c(i,s)]),l}var dataUtils$1={name:"dataUtils",exec:dataUtils};let handleFun=null,displayEl=null;function onClick(e){displayEl=this.displayEl,handleFun=handleEvent.bind(this,e),displayEl.addEventListener("click",handleFun)}function handleEvent(e,t){const n=findCoodrs(displayEl,t.target);if(!n)return;const r={x:n.x,y:n.y,checkbox:t.target};if("function"==typeof e)e(r);else{if(!("handleEvent"in e&&"function"==typeof e.handleEvent))throw new TypeError("Callback should be a function or an EventListener object");e.handleEvent(r)}}function findCoodrs(e,t){for(let n=0;n<e.children.length;n+=1){const r=e.children[n];for(let e=0;e<r.children.length;e+=1){if(r.children[e]===t)return{x:e,y:n}}}return null}function cleanUp$2(){displayEl.removeEventListener("click",handleFun)}var onClick$1={name:"onClick",exec:onClick,cleanUp:cleanUp$2};const PALLET=[[60,136,253],[255,255,255]];function orderedDither({uint8data:e,palette:t=PALLET,step:n=1,h:r,w:a}){for(var i,o,l,s,c,d,h,u,f,p,m,x=new Uint8ClampedArray(e),v=new Array([1,9,3,11],[13,5,15,7],[4,12,2,10],[16,8,14,6]),y=0;y<r;y+=n)for(var g=0;g<a;g+=n)for(o=(s=4*g+4*y*a)+1,l=s+2,x[i=s]+=3*v[g%4][y%4],x[o]+=3*v[g%4][y%4],x[l]+=3*v[g%4][y%4],d=(c=approximateColor(new Array(x[i],x[o],x[l]),t))[0],h=c[1],u=c[2],f=0;f<n;f++)for(p=0;p<n;p++)x[m=s+4*f+4*a*p]=d,x[m+1]=h,x[m+2]=u;return x}function atkinsonDither({uint8data:e,palette:t=PALLET,step:n=1,h:r,w:a}){for(var i,o,l,s,c,d,h,u,f,p,m,x,v=new Uint8ClampedArray(e),y=new Uint8ClampedArray(e),g=function(e,t){return 4*e+4*t*a},E=0;E<r;E+=n)for(var k=0;k<a;k+=n)for(i=c=4*k+4*E*a,o=c+1,l=c+2,d=approximateColor(new Array(v[i],v[o],v[l]),t),(s=[])[i]=v[i]-d[0],s[o]=v[o]-d[1],s[l]=v[l]-d[2],v[g(k+n,E)+0]+=1/8*s[i],v[g(k-n,E+n)+0]+=1/8*s[i],v[g(k,E+n)+0]+=1/8*s[i],v[g(k+n,E+n)+0]+=1/8*s[i],v[g(k+2*n,E)+0]+=1/8*s[i],v[g(k,E+2*n)+0]+=1/8*s[i],v[g(k+n,E)+1]+=1/8*s[o],v[g(k-n,E+n)+1]+=1/8*s[o],v[g(k,E+n)+1]+=1/8*s[o],v[g(k+n,E+n)+1]+=1/8*s[o],v[g(k+2*n,E)+1]+=1/8*s[o],v[g(k,E+2*n)+1]+=1/8*s[o],v[g(k+n,E)+2]+=1/8*s[l],v[g(k-n,E+n)+2]+=1/8*s[l],v[g(k,E+n)+2]+=1/8*s[l],v[g(k+n,E+n)+2]+=1/8*s[l],v[g(k+2*n,E)+2]+=1/8*s[l],v[g(k,E+2*n)+2]+=1/8*s[l],h=d[0],u=d[1],f=d[2],p=0;p<n;p++)for(m=0;m<n;m++)y[x=c+4*p+4*a*m]=h,y[x+1]=u,y[x+2]=f;return y}function errorDiffusionDither({uint8data:e,palette:t=PALLET,step:n=1,h:r,w:a}){for(var i,o,l,s,c,d,h,u,f,p,m,x,v=new Uint8ClampedArray(e),y=new Uint8ClampedArray(e),g=function(e,t){return 4*e+4*t*a},E=0;E<r;E+=n)for(var k=0;k<a;k+=n)for(i=c=4*k+4*E*a,o=c+1,l=c+2,d=approximateColor(new Array(v[i],v[o],v[l]),t),(s=[])[i]=v[i]-d[0],s[o]=v[o]-d[1],s[l]=v[l]-d[2],v[g(k+n,E)]=v[g(k+n,E)]+.4375*s[i],v[g(k-n,E+1)]=v[g(k-1,E+n)]+.1875*s[i],v[g(k,E+n)]=v[g(k,E+n)]+.3125*s[i],v[g(k+n,E+n)]=v[g(k+1,E+n)]+.0625*s[i],v[g(k+n,E)+1]=v[g(k+n,E)+1]+.4375*s[o],v[g(k-n,E+n)+1]=v[g(k-n,E+n)+1]+.1875*s[o],v[g(k,E+n)+1]=v[g(k,E+n)+1]+.3125*s[o],v[g(k+n,E+n)+1]=v[g(k+n,E+n)+1]+.0625*s[o],v[g(k+n,E)+2]=v[g(k+n,E)+2]+.4375*s[l],v[g(k-n,E+n)+2]=v[g(k-n,E+n)+2]+.1875*s[l],v[g(k,E+n)+2]=v[g(k,E+n)+2]+.3125*s[l],v[g(k+n,E+n)+2]=v[g(k+n,E+n)+2]+.0625*s[l],h=d[0],u=d[1],f=d[2],p=0;p<n;p++)for(m=0;m<n;m++)y[x=c+4*p+4*a*m]=h,y[x+1]=u,y[x+2]=f;return y}function approximateColor(e,t){return function e(t,n,r,a){if(2==r.length)return t(n,a)<=t(n,r[1])?a:r[1];var i=r.slice(1);return a=t(n,a)<=t(n,r[1])?a:r[1],e(t,n,i,a)}(function(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2))},e,t,t[0])}function blackAndWhiteThreshold(e,t){const n=(e,t,n)=>.21*e+.72*t+.07*n,r=t/100*255;for(let t=0;t<e.length;t+=4){const a=n(e[t],e[t+1],e[t+2])>r?255:0;e[t]=a,e[t+1]=a,e[t+2]=a}return e}function sharpen(e,t,n){const r=t.width,a=t.height,i=t.data,o=[0,-1,0,-1,5,-1,0,-1,0],l=Math.round(Math.sqrt(o.length)),s=.5*l|0,c=e.createImageData(r,a).data;for(let e=a;e>=0;e--)for(let t=r;t>=0;t--){const d=e,h=t,u=4*(e*r+t);let f=0,p=0,m=0,x=0;for(let e=0;e<l;e++)for(let t=0;t<l;t++){const n=d+e-s,c=h+t-s;if(n>=0&&n<a&&c>=0&&c<r){const a=4*(n*r+c),s=o[e*l+t];f+=i[a]*s,p+=i[a+1]*s,m+=i[a+2]*s,x+=i[a+3]*s}}c[u]=f*n+i[u]*(1-n),c[u+1]=p*n+i[u+1]*(1-n),c[u+2]=m*n+i[u+2]*(1-n),c[u+3]=i[u+3]}for(let e=a;e>=0;e--){const t=4*(e*r+0);c[t]=i[t],c[t+1]=i[t+1],c[t+2]=i[t+2],c[t+3]=i[t+3]}return c}let canvasEl,context;function renderMediaAsCheckboxes(e,t={},n){canvasEl||(canvasEl=document.createElement("canvas"),context=canvasEl.getContext("2d")),canvasEl.width=n.dimensions[0],canvasEl.height=n.dimensions[1],context.fillStyle="white",context.fillRect(0,0,canvasEl.width,canvasEl.height);const[r,a]=getMediaDimensions(e),[i,o]=clampDimensions(r,a,canvasEl.width,canvasEl.height);context.drawImage(e,0,0,i,o);const l=convertImageDataToCheckboxMatrix(applyImageAlgorithm(context,i,o,t));n.setData(l,t)}function getMediaDimensions(e){let t=0,n=0;switch(e.tagName){case"IMG":t=e.width,n=e.height;break;case"VIDEO":t=e.videoWidth,n=e.videoHeight}return[t,n]}function clampDimensions(e,t,n,r){const a=t/r,i=e/n;if(a<1&&i<1)return[e,t];return a>i?[Math.floor(e*r/t),r]:(()=>{const r=Math.floor(t*n/e);return[n,r]})()}function applyImageAlgorithm(e,t,n,r){const{threshold:a=50,dithering:i="none"}=r;let o,l=e.getImageData(0,0,t,n);const s={ordered:orderedDither,atkinson:atkinsonDither,errorDiffusion:errorDiffusionDither};return"none"===i?o=blackAndWhiteThreshold(l.data,a):(o=sharpen(e,l,a/100),o=s[i]({uint8data:o,w:t,h:n})),l.data.set(o),l}function convertImageDataToCheckboxMatrix(e){const t=[],n=e.width;for(let r=0;r<e.data.length;r+=4){const a=r/4,i=Math.floor(a/n),o=a%n;0===o&&(t[i]=[]),t[i][o]=255===e.data[r]?0:1}return t}function renderImage(e,t){const n=this;let r;"string"==typeof e?((r=new Image).crossOrigin="anonymous",r.addEventListener("load",()=>renderMediaAsCheckboxes(r,t,n),{once:!0}),r.src=e):"object"==typeof e&&(e.complete?renderMediaAsCheckboxes(e,t,n):e.addEventListener("load",()=>renderMediaAsCheckboxes(e,t,n),{once:!0}))}var renderImage$1={name:"renderImage",exec:renderImage};let refreshId;function renderVideo(e,t){const n=this;let r;"string"==typeof e?((r=document.createElement("video")).loop=!0,r.controls=!0,r.autoplay=!0,r.muted=!0,r.crossOrigin="anonymous",r.addEventListener("loadeddata",()=>{r.play(),setVideoRenderLoop(r,t,n)},{once:!0}),r.src=e):"object"==typeof e&&(4===e.readyState?setVideoRenderLoop(e,t,n):e.addEventListener("loadeddata",()=>setVideoRenderLoop(e,t,n),{once:!0}))}function setVideoRenderLoop(e,t,n){renderMediaAsCheckboxes(e,t,n),refreshId=requestAnimationFrame(()=>setVideoRenderLoop(e,t,n))}function cleanUp$3(){cancelAnimationFrame(refreshId)}var renderVideo$1={name:"renderVideo",exec:renderVideo,cleanUp:cleanUp$3};Checkboxland.extend(print$1),Checkboxland.extend(marquee$1),Checkboxland.extend(transitionWipe$1),Checkboxland.extend(dataUtils$1),Checkboxland.extend(onClick$1),Checkboxland.extend(renderImage$1),Checkboxland.extend(renderVideo$1);export{Checkboxland}; | ||
//# sourceMappingURL=index.min.js.map |
{ | ||
"name": "checkboxland", | ||
"description": "Render anything as HTML checkboxes", | ||
"version": "1.4.0", | ||
"version": "1.5.0", | ||
"license": "MIT", | ||
@@ -27,3 +27,3 @@ "files": [ | ||
"@pika/plugin-standard-pkg": "^0.9.2", | ||
"http-server": "^0.12.3", | ||
"http-server": "^14.1.0", | ||
"pika-plugin-minify": "^0.1.0", | ||
@@ -30,0 +30,0 @@ "typescript": "^3.9.5" |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
269129
2189