├── .dockerignore ├── .eslintrc.cjs ├── .gitignore ├── .prettierrc ├── .vscode └── settings.json ├── Dockerfile ├── Dockerfile.slim ├── LICENSE ├── README.md ├── docs ├── demo1.png ├── demo2.png └── demo3.png ├── index.html ├── nginx.conf ├── package.json ├── public └── logo.svg ├── src ├── App.tsx ├── ContextAction.ts ├── Initial.tsx ├── components │ ├── Compare │ │ ├── index.module.scss │ │ └── index.tsx │ ├── CompressOption │ │ ├── index.module.scss │ │ └── index.tsx │ ├── ImageInput │ │ ├── index.module.scss │ │ └── index.tsx │ ├── Indicator │ │ ├── index.module.scss │ │ └── index.tsx │ ├── Loading │ │ ├── index.module.scss │ │ └── index.tsx │ ├── Logo │ │ ├── index.module.scss │ │ └── index.tsx │ ├── OptionItem │ │ ├── index.module.scss │ │ └── index.tsx │ ├── ProgressHint │ │ ├── index.module.scss │ │ └── index.tsx │ └── UploadCard │ │ ├── index.module.scss │ │ ├── index.tsx │ │ └── state.ts ├── engines │ ├── AvifImage.ts │ ├── AvifWasmModule.js │ ├── CanvasImage.ts │ ├── GifImage.ts │ ├── GifWasmModule.js │ ├── ImageBase.ts │ ├── PngImage.ts │ ├── PngWasmModule.js │ ├── Queue.ts │ ├── SvgImage.ts │ ├── WorkerCompress.ts │ ├── WorkerPreview.ts │ ├── avif.wasm │ ├── gif.wasm │ ├── handler.ts │ ├── png.wasm │ ├── support.ts │ ├── svgConvert.ts │ ├── svgParse.ts │ └── transform.ts ├── functions.ts ├── global.tsx ├── locale.ts ├── locales │ ├── en-US.ts │ ├── es-ES.ts │ ├── fa-IR.ts │ ├── fr-FR.ts │ ├── ja-JP.ts │ ├── ko-KR.ts │ ├── tr-TR.ts │ ├── zh-CN.ts │ └── zh-TW.ts ├── main.scss ├── main.tsx ├── media.ts ├── mimes.ts ├── modules.ts ├── pages │ ├── error404 │ │ ├── index.module.scss │ │ └── index.tsx │ └── home │ │ ├── LeftContent.module.scss │ │ ├── LeftContent.tsx │ │ ├── RightOption.module.scss │ │ ├── RightOption.tsx │ │ ├── index.module.scss │ │ ├── index.tsx │ │ └── useColumn.tsx ├── router.tsx ├── states │ └── home.ts ├── type.ts └── vite-env.d.ts ├── tests └── utils.test.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.dockerignore: -------------------------------------------------------------------------------- 1 | .vscode 2 | docs 3 | node_modules 4 | 5 | .DS_Store -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/.eslintrc.cjs -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/.gitignore -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/.prettierrc -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/.vscode/settings.json -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/Dockerfile -------------------------------------------------------------------------------- /Dockerfile.slim: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/Dockerfile.slim -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/README.md -------------------------------------------------------------------------------- /docs/demo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/docs/demo1.png -------------------------------------------------------------------------------- /docs/demo2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/docs/demo2.png -------------------------------------------------------------------------------- /docs/demo3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/docs/demo3.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/index.html -------------------------------------------------------------------------------- /nginx.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/nginx.conf -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/package.json -------------------------------------------------------------------------------- /public/logo.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/public/logo.svg -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/App.tsx -------------------------------------------------------------------------------- /src/ContextAction.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/ContextAction.ts -------------------------------------------------------------------------------- /src/Initial.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/Initial.tsx -------------------------------------------------------------------------------- /src/components/Compare/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Compare/index.module.scss -------------------------------------------------------------------------------- /src/components/Compare/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Compare/index.tsx -------------------------------------------------------------------------------- /src/components/CompressOption/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/CompressOption/index.module.scss -------------------------------------------------------------------------------- /src/components/CompressOption/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/CompressOption/index.tsx -------------------------------------------------------------------------------- /src/components/ImageInput/index.module.scss: -------------------------------------------------------------------------------- 1 | .file { 2 | display: none; 3 | } 4 | -------------------------------------------------------------------------------- /src/components/ImageInput/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/ImageInput/index.tsx -------------------------------------------------------------------------------- /src/components/Indicator/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Indicator/index.module.scss -------------------------------------------------------------------------------- /src/components/Indicator/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Indicator/index.tsx -------------------------------------------------------------------------------- /src/components/Loading/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Loading/index.module.scss -------------------------------------------------------------------------------- /src/components/Loading/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Loading/index.tsx -------------------------------------------------------------------------------- /src/components/Logo/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Logo/index.module.scss -------------------------------------------------------------------------------- /src/components/Logo/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/Logo/index.tsx -------------------------------------------------------------------------------- /src/components/OptionItem/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/OptionItem/index.module.scss -------------------------------------------------------------------------------- /src/components/OptionItem/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/OptionItem/index.tsx -------------------------------------------------------------------------------- /src/components/ProgressHint/index.module.scss: -------------------------------------------------------------------------------- 1 | .progress { 2 | margin-left: 8px; 3 | } 4 | -------------------------------------------------------------------------------- /src/components/ProgressHint/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/ProgressHint/index.tsx -------------------------------------------------------------------------------- /src/components/UploadCard/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/UploadCard/index.module.scss -------------------------------------------------------------------------------- /src/components/UploadCard/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/UploadCard/index.tsx -------------------------------------------------------------------------------- /src/components/UploadCard/state.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/components/UploadCard/state.ts -------------------------------------------------------------------------------- /src/engines/AvifImage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/AvifImage.ts -------------------------------------------------------------------------------- /src/engines/AvifWasmModule.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/AvifWasmModule.js -------------------------------------------------------------------------------- /src/engines/CanvasImage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/CanvasImage.ts -------------------------------------------------------------------------------- /src/engines/GifImage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/GifImage.ts -------------------------------------------------------------------------------- /src/engines/GifWasmModule.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/GifWasmModule.js -------------------------------------------------------------------------------- /src/engines/ImageBase.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/ImageBase.ts -------------------------------------------------------------------------------- /src/engines/PngImage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/PngImage.ts -------------------------------------------------------------------------------- /src/engines/PngWasmModule.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/PngWasmModule.js -------------------------------------------------------------------------------- /src/engines/Queue.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/Queue.ts -------------------------------------------------------------------------------- /src/engines/SvgImage.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/SvgImage.ts -------------------------------------------------------------------------------- /src/engines/WorkerCompress.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/WorkerCompress.ts -------------------------------------------------------------------------------- /src/engines/WorkerPreview.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/WorkerPreview.ts -------------------------------------------------------------------------------- /src/engines/avif.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/avif.wasm -------------------------------------------------------------------------------- /src/engines/gif.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/gif.wasm -------------------------------------------------------------------------------- /src/engines/handler.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/handler.ts -------------------------------------------------------------------------------- /src/engines/png.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/png.wasm -------------------------------------------------------------------------------- /src/engines/support.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/support.ts -------------------------------------------------------------------------------- /src/engines/svgConvert.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/svgConvert.ts -------------------------------------------------------------------------------- /src/engines/svgParse.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/svgParse.ts -------------------------------------------------------------------------------- /src/engines/transform.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/engines/transform.ts -------------------------------------------------------------------------------- /src/functions.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/functions.ts -------------------------------------------------------------------------------- /src/global.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/global.tsx -------------------------------------------------------------------------------- /src/locale.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locale.ts -------------------------------------------------------------------------------- /src/locales/en-US.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/en-US.ts -------------------------------------------------------------------------------- /src/locales/es-ES.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/es-ES.ts -------------------------------------------------------------------------------- /src/locales/fa-IR.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/fa-IR.ts -------------------------------------------------------------------------------- /src/locales/fr-FR.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/fr-FR.ts -------------------------------------------------------------------------------- /src/locales/ja-JP.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/ja-JP.ts -------------------------------------------------------------------------------- /src/locales/ko-KR.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/ko-KR.ts -------------------------------------------------------------------------------- /src/locales/tr-TR.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/tr-TR.ts -------------------------------------------------------------------------------- /src/locales/zh-CN.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/zh-CN.ts -------------------------------------------------------------------------------- /src/locales/zh-TW.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/locales/zh-TW.ts -------------------------------------------------------------------------------- /src/main.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/main.scss -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/main.tsx -------------------------------------------------------------------------------- /src/media.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/media.ts -------------------------------------------------------------------------------- /src/mimes.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/mimes.ts -------------------------------------------------------------------------------- /src/modules.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/modules.ts -------------------------------------------------------------------------------- /src/pages/error404/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/error404/index.module.scss -------------------------------------------------------------------------------- /src/pages/error404/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/error404/index.tsx -------------------------------------------------------------------------------- /src/pages/home/LeftContent.module.scss: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/pages/home/LeftContent.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/home/LeftContent.tsx -------------------------------------------------------------------------------- /src/pages/home/RightOption.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/home/RightOption.module.scss -------------------------------------------------------------------------------- /src/pages/home/RightOption.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/home/RightOption.tsx -------------------------------------------------------------------------------- /src/pages/home/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/home/index.module.scss -------------------------------------------------------------------------------- /src/pages/home/index.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/home/index.tsx -------------------------------------------------------------------------------- /src/pages/home/useColumn.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/pages/home/useColumn.tsx -------------------------------------------------------------------------------- /src/router.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/router.tsx -------------------------------------------------------------------------------- /src/states/home.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/states/home.ts -------------------------------------------------------------------------------- /src/type.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/type.ts -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/src/vite-env.d.ts -------------------------------------------------------------------------------- /tests/utils.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/tests/utils.test.ts -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/tsconfig.json -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/tsconfig.node.json -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joye61/pic-smaller/HEAD/vite.config.ts --------------------------------------------------------------------------------