Skip to content

Instantly share code, notes, and snippets.

View l-portet's full-sized avatar
🤙

Lucas Portet l-portet

🤙
View GitHub Profile
import { RefObject, useEffect, useRef } from 'react';
function getScrollParent(node: HTMLElement | null): HTMLElement | null {
const isElement = node instanceof HTMLElement;
const overflowY = isElement && window.getComputedStyle(node).overflowY;
const isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';
if (!node) {
return null;
} else if (isScrollable && node.scrollHeight >= node.clientHeight) {
(function(console){
console.save = function(data, filename){
if(!data) {
console.error('Console.save: No data')
return;
}
if(!filename) filename = 'console.json'
const TIMEOUT_MS = 5000;
const CHECK_INTERVAL_MS = 500;
let startTime = Date.now();
const parseVersion = (versionStr) => {
if (!versionStr) return null;
const [main, pre] = versionStr.split('-');
const [major, minor, patch] = main.split('.').map(Number);
let canaryVal = 0;
// inject in any tiktok url: https://www.tiktok.com/@*/video/*,https://www.tiktok.com/@*/photo/*
(() => {
const ID = "tiktok-data-debugger";
document.getElementById(ID)?.remove();
const DATA_PATH =
'window.__$UNIVERSAL_DATA$__.__DEFAULT_SCOPE__["webapp.video-detail"].itemInfo.itemStruct';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
// ==UserScript==
// @name ChatGPT Shorthands
// @namespace local.chatgpt.shorthands
// @version 1.2.0
// @description Adds prompt chips and keyboard shortcuts to new ChatGPT conversations.
// @match https://chatgpt.com/*
// @run-at document-idle
// ==/UserScript==
(() => {