Skip to content

Instantly share code, notes, and snippets.

View brunoh3art's full-sized avatar
🟢
if you can dream it. you can do it

Bruno Martins brunoh3art

🟢
if you can dream it. you can do it
View GitHub Profile
class ResourceLoader {
static jsZipLoaded = false;
static async loadJSZip() {
if (this.jsZipLoaded) return Promise.resolve();
return new Promise((resolve, reject) => {
if (typeof JSZip !== 'undefined') {
this.jsZipLoaded = true;
resolve();
@trvswgnr
trvswgnr / compress_video
Last active April 23, 2026 21:29
portable shell script to compress videos with ffmpeg
#!/bin/sh
print_usage() {
echo "usage: compress_video <input_file>"
echo "supported formats: mp4, webm, mkv, mov, avi, flv"
}
get_extension() {
f="${1##*/}"
case "$f" in
@Eronred
Eronred / AirbnbImageAnimation
Created June 5, 2024 13:33
Airbnb animated images
import { motion } from 'framer-motion'
import React from 'react'
const images = [
{
src: 'https://a0.muscache.com/im/pictures/miso/Hosting-2810308/original/a653d85a-1a97-45d7-a213-78ef2286122a.jpeg?im_w=720',
alt: 'Tree'
},
{
src: 'https://a0.muscache.com/im/pictures/2cc58022-2004-4034-a281-22fb622e7461.jpg?im_w=720',
@KristofferEriksson
KristofferEriksson / useLocalStorage.ts
Last active July 25, 2024 19:33
An easy-to-use API for storing and retrieving data from Local Storage in React, with built-in real-time synchronization
import { useEffect, useState } from "react";
function useLocalStorage() {
const [loadingStates, setLoadingStates] = useState<Map<string, boolean>>(
new Map()
);
const setStorageValue = <T>(key: string, value: T) => {
try {
window.localStorage.setItem(key, JSON.stringify(value));
@KristofferEriksson
KristofferEriksson / useConfirmation.ts
Created January 23, 2024 10:11
Custom React hook for double-click confirmation for critical actions
import { useCallback, useEffect, useRef, useState } from "react";
/**
* Custom React hook for double-click confirmation for critical actions.
*
* @param action - The action to be executed on the second click.
* @param timeout - Time in milliseconds to reset the unlocked state.
* @returns The current unlocked state and the trigger function.
*/
const useConfirmation = (action: () => void, timeout: number = 5000) => {
@KristofferEriksson
KristofferEriksson / use-copy-to-clipboard.ts
Created January 22, 2024 11:32
Custom React hook for effortless text copying to clipboard! It handles copy status with a customizable timer and error management.
import { useCallback, useState } from "react";
// Custom hook to copy text to clipboard
const useCopyToClipboard = (timeoutDuration: number = 1000) => {
const [copied, setCopied] = useState(false);
const [error, setError] = useState<Error | null>(null);
const copyToClipboard = useCallback(
async (text: string) => {
try {
@KristofferEriksson
KristofferEriksson / useDynamicTextareaSize.ts
Last active April 9, 2024 10:49
A simple React hook to dynamically adjust the height of a textarea based on its content
/**
* Custom hook for dynamically resizing a textarea to fit its content.
* @param {React.RefObject<HTMLTextAreaElement>} textareaRef - Reference to the textarea element.
* @param {string} textContent - Current text content of the textarea.
* @param {number} maxHeight - Optional: maxHeight of the textarea in pixels.
*/
import { useEffect } from "react";
const useDynamicTextareaSize = (
textareaRef: React.RefObject<HTMLTextAreaElement>,
@ixahmedxi
ixahmedxi / component.tsx
Created September 25, 2023 23:23
React resizable panel
import { AnimatePresence, motion } from "framer-motion";
import { PropsWithChildren } from "react";
import useResizeObserver from "use-resize-observer";
const ignoreCircularReferences = () => {
const seen = new WeakSet();
return (key: string, value: Record<string, unknown>) => {
if (key.startsWith("_")) return;
if (typeof value === "object" && value !== null) {
if (seen.has(value)) return;
@Sterv
Sterv / gist:927717720ffb1ebaafd64105eb4f4189
Last active July 31, 2023 03:54
CLI Prompt to generate raw subtitles using SubsAI for Remotion Projects
const prompts = require('prompts');
const {exec} = require('child_process');
const fs = require('fs');
(async () => {
const response = await prompts({
type: 'text',
name: 'fileName',
message: 'What is the file name you want to generate subtitles for?',
description: 'Please enter the file name with the extension. Make sure it is in your public folder.',
var child_process = require('child_process'),
http = require('http');
url = require('url'),
ffmpeg = null;
var livestream = function (req, resp) {
// For live streaming, create a fragmented MP4 file with empty moov (no seeking possible).
var input = 'udp://225.1.1.1:8208';