
// Shared language changes never reload the editor or touch the user's design.
// Next folds typeof window in client bundles, including Web Workers. The
// document guard must survive bundling: geometry workers share this module.
if (typeof document !== "undefined" && typeof window !== "undefined") {
  window.addEventListener("message", (event: MessageEvent) => {
    if (event.origin !== window.location.origin || event.source !== window.parent || event.data?.channel !== "skaperstudio-language-v1") return;
    if (event.data.type === "set-language" && ["nb", "en", "uk"].includes(event.data.language)) {
      void setLanguage(event.data.language, false);
    }
  });
  window.addEventListener("storage", (event: StorageEvent) => {
    if (event.key === LANGUAGE_STORAGE_KEY && ["nb", "en", "uk"].includes(event.newValue ?? "")) void setLanguage(event.newValue as Language, false);
  });
  if (window.parent !== window) window.parent.postMessage({ channel: "skaperstudio-language-v1", type: "language-ready" }, window.location.origin);
}
