/**
 * Stable per-placement id for a page block instance.
 * Same componentSlug/componentId may appear many times; instanceId must stay unique.
 */
export function createPageBlockInstanceId(): string {
  return `cmp_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 9)}`;
}

/** Ensure a block has an instanceId without changing other fields. */
export function withPageBlockInstanceId<T extends { instanceId?: string }>(block: T): T & { instanceId: string } {
  if (typeof block.instanceId === "string" && block.instanceId.trim()) {
    return block as T & { instanceId: string };
  }
  return { ...block, instanceId: createPageBlockInstanceId() };
}
