Skip to content

Instantly share code, notes, and snippets.

View cedeber's full-sized avatar
🦀
Rustacean

Cédric Eberhardt cedeber

🦀
Rustacean
View GitHub Profile
@cedeber
cedeber / recolor.scss
Created January 24, 2023 14:54
Recolor an image-based icon by applying a SVG filter
@mixin recolor($color: #000, $opacity: 1) {
$r: red($color) / 255;
$g: green($color) / 255;
$b: blue($color) / 255;
$a: $opacity;
// grayscale fallback if SVG from data url is not supported
$lightness: lightness($color);
filter: saturate(0%) brightness(0%) invert($lightness) opacity($opacity);
@cedeber
cedeber / vitejs-cjs.ts
Created November 1, 2021 07:57
Vite.js commonJS default export
// This function is used for Vite.js build in use with badly exported CommonJS modules
// @see https://github.com/vitejs/vite/issues/2139
function interopDefault<T>(value: T): T {
// all "vite build" modes (preview mode is in DEV mode)
return import.meta.env.PROD || import.meta.env.MODE === "preview" ? (value as any).default : value;
}
export { interopDefault };
@cedeber
cedeber / chromium.txt
Created December 15, 2020 13:37
Download old Chrome version
https://chocolatey.org/packages/chromium/#versionhistory
https://omahaproxy.appspot.com/ => Branch Base Position
https://commondatastorage.googleapis.com/chromium-browser-snapshots/index.html?prefix=Win_x64/
https://developers.google.com/web/updates/2020
@cedeber
cedeber / cmd.txt
Created August 3, 2020 12:27
IntelliJ MySYS 2
C:\msys64\msys2_shell.cmd -defterm -mingw64 -no-start -here -full-path
@cedeber
cedeber / sw-strat.js
Created January 16, 2020 11:08
Service Workers Strategies
/* --- Strategies --- */
//=> network ? save : cache
async function networkFirst(cacheName, fetchEvent) {
const request = fetchEvent.request;
let fetchResponse;
return fetch(request)
.then(response => toCache(cacheName, request, fetchResponse = response))
.then(response => response
@cedeber
cedeber / decorator.py
Created December 5, 2018 13:54
Python decorator
import time
from functools import wraps
# Use this function only if you need decorator parameters
def howmuchtime(limit=None):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
start = time.time()
@cedeber
cedeber / JavaScript.sublime-build
Last active December 5, 2018 13:54
Check JavaScript with TypeScript on Sublime Text 3
{
"cmd": ["tsc", "-p", "jsconfig.json"],
"file_regex": "^(.+?)\\((\\d+),(\\d+)\\): (.+)$",
"working_dir": "${project_path:${folder}}",
"selector": "source.js"
}
@cedeber
cedeber / vue-event-hub.js
Last active April 25, 2018 07:24
Vue global bus as event hub
import Vue from "vue";
// Create the event bus by creating a new Vue instance and
// binding it somehwere accessible. If you bind it to the
// Vue prototype, you can access it within your components
// like this:
//
// Emit an event
// this.$bus.$emit('myEvent', {data: true})
//
@cedeber
cedeber / serialize-form.js
Created April 3, 2018 17:07
Serialize Form
function serialize(form) {
const inputs = form.querySelectorAll("input");
const fields = {};
for (const input of inputs) {
if (input.name && !input.disabled && input.type !== "file" && input.type !== "reset" && input.type !== "submit" && input.type !== "button") {
if ((input.type !== "checkbox" && input.type !== "radio") || input.checked) {
fields[input.name] = input.value;
}
}
@cedeber
cedeber / apply-before-exit.js
Created April 3, 2018 16:57
Apply before page exits
function applyBeforeExit(doBefore) {
document.addEventListener("click", async (event) => {
// Test for left click.
if (event.button !== 0) {
return;
}
let element = event.target;
// Go up through the DOM tree to search for a link