first commit
Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled

This commit is contained in:
Arian Tron
2026-03-10 19:37:31 +03:30
commit 61f56f997c
27684 changed files with 2784175 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
export const variants = {
enter: (direction: number) => {
return {
x: direction > 0 ? 1000 : -1000,
opacity: 0,
};
},
center: {
x: 0,
opacity: 1,
},
exit: (direction: number) => {
return {
x: direction < 0 ? 1000 : -1000,
opacity: 0,
};
},
};

View File

@@ -0,0 +1,17 @@
import cloudinary from "./cloudinary";
let cachedResults;
export default async function getResults() {
if (!cachedResults) {
const fetchedResults = await cloudinary.v2.search
.expression(`folder:${process.env.CLOUDINARY_FOLDER}/*`)
.sort_by("public_id", "desc")
.max_results(400)
.execute();
cachedResults = fetchedResults;
}
return cachedResults;
}

View File

@@ -0,0 +1,10 @@
import cloudinary from "cloudinary";
cloudinary.v2.config({
cloud_name: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME,
api_key: process.env.CLOUDINARY_API_KEY,
api_secret: process.env.CLOUDINARY_API_SECRET,
secure: true,
});
export default cloudinary;

View File

@@ -0,0 +1,24 @@
function forceDownload(blobUrl: string, filename: string) {
let a: any = document.createElement("a");
a.download = filename;
a.href = blobUrl;
document.body.appendChild(a);
a.click();
a.remove();
}
export default function downloadPhoto(url: string, filename: string) {
if (!filename) filename = url.split("\\").pop().split("/").pop();
fetch(url, {
headers: new Headers({
Origin: location.origin,
}),
mode: "cors",
})
.then((response) => response.blob())
.then((blob) => {
let blobUrl = window.URL.createObjectURL(blob);
forceDownload(blobUrl, filename);
})
.catch((e) => console.error(e));
}

View File

@@ -0,0 +1,25 @@
import imagemin from "imagemin";
import imageminJpegtran from "imagemin-jpegtran";
import type { ImageProps } from "./types";
const cache = new Map<ImageProps, string>();
export default async function getBase64ImageUrl(
image: ImageProps,
): Promise<string> {
let url = cache.get(image);
if (url) {
return url;
}
const response = await fetch(
`https://res.cloudinary.com/${process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME}/image/upload/f_jpg,w_8,q_70/${image.public_id}.${image.format}`,
);
const buffer = await response.arrayBuffer();
const minified = await imagemin.buffer(Buffer.from(buffer), {
plugins: [imageminJpegtran()],
});
url = `data:image/jpeg;base64,${Buffer.from(minified).toString("base64")}`;
cache.set(image, url);
return url;
}

View File

@@ -0,0 +1,11 @@
export const range = (start: number, end: number) => {
let output = [];
if (typeof end === "undefined") {
end = start;
start = 0;
}
for (let i = start; i < end; i += 1) {
output.push(i);
}
return output;
};

View File

@@ -0,0 +1,19 @@
/* eslint-disable no-unused-vars */
export interface ImageProps {
id: number;
height: string;
width: string;
public_id: string;
format: string;
blurDataUrl?: string;
}
export interface SharedModalProps {
index: number;
images?: ImageProps[];
currentPhoto?: ImageProps;
changePhotoId: (newVal: number) => void;
closeModal: () => void;
navigation: boolean;
direction?: number;
}

View File

@@ -0,0 +1,8 @@
import { createGlobalState } from "react-hooks-global-state";
const initialState = { photoToScrollTo: null };
const { useGlobalState } = createGlobalState(initialState);
export const useLastViewedPhoto = () => {
return useGlobalState("photoToScrollTo");
};