import type { AdSpotType } from '../runtime'; /** Хелпер для работы с рекламным слайдером */ export class AdvSliderHelper { /** Удаляет ранее вставленные скрипты слайдера с указанным src */ private static cleanOldSlider(scriptUrl: string) { document.querySelectorAll('script').forEach(script => { if (script.src.includes(scriptUrl)) { script.remove(); } }); } /** Создаёт и вставляет в `
` скрипт слайдера для указанных спотов (только на клиенте) */ private static attachSliderScript(scriptUrl: string, spots: string | number) { const ridts = `?_ridts_=${Date.now()}`; const script = document.createElement('script'); const scriptAttrs = { type: 'text/javascript', async: 'async', src: scriptUrl + ridts, defer: 'defer', }; script.dataset.spots = String(spots); script.dataset.subid1 = '%subid1%'; script.dataset.subid2 = '%subid2%'; script.dataset.tag = 'asg'; Object.entries(scriptAttrs).forEach(([key, value]) => { script.setAttribute(key, value); }); if (import.meta.client) { document.head.appendChild(script); } } /** Инициализирует слайдер: чистит старые скрипты и подключает новый (кроме страницы adv/banner) */ public static async initSlider(config: Record