{"version":3,"file":"js/3257-be42bad4e49ccf44f303.js","mappings":"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","sources":["webpack://cricksapi/./app/javascript/packs/FileValidations.tsx"],"sourcesContent":["import { Dispatch, useCallback, useReducer } from 'react'\n\nimport { FFmpeg } from '@ffmpeg/ffmpeg'\nimport { fetchFile } from '@ffmpeg/util'\nimport imageCompression from 'browser-image-compression'\nimport { UniqueComponentId } from 'primereact/utils'\n\nimport { truncateString } from './entries/utils'\n\ninterface Stats {\n savedSpace: number // Bytes\n crf?: number // FFMPEG compression aggressiveness (0-13) anything above 15 is generally pretty garbage\n compressedSize?: number // Bytes\n conversionSize?: number // Bytes\n originalSize?: number\n}\n\n// export const COMPRESS_VIDEO_SIZE = 50e6 // 50MB\nexport const MAX_VIDEO_FILE_SIZE = 7.5e6 // 7.5MB\nexport const MAX_IMAGE_FILE_SIZE = 2.5e6 // 2.5MB\n\nconst units = ['Bytes', 'KB', 'MB', 'GB', 'TB']\n\nconst ffmpeg = new FFmpeg()\n\nconst imageOptions = {\n maxSizeMB: MAX_IMAGE_FILE_SIZE / 1e6,\n // 1080p images should be more than enough\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n}\n\ntype State = {\n step: string\n progress: number\n file?: File\n error?: string\n stats?: Stats\n ffmpegRunning?: boolean\n thumbnail?: string\n}\n\ntype Action =\n | { type: 'START'; step: string; ffmpegRunning: boolean }\n | {\n type: 'COMPRESSION'\n step: string\n progress: number\n ffmpegRunning: boolean\n thumbnail?: string\n }\n | {\n type: 'CONVERSION'\n step: string\n progress: number\n ffmpegRunning: boolean\n thumbnail?: string\n }\n | { type: 'COMPLETE'; file: File; stats: Stats }\n | { type: 'ERROR'; error: string; file: File }\n\nconst reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case 'START':\n return { ...state, step: action.step, progress: 0, error: undefined, ffmpegRunning: true }\n case 'COMPRESSION':\n case 'CONVERSION':\n return {\n ...state,\n step: action.step,\n progress: action.progress,\n ffmpegRunning: action.ffmpegRunning,\n thumbnail: action.thumbnail,\n }\n case 'COMPLETE':\n return { step: 'Complete', progress: 100, file: action.file, stats: action.stats }\n case 'ERROR':\n return { step: 'Error', progress: 0, error: action.error }\n default:\n return state\n }\n}\n\nexport const optimizeFile = async (\n originalFile: File,\n dispatch?: Dispatch,\n abortController?: AbortController\n) => {\n const fileTempName = UniqueComponentId('temp')\n let file = originalFile\n let stats: Stats = { savedSpace: 0, originalSize: file.size }\n try {\n dispatch?.({ type: 'START', step: 'Initializing', ffmpegRunning: false })\n\n const updateStats = (updatedFile: File, newInfo?: Record) => {\n stats = { ...stats, savedSpace: originalFile.size - updatedFile.size, ...newInfo }\n console.log('Video stats', stats)\n }\n\n if (file.type.includes('image') && file.size >= MAX_IMAGE_FILE_SIZE) {\n dispatch?.({ type: 'START', step: 'Compressing Image', ffmpegRunning: true })\n file = await imageCompression(file, imageOptions)\n updateStats(file)\n }\n\n if (file.type.includes('video') && file.size >= MAX_VIDEO_FILE_SIZE) {\n if (!window.crossOriginIsolated)\n throw new Error('Cross-origin isolation required for video compression')\n\n dispatch?.({ type: 'START', step: 'Loading FFmpeg', ffmpegRunning: true })\n if (!ffmpeg.loaded) await ffmpeg.load()\n\n dispatch?.({ type: 'START', step: 'Writing video to Memory', ffmpegRunning: true })\n await ffmpeg.writeFile(`${fileTempName}.mp4`, await fetchFile(file))\n\n dispatch?.({\n type: 'COMPRESSION',\n step: 'Preparing to Compress File',\n progress: 0,\n ffmpegRunning: true,\n })\n\n let step = `Compressing ${truncateString(file.name, 15)}`\n let previewFile = `${URL.createObjectURL(file)}?type=${file.type}`\n\n // Setup listener after thumbnail has been defined\n ffmpeg.on('progress', ({ progress }) => {\n dispatch?.({\n type: step.includes('compress') ? 'COMPRESSION' : 'CONVERSION',\n step,\n progress,\n ffmpegRunning: true,\n thumbnail: previewFile,\n })\n })\n\n dispatch?.({\n type: 'COMPRESSION',\n step,\n progress: 0,\n ffmpegRunning: true,\n thumbnail: previewFile,\n })\n\n // Compress the existing file down (saves generally about 80% of the file size)\n // we want to do as converting to webm can lead to a pThread error (memory out of bounds)\n // it also makes the webm conversion faster\n await new Promise((resolve, reject) => {\n // Heartbeat check if the user cancels\n const checkAbort = () => {\n if (abortController?.signal?.aborted) {\n ffmpeg.terminate() // Stop the ffmpeg process\n reject(new Error(`Cancelled upload for ${file.name}`))\n } else {\n setTimeout(checkAbort, 250)\n }\n }\n\n checkAbort()\n\n const settings = [\n '-i',\n `${fileTempName}.mp4`,\n // 1080p tends to break you can see it breaking on 1080p on this site https://clip.marco.zone/video/\n '-vf',\n 'fps=30,scale=1280:720:flags=bilinear,format=yuv420p',\n '-c:v',\n 'libx264',\n // Might need to update this preset depending on how clients\n '-preset:v',\n 'slow',\n '-profile:v',\n 'high',\n '-maxrate:v',\n '12561k',\n '-bufsize:v',\n '125610k',\n '-async',\n '1',\n '-af',\n 'aformat=sample_rates=48000:channel_layouts=stereo',\n '-c:a',\n 'libfdk_aac',\n '-b:a',\n '192k',\n '-f',\n 'mp4',\n '-threads',\n '0',\n `${fileTempName}_compressed.mp4`,\n ]\n\n ffmpeg\n .exec([...settings])\n .then(resolve)\n .catch(reject)\n })\n\n // Update our stats so we can see how much file size we saved with compression\n const compressedMP4 = await ffmpeg.readFile(`${fileTempName}_compressed.mp4`)\n const compressedBlob = new Blob([compressedMP4], { type: 'video/mp4' })\n updateStats(file, { compressedSize: compressedBlob.size })\n file = new File([compressedBlob], `${fileTempName}_compressed.mp4`, { type: 'video/mp4' })\n URL.revokeObjectURL(previewFile)\n previewFile = `${URL.createObjectURL(file)}?type=${file.type}`\n\n step = `Optimizing ${truncateString(originalFile.name, 15)} for the Web`\n\n // Converting to webm files under 5MB tends to increase size so it's better to skip\n if (file.size <= MAX_VIDEO_FILE_SIZE) {\n updateStats(file)\n dispatch?.({ type: 'COMPLETE', file, stats })\n return { file, stats }\n } else {\n dispatch?.({\n type: 'CONVERSION',\n step,\n progress: 0,\n ffmpegRunning: true,\n thumbnail: previewFile,\n })\n }\n\n // Converting to WEBM + extra compression\n // generally gives us some extra space savings\n await new Promise((resolve, reject) => {\n // Heartbeat check if the user cancels\n const checkAbort = () => {\n if (abortController?.signal?.aborted) {\n ffmpeg.terminate() // Stop the ffmpeg process\n reject(new Error(`Cancelled upload for ${file.name}`))\n } else {\n setTimeout(checkAbort, 250)\n }\n }\n\n checkAbort()\n\n const settings = [\n '-i',\n `${fileTempName}_compressed.mp4`,\n '-c:v',\n 'libvpx-vp9',\n '-crf',\n '30',\n '-b:v',\n '0',\n '-row-mt',\n '1',\n `${fileTempName}.webm`,\n ]\n\n ffmpeg\n .exec([...settings])\n .then(resolve)\n .catch(reject)\n })\n\n if (abortController?.signal?.aborted && ffmpeg.loaded) {\n dispatch?.({ type: 'ERROR', file, error: `Cancelled upload for ${file.name}` })\n return\n }\n\n dispatch?.({\n type: 'CONVERSION',\n step: 'Reading optimized file',\n progress: 0,\n ffmpegRunning: true,\n })\n\n const data = await ffmpeg.readFile(`${fileTempName}.webm`)\n const convertedBlob = new Blob([data], { type: 'video/webm' })\n // Use compressed if it's smaller\n file =\n convertedBlob.size <= compressedBlob.size\n ? new File([convertedBlob], 'converted_video.webm', { type: 'video/webm' })\n : file\n\n updateStats(file, {\n conversionSize: convertedBlob.size,\n })\n\n updateStats(file)\n }\n\n dispatch?.({ type: 'COMPLETE', file, stats })\n return { file, stats }\n } catch (error: unknown) {\n console.log(error)\n dispatch?.({ type: 'ERROR', error: (error as Error).message, file })\n }\n}\n\nexport const useVideoCompression = () => {\n const [state, dispatch] = useReducer(reducer, { step: 'Idle', progress: 0 })\n\n const callback = useCallback(\n (file: File, abortController?: AbortController) =>\n optimizeFile(file, dispatch, abortController),\n []\n )\n\n return { state, optimizeFile: callback }\n}\n\nexport const formatBytes = (bytes: number) => {\n const unitIndex = Math.floor(Math.log(bytes) / Math.log(1024))\n return `${(bytes / Math.pow(1024, unitIndex)).toFixed(2)}${units[unitIndex]}`\n}\n\n/**\n * Using HTML canPlayType to see if the browser supports this video type.\n * @param url Video URL\n * @returns If the browser can play this video\n */\nexport const canPlayVideo = (originalUrl: string | string[]) => {\n const updatedUrl = typeof originalUrl === 'string' ? [originalUrl] : originalUrl\n\n const canItPlay = updatedUrl.some((url) => {\n if (url === '') return\n if (url.includes('blob')) {\n // Add video type into search params\n return url.includes('video')\n }\n const dummyVideo = document.createElement('video')\n const fileExtension = url.match(/\\.\\w{3,4}($|\\?)/gim)?.[0].replace(/\\.|\\?/gim, '')\n const canPlay = dummyVideo.canPlayType(`video/${fileExtension}`)\n dummyVideo.remove()\n return canPlay\n })\n\n return canItPlay\n}\n"],"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","ownKeys","getOwnPropertySymbols","filter","getOwnPropertyDescriptor","apply","_objectSpread","arguments","_defineProperty","getOwnPropertyDescriptors","defineProperties","obj","toPrimitive","String","Number","_toPrimitive","MAX_VIDEO_FILE_SIZE","MAX_IMAGE_FILE_SIZE","units","ffmpeg","FFmpeg","imageOptions","maxSizeMB","maxWidthOrHeight","useWebWorker","reducer","state","action","step","progress","undefined","ffmpegRunning","thumbnail","file","stats","optimizeFile","fn","_ref","_callee","originalFile","dispatch","abortController","fileTempName","updateStats","_abortController$sign3","previewFile","compressedMP4","compressedBlob","data","convertedBlob","_context","UniqueComponentId","savedSpace","originalSize","size","updatedFile","newInfo","console","log","includes","imageCompression","window","crossOriginIsolated","loaded","load","t0","t1","concat","fetchFile","t2","writeFile","truncateString","URL","createObjectURL","on","_ref2","checkAbort","_abortController$sign","signal","aborted","terminate","setTimeout","settings","exec","readFile","Blob","compressedSize","File","revokeObjectURL","_abortController$sign2","conversionSize","t3","message","self","args","err","_x","_x2","_x3","useVideoCompression","_useReducer2","_slicedToArray","useReducer","useCallback","formatBytes","bytes","unitIndex","Math","floor","pow","toFixed","canPlayVideo","originalUrl","some","url","_url$match","dummyVideo","document","createElement","fileExtension","match","replace","canPlay","canPlayType","remove"],"sourceRoot":""}