This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Find all elements with openned ShadowRoots | |
* | |
* @param {Node} e - An element that we should search for ShadowRoots within. | |
* @returns {Array<Element>} Array of Elements that holds ShadowRoot | |
*/ | |
const findRoots = (e = document.documentElement) => | |
[e,...e.querySelectorAll('*')] | |
.filter(e => e.shadowRoot) | |
.flatMap(e => [e, ...findRoots(e.shadowRoot)]); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const color_distance = ([ L1, a1, b1 ], [ L2, a2, b2 ] ) => Math.hypot( L1 - L2, a1 - a2, b1 - b2 ); | |
const linear = x => x >= 0.04045 ? ((x + 0.055) / (1 + 0.055)) ** 2.4 : x / 12.92; | |
const gamma = x => x >= 0.0031308 ? 1.055 * x ** (1 / 2.4) - 0.055 : 12.92 * x; | |
const clamp = x => Math.min ( 255, Math.max ( 0, x ) ); | |
const multiply = (a, b) => |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Matrices multiply | |
const multiply = (a, b) => | |
[...a].map((_, r) => | |
[...b[0]].map((_, c) => | |
a[r].reduce((s,_,i) => | |
s + a[r][i] * b[i][c], 0))); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
onmessage = ({ data: { data, width, height } }) => { | |
const add = (d, i, v) => { | |
if (i >= d.length) return; | |
d[i] += v; | |
}; | |
const w = width * 4; | |
let i = 0; | |
for (let y = 0; y < height; y++) { | |
for (let x = 0; x < width; x++, i += 4) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
onmessage = ({ data: { data, width, height } }) => { | |
const thresholdMap = [ | |
[15, 135, 45, 165], | |
[195, 75, 225, 105], | |
[60, 180, 30, 150], | |
[240, 120, 210, 90], | |
]; | |
let min = 255, | |
max = 0, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
onmessage = ({ data: { data, width, height } }) => { | |
const add = (d, i, v) => { | |
if (i >= d.length) return; | |
d[i] += v; | |
}; | |
let i = 0, | |
w = width * 4; | |
for (let y = 0; y < height; y++) { | |
for (let x = 0; x < width; x++, i += 4) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const s2l = c => (c > 0.04045 ? ((c + 0.055) / 1.055) ** 2.4 : c / 12.92); | |
const l2s = c => (c > 0.0031308 ? 1.055 * Math.pow(c, 1 / 2.4) - 0.055 : 12.92 * c); | |
const LINEAR = new Array(256).fill().map((_, i) => s2l(i / 255)); | |
onmessage = ({ data: { srcData, srcWidth, srcHeight, dstWidth, dstHeight } }) => { | |
const { ceil, floor, abs, min, hypot } = Math; | |
const ratioH = srcHeight / dstHeight; | |
const ratioW = srcWidth / dstWidth; | |
const halfRatioW = ceil(ratioW / 2); | |
const halfRatioH = ceil(ratioH / 2); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export function createWorker(callable) { | |
const code = `(${callable.toString()})()`; | |
const blob = new Blob([code], { type: 'text/javascript' }); | |
const url = URL.createObjectURL(blob); | |
const worker = new Worker(url); | |
URL.revokeObjectURL(url); | |
return worker; | |
} | |
export function executeWorker(callable, data) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# __ __ | |
# ____ ____ _________ ____ ___ ____ / /_ _____/ /_ | |
# /_ / / __ \/ ___/ __ \/ __ `__ \/ __ \/ __/ / ___/ __ \ | |
# / /_/ /_/ / / / /_/ / / / / / / /_/ / /__ (__ ) / / / | |
# /___/ .___/_/ \____/_/ /_/ /_/ .___/\__(_)____/_/ /_/ | |
# /_/ /_/ | |
PS1='\u@\h \W\$ ' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Object.defineProperties(EventTarget.prototype, { | |
on: { value: EventTarget.prototype.addEventListener }, | |
off: { value: EventTarget.prototype.removeEventListener }, | |
emit: { | |
value: function (eventType, eventData) { | |
let event = new Event(eventType); | |
if (eventData) { | |
Object.assign(event, eventData, { details: eventData }); | |
} | |
this.dispatchEvent(event); |
NewerOlder