Files
pezkuwi-ui/packages/ui-shared/src/icons/beachball/seeder.ts
T
Satoshi Qazi Muhammed 6cf7cc635a Update copyright headers to 2026
The header rule in @pezkuwi/dev requires the current year. Year range only; the third-party beachball LICENSE is left as it is.
2026-10-08 11:10:19 +04:00

31 lines
676 B
TypeScript

// Copyright 2017-2026 @pezkuwi/ui-shared authors & contributors
// SPDX-License-Identifier: Apache-2.0
import type { Seeder } from './types.js';
import { isU8a, stringToU8a } from '@pezkuwi/util';
const DIVISOR = 256 * 256;
export function seeder (_seed: string | Uint8Array = new Uint8Array(32)): Seeder {
const seed: Uint8Array = isU8a(_seed)
? _seed
: stringToU8a(_seed);
let index = (seed[Math.floor(seed.length / 2)] % seed.length) - 1;
const next = (): number => {
index += 1;
if (index === seed.length) {
index = 0;
}
return seed[index];
};
return (): number => {
return ((next() * 256) + next()) / DIVISOR;
};
}