// Registry used by the player runtime to discover independently loaded region modules. (function () { var root = window; var registry = root.pulsePlayerRegionTypes && typeof root.pulsePlayerRegionTypes === 'object' ? root.pulsePlayerRegionTypes : {}; function normalizeType(type) { return String(type || '').trim().toLowerCase(); } function register(type, definition) { registry[normalizeType(type)] = definition || {}; return registry[normalizeType(type)]; } function get(type) { return registry[normalizeType(type)] || null; } function list() { return Object.keys(registry).map(function (type) { return { type: type, definition: registry[type] || {} }; }); } root.pulsePlayerRegionTypes = { register: register, get: get, list: list }; }()); function getPlayerRegionModules() { if (!window.pulsePlayerRegionTypes || typeof window.pulsePlayerRegionTypes.list !== 'function') { return []; } return window.pulsePlayerRegionTypes.list(); } function runRegionLifecycle(root, lifecycleName) { if (!root) { return; } getPlayerRegionModules().forEach(function (entry) { var module = entry && entry.definition ? entry.definition : null; if (!module || typeof module[lifecycleName] !== 'function') { return; } try { module[lifecycleName](root); } catch (_error) { // Keep slide rendering resilient if a region lifecycle hook fails. } }); } function destroyRegionInstances(root) { runRegionLifecycle(root, 'destroyRegion'); } function initializeRegionInstances(root) { runRegionLifecycle(root, 'initRegion'); }