48 lines
1.9 KiB
TypeScript
48 lines
1.9 KiB
TypeScript
import {
|
|
getVirtualStickerWindow,
|
|
staticStickerOriginalUrl,
|
|
staticStickerThumbnailUrl,
|
|
type StaticStickerCatalogItem,
|
|
type VirtualStickerWindow,
|
|
} from "@dada/static-sticker-catalog";
|
|
|
|
const resourceVersion = "fixture-v1";
|
|
const partCounts = [203, 36, 27, 48, 38, 75, 37, 67, 48, 24, 40, 30, 27, 51, 62, 19, 36, 45, 92, 53, 69, 31, 36, 30, 183] as const;
|
|
|
|
function buildCatalog(): StaticStickerCatalogItem[] {
|
|
let index = 0;
|
|
return partCounts.flatMap((count, partIndex) => Array.from({ length: count }, (_, orderIndex) => {
|
|
index += 1;
|
|
const stableId = `STK${String(index).padStart(index < 1_000 ? 3 : 4, "0")}`;
|
|
const item = {
|
|
enabled: true,
|
|
height: 0,
|
|
mime: "image/png" as const,
|
|
mime_type: "image/png" as const,
|
|
order: orderIndex + 1,
|
|
original_filename: `${stableId}.png`,
|
|
original_reference: "",
|
|
origin: "bundled_read_only" as const,
|
|
part: partIndex + 1,
|
|
relative_path: `sticker_part${partIndex + 1}/${stableId}.png`,
|
|
resource_version: resourceVersion,
|
|
sha256: "",
|
|
stable_id: stableId,
|
|
thumbnail_reference: { media: "thumbnail" as const, resource_id: stableId, resource_version: resourceVersion, url: "" },
|
|
width: 0,
|
|
} satisfies StaticStickerCatalogItem;
|
|
item.original_reference = staticStickerOriginalUrl(item);
|
|
item.thumbnail_reference.url = staticStickerThumbnailUrl(item);
|
|
return item;
|
|
}));
|
|
}
|
|
|
|
export const P0A_STATIC_STICKER_CATALOG = buildCatalog();
|
|
export const P0A_STATIC_STICKER_COUNT = P0A_STATIC_STICKER_CATALOG.length;
|
|
|
|
export function stickerWindow(items: readonly StaticStickerCatalogItem[], scrollTop: number, viewportHeight: number): VirtualStickerWindow<StaticStickerCatalogItem> {
|
|
return getVirtualStickerWindow(items, { columns: 2, itemHeight: 144, overscanScreens: 2, scrollTop, viewportHeight });
|
|
}
|
|
|
|
export { staticStickerOriginalUrl, staticStickerThumbnailUrl };
|