// Hash the style string to create a predictable namespace
// See https://stackoverflow.com/a/52171480/610632
// Also: shared/src/utils/appDSL.ts, copied here because we cannot npm install if we have a workspace dep in
// the library, for now.
const cyrb53 = (str, seed = 0) => {
    let h1 = 0xdeadbeef ^ seed, h2 = 0x41c6ce57 ^ seed;
    for (let i = 0, ch; i < str.length; i++) {
        ch = str.charCodeAt(i);
        h1 = Math.imul(h1 ^ ch, 2654435761);
        h2 = Math.imul(h2 ^ ch, 1597334677);
    }
    h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);
    h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);
    h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);
    h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);
    return 4294967296 * (2097151 & h2) + (h1 >>> 0);
};
export const generatePredictableId = (name) => {
    return cyrb53(name).toString(36); // Convert to alphanumeric
};
export const generateShortId = () => {
    return Math.random().toString(36).substring(2, 10);
};
//# sourceMappingURL=ids.js.map