// Playables SDK v1.0.0// Game lifecycle bridge: rAF-based game-ready detection + event communication(function() { 'use strict'; // Idempotency: skip if already initialized (e.g., server-side injection // followed by client-side inject-javascript via the Bloks webview component). if (window.playablesSDK) return; var HANDLER_NAME = 'playablesGameEventHandler'; var ANDROID_BRIDGE_NAME = '_MetaPlayablesBridge'; var RAF_FRAME_THRESHOLD = 3; var gameReadySent = false; var firstInteractionSent = false; var errorSent = false; var frameCount = 0; var originalRAF = window.requestAnimationFrame; // --- Transport Layer --- function hasIOSBridge() { return !!(window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers[HANDLER_NAME]); } function hasAndroidBridge()